--- 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/DMA-API.txt +++ linux-raspi2-4.2.0/Documentation/DMA-API.txt @@ -104,6 +104,13 @@ from this pool must not cross 4KByte boundaries. + void *dma_pool_zalloc(struct dma_pool *pool, gfp_t mem_flags, + dma_addr_t *handle) + +Wraps dma_pool_alloc() and also zeroes the returned memory if the +allocation attempt succeeded. + + void *dma_pool_alloc(struct dma_pool *pool, gfp_t gfp_flags, dma_addr_t *dma_handle); --- 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/omap/omap.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/arm/omap/omap.txt @@ -23,6 +23,7 @@ during suspend. - ti,no-reset-on-init: When present, the module should not be reset at init - ti,no-idle-on-init: When present, the module should not be idled at init +- ti,no-idle: When present, the module is never allowed to idle. Example: --- 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/pinctrl/img,pistachio-pinctrl.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/pinctrl/img,pistachio-pinctrl.txt @@ -134,12 +134,12 @@ mfio81 dreq0, mips_trace_data, eth_debug mfio82 dreq1, mips_trace_data, eth_debug mfio83 mips_pll_lock, mips_trace_data, usb_debug -mfio84 sys_pll_lock, mips_trace_data, usb_debug -mfio85 wifi_pll_lock, mips_trace_data, sdhost_debug -mfio86 bt_pll_lock, mips_trace_data, sdhost_debug -mfio87 rpu_v_pll_lock, dreq2, socif_debug -mfio88 rpu_l_pll_lock, dreq3, socif_debug -mfio89 audio_pll_lock, dreq4, dreq5 +mfio84 audio_pll_lock, mips_trace_data, usb_debug +mfio85 rpu_v_pll_lock, mips_trace_data, sdhost_debug +mfio86 rpu_l_pll_lock, mips_trace_data, sdhost_debug +mfio87 sys_pll_lock, dreq2, socif_debug +mfio88 wifi_pll_lock, dreq3, socif_debug +mfio89 bt_pll_lock, dreq4, dreq5 tck trstn tdi --- 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/efivarfs.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/efivarfs.txt @@ -14,3 +14,10 @@ efivarfs is typically mounted like this, mount -t efivarfs none /sys/firmware/efi/efivars + +Due to the presence of numerous firmware bugs where removing non-standard +UEFI variables causes the system firmware to fail to POST, efivarfs +files that are not well-known standardized variables are created +as immutable files. This doesn't prevent removal - "chattr -i" will work - +but it does prevent this kind of failure from being accomplished +accidentally. --- 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 @@ -343,7 +344,7 @@ a7cb1000-a7cb2000 ---p 00000000 00:00 0 a7cb2000-a7eb2000 rw-p 00000000 00:00 0 a7eb2000-a7eb3000 ---p 00000000 00:00 0 -a7eb3000-a7ed5000 rw-p 00000000 00:00 0 [stack:1001] +a7eb3000-a7ed5000 rw-p 00000000 00:00 0 a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6 a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6 a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6 @@ -375,7 +376,6 @@ [heap] = the heap of the program [stack] = the stack of the main process - [stack:1001] = the stack of the thread with tid 1001 [vdso] = the "virtual dynamic shared object", the kernel system call handler @@ -383,10 +383,8 @@ The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint of the individual tasks of a process. In this file you will see a mapping marked -as [stack] if that task sees it as a stack. This is a key difference from the -content of /proc/PID/maps, where you will see all mappings that are being used -as stack by all of those tasks. Hence, for the example above, the task-level -map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this: +as [stack] if that task sees it as a stack. Hence, for the example above, the +task-level map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this: 08048000-08049000 r-xp 00000000 03:00 8312 /opt/test 08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test --- 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/networking/ip-sysctl.txt +++ linux-raspi2-4.2.0/Documentation/networking/ip-sysctl.txt @@ -1340,6 +1340,14 @@ disabled if accept_ra_from_local is disabled on a specific interface. +accept_ra_min_hop_limit - INTEGER + Minimum hop limit Information in Router Advertisement. + + Hop limit Information in Router Advertisement less than this + variable shall be ignored. + + Default: 1 + accept_ra_pinfo - BOOLEAN Learn Prefix Information in Router Advertisement. --- 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/sysctl/fs.txt +++ linux-raspi2-4.2.0/Documentation/sysctl/fs.txt @@ -32,6 +32,8 @@ - nr_open - overflowuid - overflowgid +- pipe-user-pages-hard +- pipe-user-pages-soft - protected_hardlinks - protected_symlinks - suid_dumpable @@ -159,6 +161,27 @@ ============================================================== +pipe-user-pages-hard: + +Maximum total number of pages a non-privileged user may allocate for pipes. +Once this limit is reached, no new pipes may be allocated until usage goes +below the limit again. When set to 0, no limit is applied, which is the default +setting. + +============================================================== + +pipe-user-pages-soft: + +Maximum total number of pages a non-privileged user may allocate for pipes +before the pipe size gets limited to a single page. Once this limit is reached, +new pipes will be limited to a single page in size for this user in order to +limit total memory usage, and trying to increase them using fcntl() will be +denied until usage goes below the limit again. The default value allows to +allocate up to 1024 pipes at their default size. When set to 0, no limit is +applied. + +============================================================== + protected_hardlinks: A long-standing class of security issues is the hardlink-based --- 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/Documentation/virtual/kvm/mmu.txt +++ linux-raspi2-4.2.0/Documentation/virtual/kvm/mmu.txt @@ -358,7 +358,8 @@ - if CR4.SMEP is enabled: since we've turned the page into a kernel page, the kernel may now execute it. We handle this by also setting spte.nx. If we get a user fetch or read fault, we'll change spte.u=1 and - spte.nx=gpte.nx back. + spte.nx=gpte.nx back. For this to work, KVM forces EFER.NX to 1 when + shadow paging is in use. - if CR4.SMAP is disabled: since the page has been changed to a kernel page, it can not be reused when CR4.SMAP is enabled. We set CR4.SMAP && !CR0.WP into shadow page's role to avoid this case. Note, --- linux-raspi2-4.2.0.orig/MAINTAINERS +++ linux-raspi2-4.2.0/MAINTAINERS @@ -229,13 +229,13 @@ ABIT UGURU 1,2 HARDWARE MONITOR DRIVER M: Hans de Goede -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/abituguru.c ABIT UGURU 3 HARDWARE MONITOR DRIVER M: Alistair John Strachan -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/abituguru3.c @@ -366,14 +366,14 @@ ADM1025 HARDWARE MONITOR DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/adm1025 F: drivers/hwmon/adm1025.c ADM1029 HARDWARE MONITOR DRIVER M: Corentin Labbe -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/adm1029.c @@ -418,7 +418,7 @@ ADS1015 HARDWARE MONITOR DRIVER M: Dirk Eibach -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/ads1015 F: drivers/hwmon/ads1015.c @@ -431,7 +431,7 @@ ADT7475 HARDWARE MONITOR DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/adt7475 F: drivers/hwmon/adt7475.c @@ -601,9 +601,9 @@ F: include/linux/ccp.h AMD FAM15H PROCESSOR POWER MONITORING DRIVER -M: Andreas Herrmann -L: lm-sensors@lm-sensors.org -S: Maintained +M: Huang Rui +L: linux-hwmon@vger.kernel.org +S: Supported F: Documentation/hwmon/fam15h_power F: drivers/hwmon/fam15h_power.c @@ -761,7 +761,7 @@ APPLE SMC DRIVER M: Henrik Rydberg -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Odd fixes F: drivers/hwmon/applesmc.c @@ -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 @@ -1712,7 +1717,7 @@ ASC7621 HARDWARE MONITOR DRIVER M: George Joseph -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/asc7621 F: drivers/hwmon/asc7621.c @@ -1791,7 +1796,7 @@ ATK0110 HWMON DRIVER M: Luca Tettamanti -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/asus_atk0110.c @@ -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 @@ -2223,14 +2241,6 @@ S: Maintained N: bcm2835 -BROADCOM BCM33XX MIPS ARCHITECTURE -M: Kevin Cernekee -L: linux-mips@linux-mips.org -S: Maintained -F: arch/mips/bcm3384/* -F: arch/mips/include/asm/mach-bcm3384/* -F: arch/mips/kernel/*bmips* - BROADCOM BCM47XX MIPS ARCHITECTURE M: Hauke Mehrtens M: RafaÅ‚ MiÅ‚ecki @@ -2331,7 +2341,7 @@ BROADCOM BRCMSTB GPIO DRIVER M: Gregory Fong -L: bcm-kernel-feedback-list@broadcom.com> +L: bcm-kernel-feedback-list@broadcom.com S: Supported F: drivers/gpio/gpio-brcmstb.c F: Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt @@ -2874,7 +2884,7 @@ CORETEMP HARDWARE MONITORING DRIVER M: Fenghua Yu -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/coretemp F: drivers/hwmon/coretemp.c @@ -3106,6 +3116,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 @@ -3430,7 +3449,7 @@ DME1737 HARDWARE MONITOR DRIVER M: Juerg Haefliger -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/dme1737 F: drivers/hwmon/dme1737.c @@ -4120,7 +4139,7 @@ F71805F HARDWARE MONITORING DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/f71805f F: drivers/hwmon/f71805f.c @@ -4199,7 +4218,7 @@ FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER M: Riku Voipio -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/f75375s.c F: include/linux/f75375s.h @@ -4724,8 +4743,8 @@ HARDWARE MONITORING M: Jean Delvare M: Guenter Roeck -L: lm-sensors@lm-sensors.org -W: http://www.lm-sensors.org/ +L: linux-hwmon@vger.kernel.org +W: http://hwmon.wiki.kernel.org/ T: quilt http://jdelvare.nerim.net/devel/linux/jdelvare-hwmon/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git S: Maintained @@ -5220,7 +5239,7 @@ INA209 HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/ina209 F: Documentation/devicetree/bindings/i2c/ina209.txt @@ -5228,7 +5247,7 @@ INA2XX HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/ina2xx F: drivers/hwmon/ina2xx.c @@ -5700,7 +5719,7 @@ IT87 HARDWARE MONITORING DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/it87 F: drivers/hwmon/it87.c @@ -5736,7 +5755,7 @@ JC42.4 TEMPERATURE SENSOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/jc42.c F: Documentation/hwmon/jc42 @@ -5787,14 +5806,14 @@ K10TEMP HARDWARE MONITORING DRIVER M: Clemens Ladisch -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/k10temp F: drivers/hwmon/k10temp.c K8TEMP HARDWARE MONITORING DRIVER M: Rudolf Marek -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/k8temp F: drivers/hwmon/k8temp.c @@ -6287,27 +6306,27 @@ LM73 HARDWARE MONITOR DRIVER M: Guillaume Ligneul -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/lm73.c LM78 HARDWARE MONITOR DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/lm78 F: drivers/hwmon/lm78.c LM83 HARDWARE MONITOR DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/lm83 F: drivers/hwmon/lm83.c LM90 HARDWARE MONITOR DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/lm90 F: Documentation/devicetree/bindings/hwmon/lm90.txt @@ -6315,7 +6334,7 @@ LM95234 HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/lm95234 F: drivers/hwmon/lm95234.c @@ -6382,7 +6401,7 @@ LTC4261 HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/ltc4261 F: drivers/hwmon/ltc4261.c @@ -6544,21 +6563,21 @@ MAX16065 HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/max16065 F: drivers/hwmon/max16065.c MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER M: "Hans J. Koch" -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/max6650 F: drivers/hwmon/max6650.c MAX6697 HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/max6697 F: Documentation/devicetree/bindings/i2c/max6697.txt @@ -6993,7 +7012,7 @@ NCT6775 HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/nct6775 F: drivers/hwmon/nct6775.c @@ -7728,7 +7747,7 @@ PC87360 HARDWARE MONITORING DRIVER M: Jim Cromie -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/pc87360 F: drivers/hwmon/pc87360.c @@ -7740,7 +7759,7 @@ PC87427 HARDWARE MONITORING DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/pc87427 F: drivers/hwmon/pc87427.c @@ -8042,8 +8061,8 @@ PMBUS HARDWARE MONITORING DRIVERS M: Guenter Roeck -L: lm-sensors@lm-sensors.org -W: http://www.lm-sensors.org/ +L: linux-hwmon@vger.kernel.org +W: http://hwmon.wiki.kernel.org/ W: http://www.roeck-us.net/linux/drivers/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git S: Maintained @@ -8234,7 +8253,7 @@ PWM FAN DRIVER M: Kamil Debski -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Supported F: Documentation/devicetree/bindings/hwmon/pwm-fan.txt F: Documentation/hwmon/pwm-fan @@ -9424,28 +9443,28 @@ SMM665 HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/smm665 F: drivers/hwmon/smm665.c SMSC EMC2103 HARDWARE MONITOR DRIVER M: Steve Glendinning -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/emc2103 F: drivers/hwmon/emc2103.c SMSC SCH5627 HARDWARE MONITOR DRIVER M: Hans de Goede -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Supported F: Documentation/hwmon/sch5627 F: drivers/hwmon/sch5627.c SMSC47B397 HARDWARE MONITOR DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/smsc47b397 F: drivers/hwmon/smsc47b397.c @@ -9837,9 +9856,11 @@ F: drivers/net/ethernet/dlink/sundance.c SUPERH +M: Yoshinori Sato +M: Rich Felker L: linux-sh@vger.kernel.org Q: http://patchwork.kernel.org/project/linux-sh/list/ -S: Orphan +S: Maintained F: Documentation/sh/ F: arch/sh/ F: drivers/sh/ @@ -9882,6 +9903,7 @@ SYNOPSYS ARC ARCHITECTURE M: Vineet Gupta +L: linux-snps-arc@lists.infradead.org S: Supported F: arch/arc/ F: Documentation/devicetree/bindings/arc/ @@ -10351,7 +10373,7 @@ TMP401 HARDWARE MONITOR DRIVER M: Guenter Roeck -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/tmp401 F: drivers/hwmon/tmp401.c @@ -11058,14 +11080,14 @@ VT1211 HARDWARE MONITOR DRIVER M: Juerg Haefliger -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/vt1211 F: drivers/hwmon/vt1211.c VT8231 HARDWARE MONITOR DRIVER M: Roger Lucas -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/vt8231.c @@ -11084,21 +11106,21 @@ W83791D HARDWARE MONITORING DRIVER M: Marc Hulsman -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/w83791d F: drivers/hwmon/w83791d.c W83793 HARDWARE MONITORING DRIVER M: Rudolf Marek -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: Documentation/hwmon/w83793 F: drivers/hwmon/w83793.c W83795 HARDWARE MONITORING DRIVER M: Jean Delvare -L: lm-sensors@lm-sensors.org +L: linux-hwmon@vger.kernel.org S: Maintained F: drivers/hwmon/w83795.c --- 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 = -ckt8 +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/include/asm/bitops.h +++ linux-raspi2-4.2.0/arch/arc/include/asm/bitops.h @@ -35,21 +35,6 @@ \ m += nr >> 5; \ \ - /* \ - * ARC ISA micro-optimization: \ - * \ - * Instructions dealing with bitpos only consider lower 5 bits \ - * e.g (x << 33) is handled like (x << 1) by ASL instruction \ - * (mem pointer still needs adjustment to point to next word) \ - * \ - * Hence the masking to clamp @nr arg can be elided in general. \ - * \ - * However if @nr is a constant (above assumed in a register), \ - * and greater than 31, gcc can optimize away (x << 33) to 0, \ - * as overflow, given the 32-bit ISA. Thus masking needs to be \ - * done for const @nr, but no code is generated due to gcc \ - * const prop. \ - */ \ nr &= 0x1f; \ \ __asm__ __volatile__( \ --- linux-raspi2-4.2.0.orig/arch/arc/include/asm/io.h +++ linux-raspi2-4.2.0/arch/arc/include/asm/io.h @@ -129,15 +129,23 @@ #define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); }) /* - * Relaxed API for drivers which can handle any ordering themselves + * Relaxed API for drivers which can handle barrier ordering themselves + * + * Also these are defined to perform little endian accesses. + * To provide the typical device register semantics of fixed endian, + * swap the byte order for Big Endian + * + * http://lkml.kernel.org/r/201603100845.30602.arnd@arndb.de */ #define readb_relaxed(c) __raw_readb(c) -#define readw_relaxed(c) __raw_readw(c) -#define readl_relaxed(c) __raw_readl(c) +#define readw_relaxed(c) ({ u16 __r = le16_to_cpu((__force __le16) \ + __raw_readw(c)); __r; }) +#define readl_relaxed(c) ({ u32 __r = le32_to_cpu((__force __le32) \ + __raw_readl(c)); __r; }) #define writeb_relaxed(v,c) __raw_writeb(v,c) -#define writew_relaxed(v,c) __raw_writew(v,c) -#define writel_relaxed(v,c) __raw_writel(v,c) +#define writew_relaxed(v,c) __raw_writew((__force u16) cpu_to_le16(v),c) +#define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c) #include --- linux-raspi2-4.2.0.orig/arch/arc/include/asm/irqflags-arcv2.h +++ linux-raspi2-4.2.0/arch/arc/include/asm/irqflags-arcv2.h @@ -22,6 +22,7 @@ #define AUX_IRQ_CTRL 0x00E #define AUX_IRQ_ACT 0x043 /* Active Intr across all levels */ #define AUX_IRQ_LVL_PEND 0x200 /* Pending Intr across all levels */ +#define AUX_IRQ_HINT 0x201 /* For generating Soft Interrupts */ #define AUX_IRQ_PRIORITY 0x206 #define ICAUSE 0x40a #define AUX_IRQ_SELECT 0x40b @@ -109,6 +110,16 @@ return arch_irqs_disabled_flags(arch_local_save_flags()); } +static inline void arc_softirq_trigger(int irq) +{ + write_aux_reg(AUX_IRQ_HINT, irq); +} + +static inline void arc_softirq_clear(int irq) +{ + write_aux_reg(AUX_IRQ_HINT, 0); +} + #else .macro IRQ_DISABLE scratch --- linux-raspi2-4.2.0.orig/arch/arc/include/asm/unwind.h +++ linux-raspi2-4.2.0/arch/arc/include/asm/unwind.h @@ -112,7 +112,6 @@ extern int arc_unwind(struct unwind_frame_info *frame); extern void arc_unwind_init(void); -extern void arc_unwind_setup(void); extern void *unwind_add_table(struct module *module, const void *table_start, unsigned long table_size); extern void unwind_remove_table(void *handle, int init_only); @@ -152,9 +151,6 @@ { } -static inline void arc_unwind_setup(void) -{ -} #define unwind_add_table(a, b, c) #define unwind_remove_table(a, b) --- linux-raspi2-4.2.0.orig/arch/arc/kernel/entry-arcv2.S +++ linux-raspi2-4.2.0/arch/arc/kernel/entry-arcv2.S @@ -45,11 +45,12 @@ VECTOR handle_interrupt ; (16) Timer0 VECTOR handle_interrupt ; unused (Timer1) VECTOR handle_interrupt ; unused (WDT) -VECTOR handle_interrupt ; (19) ICI (inter core interrupt) -VECTOR handle_interrupt -VECTOR handle_interrupt -VECTOR handle_interrupt -VECTOR handle_interrupt ; (23) End of fixed IRQs +VECTOR handle_interrupt ; (19) Inter core Interrupt (IPI) +VECTOR handle_interrupt ; (20) perf Interrupt +VECTOR handle_interrupt ; (21) Software Triggered Intr (Self IPI) +VECTOR handle_interrupt ; unused +VECTOR handle_interrupt ; (23) unused +# End of fixed IRQs .rept CONFIG_ARC_NUMBER_OF_INTERRUPTS - 8 VECTOR handle_interrupt @@ -197,7 +198,11 @@ ; (since IRQ NOT allowed in DS in ARCv2, this can only happen if orig ; entry was via Exception in DS which got preempted in kernel). ; -; IRQ RTIE won't reliably restore DE bit and/or BTA, needs handling +; IRQ RTIE won't reliably restore DE bit and/or BTA, needs workaround +; +; Solution is return from Intr w/o any delay slot quirks into a kernel trampoline +; and from pure kernel mode return to delay slot which handles DS bit/BTA correctly + .Lintr_ret_to_delay_slot: debug_marker_ds: @@ -208,18 +213,23 @@ ld r2, [sp, PT_ret] ld r3, [sp, PT_status32] + ; STAT32 for Int return created from scratch + ; (No delay dlot, disable Further intr in trampoline) + bic r0, r3, STATUS_U_MASK|STATUS_DE_MASK|STATUS_IE_MASK|STATUS_L_MASK st r0, [sp, PT_status32] mov r1, .Lintr_ret_to_delay_slot_2 st r1, [sp, PT_ret] + ; Orig exception PC/STAT32 safekept @orig_r0 and @event stack slots st r2, [sp, 0] st r3, [sp, 4] b .Lisr_ret_fast_path .Lintr_ret_to_delay_slot_2: + ; Trampoline to restore orig exception PC/STAT32/BTA/AUX_USER_SP sub sp, sp, SZ_PT_REGS st r9, [sp, -4] @@ -229,11 +239,19 @@ ld r9, [sp, 4] sr r9, [erstatus] + ; restore AUX_USER_SP if returning to U mode + bbit0 r9, STATUS_U_BIT, 1f + ld r9, [sp, PT_sp] + sr r9, [AUX_USER_SP] + +1: ld r9, [sp, 8] sr r9, [erbta] ld r9, [sp, -4] add sp, sp, SZ_PT_REGS + + ; return from pure kernel mode to delay slot rtie END(ret_from_exception) --- linux-raspi2-4.2.0.orig/arch/arc/kernel/intc-arcv2.c +++ linux-raspi2-4.2.0/arch/arc/kernel/intc-arcv2.c @@ -106,10 +106,21 @@ static int arcv2_irq_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hw) { - if (irq == TIMER0_IRQ || irq == IPI_IRQ) + /* + * core intc IRQs [16, 23]: + * Statically assigned always private-per-core (Timers, WDT, IPI, PCT) + */ + if (hw < 24) { + /* + * A subsequent request_percpu_irq() fails if percpu_devid is + * not set. That in turns sets NOAUTOEN, meaning each core needs + * to call enable_percpu_irq() + */ + irq_set_percpu_devid(irq); irq_set_chip_and_handler(irq, &arcv2_irq_chip, handle_percpu_irq); - else + } else { irq_set_chip_and_handler(irq, &arcv2_irq_chip, handle_level_irq); + } return 0; } --- linux-raspi2-4.2.0.orig/arch/arc/kernel/mcip.c +++ linux-raspi2-4.2.0/arch/arc/kernel/mcip.c @@ -11,8 +11,11 @@ #include #include #include +#include #include +#define SOFTIRQ_IRQ 21 + static char smp_cpuinfo_buf[128]; static int idu_detected; @@ -28,6 +31,7 @@ void mcip_init_smp(unsigned int cpu) { smp_ipi_irq_setup(cpu, IPI_IRQ); + smp_ipi_irq_setup(cpu, SOFTIRQ_IRQ); } static void mcip_ipi_send(int cpu) @@ -35,6 +39,12 @@ unsigned long flags; int ipi_was_pending; + /* ARConnect can only send IPI to others */ + if (unlikely(cpu == raw_smp_processor_id())) { + arc_softirq_trigger(SOFTIRQ_IRQ); + return; + } + /* * NOTE: We must spin here if the other cpu hasn't yet * serviced a previous message. This can burn lots @@ -69,6 +79,11 @@ unsigned long flags; unsigned int __maybe_unused copy; + if (unlikely(irq == SOFTIRQ_IRQ)) { + arc_softirq_clear(irq); + return; + } + raw_spin_lock_irqsave(&mcip_lock, flags); /* Who sent the IPI */ --- linux-raspi2-4.2.0.orig/arch/arc/kernel/setup.c +++ linux-raspi2-4.2.0/arch/arc/kernel/setup.c @@ -432,7 +432,6 @@ #endif arc_unwind_init(); - arc_unwind_setup(); } static int __init customize_machine(void) --- linux-raspi2-4.2.0.orig/arch/arc/kernel/unwind.c +++ linux-raspi2-4.2.0/arch/arc/kernel/unwind.c @@ -170,6 +170,23 @@ static unsigned long read_pointer(const u8 **pLoc, const void *end, signed ptrType); +static void init_unwind_hdr(struct unwind_table *table, + void *(*alloc) (unsigned long)); + +/* + * wrappers for header alloc (vs. calling one vs. other at call site) + * to elide section mismatches warnings + */ +static void *__init unw_hdr_alloc_early(unsigned long sz) +{ + return __alloc_bootmem_nopanic(sz, sizeof(unsigned int), + MAX_DMA_ADDRESS); +} + +static void *unw_hdr_alloc(unsigned long sz) +{ + return kmalloc(sz, GFP_KERNEL); +} static void init_unwind_table(struct unwind_table *table, const char *name, const void *core_start, unsigned long core_size, @@ -209,6 +226,8 @@ __start_unwind, __end_unwind - __start_unwind, NULL, 0); /*__start_unwind_hdr, __end_unwind_hdr - __start_unwind_hdr);*/ + + init_unwind_hdr(&root_table, unw_hdr_alloc_early); } static const u32 bad_cie, not_fde; @@ -241,8 +260,8 @@ e2->fde = v; } -static void __init setup_unwind_table(struct unwind_table *table, - void *(*alloc) (unsigned long)) +static void init_unwind_hdr(struct unwind_table *table, + void *(*alloc) (unsigned long)) { const u8 *ptr; unsigned long tableSize = table->size, hdrSize; @@ -274,13 +293,13 @@ const u32 *cie = cie_for_fde(fde, table); signed ptrType; - if (cie == ¬_fde) + if (cie == ¬_fde) /* only process FDE here */ continue; if (cie == NULL || cie == &bad_cie) - return; + continue; /* say FDE->CIE.version != 1 */ ptrType = fde_pointer_type(cie); if (ptrType < 0) - return; + continue; ptr = (const u8 *)(fde + 2); if (!read_pointer(&ptr, (const u8 *)(fde + 1) + *fde, @@ -300,9 +319,11 @@ hdrSize = 4 + sizeof(unsigned long) + sizeof(unsigned int) + 2 * n * sizeof(unsigned long); + header = alloc(hdrSize); if (!header) return; + header->version = 1; header->eh_frame_ptr_enc = DW_EH_PE_abs | DW_EH_PE_native; header->fde_count_enc = DW_EH_PE_abs | DW_EH_PE_data4; @@ -322,6 +343,10 @@ if (fde[1] == 0xffffffff) continue; /* this is a CIE */ + + if (*(u8 *)(cie + 2) != 1) + continue; /* FDE->CIE.version not supported */ + ptr = (const u8 *)(fde + 2); header->table[n].start = read_pointer(&ptr, (const u8 *)(fde + 1) + @@ -342,18 +367,6 @@ table->header = (const void *)header; } -static void *__init balloc(unsigned long sz) -{ - return __alloc_bootmem_nopanic(sz, - sizeof(unsigned int), - __pa(MAX_DMA_ADDRESS)); -} - -void __init arc_unwind_setup(void) -{ - setup_unwind_table(&root_table, balloc); -} - #ifdef CONFIG_MODULES static struct unwind_table *last_table; @@ -377,6 +390,8 @@ table_start, table_size, NULL, 0); + init_unwind_hdr(table, unw_hdr_alloc); + #ifdef UNWIND_DEBUG unw_debug("Table added for [%s] %lx %lx\n", module->name, table->core.pc, table->core.range); @@ -439,6 +454,7 @@ info.init_only = init_only; unlink_table(&info); /* XXX: SMP */ + kfree(table->header); kfree(table); } @@ -507,7 +523,8 @@ if (*cie <= sizeof(*cie) + 4 || *cie >= fde[1] - sizeof(*fde) || (*cie & (sizeof(*cie) - 1)) - || (cie[1] != 0xffffffff)) + || (cie[1] != 0xffffffff) + || ( *(u8 *)(cie + 2) != 1)) /* version 1 supported */ return NULL; /* this is not a (valid) CIE */ return cie; } @@ -986,42 +1003,13 @@ (const u8 *)(fde + 1) + *fde, ptrType); - if (pc >= endLoc) + if (pc >= endLoc) { fde = NULL; - } else - fde = NULL; - } - if (fde == NULL) { - for (fde = table->address, tableSize = table->size; - cie = NULL, tableSize > sizeof(*fde) - && tableSize - sizeof(*fde) >= *fde; - tableSize -= sizeof(*fde) + *fde, - fde += 1 + *fde / sizeof(*fde)) { - cie = cie_for_fde(fde, table); - if (cie == &bad_cie) { cie = NULL; - break; } - if (cie == NULL - || cie == ¬_fde - || (ptrType = fde_pointer_type(cie)) < 0) - continue; - ptr = (const u8 *)(fde + 2); - startLoc = read_pointer(&ptr, - (const u8 *)(fde + 1) + - *fde, ptrType); - if (!startLoc) - continue; - if (!(ptrType & DW_EH_PE_indirect)) - ptrType &= - DW_EH_PE_FORM | DW_EH_PE_signed; - endLoc = - startLoc + read_pointer(&ptr, - (const u8 *)(fde + - 1) + - *fde, ptrType); - if (pc >= startLoc && pc < endLoc) - break; + } else { + fde = NULL; + cie = NULL; } } } --- 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 @@ -76,6 +76,8 @@ select IRQ_FORCED_THREADING select MODULES_USE_ELF_REL select NO_BOOTMEM + select OF_EARLY_FLATTREE if OF + select OF_RESERVED_MEM if OF select OLD_SIGACTION select OLD_SIGSUSPEND3 select PERF_USE_VMALLOC @@ -316,6 +318,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 +576,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 +865,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" @@ -1827,8 +1871,6 @@ bool "Flattened Device Tree support" select IRQ_DOMAIN select OF - select OF_EARLY_FLATTREE - select OF_RESERVED_MEM help Include support for flattened device tree machine descriptions. @@ -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 @@ -162,10 +162,9 @@ mobile SoCs in the Kona family of chips (e.g. bcm28155, bcm11351, etc...) - config DEBUG_BCM63XX + config DEBUG_BCM63XX_UART bool "Kernel low-level debugging on BCM63XX UART" depends on ARCH_BCM_63XX - select DEBUG_UART_BCM63XX config DEBUG_BERLIN_UART bool "Marvell Berlin SoC Debug UART" @@ -1234,6 +1233,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 @@ -1343,7 +1350,7 @@ default "debug/vf.S" if DEBUG_VF_UART default "debug/vt8500.S" if DEBUG_VT8500_UART0 default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1 - default "debug/bcm63xx.S" if DEBUG_UART_BCM63XX + default "debug/bcm63xx.S" if DEBUG_BCM63XX_UART default "debug/digicolor.S" if DEBUG_DIGICOLOR_UA0 default "mach/debug-macro.S" @@ -1359,10 +1366,6 @@ ARCH_IOP33X || ARCH_IXP4XX || \ ARCH_LPC32XX || ARCH_MV78XX0 || ARCH_ORION5X || ARCH_RPC -# Compatibility options for BCM63xx -config DEBUG_UART_BCM63XX - def_bool ARCH_BCM_63XX - config DEBUG_UART_PHYS hex "Physical base address of debug UART" default 0x00100a00 if DEBUG_NETX_UART @@ -1457,7 +1460,7 @@ default 0xfffb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1 default 0xfffb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2 default 0xfffb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3 - default 0xfffe8600 if DEBUG_UART_BCM63XX + default 0xfffe8600 if DEBUG_BCM63XX_UART default 0xfffff700 if ARCH_IOP33X depends on ARCH_EP93XX || \ DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \ @@ -1469,7 +1472,7 @@ DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \ DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \ DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \ - DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \ + DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \ DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 config DEBUG_UART_VIRT @@ -1509,7 +1512,7 @@ default 0xfb10c000 if DEBUG_REALVIEW_PB1176_PORT default 0xfc40ab00 if DEBUG_BRCMSTB_UART default 0xfc705000 if DEBUG_ZTE_ZX - default 0xfcfe8600 if DEBUG_UART_BCM63XX + default 0xfcfe8600 if DEBUG_BCM63XX_UART default 0xfd000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX default 0xfd000000 if ARCH_SPEAR13XX default 0xfd012000 if ARCH_MV78XX0 @@ -1560,7 +1563,7 @@ DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \ DEBUG_NETX_UART || \ DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \ - DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \ + DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \ DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 config DEBUG_UART_8250_SHIFT --- 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-375.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/armada-375.dtsi @@ -510,7 +510,7 @@ }; sata@a0000 { - compatible = "marvell,orion-sata"; + compatible = "marvell,armada-370-sata"; reg = <0xa0000 0x5000>; interrupts = ; clocks = <&gateclk 14>, <&gateclk 20>; --- 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/armada-388-gp.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/armada-388-gp.dts @@ -288,16 +288,6 @@ gpio = <&expander0 4 GPIO_ACTIVE_HIGH>; }; - reg_usb2_1_vbus: v5-vbus1 { - compatible = "regulator-fixed"; - regulator-name = "v5.0-vbus1"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - enable-active-high; - regulator-always-on; - gpio = <&expander0 4 GPIO_ACTIVE_HIGH>; - }; - reg_sata0: pwr-sata0 { compatible = "regulator-fixed"; regulator-name = "pwr_en_sata0"; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/at91-sama5d4_xplained.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/at91-sama5d4_xplained.dts @@ -99,7 +99,7 @@ phy0: ethernet-phy@1 { interrupt-parent = <&pioE>; - interrupts = <1 IRQ_TYPE_EDGE_FALLING>; + interrupts = <1 IRQ_TYPE_LEVEL_LOW>; reg = <1>; }; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/at91-sama5d4ek.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/at91-sama5d4ek.dts @@ -142,8 +142,15 @@ }; macb0: ethernet@f8020000 { + pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>; phy-mode = "rmii"; status = "okay"; + + ethernet-phy@1 { + reg = <0x1>; + interrupt-parent = <&pioE>; + interrupts = <1 IRQ_TYPE_LEVEL_LOW>; + }; }; mmc1: mmc@fc000000 { @@ -175,6 +182,10 @@ pinctrl@fc06a000 { board { + pinctrl_macb0_phy_irq: macb0_phy_irq { + atmel,pins = + ; + }; pinctrl_mmc0_cd: mmc0_cd { atmel,pins = ; --- 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/dra7.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/dra7.dtsi @@ -1417,6 +1417,16 @@ 0x48485200 0x2E00>; #address-cells = <1>; #size-cells = <1>; + + /* + * Do not allow gating of cpsw clock as workaround + * for errata i877. Keeping internal clock disabled + * causes the device switching characteristics + * to degrade over time and eventually fail to meet + * the data manual delay time/skew specs. + */ + ti,no-idle; + /* * rx_thresh_pend * rx_pend --- 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/imx6q-gw5400-a.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/imx6q-gw5400-a.dts @@ -154,7 +154,7 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>; status = "okay"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi @@ -94,7 +94,7 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>; status = "okay"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi @@ -154,7 +154,7 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>; status = "okay"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi @@ -155,7 +155,7 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>; status = "okay"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi @@ -145,7 +145,7 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>; status = "okay"; }; --- 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/kirkwood-ds112.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/kirkwood-ds112.dts @@ -14,7 +14,7 @@ #include "kirkwood-synology.dtsi" / { - model = "Synology DS111"; + model = "Synology DS112"; compatible = "synology,ds111", "marvell,kirkwood"; memory { --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/kirkwood-ts219.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/kirkwood-ts219.dtsi @@ -40,7 +40,7 @@ }; poweroff@12100 { compatible = "qnap,power-off"; - reg = <0x12000 0x100>; + reg = <0x12100 0x100>; clocks = <&gate_clk 7>; }; spi@10600 { --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/logicpd-torpedo-som.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/logicpd-torpedo-som.dtsi @@ -122,6 +122,7 @@ interrupt-parent = <&gpio5>; interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */ ref-clock-frequency = <26000000>; + tcxo-clock-frequency = <26000000>; }; }; --- 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/r8a7740-armadillo800eva.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/r8a7740-armadillo800eva.dts @@ -180,7 +180,7 @@ }; &extal1_clk { - clock-frequency = <25000000>; + clock-frequency = <24000000>; }; &extal2_clk { clock-frequency = <48000000>; --- 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>; @@ -1334,7 +1334,7 @@ dbgu: serial@fc069000 { compatible = "atmel,at91sam9260-dbgu", "atmel,at91sam9260-usart"; reg = <0xfc069000 0x200>; - interrupts = <2 IRQ_TYPE_LEVEL_HIGH 7>; + interrupts = <45 IRQ_TYPE_LEVEL_HIGH 7>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_dbgu>; clocks = <&dbgu_clk>; --- 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/ste-nomadik-stn8815.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi @@ -122,22 +122,14 @@ }; mmcsd_default_mode: mmcsd_default { mmcsd_default_cfg1 { - /* MCCLK */ - pins = "GPIO8_B10"; - ste,output = <0>; - }; - mmcsd_default_cfg2 { - /* MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2 */ - pins = "GPIO10_C11", "GPIO15_A12", - "GPIO16_C13", "GPIO23_D15"; - ste,output = <1>; - }; - mmcsd_default_cfg3 { - /* MCCMD, MCDAT3-0, MCMSFBCLK */ - pins = "GPIO9_A10", "GPIO11_B11", - "GPIO12_A11", "GPIO13_C12", - "GPIO14_B12", "GPIO24_C15"; - ste,input = <1>; + /* + * MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2 + * MCCMD, MCDAT3-0, MCMSFBCLK + */ + pins = "GPIO8_B10", "GPIO9_A10", "GPIO10_C11", "GPIO11_B11", + "GPIO12_A11", "GPIO13_C12", "GPIO14_B12", "GPIO15_A12", + "GPIO16_C13", "GPIO23_D15", "GPIO24_C15"; + ste,output = <2>; }; }; }; @@ -804,10 +796,21 @@ clock-names = "mclk", "apb_pclk"; interrupt-parent = <&vica>; interrupts = <22>; - max-frequency = <48000000>; + max-frequency = <400000>; bus-width = <4>; cap-mmc-highspeed; cap-sd-highspeed; + full-pwr-cycle; + /* + * The STw4811 circuit used with the Nomadik strictly + * requires that all of these signal direction pins be + * routed and used for its 4-bit levelshifter. + */ + st,sig-dir-dat0; + st,sig-dir-dat2; + st,sig-dir-dat31; + st,sig-dir-cmd; + st,sig-pin-fbclk; pinctrl-names = "default"; pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>; vmmc-supply = <&vmmc_regulator>; --- 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/boot/dts/versatile-ab.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/versatile-ab.dts @@ -110,7 +110,11 @@ interrupt-parent = <&vic>; interrupts = <31>; /* Cascaded to vic */ clear-mask = <0xffffffff>; - valid-mask = <0xffc203f8>; + /* + * Valid interrupt lines mask according to + * table 4-36 page 4-50 of ARM DUI 0225D + */ + valid-mask = <0x0760031b>; }; dma@10130000 { @@ -266,8 +270,8 @@ }; mmc@5000 { compatible = "arm,pl180", "arm,primecell"; - reg = < 0x5000 0x1000>; - interrupts-extended = <&vic 22 &sic 2>; + reg = <0x5000 0x1000>; + interrupts-extended = <&vic 22 &sic 1>; clocks = <&xtal24mhz>, <&pclk>; clock-names = "mclk", "apb_pclk"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/versatile-pb.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/versatile-pb.dts @@ -5,6 +5,16 @@ compatible = "arm,versatile-pb"; amba { + /* The Versatile PB is using more SIC IRQ lines than the AB */ + sic: intc@10003000 { + clear-mask = <0xffffffff>; + /* + * Valid interrupt lines mask according to + * figure 3-30 page 3-74 of ARM DUI 0224B + */ + valid-mask = <0x7fe003ff>; + }; + gpio2: gpio@101e6000 { compatible = "arm,pl061", "arm,primecell"; reg = <0x101e6000 0x1000>; @@ -67,6 +77,13 @@ }; fpga { + mmc@5000 { + /* + * Overrides the interrupt assignment from + * the Versatile AB board file. + */ + interrupts-extended = <&sic 22 &sic 23>; + }; uart@9000 { compatible = "arm,pl011", "arm,primecell"; reg = <0x9000 0x1000>; @@ -86,7 +103,8 @@ mmc@b000 { compatible = "arm,pl180", "arm,primecell"; reg = <0xb000 0x1000>; - interrupts-extended = <&vic 23 &sic 2>; + interrupt-parent = <&sic>; + interrupts = <1>, <2>; clocks = <&xtal24mhz>, <&pclk>; clock-names = "mclk", "apb_pclk"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/vf610-colibri.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/vf610-colibri.dtsi @@ -18,8 +18,3 @@ reg = <0x80000000 0x10000000>; }; }; - -&L2 { - arm,data-latency = <2 1 2>; - arm,tag-latency = <3 2 3>; -}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/vf610.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/vf610.dtsi @@ -19,7 +19,7 @@ reg = <0x40006000 0x1000>; cache-unified; cache-level = <2>; - arm,data-latency = <1 1 1>; + arm,data-latency = <3 3 3>; arm,tag-latency = <2 2 2>; }; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/vfxxx.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/vfxxx.dtsi @@ -158,7 +158,7 @@ interrupts = <67 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks VF610_CLK_DSPI0>; clock-names = "dspi"; - spi-num-chipselects = <5>; + spi-num-chipselects = <6>; status = "disabled"; }; @@ -170,7 +170,7 @@ interrupts = <68 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks VF610_CLK_DSPI1>; clock-names = "dspi"; - spi-num-chipselects = <5>; + spi-num-chipselects = <4>; status = "disabled"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/wm8650.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/wm8650.dtsi @@ -187,6 +187,15 @@ interrupts = <43>; }; + sdhc@d800a000 { + compatible = "wm,wm8505-sdhc"; + reg = <0xd800a000 0x400>; + interrupts = <20>, <21>; + clocks = <&clksdhc>; + bus-width = <4>; + sdon-inverted; + }; + fb: fb@d8050800 { compatible = "wm,wm8505-fb"; reg = <0xd8050800 0x200>; --- 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/common/icst.c +++ linux-raspi2-4.2.0/arch/arm/common/icst.c @@ -16,7 +16,7 @@ */ #include #include - +#include #include /* @@ -29,7 +29,11 @@ unsigned long icst_hz(const struct icst_params *p, struct icst_vco vco) { - return p->ref * 2 * (vco.v + 8) / ((vco.r + 2) * p->s2div[vco.s]); + u64 dividend = p->ref * 2 * (u64)(vco.v + 8); + u32 divisor = (vco.r + 2) * p->s2div[vco.s]; + + do_div(dividend, divisor); + return (unsigned long)dividend; } EXPORT_SYMBOL(icst_hz); @@ -58,6 +62,7 @@ if (f > p->vco_min && f <= p->vco_max) break; + i++; } while (i < 8); if (i >= 8) --- 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/kernel/sys_oabi-compat.c +++ linux-raspi2-4.2.0/arch/arm/kernel/sys_oabi-compat.c @@ -193,15 +193,44 @@ pid_t l_pid; } __attribute__ ((packed,aligned(4))); -asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd, +static long do_locks(unsigned int fd, unsigned int cmd, unsigned long arg) { - struct oabi_flock64 user; struct flock64 kernel; - mm_segment_t fs = USER_DS; /* initialized to kill a warning */ - unsigned long local_arg = arg; - int ret; + struct oabi_flock64 user; + mm_segment_t fs; + long ret; + if (copy_from_user(&user, (struct oabi_flock64 __user *)arg, + sizeof(user))) + return -EFAULT; + kernel.l_type = user.l_type; + kernel.l_whence = user.l_whence; + kernel.l_start = user.l_start; + kernel.l_len = user.l_len; + kernel.l_pid = user.l_pid; + + fs = get_fs(); + set_fs(KERNEL_DS); + ret = sys_fcntl64(fd, cmd, (unsigned long)&kernel); + set_fs(fs); + + if (!ret && (cmd == F_GETLK64 || cmd == F_OFD_GETLK)) { + user.l_type = kernel.l_type; + user.l_whence = kernel.l_whence; + user.l_start = kernel.l_start; + user.l_len = kernel.l_len; + user.l_pid = kernel.l_pid; + if (copy_to_user((struct oabi_flock64 __user *)arg, + &user, sizeof(user))) + ret = -EFAULT; + } + return ret; +} + +asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd, + unsigned long arg) +{ switch (cmd) { case F_OFD_GETLK: case F_OFD_SETLK: @@ -209,39 +238,11 @@ case F_GETLK64: case F_SETLK64: case F_SETLKW64: - if (copy_from_user(&user, (struct oabi_flock64 __user *)arg, - sizeof(user))) - return -EFAULT; - kernel.l_type = user.l_type; - kernel.l_whence = user.l_whence; - kernel.l_start = user.l_start; - kernel.l_len = user.l_len; - kernel.l_pid = user.l_pid; - local_arg = (unsigned long)&kernel; - fs = get_fs(); - set_fs(KERNEL_DS); - } - - ret = sys_fcntl64(fd, cmd, local_arg); + return do_locks(fd, cmd, arg); - switch (cmd) { - case F_GETLK64: - if (!ret) { - user.l_type = kernel.l_type; - user.l_whence = kernel.l_whence; - user.l_start = kernel.l_start; - user.l_len = kernel.l_len; - user.l_pid = kernel.l_pid; - if (copy_to_user((struct oabi_flock64 __user *)arg, - &user, sizeof(user))) - ret = -EFAULT; - } - case F_SETLK64: - case F_SETLKW64: - set_fs(fs); + default: + return sys_fcntl64(fd, cmd, arg); } - - return ret; } struct oabi_epoll_event { --- 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/guest.c +++ linux-raspi2-4.2.0/arch/arm/kvm/guest.c @@ -155,7 +155,7 @@ u64 val; val = kvm_arm_timer_get_reg(vcpu, reg->id); - return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)); + return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)) ? -EFAULT : 0; } static unsigned long num_core_regs(void) --- 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 @@ -98,6 +98,11 @@ __kvm_flush_dcache_pud(pud); } +static bool kvm_is_device_pfn(unsigned long pfn) +{ + return !pfn_valid(pfn); +} + /** * stage2_dissolve_pmd() - clear and flush huge PMD entry * @kvm: pointer to kvm structure. @@ -213,7 +218,7 @@ kvm_tlb_flush_vmid_ipa(kvm, addr); /* No need to invalidate the cache for device mappings */ - if ((pte_val(old_pte) & PAGE_S2_DEVICE) != PAGE_S2_DEVICE) + if (!kvm_is_device_pfn(pte_pfn(old_pte))) kvm_flush_dcache_pte(old_pte); put_page(virt_to_page(pte)); @@ -305,8 +310,7 @@ pte = pte_offset_kernel(pmd, addr); do { - if (!pte_none(*pte) && - (pte_val(*pte) & PAGE_S2_DEVICE) != PAGE_S2_DEVICE) + if (!pte_none(*pte) && !kvm_is_device_pfn(pte_pfn(*pte))) kvm_flush_dcache_pte(*pte); } while (pte++, addr += PAGE_SIZE, addr != end); } @@ -1037,11 +1041,6 @@ return kvm_vcpu_dabt_iswrite(vcpu); } -static bool kvm_is_device_pfn(unsigned long pfn) -{ - return !pfn_valid(pfn); -} - /** * stage2_wp_ptes - write protect PMD range * @pmd: pointer to pmd entry @@ -1792,8 +1791,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-davinci/Kconfig +++ linux-raspi2-4.2.0/arch/arm/mach-davinci/Kconfig @@ -67,8 +67,6 @@ bool "TI DM644x EVM" default ARCH_DAVINCI_DM644x depends on ARCH_DAVINCI_DM644x - select EEPROM_AT24 - select I2C help Configure this option to specify the whether the board used for development is a DM644x EVM @@ -76,8 +74,6 @@ config MACH_SFFSDR bool "Lyrtech SFFSDR" depends on ARCH_DAVINCI_DM644x - select EEPROM_AT24 - select I2C help Say Y here to select the Lyrtech Small Form Factor Software Defined Radio (SFFSDR) board. @@ -108,8 +104,6 @@ bool "TI DM6467 EVM" default ARCH_DAVINCI_DM646x depends on ARCH_DAVINCI_DM646x - select EEPROM_AT24 - select I2C select MACH_DAVINCI_DM6467TEVM help Configure this option to specify the whether the board used @@ -122,8 +116,6 @@ bool "TI DM365 EVM" default ARCH_DAVINCI_DM365 depends on ARCH_DAVINCI_DM365 - select EEPROM_AT24 - select I2C help Configure this option to specify whether the board used for development is a DM365 EVM @@ -132,9 +124,7 @@ bool "TI DA830/OMAP-L137/AM17x Reference Platform" default ARCH_DAVINCI_DA830 depends on ARCH_DAVINCI_DA830 - select EEPROM_AT24 - select GPIO_PCF857X - select I2C + select GPIO_PCF857X if I2C help Say Y here to select the TI DA830/OMAP-L137/AM17x Evaluation Module. @@ -203,8 +193,6 @@ config MACH_MITYOMAPL138 bool "Critical Link MityDSP-L138/MityARM-1808 SoM" depends on ARCH_DAVINCI_DA850 - select EEPROM_AT24 - select I2C help Say Y here to select the Critical Link MityDSP-L138/MityARM-1808 System on Module. Information on this SoM may be found at --- linux-raspi2-4.2.0.orig/arch/arm/mach-davinci/board-dm644x-evm.c +++ linux-raspi2-4.2.0/arch/arm/mach-davinci/board-dm644x-evm.c @@ -267,7 +267,7 @@ static struct snd_platform_data dm644x_evm_snd_data; /*----------------------------------------------------------------------*/ - +#ifdef CONFIG_I2C /* * I2C GPIO expanders */ @@ -614,6 +614,7 @@ i2c_add_driver(&dm6446evm_msp_driver); i2c_register_board_info(1, i2c_info, ARRAY_SIZE(i2c_info)); } +#endif #define VENC_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL) @@ -782,7 +783,9 @@ pr_warn("%s: Cannot configure AEMIF\n", __func__); +#ifdef CONFIG_I2C evm_leds[7].default_trigger = "nand-disk"; +#endif if (HAS_NOR) pr_warn("WARNING: both NAND and NOR flash are enabled; disable one of them.\n"); } else if (HAS_NOR) @@ -791,9 +794,10 @@ platform_add_devices(davinci_evm_devices, ARRAY_SIZE(davinci_evm_devices)); +#ifdef CONFIG_I2C evm_init_i2c(); - davinci_setup_mmc(0, &dm6446evm_mmc_config); +#endif dm644x_init_video(&dm644xevm_capture_cfg, &dm644xevm_display_cfg); davinci_serial_init(dm644x_serial_device); --- linux-raspi2-4.2.0.orig/arch/arm/mach-davinci/board-dm646x-evm.c +++ linux-raspi2-4.2.0/arch/arm/mach-davinci/board-dm646x-evm.c @@ -121,6 +121,7 @@ #define HAS_ATA IS_ENABLED(CONFIG_BLK_DEV_PALMCHIP_BK3710) +#ifdef CONFIG_I2C /* CPLD Register 0 bits to control ATA */ #define DM646X_EVM_ATA_RST BIT(0) #define DM646X_EVM_ATA_PWD BIT(1) @@ -316,6 +317,7 @@ .setup = davinci_get_mac_addr, .context = (void *)0x7f00, }; +#endif static u8 dm646x_iis_serializer_direction[] = { TX_MODE, RX_MODE, INACTIVE_MODE, INACTIVE_MODE, @@ -346,6 +348,7 @@ }, }; +#ifdef CONFIG_I2C static struct i2c_client *cpld_client; static int cpld_video_probe(struct i2c_client *client, @@ -710,6 +713,7 @@ evm_init_cpld(); evm_init_video(); } +#endif #define DM6467T_EVM_REF_FREQ 33000000 @@ -764,7 +768,10 @@ if (ret) pr_warn("%s: GPIO init failed: %d\n", __func__, ret); +#ifdef CONFIG_I2C evm_init_i2c(); +#endif + davinci_serial_init(dm646x_serial_device); dm646x_init_mcasp0(&dm646x_evm_snd_data[0]); dm646x_init_mcasp1(&dm646x_evm_snd_data[1]); --- linux-raspi2-4.2.0.orig/arch/arm/mach-dove/include/mach/entry-macro.S +++ linux-raspi2-4.2.0/arch/arm/mach-dove/include/mach/entry-macro.S @@ -18,13 +18,13 @@ @ check low interrupts ldr \irqstat, [\base, #IRQ_CAUSE_LOW_OFF] ldr \tmp, [\base, #IRQ_MASK_LOW_OFF] - mov \irqnr, #31 + mov \irqnr, #32 ands \irqstat, \irqstat, \tmp @ if no low interrupts set, check high interrupts ldreq \irqstat, [\base, #IRQ_CAUSE_HIGH_OFF] ldreq \tmp, [\base, #IRQ_MASK_HIGH_OFF] - moveq \irqnr, #63 + moveq \irqnr, #64 andeqs \irqstat, \irqstat, \tmp @ find first active interrupt source --- 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-imx/Kconfig +++ linux-raspi2-4.2.0/arch/arm/mach-imx/Kconfig @@ -554,6 +554,7 @@ select ARM_GIC select HAVE_IMX_ANATOP select HAVE_IMX_MMDC + select HAVE_IMX_SRC help This enables support for Freescale i.MX7 Dual processor. --- linux-raspi2-4.2.0.orig/arch/arm/mach-imx/gpc.c +++ linux-raspi2-4.2.0/arch/arm/mach-imx/gpc.c @@ -176,6 +176,7 @@ .irq_unmask = imx_gpc_irq_unmask, .irq_retrigger = irq_chip_retrigger_hierarchy, .irq_set_wake = imx_gpc_irq_set_wake, + .irq_set_type = irq_chip_set_type_parent, #ifdef CONFIG_SMP .irq_set_affinity = irq_chip_set_affinity_parent, #endif --- 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/cpuidle34xx.c +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/cpuidle34xx.c @@ -34,6 +34,7 @@ #include "pm.h" #include "control.h" #include "common.h" +#include "soc.h" /* Mach specific information to be recorded in the C-state driver_data */ struct omap3_idle_statedata { @@ -315,6 +316,69 @@ .safe_state_index = 0, }; +/* + * Numbers based on measurements made in October 2009 for PM optimized kernel + * with CPU freq enabled on device Nokia N900. Assumes OPP2 (main idle OPP, + * and worst case latencies). + */ +static struct cpuidle_driver omap3430_idle_driver = { + .name = "omap3430_idle", + .owner = THIS_MODULE, + .states = { + { + .enter = omap3_enter_idle_bm, + .exit_latency = 110 + 162, + .target_residency = 5, + .name = "C1", + .desc = "MPU ON + CORE ON", + }, + { + .enter = omap3_enter_idle_bm, + .exit_latency = 106 + 180, + .target_residency = 309, + .name = "C2", + .desc = "MPU ON + CORE ON", + }, + { + .enter = omap3_enter_idle_bm, + .exit_latency = 107 + 410, + .target_residency = 46057, + .name = "C3", + .desc = "MPU RET + CORE ON", + }, + { + .enter = omap3_enter_idle_bm, + .exit_latency = 121 + 3374, + .target_residency = 46057, + .name = "C4", + .desc = "MPU OFF + CORE ON", + }, + { + .enter = omap3_enter_idle_bm, + .exit_latency = 855 + 1146, + .target_residency = 46057, + .name = "C5", + .desc = "MPU RET + CORE RET", + }, + { + .enter = omap3_enter_idle_bm, + .exit_latency = 7580 + 4134, + .target_residency = 484329, + .name = "C6", + .desc = "MPU OFF + CORE RET", + }, + { + .enter = omap3_enter_idle_bm, + .exit_latency = 7505 + 15274, + .target_residency = 484329, + .name = "C7", + .desc = "MPU OFF + CORE OFF", + }, + }, + .state_count = ARRAY_SIZE(omap3_idle_data), + .safe_state_index = 0, +}; + /* Public functions */ /** @@ -333,5 +397,8 @@ if (!mpu_pd || !core_pd || !per_pd || !cam_pd) return -ENODEV; - return cpuidle_register(&omap3_idle_driver, NULL); + if (cpu_is_omap3430()) + return cpuidle_register(&omap3430_idle_driver, NULL); + else + return cpuidle_register(&omap3_idle_driver, NULL); } --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/gpmc-onenand.c +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/gpmc-onenand.c @@ -101,10 +101,8 @@ static void set_onenand_cfg(void __iomem *onenand_base) { - u32 reg; + u32 reg = ONENAND_SYS_CFG1_RDY | ONENAND_SYS_CFG1_INT; - reg = readw(onenand_base + ONENAND_REG_SYS_CFG1); - reg &= ~((0x7 << ONENAND_SYS_CFG1_BRL_SHIFT) | (0x7 << 9)); reg |= (latency << ONENAND_SYS_CFG1_BRL_SHIFT) | ONENAND_SYS_CFG1_BL_16; if (onenand_flags & ONENAND_FLAG_SYNCREAD) @@ -123,6 +121,7 @@ reg |= ONENAND_SYS_CFG1_VHF; else reg &= ~ONENAND_SYS_CFG1_VHF; + writew(reg, onenand_base + ONENAND_REG_SYS_CFG1); } @@ -149,8 +148,8 @@ freq = 104; break; default: - freq = 54; - break; + pr_err("onenand rate not detected, bad GPMC async timings?\n"); + freq = 0; } return freq; @@ -271,6 +270,11 @@ struct gpmc_timings t; int ret; + /* + * Note that we need to keep sync_write set for the call to + * omap2_onenand_set_async_mode() to work to detect the onenand + * supported clock rate for the sync timings. + */ if (gpmc_onenand_data->of_node) { gpmc_read_settings_dt(gpmc_onenand_data->of_node, &onenand_async); @@ -281,12 +285,10 @@ else gpmc_onenand_data->flags |= ONENAND_SYNC_READ; onenand_async.sync_read = false; - onenand_async.sync_write = false; } } - omap2_onenand_set_async_mode(onenand_base); - + onenand_async.sync_write = true; omap2_onenand_calc_async_timings(&t); ret = gpmc_cs_program_settings(gpmc_onenand_data->cs, &onenand_async); @@ -310,6 +312,8 @@ if (!freq) { /* Very first call freq is not known */ freq = omap2_onenand_get_freq(gpmc_onenand_data, onenand_base); + if (!freq) + return -ENODEV; set_onenand_cfg(onenand_base); } --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/omap_hwmod.c +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/omap_hwmod.c @@ -2180,6 +2180,11 @@ */ static int _idle(struct omap_hwmod *oh) { + if (oh->flags & HWMOD_NO_IDLE) { + oh->_int_flags |= _HWMOD_SKIP_ENABLE; + return 0; + } + pr_debug("omap_hwmod: %s: idling\n", oh->name); if (oh->_state != _HWMOD_STATE_ENABLED) { @@ -2484,6 +2489,8 @@ oh->flags |= HWMOD_INIT_NO_RESET; if (of_find_property(np, "ti,no-idle-on-init", NULL)) oh->flags |= HWMOD_INIT_NO_IDLE; + if (of_find_property(np, "ti,no-idle", NULL)) + oh->flags |= HWMOD_NO_IDLE; } oh->_state = _HWMOD_STATE_INITIALIZED; @@ -2610,7 +2617,7 @@ * XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data - * it should be set by the core code as a runtime flag during startup */ - if ((oh->flags & HWMOD_INIT_NO_IDLE) && + if ((oh->flags & (HWMOD_INIT_NO_IDLE | HWMOD_NO_IDLE)) && (postsetup_state == _HWMOD_STATE_IDLE)) { oh->_int_flags |= _HWMOD_SKIP_ENABLE; postsetup_state = _HWMOD_STATE_ENABLED; --- 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) @@ -523,6 +534,8 @@ * HWMOD_RECONFIG_IO_CHAIN: omap_hwmod code needs to reconfigure wake-up * events by calling _reconfigure_io_chain() when a device is enabled * or idled. + * HWMOD_NO_IDLE: Do not idle the hwmod at all. Useful to handle certain + * IPs like CPSW on DRA7, where clocks to this module cannot be disabled. */ #define HWMOD_SWSUP_SIDLE (1 << 0) #define HWMOD_SWSUP_MSTANDBY (1 << 1) @@ -538,6 +551,7 @@ #define HWMOD_FORCE_MSTANDBY (1 << 11) #define HWMOD_SWSUP_SIDLE_ACT (1 << 12) #define HWMOD_RECONFIG_IO_CHAIN (1 << 13) +#define HWMOD_NO_IDLE (1 << 15) /* * omap_hwmod._int_flags definitions --- 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-omap2/sleep34xx.S +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/sleep34xx.S @@ -86,13 +86,18 @@ stmfd sp!, {lr} @ save registers on stack /* Setup so that we will disable and enable l2 */ mov r1, #0x1 - adrl r2, l2dis_3630 @ may be too distant for plain adr - str r1, [r2] + adrl r3, l2dis_3630_offset @ may be too distant for plain adr + ldr r2, [r3] @ value for offset + str r1, [r2, r3] @ write to l2dis_3630 ldmfd sp!, {pc} @ restore regs and return ENDPROC(enable_omap3630_toggle_l2_on_restore) - .text -/* Function to call rom code to save secure ram context */ +/* + * Function to call rom code to save secure ram context. This gets + * relocated to SRAM, so it can be all in .data section. Otherwise + * we need to initialize api_params separately. + */ + .data .align 3 ENTRY(save_secure_ram_context) stmfd sp!, {r4 - r11, lr} @ save registers on stack @@ -126,6 +131,8 @@ ENTRY(save_secure_ram_context_sz) .word . - save_secure_ram_context + .text + /* * ====================== * == Idle entry point == @@ -289,12 +296,6 @@ bic r5, r5, #0x40 str r5, [r4] -/* - * PC-relative stores lead to undefined behaviour in Thumb-2: use a r7 as a - * base instead. - * Be careful not to clobber r7 when maintaing this code. - */ - is_dll_in_lock_mode: /* Is dll in lock mode? */ ldr r4, sdrc_dlla_ctrl @@ -302,11 +303,7 @@ tst r5, #0x4 bne exit_nonoff_modes @ Return if locked /* wait till dll locks */ - adr r7, kick_counter wait_dll_lock_timed: - ldr r4, wait_dll_lock_counter - add r4, r4, #1 - str r4, [r7, #wait_dll_lock_counter - kick_counter] ldr r4, sdrc_dlla_status /* Wait 20uS for lock */ mov r6, #8 @@ -330,9 +327,6 @@ orr r6, r6, #(1<<3) @ enable dll str r6, [r4] dsb - ldr r4, kick_counter - add r4, r4, #1 - str r4, [r7] @ kick_counter b wait_dll_lock_timed exit_nonoff_modes: @@ -360,15 +354,6 @@ .word SDRC_DLLA_STATUS_V sdrc_dlla_ctrl: .word SDRC_DLLA_CTRL_V - /* - * When exporting to userspace while the counters are in SRAM, - * these 2 words need to be at the end to facilitate retrival! - */ -kick_counter: - .word 0 -wait_dll_lock_counter: - .word 0 - ENTRY(omap3_do_wfi_sz) .word . - omap3_do_wfi @@ -437,7 +422,9 @@ cmp r2, #0x0 @ Check if target power state was OFF or RET bne logic_l1_restore - ldr r0, l2dis_3630 + adr r1, l2dis_3630_offset @ address for offset + ldr r0, [r1] @ value for offset + ldr r0, [r1, r0] @ value at l2dis_3630 cmp r0, #0x1 @ should we disable L2 on 3630? bne skipl2dis mrc p15, 0, r0, c1, c0, 1 @@ -449,12 +436,14 @@ and r1, #0x700 cmp r1, #0x300 beq l2_inv_gp + adr r0, l2_inv_api_params_offset + ldr r3, [r0] + add r3, r3, r0 @ r3 points to dummy parameters mov r0, #40 @ set service ID for PPA mov r12, r0 @ copy secure Service ID in r12 mov r1, #0 @ set task id for ROM code in r1 mov r2, #4 @ set some flags in r2, r6 mov r6, #0xff - adr r3, l2_inv_api_params @ r3 points to dummy parameters dsb @ data write barrier dmb @ data memory barrier smc #1 @ call SMI monitor (smi #1) @@ -488,8 +477,8 @@ b logic_l1_restore .align -l2_inv_api_params: - .word 0x1, 0x00 +l2_inv_api_params_offset: + .long l2_inv_api_params - . l2_inv_gp: /* Execute smi to invalidate L2 cache */ mov r12, #0x1 @ set up to invalidate L2 @@ -506,7 +495,9 @@ mov r12, #0x2 smc #0 @ Call SMI monitor (smieq) logic_l1_restore: - ldr r1, l2dis_3630 + adr r0, l2dis_3630_offset @ adress for offset + ldr r1, [r0] @ value for offset + ldr r1, [r0, r1] @ value at l2dis_3630 cmp r1, #0x1 @ Test if L2 re-enable needed on 3630 bne skipl2reen mrc p15, 0, r1, c1, c0, 1 @@ -535,9 +526,17 @@ .word CONTROL_STAT control_mem_rta: .word CONTROL_MEM_RTA_CTRL +l2dis_3630_offset: + .long l2dis_3630 - . + + .data l2dis_3630: .word 0 + .data +l2_inv_api_params: + .word 0x1, 0x00 + /* * Internal functions */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/sleep44xx.S +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/sleep44xx.S @@ -29,12 +29,6 @@ dsb .endm -ppa_zero_params: - .word 0x0 - -ppa_por_params: - .word 1, 0 - #ifdef CONFIG_ARCH_OMAP4 /* @@ -266,7 +260,9 @@ beq skip_ns_smp_enable ppa_actrl_retry: mov r0, #OMAP4_PPA_CPU_ACTRL_SMP_INDEX - adr r3, ppa_zero_params @ Pointer to parameters + adr r1, ppa_zero_params_offset + ldr r3, [r1] + add r3, r3, r1 @ Pointer to ppa_zero_params mov r1, #0x0 @ Process ID mov r2, #0x4 @ Flag mov r6, #0xff @@ -303,7 +299,9 @@ ldr r0, =OMAP4_PPA_L2_POR_INDEX ldr r1, =OMAP44XX_SAR_RAM_BASE ldr r4, [r1, #L2X0_PREFETCH_CTRL_OFFSET] - adr r3, ppa_por_params + adr r1, ppa_por_params_offset + ldr r3, [r1] + add r3, r3, r1 @ Pointer to ppa_por_params str r4, [r3, #0x04] mov r1, #0x0 @ Process ID mov r2, #0x4 @ Flag @@ -328,6 +326,8 @@ #endif b cpu_resume @ Jump to generic resume +ppa_por_params_offset: + .long ppa_por_params - . ENDPROC(omap4_cpu_resume) #endif /* CONFIG_ARCH_OMAP4 */ @@ -382,4 +382,13 @@ nop ldmfd sp!, {pc} +ppa_zero_params_offset: + .long ppa_zero_params - . ENDPROC(omap_do_wfi) + + .data +ppa_zero_params: + .word 0 + +ppa_por_params: + .word 1, 0 --- linux-raspi2-4.2.0.orig/arch/arm/mach-orion5x/include/mach/entry-macro.S +++ linux-raspi2-4.2.0/arch/arm/mach-orion5x/include/mach/entry-macro.S @@ -21,5 +21,5 @@ @ find cause bits that are unmasked ands \irqstat, \irqstat, \tmp @ clear Z flag if any clzne \irqnr, \irqstat @ calc irqnr - rsbne \irqnr, \irqnr, #31 + rsbne \irqnr, \irqnr, #32 .endm --- 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-prima2/Kconfig +++ linux-raspi2-4.2.0/arch/arm/mach-prima2/Kconfig @@ -1,6 +1,7 @@ menuconfig ARCH_SIRF bool "CSR SiRF" if ARCH_MULTI_V7 select ARCH_HAS_RESET_CONTROLLER + select RESET_CONTROLLER select ARCH_REQUIRE_GPIOLIB select GENERIC_IRQ_CHIP select NO_IOPORT_MAP --- 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/context.c +++ linux-raspi2-4.2.0/arch/arm/mm/context.c @@ -165,13 +165,28 @@ __flush_icache_all(); } -static int is_reserved_asid(u64 asid) +static bool check_update_reserved_asid(u64 asid, u64 newasid) { int cpu; - for_each_possible_cpu(cpu) - if (per_cpu(reserved_asids, cpu) == asid) - return 1; - return 0; + bool hit = false; + + /* + * Iterate over the set of reserved ASIDs looking for a match. + * If we find one, then we can update our mm to use newasid + * (i.e. the same ASID in the current generation) but we can't + * exit the loop early, since we need to ensure that all copies + * of the old ASID are updated to reflect the mm. Failure to do + * so could result in us missing the reserved ASID in a future + * generation. + */ + for_each_possible_cpu(cpu) { + if (per_cpu(reserved_asids, cpu) == asid) { + hit = true; + per_cpu(reserved_asids, cpu) = newasid; + } + } + + return hit; } static u64 new_context(struct mm_struct *mm, unsigned int cpu) @@ -181,12 +196,14 @@ u64 generation = atomic64_read(&asid_generation); if (asid != 0) { + u64 newasid = generation | (asid & ~ASID_MASK); + /* * If our current ASID was active during a rollover, we * can continue to use it and this was just a false alarm. */ - if (is_reserved_asid(asid)) - return generation | (asid & ~ASID_MASK); + if (check_update_reserved_asid(asid, newasid)) + return newasid; /* * We had a valid ASID in a previous life, so try to re-use @@ -194,7 +211,7 @@ */ asid &= ~ASID_MASK; if (!__test_and_set_bit(asid, asid_map)) - goto bump_gen; + return newasid; } /* @@ -216,11 +233,8 @@ __set_bit(asid, asid_map); cur_idx = asid; - -bump_gen: - asid |= generation; cpumask_clear(mm_cpumask(mm)); - return asid; + return asid | generation; } void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk) --- 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 @@ -95,7 +95,7 @@ .equ cpu_v7_suspend_size, 4 * 9 #ifdef CONFIG_ARM_CPU_SUSPEND ENTRY(cpu_v7_do_suspend) - stmfd sp!, {r4 - r10, lr} + stmfd sp!, {r4 - r11, lr} mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID mrc p15, 0, r5, c13, c0, 3 @ User r/o thread ID stmia r0!, {r4 - r5} @@ -112,7 +112,7 @@ mrc p15, 0, r9, c1, c0, 1 @ Auxiliary control register mrc p15, 0, r10, c1, c0, 2 @ Co-processor access control stmia r0, {r5 - r11} - ldmfd sp!, {r4 - r10, pc} + ldmfd sp!, {r4 - r11, pc} ENDPROC(cpu_v7_do_suspend) ENTRY(cpu_v7_do_resume) @@ -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/net/bpf_jit_32.c +++ linux-raspi2-4.2.0/arch/arm/net/bpf_jit_32.c @@ -182,19 +182,6 @@ return fls(ctx->seen & SEEN_MEM); } -static inline bool is_load_to_a(u16 inst) -{ - switch (inst) { - case BPF_LD | BPF_W | BPF_LEN: - case BPF_LD | BPF_W | BPF_ABS: - case BPF_LD | BPF_H | BPF_ABS: - case BPF_LD | BPF_B | BPF_ABS: - return true; - default: - return false; - } -} - static void jit_fill_hole(void *area, unsigned int size) { u32 *ptr; @@ -206,7 +193,6 @@ static void build_prologue(struct jit_ctx *ctx) { u16 reg_set = saved_regs(ctx); - u16 first_inst = ctx->skf->insns[0].code; u16 off; #ifdef CONFIG_FRAME_POINTER @@ -236,7 +222,7 @@ emit(ARM_MOV_I(r_X, 0), ctx); /* do not leak kernel data to userspace */ - if ((first_inst != (BPF_RET | BPF_K)) && !(is_load_to_a(first_inst))) + if (bpf_needs_clear_a(&ctx->skf->insns[0])) emit(ARM_MOV_I(r_A, 0), ctx); /* stack space for the BPF_MEM words */ --- 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 @@ -104,6 +104,10 @@ config STACKTRACE_SUPPORT def_bool y +config ILLEGAL_POINTER_VALUE + hex + default 0xdead000000000000 + config LOCKDEP_SUPPORT def_bool y @@ -417,6 +421,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 @@ -767,6 +814,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 @@ -18,6 +18,7 @@ KBUILD_DEFCONFIG := defconfig KBUILD_CFLAGS += -mgeneral-regs-only +KBUILD_CFLAGS += $(call cc-option, -mpc-relative-literal-loads) ifeq ($(CONFIG_CPU_BIG_ENDIAN), y) KBUILD_CPPFLAGS += -mbig-endian AS += -EB @@ -30,6 +31,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_emulate.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/kvm_emulate.h @@ -99,11 +99,13 @@ *vcpu_cpsr(vcpu) |= COMPAT_PSR_T_BIT; } +/* + * vcpu_reg should always be passed a register number coming from a + * read of ESR_EL2. Otherwise, it may give the wrong result on AArch32 + * with banked registers. + */ static inline unsigned long *vcpu_reg(const struct kvm_vcpu *vcpu, u8 reg_num) { - if (vcpu_mode_is_32bit(vcpu)) - return vcpu_reg32(vcpu, reg_num); - return (unsigned long *)&vcpu_gp_regs(vcpu)->regs.regs[reg_num]; } --- 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/pgtable.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/pgtable.h @@ -33,7 +33,7 @@ /* * VMALLOC and SPARSEMEM_VMEMMAP ranges. * - * VMEMAP_SIZE: allows the whole VA space to be covered by a struct page array + * VMEMAP_SIZE: allows the whole linear region to be covered by a struct page array * (rounded up to PUD_SIZE). * VMALLOC_START: beginning of the kernel VA space * VMALLOC_END: extends to the available space below vmmemmap, PCI I/O space, @@ -43,7 +43,9 @@ #define VMALLOC_START (UL(0xffffffffffffffff) << VA_BITS) #define VMALLOC_END (PAGE_OFFSET - PUD_SIZE - VMEMMAP_SIZE - SZ_64K) -#define vmemmap ((struct page *)(VMALLOC_END + SZ_64K)) +#define VMEMMAP_START (VMALLOC_END + SZ_64K) +#define vmemmap ((struct page *)VMEMMAP_START - \ + SECTION_ALIGN_DOWN(memstart_addr >> PAGE_SHIFT)) #define FIRST_USER_ADDRESS 0UL @@ -80,7 +82,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 +462,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/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/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,16 @@ msr hstr_el2, xzr // Disable CP15 traps to EL2 #endif + /* EL2 debug */ + mrs x0, id_aa64dfr0_el1 // Check ID_AA64DFR0_EL1 PMUVer + sbfx x0, x0, #8, #4 + cmp x0, #1 + b.lt 4f // Skip if no PMU present + 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 +4: + /* 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/perf_event.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/perf_event.c @@ -1242,9 +1242,6 @@ /* Initialize & Reset PMNC: C and P bits. */ armv8pmu_pmcr_write(ARMV8_PMCR_P | ARMV8_PMCR_C); - - /* Disable access from userspace. */ - asm volatile("msr pmuserenr_el0, %0" :: "r" (0)); } static int armv8_pmuv3_map_event(struct perf_event *event) --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/ptrace.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/ptrace.c @@ -58,6 +58,12 @@ */ void ptrace_disable(struct task_struct *child) { + /* + * This would be better off in core code, but PTRACE_DETACH has + * grown its fair share of arch-specific worts and changing it + * is likely to cause regressions on obscure architectures. + */ + user_disable_single_step(child); } #ifdef CONFIG_HAVE_HW_BREAKPOINT --- 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/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 @@ -1,3 +1,4 @@ +#include #include #include #include @@ -71,6 +72,13 @@ local_dbg_save(flags); /* + * Function graph tracer state gets incosistent when the kernel + * calls functions that never return (aka suspend finishers) hence + * disable graph tracing during their execution. + */ + pause_graph_tracing(); + + /* * mm context saved on the stack, it will be restored when * the cpu comes out of reset through the identity mapped * page tables, so that the thread address space is properly @@ -80,17 +88,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 @@ -107,6 +119,8 @@ hw_breakpoint_restore(NULL); } + unpause_graph_tracing(); + /* * Restore pstate flags. OS lock and mdscr have been already * restored, so from this point onwards, debugging is fully --- 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<id); - return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)); + return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)) ? -EFAULT : 0; } /** --- linux-raspi2-4.2.0.orig/arch/arm64/kvm/hyp.S +++ linux-raspi2-4.2.0/arch/arm64/kvm/hyp.S @@ -840,8 +840,6 @@ mrs x3, cntv_ctl_el0 and x3, x3, #3 str w3, [x0, #VCPU_TIMER_CNTV_CTL] - bic x3, x3, #1 // Clear Enable - msr cntv_ctl_el0, x3 isb @@ -849,6 +847,9 @@ str x3, [x0, #VCPU_TIMER_CNTV_CVAL] 1: + // Disable the virtual timer + msr cntv_ctl_el0, xzr + // Allow physical timer/counter access for the host mrs x2, cnthctl_el2 orr x2, x2, #3 @@ -943,13 +944,15 @@ // Guest context add x2, x0, #VCPU_CONTEXT + // We must restore the 32-bit state before the sysregs, thanks + // to Cortex-A57 erratum #852523. + restore_guest_32bit_state bl __restore_sysregs bl __restore_fpsimd skip_debug_state x3, 1f bl __restore_debug 1: - restore_guest_32bit_state restore_guest_regs // That's it, no more messing around. --- linux-raspi2-4.2.0.orig/arch/arm64/kvm/inject_fault.c +++ linux-raspi2-4.2.0/arch/arm64/kvm/inject_fault.c @@ -48,7 +48,7 @@ /* Note: These now point to the banked copies */ *vcpu_spsr(vcpu) = new_spsr_value; - *vcpu_reg(vcpu, 14) = *vcpu_pc(vcpu) + return_offset; + *vcpu_reg32(vcpu, 14) = *vcpu_pc(vcpu) + return_offset; /* Branch to exception vector */ if (sctlr & (1 << 13)) --- linux-raspi2-4.2.0.orig/arch/arm64/kvm/reset.c +++ linux-raspi2-4.2.0/arch/arm64/kvm/reset.c @@ -56,7 +56,7 @@ return !!(pfr0 & 0x20); } -int kvm_arch_dev_ioctl_check_extension(long ext) +int kvm_arch_dev_ioctl_check_extension(struct kvm *kvm, long ext) { int r; @@ -64,6 +64,12 @@ case KVM_CAP_ARM_EL1_32BIT: r = cpu_has_32bit_el1(); break; + case KVM_CAP_MSI_DEVID: + if (!kvm) + r = -EINVAL; + else + r = kvm->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/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 @@ -312,8 +312,8 @@ " .data : 0x%p" " - 0x%p" " (%6ld KB)\n", MLG(VMALLOC_START, VMALLOC_END), #ifdef CONFIG_SPARSEMEM_VMEMMAP - MLG((unsigned long)vmemmap, - (unsigned long)vmemmap + VMEMMAP_SIZE), + MLG(VMEMMAP_START, + VMEMMAP_START + VMEMMAP_SIZE), MLM((unsigned long)virt_to_page(PAGE_OFFSET), (unsigned long)virt_to_page(high_memory)), #endif --- linux-raspi2-4.2.0.orig/arch/arm64/mm/mmu.c +++ linux-raspi2-4.2.0/arch/arm64/mm/mmu.c @@ -451,6 +451,9 @@ empty_zero_page = virt_to_page(zero_page); + /* Ensure the zero page is visible to the page table walker */ + dsb(ishst); + /* * TTBR0 is only used for the identity mapping at this stage. Make it * point to zero page to avoid speculatively fetching new entries. --- linux-raspi2-4.2.0.orig/arch/arm64/mm/pageattr.c +++ linux-raspi2-4.2.0/arch/arm64/mm/pageattr.c @@ -57,6 +57,9 @@ if (end < MODULES_VADDR || end >= MODULES_END) return -EINVAL; + if (!numpages) + return 0; + data.set_mask = set_mask; data.clear_mask = clear_mask; --- linux-raspi2-4.2.0.orig/arch/arm64/mm/proc-macros.S +++ linux-raspi2-4.2.0/arch/arm64/mm/proc-macros.S @@ -62,3 +62,15 @@ bfi \valreg, \tmpreg, #TCR_T0SZ_OFFSET, #TCR_TxSZ_WIDTH #endif .endm + +/* + * reset_pmuserenr_el0 - reset PMUSERENR_EL0 if PMUv3 present + */ + .macro reset_pmuserenr_el0, tmpreg + mrs \tmpreg, id_aa64dfr0_el1 // Check ID_AA64DFR0_EL1 PMUVer + sbfx \tmpreg, \tmpreg, #8, #4 + cmp \tmpreg, #1 // Skip if no PMU present + b.lt 9000f + msr pmuserenr_el0, xzr // Disable PMU access from EL0 +9000: + .endm --- linux-raspi2-4.2.0.orig/arch/arm64/mm/proc.S +++ linux-raspi2-4.2.0/arch/arm64/mm/proc.S @@ -119,6 +119,7 @@ */ ubfx x11, x11, #1, #1 msr oslar_el1, x11 + reset_pmuserenr_el0 x0 // Disable PMU access from EL0 mov x0, x12 dsb nsh // Make sure local tlb invalidation completed isb @@ -156,7 +157,9 @@ mov x0, #3 << 20 msr cpacr_el1, x0 // Enable FP/ASIMD - msr mdscr_el1, xzr // Reset mdscr_el1 + mov x0, #1 << 12 // Reset mdscr_el1 and disable + msr mdscr_el1, x0 // access to the DCC from EL0 + reset_pmuserenr_el0 x0 // Disable PMU access from EL0 /* * Memory region attributes for LPAE: * --- 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/m32r/kernel/setup.c +++ linux-raspi2-4.2.0/arch/m32r/kernel/setup.c @@ -81,7 +81,10 @@ }; unsigned long memory_start; +EXPORT_SYMBOL(memory_start); + unsigned long memory_end; +EXPORT_SYMBOL(memory_end); void __init setup_arch(char **); int get_cpuinfo(char *); --- linux-raspi2-4.2.0.orig/arch/m68k/atari/config.c +++ linux-raspi2-4.2.0/arch/m68k/atari/config.c @@ -858,7 +858,7 @@ }; #endif /* CONFIG_ATARI_ETHERNEC */ -#ifdef CONFIG_ATARI_SCSI +#if IS_ENABLED(CONFIG_ATARI_SCSI) static const struct resource atari_scsi_st_rsrc[] __initconst = { { .flags = IORESOURCE_IRQ, @@ -910,7 +910,7 @@ } #endif -#ifdef CONFIG_ATARI_SCSI +#if IS_ENABLED(CONFIG_ATARI_SCSI) if (ATARIHW_PRESENT(ST_SCSI)) platform_device_register_simple("atari_scsi", -1, atari_scsi_st_rsrc, ARRAY_SIZE(atari_scsi_st_rsrc)); --- 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/m68k/sun3/config.c +++ linux-raspi2-4.2.0/arch/m68k/sun3/config.c @@ -171,7 +171,7 @@ intersil_clear(); } -#ifdef CONFIG_SUN3_SCSI +#if IS_ENABLED(CONFIG_SUN3_SCSI) static const struct resource sun3_scsi_vme_rsrc[] __initconst = { { --- linux-raspi2-4.2.0.orig/arch/mips/Kconfig +++ linux-raspi2-4.2.0/arch/mips/Kconfig @@ -2117,7 +2117,7 @@ select CPU_MIPSR2_IRQ_VI select CPU_MIPSR2_IRQ_EI select SYNC_R4K - select MIPS_GIC_IPI + select MIPS_GIC_IPI if MIPS_GIC select MIPS_MT select SMP select SMP_UP @@ -2215,7 +2215,7 @@ config MIPS_CMP bool "MIPS CMP framework support (DEPRECATED)" depends on SYS_SUPPORTS_MIPS_CMP - select MIPS_GIC_IPI + select MIPS_GIC_IPI if MIPS_GIC select SMP select SYNC_R4K select SYS_SUPPORTS_SMP @@ -2235,7 +2235,7 @@ select MIPS_CM select MIPS_CPC select MIPS_CPS_PM if HOTPLUG_CPU - select MIPS_GIC_IPI + select MIPS_GIC_IPI if MIPS_GIC select SMP select SYNC_R4K if (CEVT_R4K || CSRC_R4K) select SYS_SUPPORTS_HOTPLUG_CPU @@ -2254,6 +2254,7 @@ bool config MIPS_GIC_IPI + depends on MIPS_GIC bool config MIPS_CM --- 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/include/asm/pgtable.h +++ linux-raspi2-4.2.0/arch/mips/include/asm/pgtable.h @@ -353,7 +353,7 @@ static inline pte_t pte_mkyoung(pte_t pte) { pte_val(pte) |= _PAGE_ACCESSED; -#ifdef CONFIG_CPU_MIPSR2 +#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) if (!(pte_val(pte) & _PAGE_NO_READ)) pte_val(pte) |= _PAGE_SILENT_READ; else @@ -558,7 +558,7 @@ { pmd_val(pmd) |= _PAGE_ACCESSED; -#ifdef CONFIG_CPU_MIPSR2 +#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) if (!(pmd_val(pmd) & _PAGE_NO_READ)) pmd_val(pmd) |= _PAGE_SILENT_READ; else --- linux-raspi2-4.2.0.orig/arch/mips/include/asm/syscall.h +++ linux-raspi2-4.2.0/arch/mips/include/asm/syscall.h @@ -101,10 +101,8 @@ /* O32 ABI syscall() - Either 64-bit with O32 or 32-bit */ if ((config_enabled(CONFIG_32BIT) || test_tsk_thread_flag(task, TIF_32BIT_REGS)) && - (regs->regs[2] == __NR_syscall)) { + (regs->regs[2] == __NR_syscall)) i++; - n++; - } while (n--) ret |= mips_get_syscall_arg(args++, task, regs, i++); --- linux-raspi2-4.2.0.orig/arch/mips/include/asm/uaccess.h +++ linux-raspi2-4.2.0/arch/mips/include/asm/uaccess.h @@ -1384,7 +1384,7 @@ might_fault(); __asm__ __volatile__( "move\t$4, %1\n\t" - __MODULE_JAL(__strlen_kernel_asm) + __MODULE_JAL(__strlen_user_asm) "move\t%0, $2" : "=r" (res) : "r" (s) --- 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,13 +224,11 @@ 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 .set mt /* Only allow 1 TC per VPE to execute... */ @@ -302,7 +301,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 +309,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 +330,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 +338,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 @@ -346,7 +347,6 @@ nop .set push - .set mips64r2 .set mt 1: /* Enter VPE configuration state */ @@ -451,7 +451,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/kernel/smp.c +++ linux-raspi2-4.2.0/arch/mips/kernel/smp.c @@ -120,6 +120,7 @@ cpumask_t temp_foreign_map; /* Re-calculate the mask */ + cpumask_clear(&temp_foreign_map); for_each_online_cpu(i) { core_present = 0; for_each_cpu(k, &temp_foreign_map) --- linux-raspi2-4.2.0.orig/arch/mips/kernel/traps.c +++ linux-raspi2-4.2.0/arch/mips/kernel/traps.c @@ -694,15 +694,15 @@ asmlinkage void do_ov(struct pt_regs *regs) { enum ctx_state prev_state; - siginfo_t info; + siginfo_t info = { + .si_signo = SIGFPE, + .si_code = FPE_INTOVF, + .si_addr = (void __user *)regs->cp0_epc, + }; prev_state = exception_enter(); die_if_kernel("Integer overflow", regs); - info.si_code = FPE_INTOVF; - info.si_signo = SIGFPE; - info.si_errno = 0; - info.si_addr = (void __user *) regs->cp0_epc; force_sig_info(SIGFPE, &info, current); exception_exit(prev_state); } @@ -878,7 +878,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, const char *str) { - siginfo_t info; + siginfo_t info = { 0 }; char b[40]; #ifdef CONFIG_KGDB_LOW_LEVEL_TRAP @@ -906,7 +906,6 @@ else info.si_code = FPE_INTOVF; info.si_signo = SIGFPE; - info.si_errno = 0; info.si_addr = (void __user *) regs->cp0_epc; force_sig_info(SIGFPE, &info, current); break; --- 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); @@ -698,7 +701,7 @@ } else if ((reg->id & KVM_REG_SIZE_MASK) == KVM_REG_SIZE_U128) { void __user *uaddr = (void __user *)(long)reg->addr; - return copy_to_user(uaddr, vs, 16); + return copy_to_user(uaddr, vs, 16) ? -EFAULT : 0; } else { return -EINVAL; } @@ -728,7 +731,7 @@ } else if ((reg->id & KVM_REG_SIZE_MASK) == KVM_REG_SIZE_U128) { void __user *uaddr = (void __user *)(long)reg->addr; - return copy_from_user(vs, uaddr, 16); + return copy_from_user(vs, uaddr, 16) ? -EFAULT : 0; } else { return -EINVAL; } --- 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/loongson64/loongson-3/hpet.c +++ linux-raspi2-4.2.0/arch/mips/loongson64/loongson-3/hpet.c @@ -13,6 +13,9 @@ #define SMBUS_PCI_REG64 0x64 #define SMBUS_PCI_REGB4 0xb4 +#define HPET_MIN_CYCLES 64 +#define HPET_MIN_PROG_DELTA (HPET_MIN_CYCLES + (HPET_MIN_CYCLES >> 1)) + static DEFINE_SPINLOCK(hpet_lock); DEFINE_PER_CPU(struct clock_event_device, hpet_clockevent_device); @@ -139,8 +142,9 @@ cnt += delta; hpet_write(HPET_T0_CMP, cnt); - res = ((int)(hpet_read(HPET_COUNTER) - cnt) > 0) ? -ETIME : 0; - return res; + res = (int)(cnt - hpet_read(HPET_COUNTER)); + + return res < HPET_MIN_CYCLES ? -ETIME : 0; } static irqreturn_t hpet_irq_handler(int irq, void *data) @@ -212,7 +216,7 @@ cd->cpumask = cpumask_of(cpu); clockevent_set_clock(cd, HPET_FREQ); cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd); - cd->min_delta_ns = 5000; + cd->min_delta_ns = clockevent_delta2ns(HPET_MIN_PROG_DELTA, cd); clockevents_register_device(cd); setup_irq(HPET_T0_IRQ, &hpet_irq); --- linux-raspi2-4.2.0.orig/arch/mips/loongson64/loongson-3/smp.c +++ linux-raspi2-4.2.0/arch/mips/loongson64/loongson-3/smp.c @@ -30,13 +30,13 @@ #include "smp.h" DEFINE_PER_CPU(int, cpu_state); -DEFINE_PER_CPU(uint32_t, core0_c0count); static void *ipi_set0_regs[16]; static void *ipi_clear0_regs[16]; static void *ipi_status0_regs[16]; static void *ipi_en0_regs[16]; static void *ipi_mailbox_buf[16]; +static uint32_t core0_c0count[NR_CPUS]; /* read a 32bit value from ipi register */ #define loongson3_ipi_read32(addr) readl(addr) @@ -275,12 +275,14 @@ if (action & SMP_ASK_C0COUNT) { BUG_ON(cpu != 0); c0count = read_c0_count(); - for (i = 1; i < num_possible_cpus(); i++) - per_cpu(core0_c0count, i) = c0count; + c0count = c0count ? c0count : 1; + for (i = 1; i < nr_cpu_ids; i++) + core0_c0count[i] = c0count; + __wbflush(); /* Let others see the result ASAP */ } } -#define MAX_LOOPS 1111 +#define MAX_LOOPS 800 /* * SMP init and finish on secondary CPUs */ @@ -305,16 +307,20 @@ cpu_logical_map(cpu) / loongson_sysconf.cores_per_package; i = 0; - __this_cpu_write(core0_c0count, 0); + core0_c0count[cpu] = 0; loongson3_send_ipi_single(0, SMP_ASK_C0COUNT); - while (!__this_cpu_read(core0_c0count)) { + while (!core0_c0count[cpu]) { i++; cpu_relax(); } if (i > MAX_LOOPS) i = MAX_LOOPS; - initcount = __this_cpu_read(core0_c0count) + i; + if (cpu_data[cpu].package) + initcount = core0_c0count[cpu] + i; + else /* Local access is faster for loops */ + initcount = core0_c0count[cpu] + i/2; + write_c0_count(initcount); } --- 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/mm/tlbex.c +++ linux-raspi2-4.2.0/arch/mips/mm/tlbex.c @@ -242,7 +242,7 @@ pr_define("_PAGE_HUGE_SHIFT %d\n", _PAGE_HUGE_SHIFT); pr_define("_PAGE_SPLITTING_SHIFT %d\n", _PAGE_SPLITTING_SHIFT); #endif -#ifdef CONFIG_CPU_MIPSR2 +#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) if (cpu_has_rixi) { #ifdef _PAGE_NO_EXEC_SHIFT pr_define("_PAGE_NO_EXEC_SHIFT %d\n", _PAGE_NO_EXEC_SHIFT); --- linux-raspi2-4.2.0.orig/arch/mips/net/bpf_jit.c +++ linux-raspi2-4.2.0/arch/mips/net/bpf_jit.c @@ -521,19 +521,6 @@ return num; } -static bool is_load_to_a(u16 inst) -{ - switch (inst) { - case BPF_LD | BPF_W | BPF_LEN: - case BPF_LD | BPF_W | BPF_ABS: - case BPF_LD | BPF_H | BPF_ABS: - case BPF_LD | BPF_B | BPF_ABS: - return true; - default: - return false; - } -} - static void save_bpf_jit_regs(struct jit_ctx *ctx, unsigned offset) { int i = 0, real_off = 0; @@ -614,7 +601,6 @@ static void build_prologue(struct jit_ctx *ctx) { - u16 first_inst = ctx->skf->insns[0].code; int sp_off; /* Calculate the total offset for the stack pointer */ @@ -641,7 +627,7 @@ emit_jit_reg_move(r_X, r_zero, ctx); /* Do not leak kernel data to userspace */ - if ((first_inst != (BPF_RET | BPF_K)) && !(is_load_to_a(first_inst))) + if (bpf_needs_clear_a(&ctx->skf->insns[0])) emit_jit_reg_move(r_A, r_zero, ctx); } --- 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/asm/uaccess.h +++ linux-raspi2-4.2.0/arch/parisc/include/asm/uaccess.h @@ -76,6 +76,7 @@ */ struct exception_data { unsigned long fault_ip; + unsigned long fault_gp; unsigned long fault_space; unsigned long fault_addr; }; --- 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/mman.h +++ linux-raspi2-4.2.0/arch/parisc/include/uapi/asm/mman.h @@ -46,16 +46,6 @@ #define MADV_DONTFORK 10 /* don't inherit across fork */ #define MADV_DOFORK 11 /* do inherit across fork */ -/* The range 12-64 is reserved for page size specification. */ -#define MADV_4K_PAGES 12 /* Use 4K pages */ -#define MADV_16K_PAGES 14 /* Use 16K pages */ -#define MADV_64K_PAGES 16 /* Use 64K pages */ -#define MADV_256K_PAGES 18 /* Use 256K pages */ -#define MADV_1M_PAGES 20 /* Use 1 Megabyte pages */ -#define MADV_4M_PAGES 22 /* Use 4 Megabyte pages */ -#define MADV_16M_PAGES 24 /* Use 16 Megabyte pages */ -#define MADV_64M_PAGES 26 /* Use 64 Megabyte pages */ - #define MADV_MERGEABLE 65 /* KSM may merge identical pages */ #define MADV_UNMERGEABLE 66 /* KSM may not merge identical pages */ --- 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/include/uapi/asm/siginfo.h +++ linux-raspi2-4.2.0/arch/parisc/include/uapi/asm/siginfo.h @@ -1,6 +1,10 @@ #ifndef _PARISC_SIGINFO_H #define _PARISC_SIGINFO_H +#if defined(__LP64__) +#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) +#endif + #include #undef NSIGTRAP --- linux-raspi2-4.2.0.orig/arch/parisc/kernel/asm-offsets.c +++ linux-raspi2-4.2.0/arch/parisc/kernel/asm-offsets.c @@ -291,6 +291,7 @@ DEFINE(ASM_PT_INITIAL, PT_INITIAL); BLANK(); DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip)); + DEFINE(EXCDATA_GP, offsetof(struct exception_data, fault_gp)); DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space)); DEFINE(EXCDATA_ADDR, offsetof(struct exception_data, fault_addr)); BLANK(); --- 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/parisc_ksyms.c +++ linux-raspi2-4.2.0/arch/parisc/kernel/parisc_ksyms.c @@ -47,11 +47,11 @@ EXPORT_SYMBOL(lclear_user); EXPORT_SYMBOL(lstrnlen_user); -/* Global fixups */ -extern void fixup_get_user_skip_1(void); -extern void fixup_get_user_skip_2(void); -extern void fixup_put_user_skip_1(void); -extern void fixup_put_user_skip_2(void); +/* Global fixups - defined as int to avoid creation of function pointers */ +extern int fixup_get_user_skip_1; +extern int fixup_get_user_skip_2; +extern int fixup_put_user_skip_1; +extern int fixup_put_user_skip_2; EXPORT_SYMBOL(fixup_get_user_skip_1); EXPORT_SYMBOL(fixup_get_user_skip_2); EXPORT_SYMBOL(fixup_put_user_skip_1); --- linux-raspi2-4.2.0.orig/arch/parisc/kernel/ptrace.c +++ linux-raspi2-4.2.0/arch/parisc/kernel/ptrace.c @@ -269,14 +269,19 @@ long do_syscall_trace_enter(struct pt_regs *regs) { - long ret = 0; - /* Do the secure computing check first. */ secure_computing_strict(regs->gr[20]); if (test_thread_flag(TIF_SYSCALL_TRACE) && - tracehook_report_syscall_entry(regs)) - ret = -1L; + tracehook_report_syscall_entry(regs)) { + /* + * Tracing decided this syscall should not happen or the + * debugger stored an invalid system call number. Skip + * the system call and the system call restart handling. + */ + regs->gr[20] = -1UL; + goto out; + } #ifdef CONFIG_64BIT if (!is_compat_task()) @@ -290,7 +295,8 @@ regs->gr[24] & 0xffffffff, regs->gr[23] & 0xffffffff); - return ret ? : regs->gr[20]; +out: + return regs->gr[20]; } void do_syscall_trace_exit(struct pt_regs *regs) --- linux-raspi2-4.2.0.orig/arch/parisc/kernel/signal.c +++ linux-raspi2-4.2.0/arch/parisc/kernel/signal.c @@ -435,6 +435,55 @@ regs->gr[28]); } +/* + * Check how the syscall number gets loaded into %r20 within + * the delay branch in userspace and adjust as needed. + */ + +static void check_syscallno_in_delay_branch(struct pt_regs *regs) +{ + u32 opcode, source_reg; + u32 __user *uaddr; + int err; + + /* Usually we don't have to restore %r20 (the system call number) + * because it gets loaded in the delay slot of the branch external + * instruction via the ldi instruction. + * In some cases a register-to-register copy instruction might have + * been used instead, in which case we need to copy the syscall + * number into the source register before returning to userspace. + */ + + /* A syscall is just a branch, so all we have to do is fiddle the + * return pointer so that the ble instruction gets executed again. + */ + regs->gr[31] -= 8; /* delayed branching */ + + /* Get assembler opcode of code in delay branch */ + uaddr = (unsigned int *) ((regs->gr[31] & ~3) + 4); + err = get_user(opcode, uaddr); + if (err) + return; + + /* Check if delay branch uses "ldi int,%r20" */ + if ((opcode & 0xffff0000) == 0x34140000) + return; /* everything ok, just return */ + + /* Check if delay branch uses "nop" */ + if (opcode == INSN_NOP) + return; + + /* Check if delay branch uses "copy %rX,%r20" */ + if ((opcode & 0xffe0ffff) == 0x08000254) { + source_reg = (opcode >> 16) & 31; + regs->gr[source_reg] = regs->gr[20]; + return; + } + + pr_warn("syscall restart: %s (pid %d): unexpected opcode 0x%08x\n", + current->comm, task_pid_nr(current), opcode); +} + static inline void syscall_restart(struct pt_regs *regs, struct k_sigaction *ka) { @@ -457,10 +506,7 @@ } /* fallthrough */ case -ERESTARTNOINTR: - /* A syscall is just a branch, so all - * we have to do is fiddle the return pointer. - */ - regs->gr[31] -= 8; /* delayed branching */ + check_syscallno_in_delay_branch(regs); break; } } @@ -510,15 +556,9 @@ } case -ERESTARTNOHAND: case -ERESTARTSYS: - case -ERESTARTNOINTR: { - /* Hooray for delayed branching. We don't - * have to restore %r20 (the system call - * number) because it gets loaded in the delay - * slot of the branch external instruction. - */ - regs->gr[31] -= 8; + case -ERESTARTNOINTR: + check_syscallno_in_delay_branch(regs); return; - } default: break; } --- linux-raspi2-4.2.0.orig/arch/parisc/kernel/syscall.S +++ linux-raspi2-4.2.0/arch/parisc/kernel/syscall.S @@ -343,7 +343,7 @@ #endif comiclr,>>= __NR_Linux_syscalls, %r20, %r0 - b,n .Lsyscall_nosys + b,n .Ltracesys_nosys LDREGX %r20(%r19), %r19 @@ -359,6 +359,9 @@ be 0(%sr7,%r19) ldo R%tracesys_exit(%r2),%r2 +.Ltracesys_nosys: + ldo -ENOSYS(%r0),%r28 /* set errno */ + /* Do *not* call this function on the gateway page, because it makes a direct call to syscall_trace. */ @@ -821,7 +824,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/kernel/traps.c +++ linux-raspi2-4.2.0/arch/parisc/kernel/traps.c @@ -798,6 +798,9 @@ if (fault_space == 0 && !faulthandler_disabled()) { + /* Clean up and return if in exception table. */ + if (fixup_exception(regs)) + return; pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC); parisc_terminate("Kernel Fault", regs, code, fault_address); } --- linux-raspi2-4.2.0.orig/arch/parisc/lib/fixup.S +++ linux-raspi2-4.2.0/arch/parisc/lib/fixup.S @@ -26,6 +26,7 @@ #ifdef CONFIG_SMP .macro get_fault_ip t1 t2 + loadgp addil LT%__per_cpu_offset,%r27 LDREG RT%__per_cpu_offset(%r1),\t1 /* t2 = smp_processor_id() */ @@ -40,14 +41,19 @@ LDREG RT%exception_data(%r1),\t1 /* t1 = this_cpu_ptr(&exception_data) */ add,l \t1,\t2,\t1 + /* %r27 = t1->fault_gp - restore gp */ + LDREG EXCDATA_GP(\t1), %r27 /* t1 = t1->fault_ip */ LDREG EXCDATA_IP(\t1), \t1 .endm #else .macro get_fault_ip t1 t2 + loadgp /* t1 = this_cpu_ptr(&exception_data) */ addil LT%exception_data,%r27 LDREG RT%exception_data(%r1),\t2 + /* %r27 = t2->fault_gp - restore gp */ + LDREG EXCDATA_GP(\t2), %r27 /* t1 = t2->fault_ip */ LDREG EXCDATA_IP(\t2), \t1 .endm --- linux-raspi2-4.2.0.orig/arch/parisc/mm/fault.c +++ linux-raspi2-4.2.0/arch/parisc/mm/fault.c @@ -151,6 +151,7 @@ struct exception_data *d; d = this_cpu_ptr(&exception_data); d->fault_ip = regs->iaoq[0]; + d->fault_gp = regs->gr[27]; d->fault_space = regs->isr; d->fault_addr = regs->ior; --- 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/cmpxchg.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/cmpxchg.h @@ -18,12 +18,12 @@ unsigned long prev; __asm__ __volatile__( - PPC_RELEASE_BARRIER + PPC_ATOMIC_ENTRY_BARRIER "1: lwarx %0,0,%2 \n" PPC405_ERR77(0,%2) " stwcx. %3,0,%2 \n\ bne- 1b" - PPC_ACQUIRE_BARRIER + PPC_ATOMIC_EXIT_BARRIER : "=&r" (prev), "+m" (*(volatile unsigned int *)p) : "r" (p), "r" (val) : "cc", "memory"); @@ -61,12 +61,12 @@ unsigned long prev; __asm__ __volatile__( - PPC_RELEASE_BARRIER + PPC_ATOMIC_ENTRY_BARRIER "1: ldarx %0,0,%2 \n" PPC405_ERR77(0,%2) " stdcx. %3,0,%2 \n\ bne- 1b" - PPC_ACQUIRE_BARRIER + PPC_ATOMIC_EXIT_BARRIER : "=&r" (prev), "+m" (*(volatile unsigned long *)p) : "r" (p), "r" (val) : "cc", "memory"); @@ -151,14 +151,14 @@ unsigned int prev; __asm__ __volatile__ ( - PPC_RELEASE_BARRIER + PPC_ATOMIC_ENTRY_BARRIER "1: lwarx %0,0,%2 # __cmpxchg_u32\n\ cmpw 0,%0,%3\n\ bne- 2f\n" PPC405_ERR77(0,%2) " stwcx. %4,0,%2\n\ bne- 1b" - PPC_ACQUIRE_BARRIER + PPC_ATOMIC_EXIT_BARRIER "\n\ 2:" : "=&r" (prev), "+m" (*p) @@ -197,13 +197,13 @@ unsigned long prev; __asm__ __volatile__ ( - PPC_RELEASE_BARRIER + PPC_ATOMIC_ENTRY_BARRIER "1: ldarx %0,0,%2 # __cmpxchg_u64\n\ cmpd 0,%0,%3\n\ bne- 2f\n\ stdcx. %4,0,%2\n\ bne- 1b" - PPC_ACQUIRE_BARRIER + PPC_ATOMIC_EXIT_BARRIER "\n\ 2:" : "=&r" (prev), "+m" (*p) --- 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/eeh.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/eeh.h @@ -81,6 +81,7 @@ #define EEH_PE_KEEP (1 << 8) /* Keep PE on hotplug */ #define EEH_PE_CFG_RESTRICTED (1 << 9) /* Block config on error */ #define EEH_PE_REMOVED (1 << 10) /* Removed permanently */ +#define EEH_PE_PRI_BUS (1 << 11) /* Cached primary bus */ struct eeh_pe { int type; /* PE type: PHB/Bus/Device */ --- 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/synch.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/synch.h @@ -44,7 +44,7 @@ MAKE_LWSYNC_SECTION_ENTRY(97, __lwsync_fixup); #define PPC_ACQUIRE_BARRIER "\n" stringify_in_c(__PPC_ACQUIRE_BARRIER) #define PPC_RELEASE_BARRIER stringify_in_c(LWSYNC) "\n" -#define PPC_ATOMIC_ENTRY_BARRIER "\n" stringify_in_c(LWSYNC) "\n" +#define PPC_ATOMIC_ENTRY_BARRIER "\n" stringify_in_c(sync) "\n" #define PPC_ATOMIC_EXIT_BARRIER "\n" stringify_in_c(sync) "\n" #else #define PPC_ACQUIRE_BARRIER --- 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/elf.h +++ linux-raspi2-4.2.0/arch/powerpc/include/uapi/asm/elf.h @@ -295,6 +295,8 @@ #define R_PPC64_TLSLD 108 #define R_PPC64_TOCSAVE 109 +#define R_PPC64_ENTRY 118 + #define R_PPC64_REL16 249 #define R_PPC64_REL16_LO 250 #define R_PPC64_REL16_HI 251 --- 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/eeh_driver.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/eeh_driver.c @@ -561,6 +561,7 @@ */ eeh_pe_state_mark(pe, EEH_PE_KEEP); if (bus) { + eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); pci_lock_rescan_remove(); pcibios_remove_pci_devices(bus); pci_unlock_rescan_remove(); @@ -792,6 +793,7 @@ * the their PCI config any more. */ if (frozen_bus) { + eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED); pci_lock_rescan_remove(); @@ -875,6 +877,7 @@ continue; /* Notify all devices to be down */ + eeh_pe_state_clear(pe, EEH_PE_PRI_BUS); bus = eeh_pe_bus_get(phb_pe); eeh_pe_dev_traverse(pe, eeh_report_failure, NULL); --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/eeh_pe.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/eeh_pe.c @@ -861,32 +861,29 @@ const char *eeh_pe_loc_get(struct eeh_pe *pe) { struct pci_bus *bus = eeh_pe_bus_get(pe); - struct device_node *dn = pci_bus_to_OF_node(bus); + struct device_node *dn; const char *loc = NULL; - if (!dn) - goto out; + while (bus) { + dn = pci_bus_to_OF_node(bus); + if (!dn) { + bus = bus->parent; + continue; + } - /* PHB PE or root PE ? */ - if (pci_is_root_bus(bus)) { - loc = of_get_property(dn, "ibm,loc-code", NULL); - if (!loc) + if (pci_is_root_bus(bus)) loc = of_get_property(dn, "ibm,io-base-loc-code", NULL); + else + loc = of_get_property(dn, "ibm,slot-location-code", + NULL); + if (loc) - goto out; + return loc; - /* Check the root port */ - dn = dn->child; - if (!dn) - goto out; + bus = bus->parent; } - loc = of_get_property(dn, "ibm,loc-code", NULL); - if (!loc) - loc = of_get_property(dn, "ibm,slot-location-code", NULL); - -out: - return loc ? loc : "N/A"; + return "N/A"; } /** @@ -909,7 +906,7 @@ bus = pe->phb->bus; } else if (pe->type & EEH_PE_BUS || pe->type & EEH_PE_DEVICE) { - if (pe->bus) { + if (pe->state & EEH_PE_PRI_BUS) { bus = pe->bus; goto out; } --- 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/module_64.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/module_64.c @@ -335,7 +335,7 @@ if (syms[i].st_shndx == SHN_UNDEF) { char *name = strtab + syms[i].st_name; if (name[0] == '.') - memmove(name, name+1, strlen(name)); + syms[i].st_name++; } } } @@ -635,6 +635,33 @@ */ break; + case R_PPC64_ENTRY: + /* + * Optimize ELFv2 large code model entry point if + * the TOC is within 2GB range of current location. + */ + value = my_r2(sechdrs, me) - (unsigned long)location; + if (value + 0x80008000 > 0xffffffff) + break; + /* + * Check for the large code model prolog sequence: + * ld r2, ...(r12) + * add r2, r2, r12 + */ + if ((((uint32_t *)location)[0] & ~0xfffc) + != 0xe84c0000) + break; + if (((uint32_t *)location)[1] != 0x7c426214) + break; + /* + * If found, replace it with: + * addis r2, r12, (.TOC.-func)@ha + * addi r2, r12, (.TOC.-func)@l + */ + ((uint32_t *)location)[0] = 0x3c4c0000 + PPC_HA(value); + ((uint32_t *)location)[1] = 0x38420000 + PPC_LO(value); + break; + case R_PPC64_REL16_HA: /* Subtract location pointer */ value -= (unsigned long)location; --- 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/pci_of_scan.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/pci_of_scan.c @@ -191,9 +191,6 @@ pci_device_add(dev, bus); - /* Setup MSI caps & disable MSI/MSI-X interrupts */ - pci_msi_setup_pci_dev(dev); - return dev; } EXPORT_SYMBOL(of_create_pci_dev); --- 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 @@ -210,6 +210,12 @@ static void kvmppc_set_msr_hv(struct kvm_vcpu *vcpu, u64 msr) { + /* + * Check for illegal transactional state bit combination + * and if we find it, force the TS field to a safe state. + */ + if ((msr & MSR_TS_MASK) == MSR_TS_MASK) + msr &= ~MSR_TS_MASK; vcpu->arch.shregs.msr = msr; kvmppc_end_cede(vcpu); } @@ -2178,7 +2184,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 @@ -1271,6 +1273,20 @@ std r6, VCPU_ACOP(r9) stw r7, VCPU_GUEST_PID(r9) std r8, VCPU_WORT(r9) + /* + * Restore various registers to 0, where non-zero values + * set by the guest could disrupt the host. + */ + li r0, 0 + mtspr SPRN_IAMR, r0 + mtspr SPRN_CIABR, r0 + mtspr SPRN_DAWRX, r0 + mtspr SPRN_TCSCR, r0 + mtspr SPRN_WORT, r0 + /* Set MMCRS to 1<<31 to freeze and disable the SPMC counters */ + li r0, 1 + sldi r0, r0, 31 + mtspr SPRN_MMCRS, r0 8: /* Save and reset AMR and UAMOR before turning on the MMU */ @@ -2045,7 +2061,7 @@ /* Emulate H_SET_DABR/X on P8 for the sake of compat mode guests */ 2: rlwimi r5, r4, 5, DAWRX_DR | DAWRX_DW - rlwimi r5, r4, 1, DAWRX_WT + rlwimi r5, r4, 2, DAWRX_WT clrrdi r4, r4, 3 std r4, VCPU_DAWR(r3) std r5, VCPU_DAWRX(r3) --- linux-raspi2-4.2.0.orig/arch/powerpc/kvm/powerpc.c +++ linux-raspi2-4.2.0/arch/powerpc/kvm/powerpc.c @@ -916,21 +916,17 @@ r = -ENXIO; break; } - vcpu->arch.vr.vr[reg->id - KVM_REG_PPC_VR0] = val.vval; + val.vval = vcpu->arch.vr.vr[reg->id - KVM_REG_PPC_VR0]; break; case KVM_REG_PPC_VSCR: if (!cpu_has_feature(CPU_FTR_ALTIVEC)) { r = -ENXIO; break; } - vcpu->arch.vr.vscr.u[3] = set_reg_val(reg->id, val); + val = get_reg_val(reg->id, vcpu->arch.vr.vscr.u[3]); break; case KVM_REG_PPC_VRSAVE: - if (!cpu_has_feature(CPU_FTR_ALTIVEC)) { - r = -ENXIO; - break; - } - vcpu->arch.vrsave = set_reg_val(reg->id, val); + val = get_reg_val(reg->id, vcpu->arch.vrsave); break; #endif /* CONFIG_ALTIVEC */ default: @@ -971,17 +967,21 @@ r = -ENXIO; break; } - val.vval = vcpu->arch.vr.vr[reg->id - KVM_REG_PPC_VR0]; + vcpu->arch.vr.vr[reg->id - KVM_REG_PPC_VR0] = val.vval; break; case KVM_REG_PPC_VSCR: if (!cpu_has_feature(CPU_FTR_ALTIVEC)) { r = -ENXIO; break; } - val = get_reg_val(reg->id, vcpu->arch.vr.vscr.u[3]); + vcpu->arch.vr.vscr.u[3] = set_reg_val(reg->id, val); break; case KVM_REG_PPC_VRSAVE: - val = get_reg_val(reg->id, vcpu->arch.vrsave); + if (!cpu_has_feature(CPU_FTR_ALTIVEC)) { + r = -ENXIO; + break; + } + vcpu->arch.vrsave = set_reg_val(reg->id, val); break; #endif /* CONFIG_ALTIVEC */ default: --- 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/mm/hugetlbpage.c +++ linux-raspi2-4.2.0/arch/powerpc/mm/hugetlbpage.c @@ -467,13 +467,13 @@ { struct hugepd_freelist **batchp; - batchp = this_cpu_ptr(&hugepd_freelist_cur); + batchp = &get_cpu_var(hugepd_freelist_cur); if (atomic_read(&tlb->mm->mm_users) < 2 || cpumask_equal(mm_cpumask(tlb->mm), cpumask_of(smp_processor_id()))) { kmem_cache_free(hugepte_cache, hugepte); - put_cpu_var(hugepd_freelist_cur); + put_cpu_var(hugepd_freelist_cur); return; } --- linux-raspi2-4.2.0.orig/arch/powerpc/net/bpf_jit_comp.c +++ linux-raspi2-4.2.0/arch/powerpc/net/bpf_jit_comp.c @@ -78,18 +78,9 @@ PPC_LI(r_X, 0); } - switch (filter[0].code) { - case BPF_RET | BPF_K: - case BPF_LD | BPF_W | BPF_LEN: - case BPF_LD | BPF_W | BPF_ABS: - case BPF_LD | BPF_H | BPF_ABS: - case BPF_LD | BPF_B | BPF_ABS: - /* first instruction sets A register (or is RET 'constant') */ - break; - default: - /* make sure we dont leak kernel information to user */ + /* make sure we dont leak kernel information to user */ + if (bpf_needs_clear_a(&filter[0])) PPC_LI(r_A, 0); - } } static void bpf_jit_build_epilogue(u32 *image, struct codegen_context *ctx) --- linux-raspi2-4.2.0.orig/arch/powerpc/perf/power8-pmu.c +++ linux-raspi2-4.2.0/arch/powerpc/perf/power8-pmu.c @@ -813,7 +813,7 @@ .get_constraint = power8_get_constraint, .get_alternatives = power8_get_alternatives, .disable_pmc = power8_disable_pmc, - .flags = PPMU_HAS_SSLOT | PPMU_HAS_SIER | PPMU_ARCH_207S, + .flags = PPMU_HAS_SIER | PPMU_ARCH_207S, .n_generic = ARRAY_SIZE(power8_generic_events), .generic_events = power8_generic_events, .cache_events = &power8_cache_events, --- 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; @@ -457,9 +460,12 @@ * PCI devices of the PE are expected to be removed prior * to PE reset. */ - if (!edev->pe->bus) + if (!(edev->pe->state & EEH_PE_PRI_BUS)) { edev->pe->bus = pci_find_bus(hose->global_number, pdn->busno); + if (edev->pe->bus) + edev->pe->state |= EEH_PE_PRI_BUS; + } /* * Enable EEH explicitly so that we will do EEH check --- 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-irqchip.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/opal-irqchip.c @@ -43,11 +43,34 @@ static unsigned int *opal_irqs; static void opal_handle_irq_work(struct irq_work *work); -static __be64 last_outstanding_events; +static u64 last_outstanding_events; static struct irq_work opal_event_irq_work = { .func = opal_handle_irq_work, }; +void opal_handle_events(uint64_t events) +{ + int virq, hwirq = 0; + u64 mask = opal_event_irqchip.mask; + + if (!in_irq() && (events & mask)) { + last_outstanding_events = events; + irq_work_queue(&opal_event_irq_work); + return; + } + + while (events & mask) { + hwirq = fls64(events) - 1; + if (BIT_ULL(hwirq) & mask) { + virq = irq_find_mapping(opal_event_irqchip.domain, + hwirq); + if (virq) + generic_handle_irq(virq); + } + events &= ~BIT_ULL(hwirq); + } +} + static void opal_event_mask(struct irq_data *d) { clear_bit(d->hwirq, &opal_event_irqchip.mask); @@ -55,9 +78,21 @@ static void opal_event_unmask(struct irq_data *d) { + __be64 events; + set_bit(d->hwirq, &opal_event_irqchip.mask); - opal_poll_events(&last_outstanding_events); + opal_poll_events(&events); + last_outstanding_events = be64_to_cpu(events); + + /* + * We can't just handle the events now with opal_handle_events(). + * If we did we would deadlock when opal_event_unmask() is called from + * handle_level_irq() with the irq descriptor lock held, because + * calling opal_handle_events() would call generic_handle_irq() and + * then handle_level_irq() which would try to take the descriptor lock + * again. Instead queue the events for later. + */ if (last_outstanding_events & opal_event_irqchip.mask) /* Need to retrigger the interrupt */ irq_work_queue(&opal_event_irq_work); @@ -96,29 +131,6 @@ return 0; } -void opal_handle_events(uint64_t events) -{ - int virq, hwirq = 0; - u64 mask = opal_event_irqchip.mask; - - if (!in_irq() && (events & mask)) { - last_outstanding_events = events; - irq_work_queue(&opal_event_irq_work); - return; - } - - while (events & mask) { - hwirq = fls64(events) - 1; - if (BIT_ULL(hwirq) & mask) { - virq = irq_find_mapping(opal_event_irqchip.domain, - hwirq); - if (virq) - generic_handle_irq(virq); - } - events &= ~BIT_ULL(hwirq); - } -} - static irqreturn_t opal_interrupt(int irq, void *data) { __be64 events; @@ -131,7 +143,7 @@ static void opal_handle_irq_work(struct irq_work *work) { - opal_handle_events(be64_to_cpu(last_outstanding_events)); + opal_handle_events(last_outstanding_events); } static int opal_event_match(struct irq_domain *h, struct device_node *node) --- 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 @@ -278,7 +278,7 @@ /* Sanity check */ if (type >= OPAL_MSG_TYPE_MAX) { - pr_warning("%s: Unknown message type: %u\n", __func__, type); + pr_warn_once("%s: Unknown message type: %u\n", __func__, type); return; } opal_message_do_notify(type, (void *)&msg); @@ -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,43 @@ 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. + * + * If hardware marked this as an unrecoverable MCE, we are + * going to panic anyway. Even if it didn't, it's not safe to + * continue at this point, so we should explicitly panic. + */ + + panic("PowerNV Unrecovered Machine Check"); return 0; } @@ -648,7 +686,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 +727,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 +886,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", @@ -3049,6 +3064,7 @@ static const struct pci_controller_ops pnv_pci_ioda_controller_ops = { .dma_dev_setup = pnv_pci_dma_dev_setup, + .dma_bus_setup = pnv_pci_dma_bus_setup, #ifdef CONFIG_PCI_MSI .setup_msi_irqs = pnv_setup_msi_irqs, .teardown_msi_irqs = pnv_teardown_msi_irqs, @@ -3057,6 +3073,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 +3220,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 */ @@ -600,6 +601,9 @@ u64 rpn = __pa(uaddr) >> tbl->it_page_shift; long i; + if (proto_tce & TCE_PCI_WRITE) + proto_tce |= TCE_PCI_READ; + for (i = 0; i < npages; i++) { unsigned long newtce = proto_tce | ((rpn + i) << tbl->it_page_shift); @@ -621,6 +625,9 @@ BUG_ON(*hpa & ~IOMMU_PAGE_MASK(tbl)); + if (newtce & TCE_PCI_WRITE) + newtce |= TCE_PCI_READ; + oldtce = xchg(pnv_tce(tbl, idx), cpu_to_be64(newtce)); *hpa = be64_to_cpu(oldtce) & ~(TCE_PCI_READ | TCE_PCI_WRITE); *direction = iommu_tce_direction(oldtce); @@ -761,15 +768,24 @@ phb->dma_dev_setup(phb, pdev); } -u64 pnv_pci_dma_get_required_mask(struct pci_dev *pdev) +void pnv_pci_dma_bus_setup(struct pci_bus *bus) { - struct pci_controller *hose = pci_bus_to_host(pdev->bus); + struct pci_controller *hose = bus->sysdata; struct pnv_phb *phb = hose->private_data; + struct pnv_ioda_pe *pe; + + list_for_each_entry(pe, &phb->ioda.pe_list, list) { + if (!(pe->flags & (PNV_IODA_PE_BUS | PNV_IODA_PE_BUS_ALL))) + continue; - if (phb && phb->dma_get_required_mask) - return phb->dma_get_required_mask(phb, pdev); + if (!pe->pbus) + continue; - return __dma_get_required_mask(&pdev->dev); + if (bus->number == ((pe->rid >> 8) & 0xFF)) { + pe->pbus = bus; + break; + } + } } void pnv_pci_shutdown(void) --- 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); @@ -236,6 +234,7 @@ extern int pnv_eeh_phb_reset(struct pci_controller *hose, int option); extern void pnv_pci_dma_dev_setup(struct pci_dev *pdev); +extern void pnv_pci_dma_bus_setup(struct pci_bus *bus); extern int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type); extern void pnv_teardown_msi_irqs(struct pci_dev *pdev); --- 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 @@ -40,6 +40,9 @@ #define EPOW_SENSOR_TOKEN 9 #define EPOW_SENSOR_INDEX 0 +/* EPOW events counter variable */ +static int num_epow_events; + static irqreturn_t ras_epow_interrupt(int irq, void *dev_id); static irqreturn_t ras_error_interrupt(int irq, void *dev_id); @@ -82,32 +85,30 @@ { switch (event_modifier) { case EPOW_SHUTDOWN_NORMAL: - pr_emerg("Firmware initiated power off"); + pr_emerg("Power off requested\n"); orderly_poweroff(true); break; case EPOW_SHUTDOWN_ON_UPS: - pr_emerg("Loss of power reported by firmware, system is " - "running on UPS/battery"); - pr_emerg("Check RTAS error log for details"); + pr_emerg("Loss of system power detected. System is running on" + " UPS/battery. Check RTAS error log for details\n"); orderly_poweroff(true); break; case EPOW_SHUTDOWN_LOSS_OF_CRITICAL_FUNCTIONS: - pr_emerg("Loss of system critical functions reported by " - "firmware"); - pr_emerg("Check RTAS error log for details"); + pr_emerg("Loss of system critical functions detected. Check" + " RTAS error log for details\n"); orderly_poweroff(true); break; case EPOW_SHUTDOWN_AMBIENT_TEMPERATURE_TOO_HIGH: - pr_emerg("Ambient temperature too high reported by firmware"); - pr_emerg("Check RTAS error log for details"); + pr_emerg("High ambient temperature detected. Check RTAS" + " error log for details\n"); orderly_poweroff(true); break; default: - pr_err("Unknown power/cooling shutdown event (modifier %d)", + pr_err("Unknown power/cooling shutdown event (modifier = %d)\n", event_modifier); } } @@ -145,17 +146,20 @@ switch (action_code) { case EPOW_RESET: - pr_err("Non critical power or cooling issue cleared"); + if (num_epow_events) { + pr_info("Non critical power/cooling issue cleared\n"); + num_epow_events--; + } break; case EPOW_WARN_COOLING: - pr_err("Non critical cooling issue reported by firmware"); - pr_err("Check RTAS error log for details"); + pr_info("Non-critical cooling issue detected. Check RTAS error" + " log for details\n"); break; case EPOW_WARN_POWER: - pr_err("Non critical power issue reported by firmware"); - pr_err("Check RTAS error log for details"); + pr_info("Non-critical power issue detected. Check RTAS error" + " log for details\n"); break; case EPOW_SYSTEM_SHUTDOWN: @@ -163,23 +167,27 @@ break; case EPOW_SYSTEM_HALT: - pr_emerg("Firmware initiated power off"); + pr_emerg("Critical power/cooling issue detected. Check RTAS" + " error log for details. Powering off.\n"); orderly_poweroff(true); break; case EPOW_MAIN_ENCLOSURE: case EPOW_POWER_OFF: - pr_emerg("Critical power/cooling issue reported by firmware"); - pr_emerg("Check RTAS error log for details"); - pr_emerg("Immediate power off"); + pr_emerg("System about to lose power. Check RTAS error log " + " for details. Powering off immediately.\n"); emergency_sync(); kernel_power_off(); break; default: - pr_err("Unknown power/cooling event (action code %d)", + pr_err("Unknown power/cooling event (action code = %d)\n", action_code); } + + /* Increment epow events counter variable */ + if (action_code != EPOW_RESET) + num_epow_events++; } /* Handle environmental and power warning (EPOW) interrupts. */ @@ -189,7 +197,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 */ @@ -248,13 +257,12 @@ log_error(ras_log_buf, ERR_TYPE_RTAS_LOG, fatal); if (fatal) { - pr_emerg("Fatal hardware error reported by firmware"); - pr_emerg("Check RTAS error log for details"); - pr_emerg("Immediate power off"); + pr_emerg("Fatal hardware error detected. Check RTAS error" + " log for details. Powering off immediately\n"); emergency_sync(); kernel_power_off(); } else { - pr_err("Recoverable hardware error reported by firmware"); + pr_err("Recoverable hardware error detected\n"); } spin_unlock(&ras_log_buf_lock); --- 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/include/asm/mmu_context.h +++ linux-raspi2-4.2.0/arch/s390/include/asm/mmu_context.h @@ -15,17 +15,25 @@ static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm) { + spin_lock_init(&mm->context.list_lock); + INIT_LIST_HEAD(&mm->context.pgtable_list); + INIT_LIST_HEAD(&mm->context.gmap_list); cpumask_clear(&mm->context.cpu_attach_mask); atomic_set(&mm->context.attach_count, 0); mm->context.flush_mm = 0; - mm->context.asce_bits = _ASCE_TABLE_LENGTH | _ASCE_USER_BITS; - mm->context.asce_bits |= _ASCE_TYPE_REGION3; #ifdef CONFIG_PGSTE mm->context.alloc_pgste = page_table_allocate_pgste; mm->context.has_pgste = 0; mm->context.use_skey = 0; #endif - mm->context.asce_limit = STACK_TOP_MAX; + if (mm->context.asce_limit == 0) { + /* context created by exec, set asce limit to 4TB */ + mm->context.asce_bits = _ASCE_TABLE_LENGTH | + _ASCE_USER_BITS | _ASCE_TYPE_REGION3; + mm->context.asce_limit = STACK_TOP_MAX; + } else if (mm->context.asce_limit == (1UL << 31)) { + mm_inc_nr_pmds(mm); + } crst_table_init((unsigned long *) mm->pgd, pgd_entry_type(mm)); return 0; } @@ -111,8 +119,6 @@ static inline void arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm) { - if (oldmm->context.asce_limit < mm->context.asce_limit) - crst_table_downgrade(mm, oldmm->context.asce_limit); } static inline void arch_exit_mmap(struct mm_struct *mm) --- linux-raspi2-4.2.0.orig/arch/s390/include/asm/pci.h +++ linux-raspi2-4.2.0/arch/s390/include/asm/pci.h @@ -45,7 +45,7 @@ u64 rpcit_ops; u64 dma_rbytes; u64 dma_wbytes; -} __packed __aligned(16); +} __packed __aligned(64); enum zpci_state { ZPCI_FN_STATE_RESERVED, --- linux-raspi2-4.2.0.orig/arch/s390/include/asm/pgalloc.h +++ linux-raspi2-4.2.0/arch/s390/include/asm/pgalloc.h @@ -100,12 +100,26 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) { - spin_lock_init(&mm->context.list_lock); - INIT_LIST_HEAD(&mm->context.pgtable_list); - INIT_LIST_HEAD(&mm->context.gmap_list); - return (pgd_t *) crst_table_alloc(mm); + unsigned long *table = crst_table_alloc(mm); + + if (!table) + return NULL; + if (mm->context.asce_limit == (1UL << 31)) { + /* Forking a compat process with 2 page table levels */ + if (!pgtable_pmd_page_ctor(virt_to_page(table))) { + crst_table_free(mm, table); + return NULL; + } + } + return (pgd_t *) table; +} + +static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) +{ + if (mm->context.asce_limit == (1UL << 31)) + pgtable_pmd_page_dtor(virt_to_page(pgd)); + crst_table_free(mm, (unsigned long *) pgd); } -#define pgd_free(mm, pgd) crst_table_free(mm, (unsigned long *) pgd) static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, pgtable_t pte) --- 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; @@ -280,7 +293,7 @@ /* Restore high gprs from signal stack */ if (__copy_from_user(&gprs_high, &sregs_ext->gprs_high, - sizeof(&sregs_ext->gprs_high))) + sizeof(sregs_ext->gprs_high))) return -EFAULT; for (i = 0; i < NUM_GPRS; i++) *(__u32 *)®s->gprs[i] = gprs_high[i]; @@ -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/dis.c +++ linux-raspi2-4.2.0/arch/s390/kernel/dis.c @@ -1920,16 +1920,23 @@ } if (separator) ptr += sprintf(ptr, "%c", separator); + /* + * Use four '%' characters below because of the + * following two conversions: + * + * 1) sprintf: %%%%r -> %%r + * 2) printk : %%r -> %r + */ if (operand->flags & OPERAND_GPR) - ptr += sprintf(ptr, "%%r%i", value); + ptr += sprintf(ptr, "%%%%r%i", value); else if (operand->flags & OPERAND_FPR) - ptr += sprintf(ptr, "%%f%i", value); + ptr += sprintf(ptr, "%%%%f%i", value); else if (operand->flags & OPERAND_AR) - ptr += sprintf(ptr, "%%a%i", value); + ptr += sprintf(ptr, "%%%%a%i", value); else if (operand->flags & OPERAND_CR) - ptr += sprintf(ptr, "%%c%i", value); + ptr += sprintf(ptr, "%%%%c%i", value); else if (operand->flags & OPERAND_VR) - ptr += sprintf(ptr, "%%v%i", value); + ptr += sprintf(ptr, "%%%%v%i", value); else if (operand->flags & OPERAND_PCREL) ptr += sprintf(ptr, "%lx", (signed int) value + addr); --- linux-raspi2-4.2.0.orig/arch/s390/kernel/perf_event.c +++ linux-raspi2-4.2.0/arch/s390/kernel/perf_event.c @@ -262,12 +262,13 @@ void perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs) { - unsigned long head; + unsigned long head, frame_size; struct stack_frame *head_sf; if (user_mode(regs)) return; + frame_size = STACK_FRAME_OVERHEAD + sizeof(struct pt_regs); head = regs->gprs[15]; head_sf = (struct stack_frame *) head; @@ -275,8 +276,9 @@ return; head = head_sf->back_chain; - head = __store_trace(entry, head, S390_lowcore.async_stack - ASYNC_SIZE, - S390_lowcore.async_stack); + head = __store_trace(entry, head, + S390_lowcore.async_stack + frame_size - ASYNC_SIZE, + S390_lowcore.async_stack + frame_size); __store_trace(entry, head, S390_lowcore.thread_info, S390_lowcore.thread_info + THREAD_SIZE); --- 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/kernel/stacktrace.c +++ linux-raspi2-4.2.0/arch/s390/kernel/stacktrace.c @@ -63,17 +63,18 @@ void save_stack_trace(struct stack_trace *trace) { register unsigned long sp asm ("15"); - unsigned long orig_sp, new_sp; + unsigned long orig_sp, new_sp, frame_size; + frame_size = STACK_FRAME_OVERHEAD + sizeof(struct pt_regs); orig_sp = sp & PSW_ADDR_INSN; new_sp = save_context_stack(trace, orig_sp, - S390_lowcore.panic_stack - PAGE_SIZE, - S390_lowcore.panic_stack, 1); + S390_lowcore.panic_stack + frame_size - PAGE_SIZE, + S390_lowcore.panic_stack + frame_size, 1); if (new_sp != orig_sp) return; new_sp = save_context_stack(trace, new_sp, - S390_lowcore.async_stack - ASYNC_SIZE, - S390_lowcore.async_stack, 1); + S390_lowcore.async_stack + frame_size - ASYNC_SIZE, + S390_lowcore.async_stack + frame_size, 1); if (new_sp != orig_sp) return; save_context_stack(trace, new_sp, --- 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/s390/mm/extable.c +++ linux-raspi2-4.2.0/arch/s390/mm/extable.c @@ -52,12 +52,16 @@ int i; /* Normalize entries to being relative to the start of the section */ - for (p = start, i = 0; p < finish; p++, i += 8) + for (p = start, i = 0; p < finish; p++, i += 8) { p->insn += i; + p->fixup += i + 4; + } sort(start, finish - start, sizeof(*start), cmp_ex, NULL); /* Denormalize all entries */ - for (p = start, i = 0; p < finish; p++, i += 8) + for (p = start, i = 0; p < finish; p++, i += 8) { p->insn -= i; + p->fixup -= i + 4; + } } #ifdef CONFIG_MODULES --- linux-raspi2-4.2.0.orig/arch/s390/oprofile/backtrace.c +++ linux-raspi2-4.2.0/arch/s390/oprofile/backtrace.c @@ -55,12 +55,13 @@ void s390_backtrace(struct pt_regs * const regs, unsigned int depth) { - unsigned long head; + unsigned long head, frame_size; struct stack_frame* head_sf; if (user_mode(regs)) return; + frame_size = STACK_FRAME_OVERHEAD + sizeof(struct pt_regs); head = regs->gprs[15]; head_sf = (struct stack_frame*)head; @@ -69,8 +70,9 @@ head = head_sf->back_chain; - head = __show_trace(&depth, head, S390_lowcore.async_stack - ASYNC_SIZE, - S390_lowcore.async_stack); + head = __show_trace(&depth, head, + S390_lowcore.async_stack + frame_size - ASYNC_SIZE, + S390_lowcore.async_stack + frame_size); __show_trace(&depth, head, S390_lowcore.thread_info, S390_lowcore.thread_info + THREAD_SIZE); --- linux-raspi2-4.2.0.orig/arch/s390/pci/pci.c +++ linux-raspi2-4.2.0/arch/s390/pci/pci.c @@ -871,8 +871,11 @@ static int zpci_mem_init(void) { + BUILD_BUG_ON(!is_power_of_2(__alignof__(struct zpci_fmb)) || + __alignof__(struct zpci_fmb) < sizeof(struct zpci_fmb)); + zdev_fmb_cache = kmem_cache_create("PCI_FMB_cache", sizeof(struct zpci_fmb), - 16, 0, NULL); + __alignof__(struct zpci_fmb), 0, NULL); if (!zdev_fmb_cache) goto error_zdev; --- 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/sh/include/uapi/asm/unistd_64.h +++ linux-raspi2-4.2.0/arch/sh/include/uapi/asm/unistd_64.h @@ -278,7 +278,7 @@ #define __NR_fsetxattr 256 #define __NR_getxattr 257 #define __NR_lgetxattr 258 -#define __NR_fgetxattr 269 +#define __NR_fgetxattr 259 #define __NR_listxattr 260 #define __NR_llistxattr 261 #define __NR_flistxattr 262 --- linux-raspi2-4.2.0.orig/arch/sh/mm/kmap.c +++ linux-raspi2-4.2.0/arch/sh/mm/kmap.c @@ -36,6 +36,7 @@ BUG_ON(!test_bit(PG_dcache_clean, &page->flags)); + preempt_disable(); pagefault_disable(); idx = FIX_CMAP_END - @@ -64,4 +65,5 @@ } pagefault_enable(); + preempt_enable(); } --- 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/sparc/kernel/sys_sparc_64.c +++ linux-raspi2-4.2.0/arch/sparc/kernel/sys_sparc_64.c @@ -413,7 +413,7 @@ SYSCALL_DEFINE1(sparc64_personality, unsigned long, personality) { - int ret; + long ret; if (personality(current->personality) == PER_LINUX32 && personality(personality) == PER_LINUX) --- linux-raspi2-4.2.0.orig/arch/sparc/net/bpf_jit_comp.c +++ linux-raspi2-4.2.0/arch/sparc/net/bpf_jit_comp.c @@ -420,22 +420,9 @@ } emit_reg_move(O7, r_saved_O7); - switch (filter[0].code) { - case BPF_RET | BPF_K: - case BPF_LD | BPF_W | BPF_LEN: - case BPF_LD | BPF_W | BPF_ABS: - case BPF_LD | BPF_H | BPF_ABS: - case BPF_LD | BPF_B | BPF_ABS: - /* The first instruction sets the A register (or is - * a "RET 'constant'") - */ - break; - default: - /* Make sure we dont leak kernel information to the - * user. - */ + /* Make sure we dont leak kernel information to the user. */ + if (bpf_needs_clear_a(&filter[0])) emit_clear(r_A); /* A = 0 */ - } for (i = 0; i < flen; i++) { unsigned int K = filter[i].k; --- linux-raspi2-4.2.0.orig/arch/tile/Kconfig +++ linux-raspi2-4.2.0/arch/tile/Kconfig @@ -175,8 +175,6 @@ smaller kernel memory footprint results from using a smaller value on chips with fewer tiles. -if TILEGX - choice prompt "Kernel page size" default PAGE_SIZE_64KB @@ -187,8 +185,11 @@ connections, etc., it may be better to select 16KB, which uses memory more efficiently at some cost in TLB performance. - Note that this option is TILE-Gx specific; currently - TILEPro page size is set by rebuilding the hypervisor. + Note that for TILEPro, you must also rebuild the hypervisor + with a matching page size. + +config PAGE_SIZE_4KB + bool "4KB" if TILEPRO config PAGE_SIZE_16KB bool "16KB" @@ -198,8 +199,6 @@ endchoice -endif - source "kernel/Kconfig.hz" config KEXEC --- linux-raspi2-4.2.0.orig/arch/tile/include/asm/page.h +++ linux-raspi2-4.2.0/arch/tile/include/asm/page.h @@ -20,15 +20,17 @@ #include /* PAGE_SHIFT and HPAGE_SHIFT determine the page sizes. */ -#if defined(CONFIG_PAGE_SIZE_16KB) +#if defined(CONFIG_PAGE_SIZE_4KB) /* tilepro only */ +#define PAGE_SHIFT 12 +#define CTX_PAGE_FLAG HV_CTX_PG_SM_4K +#elif defined(CONFIG_PAGE_SIZE_16KB) #define PAGE_SHIFT 14 #define CTX_PAGE_FLAG HV_CTX_PG_SM_16K #elif defined(CONFIG_PAGE_SIZE_64KB) #define PAGE_SHIFT 16 #define CTX_PAGE_FLAG HV_CTX_PG_SM_64K #else -#define PAGE_SHIFT HV_LOG2_DEFAULT_PAGE_SIZE_SMALL -#define CTX_PAGE_FLAG 0 +#error Page size not specified in Kconfig #endif #define HPAGE_SHIFT HV_LOG2_DEFAULT_PAGE_SIZE_LARGE --- 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/drivers/mconsole_kern.c +++ linux-raspi2-4.2.0/arch/um/drivers/mconsole_kern.c @@ -133,7 +133,7 @@ ptr += strlen("proc"); ptr = skip_spaces(ptr); - file = file_open_root(mnt->mnt_root, mnt, ptr, O_RDONLY); + file = file_open_root(mnt->mnt_root, mnt, ptr, O_RDONLY, 0); if (IS_ERR(file)) { mconsole_reply(req, "Failed to open file", 1, 0); printk(KERN_ERR "open /proc/%s: %ld\n", ptr, PTR_ERR(file)); --- 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/um/os-Linux/start_up.c +++ linux-raspi2-4.2.0/arch/um/os-Linux/start_up.c @@ -94,6 +94,8 @@ { int pid, n, status; + fflush(stdout); + pid = fork(); if (pid == 0) ptrace_child(); --- 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/entry/entry_64_compat.S +++ linux-raspi2-4.2.0/arch/x86/entry/entry_64_compat.S @@ -468,6 +468,7 @@ * it is too small to ever cause noticeable irq latency. */ PARAVIRT_ADJUST_EXCEPTION_FRAME + ASM_CLAC /* Do this early to minimize exposure */ SWAPGS ENABLE_INTERRUPTS(CLBR_NONE) --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/apic.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/apic.h @@ -640,8 +640,8 @@ static inline void entering_ack_irq(void) { - ack_APIC_irq(); entering_irq(); + ack_APIC_irq(); } static inline void ipi_entering_ack_irq(void) --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/boot.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/boot.h @@ -27,7 +27,7 @@ #define BOOT_HEAP_SIZE 0x400000 #else /* !CONFIG_KERNEL_BZIP2 */ -#define BOOT_HEAP_SIZE 0x8000 +#define BOOT_HEAP_SIZE 0x10000 #endif /* !CONFIG_KERNEL_BZIP2 */ --- 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 @@ -104,8 +116,36 @@ #endif cpumask_set_cpu(cpu, mm_cpumask(next)); - /* Re-load page tables */ + /* + * Re-load page tables. + * + * This logic has an ordering constraint: + * + * CPU 0: Write to a PTE for 'next' + * CPU 0: load bit 1 in mm_cpumask. if nonzero, send IPI. + * CPU 1: set bit 1 in next's mm_cpumask + * CPU 1: load from the PTE that CPU 0 writes (implicit) + * + * We need to prevent an outcome in which CPU 1 observes + * the new PTE value and CPU 0 observes bit 1 clear in + * mm_cpumask. (If that occurs, then the IPI will never + * be sent, and CPU 0's TLB will contain a stale entry.) + * + * The bad outcome can occur if either CPU's load is + * reordered before that CPU's store, so both CPUs must + * execute full barriers to prevent this from happening. + * + * Thus, switch_mm needs a full barrier between the + * store to mm_cpumask and any operation that could load + * from next->pgd. TLB fills are special and can happen + * due to instruction fetches or for no reason at all, + * and neither LOCK nor MFENCE orders them. + * Fortunately, load_cr3() is serializing and gives the + * ordering guarantee we need. + * + */ load_cr3(next->pgd); + trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); /* Stop flush ipis for the previous mm */ @@ -114,6 +154,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 +169,7 @@ */ if (unlikely(prev->context.ldt != next->context.ldt)) load_mm_ldt(next); +#endif } #ifdef CONFIG_SMP else { @@ -142,10 +184,14 @@ * schedule, protecting us from simultaneous changes. */ cpumask_set_cpu(cpu, mm_cpumask(next)); + /* * We were in lazy tlb mode and leave_mm disabled * tlb flush IPI delivery. We must reload CR3 * to make sure to use no freed page tables. + * + * As above, load_cr3() is serializing and orders TLB + * fills with respect to the mm_cpumask write. */ load_cr3(next->pgd); trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); --- 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/page_types.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/page_types.h @@ -9,6 +9,12 @@ #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) +#define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) +#define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) + +#define PUD_PAGE_SIZE (_AC(1, UL) << PUD_SHIFT) +#define PUD_PAGE_MASK (~(PUD_PAGE_SIZE-1)) + #define __PHYSICAL_MASK ((phys_addr_t)((1ULL << __PHYSICAL_MASK_SHIFT) - 1)) #define __VIRTUAL_MASK ((1UL << __VIRTUAL_MASK_SHIFT) - 1) --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/paravirt.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/paravirt.h @@ -19,6 +19,12 @@ return pv_info.paravirt_enabled; } +static inline int paravirt_has_feature(unsigned int feature) +{ + WARN_ON_ONCE(!pv_info.paravirt_enabled); + return (pv_info.features & feature); +} + static inline void load_sp0(struct tss_struct *tss, struct thread_struct *thread) { --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/paravirt_types.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/paravirt_types.h @@ -70,9 +70,14 @@ #endif int paravirt_enabled; + unsigned int features; /* valid only if paravirt_enabled is set */ const char *name; }; +#define paravirt_has(x) paravirt_has_feature(PV_SUPPORTED_##x) +/* Supported features */ +#define PV_SUPPORTED_RTC (1<<0) + struct pv_init_ops { /* * Patch may replace one of the defined code sequences with --- 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/pgtable_types.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/pgtable_types.h @@ -337,20 +337,18 @@ } static inline pgprot_t pgprot_4k_2_large(pgprot_t pgprot) { + pgprotval_t val = pgprot_val(pgprot); pgprot_t new; - unsigned long val; - val = pgprot_val(pgprot); pgprot_val(new) = (val & ~(_PAGE_PAT | _PAGE_PAT_LARGE)) | ((val & _PAGE_PAT) << (_PAGE_BIT_PAT_LARGE - _PAGE_BIT_PAT)); return new; } static inline pgprot_t pgprot_large_2_4k(pgprot_t pgprot) { + pgprotval_t val = pgprot_val(pgprot); pgprot_t new; - unsigned long val; - val = pgprot_val(pgprot); pgprot_val(new) = (val & ~(_PAGE_PAT | _PAGE_PAT_LARGE)) | ((val & _PAGE_PAT_LARGE) >> (_PAGE_BIT_PAT_LARGE - _PAGE_BIT_PAT)); --- 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; @@ -478,6 +472,7 @@ #else #define __cpuid native_cpuid #define paravirt_enabled() 0 +#define paravirt_has(x) 0 static inline void load_sp0(struct tss_struct *tss, struct thread_struct *thread) @@ -720,7 +715,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/asm/xen/hypervisor.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/xen/hypervisor.h @@ -57,4 +57,6 @@ } #endif +extern void xen_set_iopl_mask(unsigned mask); + #endif /* _ASM_X86_XEN_HYPERVISOR_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/acpi/sleep.c +++ linux-raspi2-4.2.0/arch/x86/kernel/acpi/sleep.c @@ -16,6 +16,7 @@ #include #include +#include #include "../../realmode/rm/wakeup.h" #include "sleep.h" @@ -107,7 +108,13 @@ saved_magic = 0x123456789abcdef0L; #endif /* CONFIG_64BIT */ + /* + * Pause/unpause graph tracing around do_suspend_lowlevel as it has + * inconsistent call/return info after it jumps to the wakeup vector. + */ + pause_graph_tracing(); do_suspend_lowlevel(); + unpause_graph_tracing(); return 0; } --- 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 @@ -2521,7 +2521,9 @@ { int pin, ioapic, irq, irq_entry; const struct cpumask *mask; + struct irq_desc *desc; struct irq_data *idata; + struct irq_chip *chip; if (skip_ioapic_setup == 1) return; @@ -2535,7 +2537,9 @@ if (irq < 0 || !mp_init_irq_at_boot(ioapic, irq)) continue; - idata = irq_get_irq_data(irq); + desc = irq_to_desc(irq); + raw_spin_lock_irq(&desc->lock); + idata = irq_desc_get_irq_data(desc); /* * Honour affinities which have been set in early boot @@ -2545,9 +2549,12 @@ 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); + raw_spin_unlock_irq(&desc->lock); } - } #endif @@ -2906,6 +2913,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 +2946,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.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/mcheck/mce.c @@ -1055,6 +1055,17 @@ int flags = MF_ACTION_REQUIRED; int lmce = 0; + /* If this CPU is offline, just bail out. */ + if (cpu_is_offline(smp_processor_id())) { + u64 mcgstatus; + + mcgstatus = mce_rdmsrl(MSR_IA32_MCG_STATUS); + if (mcgstatus & MCG_STATUS_RIPV) { + mce_wrmsrl(MSR_IA32_MCG_STATUS, 0); + return; + } + } + prev_state = ist_enter(regs); this_cpu_inc(mce_exception_count); --- 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/mcheck/therm_throt.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/mcheck/therm_throt.c @@ -385,6 +385,9 @@ { __u64 msr_val; + if (static_cpu_has(X86_FEATURE_HWP)) + wrmsrl_safe(MSR_HWP_STATUS, 0); + rdmsrl(MSR_IA32_THERM_STATUS, msr_val); /* Check for violation of core thermal thresholds*/ --- 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 @@ -593,6 +593,19 @@ } } +/* + * There may be PMI landing after enabled=0. The PMI hitting could be before or + * after disable_all. + * + * If PMI hits before disable_all, the PMU will be disabled in the NMI handler. + * It will not be re-enabled in the NMI handler again, because enabled=0. After + * handling the NMI, disable_all will be called, which will not change the + * state either. If PMI hits after disable_all, the PMU is already disabled + * before entering NMI handler. The NMI handler will not change the state + * either. + * + * So either situation is harmless. + */ static void x86_pmu_disable(struct pmu *pmu) { struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events); @@ -1531,6 +1544,7 @@ { struct device_attribute *d; struct perf_pmu_events_attr *pmu_attr; + int offset = 0; int i, j; for (i = 0; attrs[i]; i++) { @@ -1539,7 +1553,7 @@ /* str trumps id */ if (pmu_attr->event_str) continue; - if (x86_pmu.event_map(i)) + if (x86_pmu.event_map(i + offset)) continue; for (j = i; attrs[j]; j++) @@ -1547,11 +1561,19 @@ /* Check the shifted attr. */ i--; + + /* + * event_map() is index based, the attrs array is organized + * by increasing event index. If we shift the events, then + * we need to compensate for the event_map(), otherwise + * we are looking up the wrong event in the map + */ + offset++; } } /* 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 +2201,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 +2213,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, @@ -590,10 +590,12 @@ pebs_active :1, pebs_broken :1; int pebs_record_size; + int pebs_buffer_size; void (*drain_pebs)(struct pt_regs *regs); 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 +626,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 +796,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 +878,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 +918,10 @@ void intel_pmu_lbr_init_hsw(void); +void intel_pmu_lbr_init_skl(void); + +void intel_pmu_pebs_data_source_nhm(void); + int intel_pmu_setup_lbr_filter(struct perf_event *event); void intel_pt_interrupt(void); @@ -934,6 +945,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) @@ -1244,7 +1453,15 @@ }; /* - * Use from PMIs where the LBRs are already disabled. + * Used from PMIs where the LBRs are already disabled. + * + * This function could be called consecutively. It is required to remain in + * disabled state if called consecutively. + * + * During consecutive calls, the same disable value will be written to related + * registers, so the PMU state remains unchanged. hw.state in + * intel_bts_disable_local will remain PERF_HES_STOPPED too in consecutive + * calls. */ static void __intel_pmu_disable_all(void) { @@ -1594,6 +1811,7 @@ loops = 0; again: + intel_pmu_lbr_read(); intel_pmu_ack_status(status); if (++loops > 100) { static bool warned = false; @@ -1608,16 +1826,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 @@ -1670,7 +1888,10 @@ goto again; done: - __intel_pmu_enable_all(0, true); + /* Only restore PMU state when it's active. See x86_pmu_disable(). */ + if (cpuc->enabled) + __intel_pmu_enable_all(0, true); + /* * Only unmask the NMI after the overflow counters * have been reset. This avoids spurious NMIs on @@ -2102,9 +2323,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 +2477,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 +2496,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 +2928,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 +2968,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 @@ -3073,6 +3310,7 @@ intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = X86_CONFIG(.event=0xb1, .umask=0x3f, .inv=1, .cmask=1); + intel_pmu_pebs_data_source_nhm(); x86_add_quirk(intel_nehalem_quirk); pr_cont("Nehalem events, "); @@ -3135,6 +3373,7 @@ intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = X86_CONFIG(.event=0xb1, .umask=0x3f, .inv=1, .cmask=1); + intel_pmu_pebs_data_source_nhm(); pr_cont("Westmere events, "); break; @@ -3269,6 +3508,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 +3600,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 @@ -51,7 +51,8 @@ #define OP_LH (P(OP, LOAD) | P(LVL, HIT)) #define SNOOP_NONE_MISS (P(SNOOP, NONE) | P(SNOOP, MISS)) -static const u64 pebs_data_source[] = { +/* Version for Sandy Bridge and later */ +static u64 pebs_data_source[] = { P(OP, LOAD) | P(LVL, MISS) | P(LVL, L3) | P(SNOOP, NA),/* 0x00:ukn L3 */ OP_LH | P(LVL, L1) | P(SNOOP, NONE), /* 0x01: L1 local */ OP_LH | P(LVL, LFB) | P(SNOOP, NONE), /* 0x02: LFB hit */ @@ -70,6 +71,14 @@ OP_LH | P(LVL, UNC) | P(SNOOP, NONE), /* 0x0f: uncached */ }; +/* Patch up minor differences in the bits */ +void __init intel_pmu_pebs_data_source_nhm(void) +{ + pebs_data_source[0x05] = OP_LH | P(LVL, L3) | P(SNOOP, HIT); + pebs_data_source[0x06] = OP_LH | P(LVL, L3) | P(SNOOP, HITM); + pebs_data_source[0x07] = OP_LH | P(LVL, L3) | P(SNOOP, HITM); +} + static u64 precise_store_data(u64 status) { union intel_x86_pebs_dse dse; @@ -224,6 +233,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; @@ -256,7 +278,7 @@ if (!x86_pmu.pebs) return 0; - buffer = kzalloc_node(PEBS_BUFFER_SIZE, GFP_KERNEL, node); + buffer = kzalloc_node(x86_pmu.pebs_buffer_size, GFP_KERNEL, node); if (unlikely(!buffer)) return -ENOMEM; @@ -273,7 +295,7 @@ per_cpu(insn_buffer, cpu) = ibuffer; } - max = PEBS_BUFFER_SIZE / x86_pmu.pebs_record_size; + max = x86_pmu.pebs_buffer_size / x86_pmu.pebs_record_size; ds->pebs_buffer_base = (u64)(unsigned long)buffer; ds->pebs_index = ds->pebs_buffer_base; @@ -675,6 +697,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 +929,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 +938,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 +962,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 +1060,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; } @@ -1027,6 +1081,13 @@ void *at; u64 pebs_status; + /* + * fmt0 does not have a status bitfield (does not use + * perf_record_nhm format) + */ + if (x86_pmu.intel_cap.pebs_format < 1) + return base; + if (base == NULL) return NULL; @@ -1112,7 +1173,7 @@ if (!event->attr.precise_ip) return; - n = (top - at) / x86_pmu.pebs_record_size; + n = top - at; if (n <= 0) return; @@ -1222,6 +1283,7 @@ x86_pmu.bts = boot_cpu_has(X86_FEATURE_BTS); x86_pmu.pebs = boot_cpu_has(X86_FEATURE_PEBS); + x86_pmu.pebs_buffer_size = PEBS_BUFFER_SIZE; if (x86_pmu.pebs) { char pebs_type = x86_pmu.intel_cap.pebs_trap ? '+' : '-'; int format = x86_pmu.intel_cap.pebs_format; @@ -1230,6 +1292,14 @@ case 0: printk(KERN_CONT "PEBS fmt0%c, ", pebs_type); x86_pmu.pebs_record_size = sizeof(struct pebs_record_core); + /* + * Using >PAGE_SIZE buffers makes the WRMSR to + * PERF_GLOBAL_CTRL in intel_pmu_enable_all() + * mysteriously hang on Core2. + * + * As a workaround, we don't do this. + */ + x86_pmu.pebs_buffer_size = PAGE_SIZE; x86_pmu.drain_pebs = intel_pmu_drain_pebs_core; break; @@ -1245,6 +1315,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/cpu/perf_event_knc.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event_knc.c @@ -263,7 +263,9 @@ goto again; done: - knc_pmu_enable_all(0); + /* Only restore PMU state when it's active. See x86_pmu_disable(). */ + if (cpuc->enabled) + knc_pmu_enable_all(0); return handled; } --- 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/ioport.c +++ linux-raspi2-4.2.0/arch/x86/kernel/ioport.c @@ -96,9 +96,14 @@ SYSCALL_DEFINE1(iopl, unsigned int, level) { struct pt_regs *regs = current_pt_regs(); - unsigned int old = (regs->flags >> 12) & 3; struct thread_struct *t = ¤t->thread; + /* + * Careful: the IOPL bits in regs->flags are undefined under Xen PV + * and changing them has no effect. + */ + unsigned int old = t->iopl >> X86_EFLAGS_IOPL_BIT; + if (level > 3) return -EINVAL; /* Trying to gain more privileges? */ @@ -106,8 +111,9 @@ if (!capable(CAP_SYS_RAWIO)) return -EPERM; } - regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12); - t->iopl = level << 12; + regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | + (level << X86_EFLAGS_IOPL_BIT); + t->iopl = level << X86_EFLAGS_IOPL_BIT; set_iopl_mask(t->iopl); return 0; --- 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 @@ -48,6 +48,7 @@ #include #include #include +#include asmlinkage extern void ret_from_fork(void); @@ -121,13 +122,15 @@ 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, - dead_task->mm->context.ldt, + dead_task->mm->context.ldt->entries, dead_task->mm->context.ldt->size); BUG(); } +#endif } } @@ -417,6 +420,17 @@ task_thread_info(prev_p)->flags & _TIF_WORK_CTXSW_PREV)) __switch_to_xtra(prev_p, next_p, tss); +#ifdef CONFIG_XEN + /* + * On Xen PV, IOPL bits in pt_regs->flags have no effect, and + * current_pt_regs()->flags may not match the current task's + * intended IOPL. We need to switch it manually. + */ + if (unlikely(xen_pv_domain() && + prev->iopl != next->iopl)) + xen_set_iopl_mask(next->iopl); +#endif + if (static_cpu_has_bug(X86_BUG_SYSRET_SS_ATTRS)) { /* * AMD CPUs have a misfeature: SYSRET sets the SS selector but @@ -497,27 +511,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 @@ -182,6 +182,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"), }, }, + { /* Handle problems with rebooting on the iMac10,1. */ + .callback = set_pci_reboot, + .ident = "Apple iMac10,1", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "iMac10,1"), + }, + }, /* ASRock */ { /* Handle problems with rebooting on ASRock Q1900DC-ITX */ @@ -407,7 +415,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/rtc.c +++ linux-raspi2-4.2.0/arch/x86/kernel/rtc.c @@ -200,6 +200,9 @@ } #endif + if (paravirt_enabled() && !paravirt_has(RTC)) + return -ENODEV; + platform_device_register(&rtc_device); dev_info(&rtc_device.dev, "registered platform RTC device (no PNP device found)\n"); --- 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.. */ @@ -685,12 +689,15 @@ signal_setup_done(failed, ksig, stepping); } -#ifdef CONFIG_X86_32 -#define NR_restart_syscall __NR_restart_syscall -#else /* !CONFIG_X86_32 */ -#define NR_restart_syscall \ - test_thread_flag(TIF_IA32) ? __NR_ia32_restart_syscall : __NR_restart_syscall -#endif /* CONFIG_X86_32 */ +static inline unsigned long get_nr_restart_syscall(const struct pt_regs *regs) +{ +#if defined(CONFIG_X86_32) || !defined(CONFIG_X86_64) + return __NR_restart_syscall; +#else /* !CONFIG_X86_32 && CONFIG_X86_64 */ + return test_thread_flag(TIF_IA32) ? __NR_ia32_restart_syscall : + __NR_restart_syscall | (regs->orig_ax & __X32_SYSCALL_BIT); +#endif /* CONFIG_X86_32 || !CONFIG_X86_64 */ +} /* * Note that 'init' is a special process: it doesn't get signals it doesn't @@ -719,7 +726,7 @@ break; case -ERESTART_RESTARTBLOCK: - regs->ax = NR_restart_syscall; + regs->ax = get_nr_restart_syscall(regs); regs->ip -= 2; break; } --- 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/cpuid.h +++ linux-raspi2-4.2.0/arch/x86/kvm/cpuid.h @@ -38,6 +38,14 @@ return best && (best->ecx & bit(X86_FEATURE_XSAVE)); } +static inline bool guest_cpuid_has_mtrr(struct kvm_vcpu *vcpu) +{ + struct kvm_cpuid_entry2 *best; + + best = kvm_find_cpuid_entry(vcpu, 1, 0); + return best && (best->edx & bit(X86_FEATURE_MTRR)); +} + static inline bool guest_cpuid_has_tsc_adjust(struct kvm_vcpu *vcpu) { struct kvm_cpuid_entry2 *best; --- 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/i8254.c +++ linux-raspi2-4.2.0/arch/x86/kvm/i8254.c @@ -244,7 +244,7 @@ * PIC is being reset. Handle it gracefully here */ atomic_inc(&ps->pending); - else if (value > 0) + else if (value > 0 && ps->reinject) /* in this case, we had multiple outstanding pit interrupts * that we needed to inject. Reinject */ @@ -287,7 +287,9 @@ * last one has been acked. */ spin_lock(&ps->inject_lock); - if (ps->irq_ack) { + if (!ps->reinject) + inject = 1; + else if (ps->irq_ack) { ps->irq_ack = 0; inject = 1; } @@ -316,10 +318,10 @@ struct kvm_kpit_state *ps = container_of(data, struct kvm_kpit_state, timer); struct kvm_pit *pt = ps->kvm->arch.vpit; - if (ps->reinject || !atomic_read(&ps->pending)) { + if (ps->reinject) atomic_inc(&ps->pending); - queue_kthread_work(&pt->worker, &pt->expired); - } + + queue_kthread_work(&pt->worker, &pt->expired); if (ps->is_periodic) { hrtimer_add_expires_ns(&ps->timer, ps->period); @@ -418,6 +420,7 @@ u8 saved_mode; if (hpet_legacy_start) { /* save existing mode for later reenablement */ + WARN_ON(channel != 0); saved_mode = kvm->arch.vpit->pit_state.channels[0].mode; kvm->arch.vpit->pit_state.channels[0].mode = 0xff; /* disable timer */ pit_load_count(kvm, channel, val); --- 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/mtrr.c +++ linux-raspi2-4.2.0/arch/x86/kvm/mtrr.c @@ -120,14 +120,22 @@ return mtrr_state->deftype & IA32_MTRR_DEF_TYPE_TYPE_MASK; } -static u8 mtrr_disabled_type(void) +static u8 mtrr_disabled_type(struct kvm_vcpu *vcpu) { /* * Intel SDM 11.11.2.2: all MTRRs are disabled when * IA32_MTRR_DEF_TYPE.E bit is cleared, and the UC * memory type is applied to all of physical memory. + * + * However, virtual machines can be run with CPUID such that + * there are no MTRRs. In that case, the firmware will never + * enable MTRRs and it is obviously undesirable to run the + * guest entirely with UC memory and we use WB. */ - return MTRR_TYPE_UNCACHABLE; + if (guest_cpuid_has_mtrr(vcpu)) + return MTRR_TYPE_UNCACHABLE; + else + return MTRR_TYPE_WRBACK; } /* @@ -267,7 +275,7 @@ for (seg = 0; seg < seg_num; seg++) { mtrr_seg = &fixed_seg_table[seg]; - if (mtrr_seg->start >= addr && addr < mtrr_seg->end) + if (mtrr_seg->start <= addr && addr < mtrr_seg->end) return seg; } @@ -300,7 +308,6 @@ *start = range->base & PAGE_MASK; mask = range->mask & PAGE_MASK; - mask |= ~0ULL << boot_cpu_data.x86_phys_bits; /* This cannot overflow because writing to the reserved bits of * variable MTRRs causes a #GP. @@ -356,10 +363,14 @@ if (var_mtrr_range_is_valid(cur)) list_del(&mtrr_state->var_ranges[index].node); + /* Extend the mask with all 1 bits to the left, since those + * bits must implicitly be 0. The bits are then cleared + * when reading them. + */ if (!is_mtrr_mask) cur->base = data; else - cur->mask = data; + cur->mask = data | (-1LL << cpuid_maxphyaddr(vcpu)); /* add it to the list if it's enabled. */ if (var_mtrr_range_is_valid(cur)) { @@ -426,6 +437,8 @@ *pdata = vcpu->arch.mtrr_state.var_ranges[index].base; else *pdata = vcpu->arch.mtrr_state.var_ranges[index].mask; + + *pdata &= (1ULL << cpuid_maxphyaddr(vcpu)) - 1; } return 0; @@ -670,7 +683,7 @@ } if (iter.mtrr_disabled) - return mtrr_disabled_type(); + return mtrr_disabled_type(vcpu); /* not contained in any MTRRs. */ if (type == -1) --- linux-raspi2-4.2.0.orig/arch/x86/kvm/paging_tmpl.h +++ linux-raspi2-4.2.0/arch/x86/kvm/paging_tmpl.h @@ -257,7 +257,7 @@ return ret; kvm_vcpu_mark_page_dirty(vcpu, table_gfn); - walker->ptes[level] = pte; + walker->ptes[level - 1] = pte; } return 0; } --- 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/trace.h +++ linux-raspi2-4.2.0/arch/x86/kvm/trace.h @@ -250,7 +250,7 @@ #define kvm_trace_sym_exc \ EXS(DE), EXS(DB), EXS(BP), EXS(OF), EXS(BR), EXS(UD), EXS(NM), \ EXS(DF), EXS(TS), EXS(NP), EXS(SS), EXS(GP), EXS(PF), \ - EXS(MF), EXS(MC) + EXS(MF), EXS(AC), EXS(MC) /* * Tracepoint for kvm interrupt injection: --- 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)) @@ -1674,6 +1674,13 @@ return; } break; + case MSR_IA32_PEBS_ENABLE: + /* PEBS needs a quiescent period after being disabled (to write + * a record). Disabling PEBS through VMX MSR swapping doesn't + * provide that period, so a CPU could write host's record into + * guest's memory. + */ + wrmsrl(MSR_IA32_PEBS_ENABLE, 0); } for (i = 0; i < m->nr; ++i) @@ -1711,26 +1718,31 @@ static bool update_transition_efer(struct vcpu_vmx *vmx, int efer_offset) { - u64 guest_efer; - u64 ignore_bits; + u64 guest_efer = vmx->vcpu.arch.efer; + u64 ignore_bits = 0; - guest_efer = vmx->vcpu.arch.efer; + if (!enable_ept) { + /* + * NX is needed to handle CR0.WP=1, CR4.SMEP=1. Testing + * host CPUID is more efficient than testing guest CPUID + * or CR4. Host SMEP is anyway a requirement for guest SMEP. + */ + if (boot_cpu_has(X86_FEATURE_SMEP)) + guest_efer |= EFER_NX; + else if (!(guest_efer & EFER_NX)) + ignore_bits |= EFER_NX; + } /* - * NX is emulated; LMA and LME handled by hardware; SCE meaningless - * outside long mode + * LMA and LME handled by hardware; SCE meaningless outside long mode. */ - ignore_bits = EFER_NX | EFER_SCE; + ignore_bits |= EFER_SCE; #ifdef CONFIG_X86_64 ignore_bits |= EFER_LMA | EFER_LME; /* SCE is meaningful only in long mode on Intel */ if (guest_efer & EFER_LMA) ignore_bits &= ~(u64)EFER_SCE; #endif - guest_efer &= ~ignore_bits; - guest_efer |= host_efer & ignore_bits; - vmx->guest_msrs[efer_offset].data = guest_efer; - vmx->guest_msrs[efer_offset].mask = ~ignore_bits; clear_atomic_switch_msr(vmx, MSR_EFER); @@ -1741,16 +1753,21 @@ */ if (cpu_has_load_ia32_efer || (enable_ept && ((vmx->vcpu.arch.efer ^ host_efer) & EFER_NX))) { - guest_efer = vmx->vcpu.arch.efer; if (!(guest_efer & EFER_LMA)) guest_efer &= ~EFER_LME; if (guest_efer != host_efer) add_atomic_switch_msr(vmx, MSR_EFER, guest_efer, host_efer); return false; - } + } else { + guest_efer &= ~ignore_bits; + guest_efer |= host_efer & ignore_bits; - return true; + vmx->guest_msrs[efer_offset].data = guest_efer; + vmx->guest_msrs[efer_offset].mask = ~ignore_bits; + + return true; + } } static unsigned long segment_base(u16 selector) @@ -2673,7 +2690,7 @@ msr_info->data = vcpu->arch.ia32_xss; break; case MSR_TSC_AUX: - if (!to_vmx(vcpu)->rdtscp_enabled) + if (!to_vmx(vcpu)->rdtscp_enabled && !msr_info->host_initiated) return 1; /* Otherwise falls through */ default: @@ -2779,7 +2796,7 @@ clear_atomic_switch_msr(vmx, MSR_IA32_XSS); break; case MSR_TSC_AUX: - if (!vmx->rdtscp_enabled) + if (!vmx->rdtscp_enabled && !msr_info->host_initiated) return 1; /* Check reserved bit, higher 32 bits should be zero */ if ((data >> 32) != 0) @@ -3644,20 +3661,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 +4798,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 +5163,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 +6158,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); @@ -7177,6 +7203,7 @@ if (!(types & (1UL << type))) { nested_vmx_failValid(vcpu, VMXERR_INVALID_OPERAND_TO_INVEPT_INVVPID); + skip_emulated_instruction(vcpu); return 1; } @@ -8632,17 +8659,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; @@ -939,7 +941,7 @@ MSR_CSTAR, MSR_KERNEL_GS_BASE, MSR_SYSCALL_MASK, MSR_LSTAR, #endif MSR_IA32_TSC, MSR_IA32_CR_PAT, MSR_VM_HSAVE_PA, - MSR_IA32_FEATURE_CONTROL, MSR_IA32_BNDCFGS + MSR_IA32_FEATURE_CONTROL, MSR_IA32_BNDCFGS, MSR_TSC_AUX, }; static unsigned num_msrs_to_save; @@ -2030,6 +2032,8 @@ static void record_steal_time(struct kvm_vcpu *vcpu) { + accumulate_steal_time(vcpu); + if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED)) return; @@ -2182,12 +2186,6 @@ if (!(data & KVM_MSR_ENABLED)) break; - vcpu->arch.st.last_steal = current->sched_info.run_delay; - - preempt_disable(); - accumulate_steal_time(vcpu); - preempt_enable(); - kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu); break; @@ -2388,6 +2386,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: @@ -2830,7 +2830,6 @@ vcpu->cpu = cpu; } - accumulate_steal_time(vcpu); kvm_make_request(KVM_REQ_STEAL_UPDATE, vcpu); } @@ -3638,10 +3637,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 +3663,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 +3673,9 @@ 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 && i == 0); mutex_unlock(&kvm->arch.vpit->pit_state.lock); return r; } @@ -4044,16 +4048,17 @@ /* * Even MSRs that are valid in the host may not be exposed - * to the guests in some cases. We could work around this - * in VMX with the generic MSR save/load machinery, but it - * is not really worthwhile since it will really only - * happen with nested virtualization. + * to the guests in some cases. */ switch (msrs_to_save[i]) { case MSR_IA32_BNDCFGS: if (!kvm_x86_ops->mpx_supported()) continue; break; + case MSR_TSC_AUX: + if (!kvm_x86_ops->rdtscp_supported()) + continue; + break; default: break; } @@ -4258,6 +4263,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 +5007,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 +5818,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; } @@ -6121,12 +6136,10 @@ } /* try to inject new event if pending */ - if (vcpu->arch.nmi_pending) { - if (kvm_x86_ops->nmi_allowed(vcpu)) { - --vcpu->arch.nmi_pending; - vcpu->arch.nmi_injected = true; - kvm_x86_ops->set_nmi(vcpu); - } + if (vcpu->arch.nmi_pending && kvm_x86_ops->nmi_allowed(vcpu)) { + --vcpu->arch.nmi_pending; + vcpu->arch.nmi_injected = true; + kvm_x86_ops->set_nmi(vcpu); } else if (kvm_cpu_has_injectable_intr(vcpu)) { /* * Because interrupts can be injected asynchronously, we are @@ -6530,10 +6543,12 @@ if (inject_pending_event(vcpu, req_int_win) != 0) req_immediate_exit = true; /* enable NMI/IRQ window open exits if needed */ - else if (vcpu->arch.nmi_pending) - kvm_x86_ops->enable_nmi_window(vcpu); - else if (kvm_cpu_has_injectable_intr(vcpu) || req_int_win) - kvm_x86_ops->enable_irq_window(vcpu); + else { + if (vcpu->arch.nmi_pending) + kvm_x86_ops->enable_nmi_window(vcpu); + if (kvm_cpu_has_injectable_intr(vcpu) || req_int_win) + kvm_x86_ops->enable_irq_window(vcpu); + } if (kvm_lapic_enabled(vcpu)) { /* @@ -6608,12 +6623,12 @@ * KVM_DEBUGREG_WONT_EXIT again. */ if (unlikely(vcpu->arch.switch_db_regs & KVM_DEBUGREG_WONT_EXIT)) { - int i; - WARN_ON(vcpu->guest_debug & KVM_GUESTDBG_USE_HW_BP); kvm_x86_ops->sync_dirty_debug_regs(vcpu); - for (i = 0; i < KVM_NR_DB_REGS; i++) - vcpu->arch.eff_db[i] = vcpu->arch.db[i]; + kvm_update_dr0123(vcpu); + kvm_update_dr6(vcpu); + kvm_update_dr7(vcpu); + vcpu->arch.switch_db_regs &= ~KVM_DEBUGREG_RELOAD; } /* @@ -6704,6 +6719,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 +6733,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 +8029,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/lguest/boot.c +++ linux-raspi2-4.2.0/arch/x86/lguest/boot.c @@ -1419,6 +1419,7 @@ pv_info.kernel_rpl = 1; /* Everyone except Xen runs with this set. */ pv_info.shared_kernel_pmd = 1; + pv_info.features = 0; /* * We set up all the lguest overrides for sensitive operations. These --- linux-raspi2-4.2.0.orig/arch/x86/lib/copy_user_64.S +++ linux-raspi2-4.2.0/arch/x86/lib/copy_user_64.S @@ -232,17 +232,31 @@ /* * copy_user_nocache - Uncached memory copy with exception handling - * This will force destination/source out of cache for more performance. + * This will force destination out of cache for more performance. + * + * Note: Cached memory copy is used when destination or size is not + * naturally aligned. That is: + * - Require 8-byte alignment when size is 8 bytes or larger. + * - Require 4-byte alignment when size is 4 bytes. */ ENTRY(__copy_user_nocache) ASM_STAC + + /* If size is less than 8 bytes, go to 4-byte copy */ cmpl $8,%edx - jb 20f /* less then 8 bytes, go to byte copy loop */ + jb .L_4b_nocache_copy_entry + + /* If destination is not 8-byte aligned, "cache" copy to align it */ ALIGN_DESTINATION + + /* Set 4x8-byte copy count and remainder */ movl %edx,%ecx andl $63,%edx shrl $6,%ecx - jz 17f + jz .L_8b_nocache_copy_entry /* jump if count is 0 */ + + /* Perform 4x8-byte nocache loop-copy */ +.L_4x8b_nocache_copy_loop: 1: movq (%rsi),%r8 2: movq 1*8(%rsi),%r9 3: movq 2*8(%rsi),%r10 @@ -262,60 +276,106 @@ leaq 64(%rsi),%rsi leaq 64(%rdi),%rdi decl %ecx - jnz 1b -17: movl %edx,%ecx + jnz .L_4x8b_nocache_copy_loop + + /* Set 8-byte copy count and remainder */ +.L_8b_nocache_copy_entry: + movl %edx,%ecx andl $7,%edx shrl $3,%ecx - jz 20f -18: movq (%rsi),%r8 -19: movnti %r8,(%rdi) + jz .L_4b_nocache_copy_entry /* jump if count is 0 */ + + /* Perform 8-byte nocache loop-copy */ +.L_8b_nocache_copy_loop: +20: movq (%rsi),%r8 +21: movnti %r8,(%rdi) leaq 8(%rsi),%rsi leaq 8(%rdi),%rdi decl %ecx - jnz 18b -20: andl %edx,%edx - jz 23f + jnz .L_8b_nocache_copy_loop + + /* If no byte left, we're done */ +.L_4b_nocache_copy_entry: + andl %edx,%edx + jz .L_finish_copy + + /* If destination is not 4-byte aligned, go to byte copy: */ + movl %edi,%ecx + andl $3,%ecx + jnz .L_1b_cache_copy_entry + + /* Set 4-byte copy count (1 or 0) and remainder */ + movl %edx,%ecx + andl $3,%edx + shrl $2,%ecx + jz .L_1b_cache_copy_entry /* jump if count is 0 */ + + /* Perform 4-byte nocache copy: */ +30: movl (%rsi),%r8d +31: movnti %r8d,(%rdi) + leaq 4(%rsi),%rsi + leaq 4(%rdi),%rdi + + /* If no bytes left, we're done: */ + andl %edx,%edx + jz .L_finish_copy + + /* Perform byte "cache" loop-copy for the remainder */ +.L_1b_cache_copy_entry: movl %edx,%ecx -21: movb (%rsi),%al -22: movb %al,(%rdi) +.L_1b_cache_copy_loop: +40: movb (%rsi),%al +41: movb %al,(%rdi) incq %rsi incq %rdi decl %ecx - jnz 21b -23: xorl %eax,%eax + jnz .L_1b_cache_copy_loop + + /* Finished copying; fence the prior stores */ +.L_finish_copy: + xorl %eax,%eax ASM_CLAC sfence ret .section .fixup,"ax" -30: shll $6,%ecx +.L_fixup_4x8b_copy: + shll $6,%ecx addl %ecx,%edx - jmp 60f -40: lea (%rdx,%rcx,8),%rdx - jmp 60f -50: movl %ecx,%edx -60: sfence + jmp .L_fixup_handle_tail +.L_fixup_8b_copy: + lea (%rdx,%rcx,8),%rdx + jmp .L_fixup_handle_tail +.L_fixup_4b_copy: + lea (%rdx,%rcx,4),%rdx + jmp .L_fixup_handle_tail +.L_fixup_1b_copy: + movl %ecx,%edx +.L_fixup_handle_tail: + sfence jmp copy_user_handle_tail .previous - _ASM_EXTABLE(1b,30b) - _ASM_EXTABLE(2b,30b) - _ASM_EXTABLE(3b,30b) - _ASM_EXTABLE(4b,30b) - _ASM_EXTABLE(5b,30b) - _ASM_EXTABLE(6b,30b) - _ASM_EXTABLE(7b,30b) - _ASM_EXTABLE(8b,30b) - _ASM_EXTABLE(9b,30b) - _ASM_EXTABLE(10b,30b) - _ASM_EXTABLE(11b,30b) - _ASM_EXTABLE(12b,30b) - _ASM_EXTABLE(13b,30b) - _ASM_EXTABLE(14b,30b) - _ASM_EXTABLE(15b,30b) - _ASM_EXTABLE(16b,30b) - _ASM_EXTABLE(18b,40b) - _ASM_EXTABLE(19b,40b) - _ASM_EXTABLE(21b,50b) - _ASM_EXTABLE(22b,50b) + _ASM_EXTABLE(1b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(2b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(3b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(4b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(5b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(6b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(7b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(8b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(9b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(10b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(11b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(12b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(13b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(14b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(15b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(16b,.L_fixup_4x8b_copy) + _ASM_EXTABLE(20b,.L_fixup_8b_copy) + _ASM_EXTABLE(21b,.L_fixup_8b_copy) + _ASM_EXTABLE(30b,.L_fixup_4b_copy) + _ASM_EXTABLE(31b,.L_fixup_4b_copy) + _ASM_EXTABLE(40b,.L_fixup_1b_copy) + _ASM_EXTABLE(41b,.L_fixup_1b_copy) ENDPROC(__copy_user_nocache) --- 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 @@ -286,6 +287,9 @@ if (!pmd_k) return -1; + if (pmd_huge(*pmd_k)) + return 0; + pte_k = pte_offset_kernel(pmd_k, address); if (!pte_present(*pte_k)) return -1; @@ -301,14 +305,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) @@ -357,8 +363,6 @@ * 64-bit: * * Handle a fault on the vmalloc area - * - * This assumes no large pages in there. */ static noinline int vmalloc_fault(unsigned long address) { @@ -400,17 +404,23 @@ if (pud_none(*pud_ref)) return -1; - if (pud_none(*pud) || pud_page_vaddr(*pud) != pud_page_vaddr(*pud_ref)) + if (pud_none(*pud) || pud_pfn(*pud) != pud_pfn(*pud_ref)) BUG(); + if (pud_huge(*pud)) + return 0; + pmd = pmd_offset(pud, address); pmd_ref = pmd_offset(pud_ref, address); if (pmd_none(*pmd_ref)) return -1; - if (pmd_none(*pmd) || pmd_page(*pmd) != pmd_page(*pmd_ref)) + if (pmd_none(*pmd) || pmd_pfn(*pmd) != pmd_pfn(*pmd_ref)) BUG(); + if (pmd_huge(*pmd)) + return 0; + pte_ref = pte_offset_kernel(pmd_ref, address); if (!pte_present(*pte_ref)) return -1; --- 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 @@ -138,19 +138,19 @@ switch (type) { case REG_TYPE_RM: regno = X86_MODRM_RM(insn->modrm.value); - if (X86_REX_B(insn->rex_prefix.value) == 1) + if (X86_REX_B(insn->rex_prefix.value)) regno += 8; break; case REG_TYPE_INDEX: regno = X86_SIB_INDEX(insn->sib.value); - if (X86_REX_X(insn->rex_prefix.value) == 1) + if (X86_REX_X(insn->rex_prefix.value)) regno += 8; break; case REG_TYPE_BASE: regno = X86_SIB_BASE(insn->sib.value); - if (X86_REX_B(insn->rex_prefix.value) == 1) + if (X86_REX_B(insn->rex_prefix.value)) regno += 8; break; @@ -160,7 +160,7 @@ break; } - if (regno > nr_registers) { + if (regno >= nr_registers) { WARN_ONCE(1, "decoded an instruction with an invalid register"); return -EINVAL; } @@ -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/mm/pageattr.c +++ linux-raspi2-4.2.0/arch/x86/mm/pageattr.c @@ -34,7 +34,7 @@ pgd_t *pgd; pgprot_t mask_set; pgprot_t mask_clr; - int numpages; + unsigned long numpages; int flags; unsigned long pfn; unsigned force_split : 1; @@ -423,10 +423,27 @@ pte = lookup_address(virt_addr, &level); BUG_ON(!pte); - pmask = page_level_mask(level); - offset = virt_addr & ~pmask; - phys_addr = (phys_addr_t)pte_pfn(*pte) << PAGE_SHIFT; - return (phys_addr | offset); + + /* + * pXX_pfn() returns unsigned long, which must be cast to phys_addr_t + * before being left-shifted PAGE_SHIFT bits -- this trick is to + * make 32-PAE kernel work correctly. + */ + switch (level) { + case PG_LEVEL_1G: + phys_addr = (phys_addr_t)pud_pfn(*(pud_t *)pte) << PAGE_SHIFT; + offset = virt_addr & ~PUD_PAGE_MASK; + break; + case PG_LEVEL_2M: + phys_addr = (phys_addr_t)pmd_pfn(*(pmd_t *)pte) << PAGE_SHIFT; + offset = virt_addr & ~PMD_PAGE_MASK; + break; + default: + phys_addr = (phys_addr_t)pte_pfn(*pte) << PAGE_SHIFT; + offset = virt_addr & ~PAGE_MASK; + } + + return (phys_addr_t)(phys_addr | offset); } EXPORT_SYMBOL_GPL(slow_virt_to_phys); @@ -1322,7 +1339,7 @@ * CPA operation. Either a large page has been * preserved or a single page update happened. */ - BUG_ON(cpa->numpages > numpages); + BUG_ON(cpa->numpages > numpages || !cpa->numpages); numpages -= cpa->numpages; if (cpa->flags & (CPA_PAGES_ARRAY | CPA_ARRAY)) cpa->curpage++; --- linux-raspi2-4.2.0.orig/arch/x86/mm/tlb.c +++ linux-raspi2-4.2.0/arch/x86/mm/tlb.c @@ -160,7 +160,10 @@ preempt_disable(); count_vm_tlb_event(NR_TLB_LOCAL_FLUSH_ALL); + + /* This is an implicit full barrier that synchronizes with switch_mm. */ local_flush_tlb(); + trace_tlb_flush(TLB_LOCAL_SHOOTDOWN, TLB_FLUSH_ALL); if (cpumask_any_but(mm_cpumask(mm), smp_processor_id()) < nr_cpu_ids) flush_tlb_others(mm_cpumask(mm), mm, 0UL, TLB_FLUSH_ALL); @@ -187,17 +190,29 @@ unsigned long base_pages_to_flush = TLB_FLUSH_ALL; preempt_disable(); - if (current->active_mm != mm) + if (current->active_mm != mm) { + /* Synchronize with switch_mm. */ + smp_mb(); + goto out; + } if (!current->mm) { leave_mm(smp_processor_id()); + + /* Synchronize with switch_mm. */ + smp_mb(); + goto out; } if ((end != TLB_FLUSH_ALL) && !(vmflag & VM_HUGETLB)) base_pages_to_flush = (end - start) >> PAGE_SHIFT; + /* + * Both branches below are implicit full barriers (MOV to CR or + * INVLPG) that synchronize with switch_mm. + */ if (base_pages_to_flush > tlb_single_page_flush_ceiling) { base_pages_to_flush = TLB_FLUSH_ALL; count_vm_tlb_event(NR_TLB_LOCAL_FLUSH_ALL); @@ -227,10 +242,18 @@ preempt_disable(); if (current->active_mm == mm) { - if (current->mm) + if (current->mm) { + /* + * Implicit full barrier (INVLPG) that synchronizes + * with switch_mm. + */ __flush_tlb_one(start); - else + } else { leave_mm(smp_processor_id()); + + /* Synchronize with switch_mm. */ + smp_mb(); + } } if (cpumask_any_but(mm_cpumask(mm), smp_processor_id()) < nr_cpu_ids) --- linux-raspi2-4.2.0.orig/arch/x86/pci/fixup.c +++ linux-raspi2-4.2.0/arch/x86/pci/fixup.c @@ -553,3 +553,10 @@ } } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27B9, twinhead_reserve_killing_zone); + +static void pci_bdwep_bar(struct pci_dev *dev) +{ + dev->non_compliant_bars = 1; +} +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fa0, pci_bdwep_bar); +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fc0, pci_bdwep_bar); --- 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/um/Makefile +++ linux-raspi2-4.2.0/arch/x86/um/Makefile @@ -17,7 +17,7 @@ ifeq ($(CONFIG_X86_32),y) obj-y += checksum_32.o -obj-$(CONFIG_BINFMT_ELF) += elfcore.o +obj-$(CONFIG_ELF_CORE) += elfcore.o subarch-y = ../lib/string_32.o ../lib/atomic64_32.o ../lib/atomic64_cx8_32.o subarch-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += ../lib/rwsem.o --- 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 @@ -955,7 +959,7 @@ tss->x86_tss.sp0 = thread->sp0; } -static void xen_set_iopl_mask(unsigned mask) +void xen_set_iopl_mask(unsigned mask) { struct physdev_set_iopl set_iopl; @@ -1182,7 +1186,7 @@ #ifdef CONFIG_X86_64 .extra_user_64bit_cs = FLAT_USER_CS64, #endif - + .features = 0, .name = "Xen", }; @@ -1524,6 +1528,8 @@ /* Install Xen paravirt ops */ pv_info = xen_info; + if (xen_initial_domain()) + pv_info.features |= PV_SUPPORTED_RTC; pv_init_ops = xen_init_ops; pv_apic_ops = xen_apic_ops; if (!xen_pvh_domain()) { @@ -1800,6 +1806,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 +1840,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/p2m.c +++ linux-raspi2-4.2.0/arch/x86/xen/p2m.c @@ -108,6 +108,15 @@ static pte_t *p2m_missing_pte; static pte_t *p2m_identity_pte; +/* + * Hint at last populated PFN. + * + * Used to set HYPERVISOR_shared_info->arch.max_pfn so the toolstack + * can avoid scanning the whole P2M (which may be sized to account for + * hotplugged memory). + */ +static unsigned long xen_p2m_last_pfn; + static inline unsigned p2m_top_index(unsigned long pfn) { BUG_ON(pfn >= MAX_P2M_PFN); @@ -262,7 +271,7 @@ HYPERVISOR_shared_info->arch.pfn_to_mfn_frame_list_list = virt_to_mfn(p2m_top_mfn); - HYPERVISOR_shared_info->arch.max_pfn = xen_max_p2m_pfn; + HYPERVISOR_shared_info->arch.max_pfn = xen_p2m_last_pfn; } /* Set up p2m_top to point to the domain-builder provided p2m pages */ @@ -394,6 +403,8 @@ static struct vm_struct vm; unsigned long p2m_limit; + xen_p2m_last_pfn = xen_max_p2m_pfn; + p2m_limit = (phys_addr_t)P2M_LIMIT * 1024 * 1024 * 1024 / PAGE_SIZE; vm.flags = VM_ALLOC; vm.size = ALIGN(sizeof(unsigned long) * max(xen_max_p2m_pfn, p2m_limit), @@ -590,6 +601,12 @@ free_p2m_page(p2m); } + /* Expanded the p2m? */ + if (pfn > xen_p2m_last_pfn) { + xen_p2m_last_pfn = pfn; + HYPERVISOR_shared_info->arch.max_pfn = xen_p2m_last_pfn; + } + return true; } --- 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/x86/xen/suspend.c +++ linux-raspi2-4.2.0/arch/x86/xen/suspend.c @@ -32,7 +32,8 @@ { #ifdef CONFIG_XEN_PVHVM int cpu; - xen_hvm_init_shared_info(); + if (!suspend_cancelled) + xen_hvm_init_shared_info(); xen_callback_vector(); xen_unplug_emulated_devices(); if (xen_feature(XENFEAT_hvm_safe_pvclock)) { --- 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 @@ -128,7 +128,7 @@ wsr a0, icountlevel .set _index, 0 - .rept XCHAL_NUM_DBREAK - 1 + .rept XCHAL_NUM_DBREAK wsr a0, SREG_DBREAKC + _index .set _index, _index + 1 .endr @@ -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/mm/cache.c +++ linux-raspi2-4.2.0/arch/xtensa/mm/cache.c @@ -97,11 +97,11 @@ unsigned long paddr; void *kvaddr = coherent_kvaddr(page, TLBTEMP_BASE_1, vaddr, &paddr); - pagefault_disable(); + preempt_disable(); kmap_invalidate_coherent(page, vaddr); set_bit(PG_arch_1, &page->flags); clear_page_alias(kvaddr, paddr); - pagefault_enable(); + preempt_enable(); } void copy_user_highpage(struct page *dst, struct page *src, @@ -113,11 +113,11 @@ void *src_vaddr = coherent_kvaddr(src, TLBTEMP_BASE_2, vaddr, &src_paddr); - pagefault_disable(); + preempt_disable(); kmap_invalidate_coherent(dst, vaddr); set_bit(PG_arch_1, &dst->flags); copy_page_alias(dst_vaddr, src_vaddr, dst_paddr, src_paddr); - pagefault_enable(); + preempt_enable(); } #endif /* DCACHE_WAY_SIZE > PAGE_SIZE */ --- linux-raspi2-4.2.0.orig/arch/xtensa/platforms/iss/console.c +++ linux-raspi2-4.2.0/arch/xtensa/platforms/iss/console.c @@ -100,21 +100,23 @@ { struct tty_port *port = (struct tty_port *)priv; int i = 0; + int rd = 1; unsigned char c; spin_lock(&timer_lock); while (simc_poll(0)) { - simc_read(0, &c, 1); + rd = simc_read(0, &c, 1); + if (rd <= 0) + break; tty_insert_flip_char(port, c, TTY_NORMAL); i++; } if (i) tty_flip_buffer_push(port); - - - mod_timer(&serial_timer, jiffies + SERIAL_TIMER_VALUE); + if (rd) + mod_timer(&serial_timer, jiffies + SERIAL_TIMER_VALUE); spin_unlock(&timer_lock); } --- 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/bio.c +++ linux-raspi2-4.2.0/block/bio.c @@ -1137,9 +1137,12 @@ if (!bio_flagged(bio, BIO_NULL_MAPPED)) { /* * if we're in a workqueue, the request is orphaned, so - * don't copy into a random user address space, just free. + * don't copy into a random user address space, just free + * and return -EINTR so user space doesn't expect any data. */ - if (current->mm && bio_data_dir(bio) == READ) + if (!current->mm) + ret = -EINTR; + else if (bio_data_dir(bio) == READ) ret = bio_copy_to_iter(bio, bmd->iter); if (bmd->is_our_pages) bio_free_pages(bio); --- 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); @@ -2023,7 +2023,8 @@ EXPORT_SYMBOL(submit_bio); /** - * blk_rq_check_limits - Helper function to check a request for the queue limit + * blk_cloned_rq_check_limits - Helper function to check a cloned request + * for new the queue limits * @q: the queue * @rq: the request being checked * @@ -2034,20 +2035,13 @@ * after it is inserted to @q, it should be checked against @q before * the insertion using this generic function. * - * This function should also be useful for request stacking drivers - * in some cases below, so export this function. * Request stacking drivers like request-based dm may change the queue - * limits while requests are in the queue (e.g. dm's table swapping). - * Such request stacking drivers should check those requests against - * the new queue limits again when they dispatch those requests, - * although such checkings are also done against the old queue limits - * when submitting requests. + * limits when retrying requests on other queues. Those requests need + * to be checked against the new queue limits again during dispatch. */ -int blk_rq_check_limits(struct request_queue *q, struct request *rq) +static int blk_cloned_rq_check_limits(struct request_queue *q, + struct request *rq) { - if (!rq_mergeable(rq)) - return 0; - if (blk_rq_sectors(rq) > blk_queue_get_max_sectors(q, rq->cmd_flags)) { printk(KERN_ERR "%s: over max size limit.\n", __func__); return -EIO; @@ -2067,7 +2061,6 @@ return 0; } -EXPORT_SYMBOL_GPL(blk_rq_check_limits); /** * blk_insert_cloned_request - Helper for stacking drivers to submit a request @@ -2079,7 +2072,7 @@ unsigned long flags; int where = ELEVATOR_INSERT_BACK; - if (blk_rq_check_limits(q, rq)) + if (blk_cloned_rq_check_limits(q, rq)) return -EIO; if (rq->rq_disk && @@ -3280,6 +3273,9 @@ { int ret = 0; + if (!q->dev) + return ret; + spin_lock_irq(q->queue_lock); if (q->nr_pending) { ret = -EBUSY; @@ -3307,6 +3303,9 @@ */ void blk_post_runtime_suspend(struct request_queue *q, int err) { + if (!q->dev) + return; + spin_lock_irq(q->queue_lock); if (!err) { q->rpm_status = RPM_SUSPENDED; @@ -3331,6 +3330,9 @@ */ void blk_pre_runtime_resume(struct request_queue *q) { + if (!q->dev) + return; + spin_lock_irq(q->queue_lock); q->rpm_status = RPM_RESUMING; spin_unlock_irq(q->queue_lock); @@ -3353,6 +3355,9 @@ */ void blk_post_runtime_resume(struct request_queue *q, int err) { + if (!q->dev) + return; + spin_lock_irq(q->queue_lock); if (!err) { q->rpm_status = RPM_ACTIVE; --- 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); @@ -1314,15 +1300,16 @@ blk_mq_bio_to_request(rq, bio); /* - * we do limited pluging. If bio can be merged, do merge. + * We do limited pluging. If the bio can be merged, do that. * Otherwise the existing request in the plug list will be * issued. So the plug list will have one request at most */ if (plug) { /* * The plug list might get flushed before this. If that - * happens, same_queue_rq is invalid and plug list is empty - **/ + * happens, same_queue_rq is invalid and plug list is + * empty + */ if (same_queue_rq && !list_empty(&plug->mq_list)) { old_rq = same_queue_rq; list_del_init(&old_rq->queuelist); @@ -1396,12 +1383,15 @@ blk_mq_bio_to_request(rq, bio); if (list_empty(&plug->mq_list)) trace_block_plug(q); - else if (request_count >= BLK_MAX_REQUEST_COUNT) { + + blk_mq_put_ctx(data.ctx); + + if (request_count >= BLK_MAX_REQUEST_COUNT) { blk_flush_plug_list(plug, false); trace_block_plug(q); } + list_add_tail(&rq->queuelist, &plug->mq_list); - blk_mq_put_ctx(data.ctx); return; } @@ -1821,7 +1811,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 +1850,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 +2267,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/partitions/mac.c +++ linux-raspi2-4.2.0/block/partitions/mac.c @@ -32,7 +32,7 @@ Sector sect; unsigned char *data; int slot, blocks_in_map; - unsigned secsize; + unsigned secsize, datasize, partoffset; #ifdef CONFIG_PPC_PMAC int found_root = 0; int found_root_goodness = 0; @@ -50,10 +50,14 @@ } secsize = be16_to_cpu(md->block_size); put_dev_sector(sect); - data = read_part_sector(state, secsize/512, §); + datasize = round_down(secsize, 512); + data = read_part_sector(state, datasize / 512, §); if (!data) return -1; - part = (struct mac_partition *) (data + secsize%512); + partoffset = secsize % 512; + if (partoffset + sizeof(*part) > datasize) + return -1; + part = (struct mac_partition *) (data + partoffset); if (be16_to_cpu(part->signature) != MAC_PARTITION_MAGIC) { put_dev_sector(sect); return 0; /* not a MacOS disk */ --- 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 @@ -277,12 +277,12 @@ if (WARN_ON_ONCE(in_irq())) return -EDEADLK; + walk->iv = req->info; walk->nbytes = walk->total; if (unlikely(!walk->total)) return 0; walk->iv_buffer = NULL; - walk->iv = req->info; if (unlikely(((unsigned long)walk->iv & alignmask))) { int err = ablkcipher_copy_iv(walk, tfm, alignmask); @@ -377,6 +377,7 @@ } crt->base = __crypto_ablkcipher_cast(tfm); crt->ivsize = alg->ivsize; + crt->has_setkey = alg->max_keysize; return 0; } @@ -458,6 +459,7 @@ crt->givdecrypt = alg->givdecrypt ?: no_givdecrypt; crt->base = __crypto_ablkcipher_cast(tfm); crt->ivsize = alg->ivsize; + crt->has_setkey = alg->max_keysize; return 0; } @@ -706,7 +708,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/af_alg.c +++ linux-raspi2-4.2.0/crypto/af_alg.c @@ -76,6 +76,8 @@ goto unlock; type->ops->owner = THIS_MODULE; + if (type->ops_nokey) + type->ops_nokey->owner = THIS_MODULE; node->type = type; list_add(&node->list, &alg_types); err = 0; @@ -125,6 +127,26 @@ } EXPORT_SYMBOL_GPL(af_alg_release); +void af_alg_release_parent(struct sock *sk) +{ + struct alg_sock *ask = alg_sk(sk); + unsigned int nokey = ask->nokey_refcnt; + bool last = nokey && !ask->refcnt; + + sk = ask->parent; + ask = alg_sk(sk); + + lock_sock(sk); + ask->nokey_refcnt -= nokey; + if (!last) + last = !--ask->refcnt; + release_sock(sk); + + if (last) + sock_put(sk); +} +EXPORT_SYMBOL_GPL(af_alg_release_parent); + static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) { const u32 forbidden = CRYPTO_ALG_INTERNAL; @@ -133,6 +155,7 @@ struct sockaddr_alg *sa = (void *)uaddr; const struct af_alg_type *type; void *private; + int err; if (sock->state == SS_CONNECTED) return -EINVAL; @@ -160,16 +183,22 @@ return PTR_ERR(private); } + err = -EBUSY; lock_sock(sk); + if (ask->refcnt | ask->nokey_refcnt) + goto unlock; swap(ask->type, type); swap(ask->private, private); + err = 0; + +unlock: release_sock(sk); alg_do_release(type, private); - return 0; + return err; } static int alg_setkey(struct sock *sk, char __user *ukey, @@ -202,11 +231,15 @@ struct sock *sk = sock->sk; struct alg_sock *ask = alg_sk(sk); const struct af_alg_type *type; - int err = -ENOPROTOOPT; + int err = -EBUSY; lock_sock(sk); + if (ask->refcnt) + goto unlock; + type = ask->type; + err = -ENOPROTOOPT; if (level != SOL_ALG || !type) goto unlock; @@ -238,6 +271,7 @@ struct alg_sock *ask = alg_sk(sk); const struct af_alg_type *type; struct sock *sk2; + unsigned int nokey; int err; lock_sock(sk); @@ -257,20 +291,29 @@ security_sk_clone(sk, sk2); err = type->accept(ask->private, sk2); - if (err) { - sk_free(sk2); + + nokey = err == -ENOKEY; + if (nokey && type->accept_nokey) + err = type->accept_nokey(ask->private, sk2); + + if (err) goto unlock; - } sk2->sk_family = PF_ALG; - sock_hold(sk); + if (nokey || !ask->refcnt++) + sock_hold(sk); + ask->nokey_refcnt += nokey; alg_sk(sk2)->parent = sk; alg_sk(sk2)->type = type; + alg_sk(sk2)->nokey_refcnt = nokey; newsock->ops = type->ops; newsock->state = SS_CONNECTED; + if (nokey) + newsock->ops = type->ops_nokey; + err = 0; unlock: --- linux-raspi2-4.2.0.orig/crypto/ahash.c +++ linux-raspi2-4.2.0/crypto/ahash.c @@ -451,6 +451,7 @@ struct ahash_alg *alg = crypto_ahash_alg(hash); hash->setkey = ahash_nosetkey; + hash->has_setkey = false; hash->export = ahash_no_export; hash->import = ahash_no_import; @@ -463,8 +464,10 @@ hash->finup = alg->finup ?: ahash_def_finup; hash->digest = alg->digest; - if (alg->setkey) + if (alg->setkey) { hash->setkey = alg->setkey; + hash->has_setkey = true; + } if (alg->export) hash->export = alg->export; if (alg->import) @@ -544,7 +547,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 @@ -34,6 +34,11 @@ struct ahash_request req; }; +struct algif_hash_tfm { + struct crypto_ahash *hash; + bool has_key; +}; + static int hash_sendmsg(struct socket *sock, struct msghdr *msg, size_t ignored) { @@ -49,7 +54,8 @@ lock_sock(sk); if (!ctx->more) { - err = crypto_ahash_init(&ctx->req); + err = af_alg_wait_for_completion(crypto_ahash_init(&ctx->req), + &ctx->completion); if (err) goto unlock; } @@ -120,6 +126,7 @@ } else { if (!ctx->more) { err = crypto_ahash_init(&ctx->req); + err = af_alg_wait_for_completion(err, &ctx->completion); if (err) goto unlock; } @@ -181,9 +188,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 +206,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) { @@ -227,19 +242,151 @@ .accept = hash_accept, }; +static int hash_check_key(struct socket *sock) +{ + int err = 0; + struct sock *psk; + struct alg_sock *pask; + struct algif_hash_tfm *tfm; + struct sock *sk = sock->sk; + struct alg_sock *ask = alg_sk(sk); + + lock_sock(sk); + if (ask->refcnt) + goto unlock_child; + + psk = ask->parent; + pask = alg_sk(ask->parent); + tfm = pask->private; + + err = -ENOKEY; + lock_sock_nested(psk, SINGLE_DEPTH_NESTING); + if (!tfm->has_key) + goto unlock; + + if (!pask->refcnt++) + sock_hold(psk); + + ask->refcnt = 1; + sock_put(psk); + + err = 0; + +unlock: + release_sock(psk); +unlock_child: + release_sock(sk); + + return err; +} + +static int hash_sendmsg_nokey(struct socket *sock, struct msghdr *msg, + size_t size) +{ + int err; + + err = hash_check_key(sock); + if (err) + return err; + + return hash_sendmsg(sock, msg, size); +} + +static ssize_t hash_sendpage_nokey(struct socket *sock, struct page *page, + int offset, size_t size, int flags) +{ + int err; + + err = hash_check_key(sock); + if (err) + return err; + + return hash_sendpage(sock, page, offset, size, flags); +} + +static int hash_recvmsg_nokey(struct socket *sock, struct msghdr *msg, + size_t ignored, int flags) +{ + int err; + + err = hash_check_key(sock); + if (err) + return err; + + return hash_recvmsg(sock, msg, ignored, flags); +} + +static int hash_accept_nokey(struct socket *sock, struct socket *newsock, + int flags) +{ + int err; + + err = hash_check_key(sock); + if (err) + return err; + + return hash_accept(sock, newsock, flags); +} + +static struct proto_ops algif_hash_ops_nokey = { + .family = PF_ALG, + + .connect = sock_no_connect, + .socketpair = sock_no_socketpair, + .getname = sock_no_getname, + .ioctl = sock_no_ioctl, + .listen = sock_no_listen, + .shutdown = sock_no_shutdown, + .getsockopt = sock_no_getsockopt, + .mmap = sock_no_mmap, + .bind = sock_no_bind, + .setsockopt = sock_no_setsockopt, + .poll = sock_no_poll, + + .release = af_alg_release, + .sendmsg = hash_sendmsg_nokey, + .sendpage = hash_sendpage_nokey, + .recvmsg = hash_recvmsg_nokey, + .accept = hash_accept_nokey, +}; + static void *hash_bind(const char *name, u32 type, u32 mask) { - return crypto_alloc_ahash(name, type, mask); + struct algif_hash_tfm *tfm; + struct crypto_ahash *hash; + + tfm = kzalloc(sizeof(*tfm), GFP_KERNEL); + if (!tfm) + return ERR_PTR(-ENOMEM); + + hash = crypto_alloc_ahash(name, type, mask); + if (IS_ERR(hash)) { + kfree(tfm); + return ERR_CAST(hash); + } + + tfm->hash = hash; + + return tfm; } static void hash_release(void *private) { - crypto_free_ahash(private); + struct algif_hash_tfm *tfm = private; + + crypto_free_ahash(tfm->hash); + kfree(tfm); } static int hash_setkey(void *private, const u8 *key, unsigned int keylen) { - return crypto_ahash_setkey(private, key, keylen); + struct algif_hash_tfm *tfm = private; + int err; + + err = crypto_ahash_setkey(tfm->hash, key, keylen); + tfm->has_key = !err; + + return err; } static void hash_sock_destruct(struct sock *sk) @@ -253,12 +400,14 @@ af_alg_release_parent(sk); } -static int hash_accept_parent(void *private, struct sock *sk) +static int hash_accept_parent_nokey(void *private, struct sock *sk) { struct hash_ctx *ctx; struct alg_sock *ask = alg_sk(sk); - unsigned len = sizeof(*ctx) + crypto_ahash_reqsize(private); - unsigned ds = crypto_ahash_digestsize(private); + struct algif_hash_tfm *tfm = private; + struct crypto_ahash *hash = tfm->hash; + unsigned len = sizeof(*ctx) + crypto_ahash_reqsize(hash); + unsigned ds = crypto_ahash_digestsize(hash); ctx = sock_kmalloc(sk, len, GFP_KERNEL); if (!ctx) @@ -278,7 +427,7 @@ ask->private = ctx; - ahash_request_set_tfm(&ctx->req, private); + ahash_request_set_tfm(&ctx->req, hash); ahash_request_set_callback(&ctx->req, CRYPTO_TFM_REQ_MAY_BACKLOG, af_alg_complete, &ctx->completion); @@ -287,12 +436,24 @@ return 0; } +static int hash_accept_parent(void *private, struct sock *sk) +{ + struct algif_hash_tfm *tfm = private; + + if (!tfm->has_key && crypto_ahash_has_setkey(tfm->hash)) + return -ENOKEY; + + return hash_accept_parent_nokey(private, sk); +} + static const struct af_alg_type algif_type_hash = { .bind = hash_bind, .release = hash_release, .setkey = hash_setkey, .accept = hash_accept_parent, + .accept_nokey = hash_accept_parent_nokey, .ops = &algif_hash_ops, + .ops_nokey = &algif_hash_ops_nokey, .name = "hash", .owner = THIS_MODULE }; --- linux-raspi2-4.2.0.orig/crypto/algif_skcipher.c +++ linux-raspi2-4.2.0/crypto/algif_skcipher.c @@ -31,6 +31,11 @@ struct scatterlist sg[0]; }; +struct skcipher_tfm { + struct crypto_ablkcipher *skcipher; + bool has_key; +}; + struct skcipher_ctx { struct list_head tsgl; struct af_alg_sgl rsgl; @@ -60,18 +65,10 @@ struct skcipher_async_rsgl first_sgl; struct list_head list; struct scatterlist *tsg; - char iv[]; + atomic_t *inflight; + struct ablkcipher_request req; }; -#define GET_SREQ(areq, ctx) (struct skcipher_async_req *)((char *)areq + \ - crypto_ablkcipher_reqsize(crypto_ablkcipher_reqtfm(&ctx->req))) - -#define GET_REQ_SIZE(ctx) \ - crypto_ablkcipher_reqsize(crypto_ablkcipher_reqtfm(&ctx->req)) - -#define GET_IV_SIZE(ctx) \ - crypto_ablkcipher_ivsize(crypto_ablkcipher_reqtfm(&ctx->req)) - #define MAX_SGL_ENTS ((4096 - sizeof(struct skcipher_sg_list)) / \ sizeof(struct scatterlist) - 1) @@ -97,15 +94,12 @@ static void skcipher_async_cb(struct crypto_async_request *req, int err) { - struct sock *sk = req->data; - struct alg_sock *ask = alg_sk(sk); - struct skcipher_ctx *ctx = ask->private; - struct skcipher_async_req *sreq = GET_SREQ(req, ctx); + struct skcipher_async_req *sreq = req->data; struct kiocb *iocb = sreq->iocb; - atomic_dec(&ctx->inflight); + atomic_dec(sreq->inflight); skcipher_free_async_sgls(sreq); - kfree(req); + kzfree(sreq); iocb->ki_complete(iocb, err, err); } @@ -301,8 +295,11 @@ { struct sock *sk = sock->sk; struct alg_sock *ask = alg_sk(sk); + struct sock *psk = ask->parent; + struct alg_sock *pask = alg_sk(psk); struct skcipher_ctx *ctx = ask->private; - struct crypto_ablkcipher *tfm = crypto_ablkcipher_reqtfm(&ctx->req); + struct skcipher_tfm *skc = pask->private; + struct crypto_ablkcipher *tfm = skc->skcipher; unsigned ivsize = crypto_ablkcipher_ivsize(tfm); struct skcipher_sg_list *sgl; struct af_alg_control con = {}; @@ -387,7 +384,8 @@ sgl = list_entry(ctx->tsgl.prev, struct skcipher_sg_list, list); sg = sgl->sg; - sg_unmark_end(sg + sgl->cur); + if (sgl->cur) + sg_unmark_end(sg + sgl->cur - 1); do { i = sgl->cur; plen = min_t(int, len, PAGE_SIZE); @@ -503,37 +501,43 @@ { struct sock *sk = sock->sk; struct alg_sock *ask = alg_sk(sk); + struct sock *psk = ask->parent; + struct alg_sock *pask = alg_sk(psk); struct skcipher_ctx *ctx = ask->private; + struct skcipher_tfm *skc = pask->private; + struct crypto_ablkcipher *tfm = skc->skcipher; struct skcipher_sg_list *sgl; struct scatterlist *sg; struct skcipher_async_req *sreq; struct ablkcipher_request *req; struct skcipher_async_rsgl *last_rsgl = NULL; - unsigned int txbufs = 0, len = 0, tx_nents = skcipher_all_sg_nents(ctx); - unsigned int reqlen = sizeof(struct skcipher_async_req) + - GET_REQ_SIZE(ctx) + GET_IV_SIZE(ctx); + unsigned int txbufs = 0, len = 0, tx_nents; + unsigned int reqsize = crypto_ablkcipher_reqsize(tfm); + unsigned int ivsize = crypto_ablkcipher_ivsize(tfm); int err = -ENOMEM; bool mark = false; + char *iv; - lock_sock(sk); - req = kmalloc(reqlen, GFP_KERNEL); - if (unlikely(!req)) - goto unlock; + sreq = kzalloc(sizeof(*sreq) + reqsize + ivsize, GFP_KERNEL); + if (unlikely(!sreq)) + goto out; - sreq = GET_SREQ(req, ctx); + req = &sreq->req; + iv = (char *)(req + 1) + reqsize; sreq->iocb = msg->msg_iocb; - memset(&sreq->first_sgl, '\0', sizeof(struct skcipher_async_rsgl)); INIT_LIST_HEAD(&sreq->list); + sreq->inflight = &ctx->inflight; + + lock_sock(sk); + tx_nents = skcipher_all_sg_nents(ctx); sreq->tsg = kcalloc(tx_nents, sizeof(*sg), GFP_KERNEL); - if (unlikely(!sreq->tsg)) { - kfree(req); + if (unlikely(!sreq->tsg)) goto unlock; - } sg_init_table(sreq->tsg, tx_nents); - memcpy(sreq->iv, ctx->iv, GET_IV_SIZE(ctx)); - ablkcipher_request_set_tfm(req, crypto_ablkcipher_reqtfm(&ctx->req)); - ablkcipher_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG, - skcipher_async_cb, sk); + memcpy(iv, ctx->iv, ivsize); + ablkcipher_request_set_tfm(req, tfm); + ablkcipher_request_set_callback(req, CRYPTO_TFM_REQ_MAY_SLEEP, + skcipher_async_cb, sreq); while (iov_iter_count(&msg->msg_iter)) { struct skcipher_async_rsgl *rsgl; @@ -609,20 +613,22 @@ sg_mark_end(sreq->tsg + txbufs - 1); ablkcipher_request_set_crypt(req, sreq->tsg, sreq->first_sgl.sgl.sg, - len, sreq->iv); + len, iv); err = ctx->enc ? crypto_ablkcipher_encrypt(req) : crypto_ablkcipher_decrypt(req); if (err == -EINPROGRESS) { atomic_inc(&ctx->inflight); err = -EIOCBQUEUED; + sreq = NULL; goto unlock; } free: skcipher_free_async_sgls(sreq); - kfree(req); unlock: skcipher_wmem_wakeup(sk); release_sock(sk); + kzfree(sreq); +out: return err; } @@ -631,9 +637,12 @@ { struct sock *sk = sock->sk; struct alg_sock *ask = alg_sk(sk); + struct sock *psk = ask->parent; + struct alg_sock *pask = alg_sk(psk); struct skcipher_ctx *ctx = ask->private; - unsigned bs = crypto_ablkcipher_blocksize(crypto_ablkcipher_reqtfm( - &ctx->req)); + struct skcipher_tfm *skc = pask->private; + struct crypto_ablkcipher *tfm = skc->skcipher; + unsigned bs = crypto_ablkcipher_blocksize(tfm); struct skcipher_sg_list *sgl; struct scatterlist *sg; int err = -EAGAIN; @@ -642,13 +651,6 @@ lock_sock(sk); while (msg_data_left(msg)) { - sgl = list_first_entry(&ctx->tsgl, - struct skcipher_sg_list, list); - sg = sgl->sg; - - while (!sg->length) - sg++; - if (!ctx->used) { err = skcipher_wait_for_data(sk, flags); if (err) @@ -669,6 +671,13 @@ if (!used) goto free; + sgl = list_first_entry(&ctx->tsgl, + struct skcipher_sg_list, list); + sg = sgl->sg; + + while (!sg->length) + sg++; + ablkcipher_request_set_crypt(&ctx->req, sg, ctx->rsgl.sg, used, ctx->iv); @@ -749,19 +758,139 @@ .poll = skcipher_poll, }; +static int skcipher_check_key(struct socket *sock) +{ + int err = 0; + struct sock *psk; + struct alg_sock *pask; + struct skcipher_tfm *tfm; + struct sock *sk = sock->sk; + struct alg_sock *ask = alg_sk(sk); + + lock_sock(sk); + if (ask->refcnt) + goto unlock_child; + + psk = ask->parent; + pask = alg_sk(ask->parent); + tfm = pask->private; + + err = -ENOKEY; + lock_sock_nested(psk, SINGLE_DEPTH_NESTING); + if (!tfm->has_key) + goto unlock; + + if (!pask->refcnt++) + sock_hold(psk); + + ask->refcnt = 1; + sock_put(psk); + + err = 0; + +unlock: + release_sock(psk); +unlock_child: + release_sock(sk); + + return err; +} + +static int skcipher_sendmsg_nokey(struct socket *sock, struct msghdr *msg, + size_t size) +{ + int err; + + err = skcipher_check_key(sock); + if (err) + return err; + + return skcipher_sendmsg(sock, msg, size); +} + +static ssize_t skcipher_sendpage_nokey(struct socket *sock, struct page *page, + int offset, size_t size, int flags) +{ + int err; + + err = skcipher_check_key(sock); + if (err) + return err; + + return skcipher_sendpage(sock, page, offset, size, flags); +} + +static int skcipher_recvmsg_nokey(struct socket *sock, struct msghdr *msg, + size_t ignored, int flags) +{ + int err; + + err = skcipher_check_key(sock); + if (err) + return err; + + return skcipher_recvmsg(sock, msg, ignored, flags); +} + +static struct proto_ops algif_skcipher_ops_nokey = { + .family = PF_ALG, + + .connect = sock_no_connect, + .socketpair = sock_no_socketpair, + .getname = sock_no_getname, + .ioctl = sock_no_ioctl, + .listen = sock_no_listen, + .shutdown = sock_no_shutdown, + .getsockopt = sock_no_getsockopt, + .mmap = sock_no_mmap, + .bind = sock_no_bind, + .accept = sock_no_accept, + .setsockopt = sock_no_setsockopt, + + .release = af_alg_release, + .sendmsg = skcipher_sendmsg_nokey, + .sendpage = skcipher_sendpage_nokey, + .recvmsg = skcipher_recvmsg_nokey, + .poll = skcipher_poll, +}; + static void *skcipher_bind(const char *name, u32 type, u32 mask) { - return crypto_alloc_ablkcipher(name, type, mask); + struct skcipher_tfm *tfm; + struct crypto_ablkcipher *skcipher; + + tfm = kzalloc(sizeof(*tfm), GFP_KERNEL); + if (!tfm) + return ERR_PTR(-ENOMEM); + + skcipher = crypto_alloc_ablkcipher(name, type, mask); + if (IS_ERR(skcipher)) { + kfree(tfm); + return ERR_CAST(skcipher); + } + + tfm->skcipher = skcipher; + + return tfm; } static void skcipher_release(void *private) { - crypto_free_ablkcipher(private); + struct skcipher_tfm *tfm = private; + + crypto_free_ablkcipher(tfm->skcipher); + kfree(tfm); } static int skcipher_setkey(void *private, const u8 *key, unsigned int keylen) { - return crypto_ablkcipher_setkey(private, key, keylen); + struct skcipher_tfm *tfm = private; + int err; + + err = crypto_ablkcipher_setkey(tfm->skcipher, key, keylen); + tfm->has_key = !err; + + return err; } static void skcipher_wait(struct sock *sk) @@ -789,24 +918,26 @@ af_alg_release_parent(sk); } -static int skcipher_accept_parent(void *private, struct sock *sk) +static int skcipher_accept_parent_nokey(void *private, struct sock *sk) { struct skcipher_ctx *ctx; struct alg_sock *ask = alg_sk(sk); - unsigned int len = sizeof(*ctx) + crypto_ablkcipher_reqsize(private); + struct skcipher_tfm *tfm = private; + struct crypto_ablkcipher *skcipher = tfm->skcipher; + unsigned int len = sizeof(*ctx) + crypto_ablkcipher_reqsize(skcipher); ctx = sock_kmalloc(sk, len, GFP_KERNEL); if (!ctx) return -ENOMEM; - ctx->iv = sock_kmalloc(sk, crypto_ablkcipher_ivsize(private), + ctx->iv = sock_kmalloc(sk, crypto_ablkcipher_ivsize(skcipher), GFP_KERNEL); if (!ctx->iv) { sock_kfree_s(sk, ctx, len); return -ENOMEM; } - memset(ctx->iv, 0, crypto_ablkcipher_ivsize(private)); + memset(ctx->iv, 0, crypto_ablkcipher_ivsize(skcipher)); INIT_LIST_HEAD(&ctx->tsgl); ctx->len = len; @@ -819,8 +950,9 @@ ask->private = ctx; - ablkcipher_request_set_tfm(&ctx->req, private); - ablkcipher_request_set_callback(&ctx->req, CRYPTO_TFM_REQ_MAY_BACKLOG, + ablkcipher_request_set_tfm(&ctx->req, skcipher); + ablkcipher_request_set_callback(&ctx->req, CRYPTO_TFM_REQ_MAY_SLEEP | + CRYPTO_TFM_REQ_MAY_BACKLOG, af_alg_complete, &ctx->completion); sk->sk_destruct = skcipher_sock_destruct; @@ -828,12 +960,24 @@ return 0; } +static int skcipher_accept_parent(void *private, struct sock *sk) +{ + struct skcipher_tfm *tfm = private; + + if (!tfm->has_key && crypto_ablkcipher_has_setkey(tfm->skcipher)) + return -ENOKEY; + + return skcipher_accept_parent_nokey(private, sk); +} + static const struct af_alg_type algif_type_skcipher = { .bind = skcipher_bind, .release = skcipher_release, .setkey = skcipher_setkey, .accept = skcipher_accept_parent, + .accept_nokey = skcipher_accept_parent_nokey, .ops = &algif_skcipher_ops, + .ops_nokey = &algif_skcipher_ops_nokey, .name = "skcipher", .owner = THIS_MODULE }; --- 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/asymmetric_keys/pkcs7_trust.c +++ linux-raspi2-4.2.0/crypto/asymmetric_keys/pkcs7_trust.c @@ -174,6 +174,8 @@ int cached_ret = -ENOKEY; int ret; + *_trusted = false; + for (p = pkcs7->certs; p; p = p->next) p->seen = false; --- linux-raspi2-4.2.0.orig/crypto/async_tx/async_memcpy.c +++ linux-raspi2-4.2.0/crypto/async_tx/async_memcpy.c @@ -53,7 +53,7 @@ struct dmaengine_unmap_data *unmap = NULL; if (device) - unmap = dmaengine_get_unmap_data(device->dev, 2, GFP_NOIO); + unmap = dmaengine_get_unmap_data(device->dev, 2, GFP_NOWAIT); if (unmap && is_dma_copy_aligned(device, src_offset, dest_offset, len)) { unsigned long dma_prep_flags = 0; --- linux-raspi2-4.2.0.orig/crypto/async_tx/async_pq.c +++ linux-raspi2-4.2.0/crypto/async_tx/async_pq.c @@ -188,7 +188,7 @@ BUG_ON(disks > 255 || !(P(blocks, disks) || Q(blocks, disks))); if (device) - unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOIO); + unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOWAIT); /* XORing P/Q is only implemented in software */ if (unmap && !(submit->flags & ASYNC_TX_PQ_XOR_DST) && @@ -307,7 +307,7 @@ BUG_ON(disks < 4); if (device) - unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOIO); + unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOWAIT); if (unmap && disks <= dma_maxpq(device, 0) && is_dma_pq_aligned(device, offset, 0, len)) { --- linux-raspi2-4.2.0.orig/crypto/async_tx/async_raid6_recov.c +++ linux-raspi2-4.2.0/crypto/async_tx/async_raid6_recov.c @@ -41,7 +41,7 @@ u8 *a, *b, *c; if (dma) - unmap = dmaengine_get_unmap_data(dma->dev, 3, GFP_NOIO); + unmap = dmaengine_get_unmap_data(dma->dev, 3, GFP_NOWAIT); if (unmap) { struct device *dev = dma->dev; @@ -105,7 +105,7 @@ u8 *d, *s; if (dma) - unmap = dmaengine_get_unmap_data(dma->dev, 3, GFP_NOIO); + unmap = dmaengine_get_unmap_data(dma->dev, 3, GFP_NOWAIT); if (unmap) { dma_addr_t dma_dest[2]; --- linux-raspi2-4.2.0.orig/crypto/async_tx/async_xor.c +++ linux-raspi2-4.2.0/crypto/async_tx/async_xor.c @@ -182,7 +182,7 @@ BUG_ON(src_cnt <= 1); if (device) - unmap = dmaengine_get_unmap_data(device->dev, src_cnt+1, GFP_NOIO); + unmap = dmaengine_get_unmap_data(device->dev, src_cnt+1, GFP_NOWAIT); if (unmap && is_dma_xor_aligned(device, offset, 0, len)) { struct dma_async_tx_descriptor *tx; @@ -278,7 +278,7 @@ BUG_ON(src_cnt <= 1); if (device) - unmap = dmaengine_get_unmap_data(device->dev, src_cnt, GFP_NOIO); + unmap = dmaengine_get_unmap_data(device->dev, src_cnt, GFP_NOWAIT); if (unmap && src_cnt <= device->max_xor && is_dma_xor_aligned(device, offset, 0, len)) { --- linux-raspi2-4.2.0.orig/crypto/blkcipher.c +++ linux-raspi2-4.2.0/crypto/blkcipher.c @@ -326,12 +326,12 @@ if (WARN_ON_ONCE(in_irq())) return -EDEADLK; + walk->iv = desc->info; walk->nbytes = walk->total; if (unlikely(!walk->total)) return 0; walk->buffer = NULL; - walk->iv = desc->info; if (unlikely(((unsigned long)walk->iv & walk->alignmask))) { int err = blkcipher_copy_iv(walk); if (err) @@ -472,6 +472,7 @@ } crt->base = __crypto_ablkcipher_cast(tfm); crt->ivsize = alg->ivsize; + crt->has_setkey = alg->max_keysize; return 0; } --- linux-raspi2-4.2.0.orig/crypto/crc32c_generic.c +++ linux-raspi2-4.2.0/crypto/crc32c_generic.c @@ -172,4 +172,3 @@ MODULE_LICENSE("GPL"); MODULE_ALIAS_CRYPTO("crc32c"); MODULE_ALIAS_CRYPTO("crc32c-generic"); -MODULE_SOFTDEP("pre: crc32c"); --- 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; } @@ -531,6 +531,7 @@ if (link->dump == NULL) return -EINVAL; + down_read(&crypto_alg_sem); list_for_each_entry(alg, &crypto_alg_list, cra_list) dump_alloc += CRYPTO_REPORT_MAXSIZE; @@ -540,8 +541,11 @@ .done = link->done, .min_dump_alloc = dump_alloc, }; - return netlink_dump_start(crypto_nlsk, skb, nlh, &c); + err = netlink_dump_start(crypto_nlsk, skb, nlh, &c); } + up_read(&crypto_alg_sem); + + return err; } err = nlmsg_parse(nlh, crypto_msg_min[type], attrs, CRYPTOCFGA_MAX, --- linux-raspi2-4.2.0.orig/crypto/shash.c +++ linux-raspi2-4.2.0/crypto/shash.c @@ -354,9 +354,10 @@ crt->final = shash_async_final; crt->finup = shash_async_finup; crt->digest = shash_async_digest; + crt->setkey = shash_async_setkey; + + crt->has_setkey = alg->setkey != shash_no_setkey; - if (alg->setkey) - crt->setkey = shash_async_setkey; if (alg->export) crt->export = shash_async_export; if (alg->import) --- 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-35.40/abiname +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/abiname @@ -0,0 +1 @@ +35 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/amd64/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/amd64/generic @@ -0,0 +1,19477 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x9b6f8fde 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 0x48433b1f 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 0xd10c63e6 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xa75491d2 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 0x0fbe5714 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x20770523 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x232bd47d pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x33bb52bf paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x49c25366 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x53e72484 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x5e7b2aae pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x851b8eb2 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x87e38c55 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x8e4849c6 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb57990be pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xde8a1cb8 pi_disconnect +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xf0b1f9b1 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x148a07f8 ipmi_smi_watcher_register +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 0x49db6fb2 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 0x6ae50eab ipmi_get_smi_info +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 0x97cf0b9a ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb0648418 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/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 0x440eedac st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x52e098bd st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x78918b7d st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xfe3c47e7 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x29d4b835 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x45f9637a xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x6292c6ee xillybus_endpoint_remove +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 0xec840a20 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0xd2af70dc 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 0x05fc1ec8 kgd2kfd_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00aa2100 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x018406ca drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01a33125 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x023e540e drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02ec5398 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x033bb5eb drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03d7267d drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04884ab2 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04dc7e36 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05658270 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0613303d drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06a83fb2 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07772f05 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07c1eb67 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0839aea1 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09e138ed drm_atomic_legacy_backoff +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 0x0c035209 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d1c92c5 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dc2954e drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f7f4748 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fa4bb7b drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x109e1588 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10aa7b35 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11e56138 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15559322 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1589eb0c drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16a81310 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x170114a2 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x180a4913 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x181e622a drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18f5d179 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x193fea1b drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19c89266 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19d6a855 drm_match_cea_mode +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 0x1a79c5c5 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b242cf7 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bf9e6e3 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c272b9e drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d6b6501 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fe90143 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21f0b9e9 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2266d2ea drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2423be61 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2434746d drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24865c7b drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24c7557d drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26544118 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27db48ac drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27e9bf13 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x280e8fbc drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a9d373b drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2aae154b drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ab69b20 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2abb60f8 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b83c002 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c7797be drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e17b309 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f3bea7f drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f5fcc82 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fef1839 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31ecb4dd drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x326d91a9 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32d23b41 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x332a1d97 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33a010b2 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3430603f drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36bd18ae drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36c3b8c1 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36df4a04 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37739bbf drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37b9a21d drm_pcie_get_speed_cap_mask +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 0x3a845c3b drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae1a163 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3af7ef0b drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b8091b9 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c1cd355 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cf2e01f drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cf6fe07 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3de978d7 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41836b2a drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42342a64 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4338bf93 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44b7a76c drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4688193d drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47efeb68 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x485eb516 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4972c1b2 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49f3e7bc drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a48cf8a drm_connector_register +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 0x4c9b9bee drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cf860a3 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dd47a6a drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e4d7a9f drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ebfdf46 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4edddc8f drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f074779 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f7368fd drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fcd7fd8 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fcd8a2b drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4feb927b drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5066ba1c drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x506f2a3a drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x516b910b drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x518ae4db drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53c54264 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x541075fd drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x549a3a09 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54bf9f03 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x565d265f drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x575184b4 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59cf0c34 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b0cb55d drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d47c41c drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e6706dc drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62253872 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62cf473f drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6590b184 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x682e7f7f drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69466e48 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a7d5031 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b66538a drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bdf155c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c30c1f4 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c82a87a drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e8268c2 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f07cc9b drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x702d1c0f drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x706d3106 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72078d77 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73a8f55a drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x756814bf drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76758778 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b22ab37 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9583ca drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9e4ed6 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9f5f02 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d53af28 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dd49d7d drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7eca6ab0 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ee08b19 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x825af54d drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8357cd64 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84d41685 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x850d8fa1 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x852d7138 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x859088a2 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86fe9a65 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x875fc55a drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89febc2f drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b6db782 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8be66ab6 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dedf06e drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e82ef19 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x904140c9 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9065e8a4 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90e16ed9 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90edc974 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x918bad9f drm_crtc_get_hv_timing +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 0x9279761d drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x936bdf84 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93de47d7 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94f36edd drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x955320a2 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95da4f7c drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x974bf830 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x987a7fc9 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x996725f7 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99ba2d2a drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99e10d98 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9af2f4bc drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b60e22c drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d5ef0a9 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9da861ec drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e790a47 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e80e96b drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e81456f drm_gem_put_pages +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 0xa3850be6 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6a4bff1 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6eaf65b drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8769a23 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8c8ff88 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9b1e380 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa8f12d7 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa8fa25b drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaafc4780 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabdc7ec1 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabfc3116 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabfcb89a drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac830ce1 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadb69218 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae346dba drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf518afd drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafbd43ce drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb060f278 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0e92639 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1cc6c41 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34de41f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb373c348 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb55abad8 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb598f79d drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8b8749c drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33496a drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc856a58 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbca13339 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd0b0481 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbde49fa5 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbeb65f75 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2119d4a drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2296c04 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc31d7a87 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc528ca98 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6e32988 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc704b2fc drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc79f76db drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc85b266c drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc89ac99e drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8a0705d __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8d3dae8 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc997bf81 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca0241bb drm_gem_get_pages +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 0xca6ca4d2 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc14c406 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcca3a129 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce77b5e6 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf1be9be drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf3f967c drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd10de3cd drm_agp_alloc +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 0xd3baaee1 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5327541 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd58d85b4 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7eb1aba drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd893c35b drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda8d6787 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbf9fd31 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc35d737 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde2146f5 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde6c8d2b drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdea31aa8 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeeadc01 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf10279b drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf7b6aa6 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0201eaf drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0d84d11 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe20f8795 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2a5af6c drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2f24ba7 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe319d299 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe373da53 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3bdd0ce drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4acd44d drm_mode_config_cleanup +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 0xe8b76f4c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe93af057 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea42923b drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea46f67b drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb71ba32 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb99ad55 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec6f2c89 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1ad6499 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1c486a7 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2ad20b3 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf42e1fba drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5cfc3ca drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf62ad296 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf72a3d50 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7d34cfb drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf81991e6 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8e8db61 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9b8c1a6 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa638d21 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb325563 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbc29b25 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcd23b25 drm_panel_remove +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 0xfeefb7e3 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff403d3f drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff599154 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffaf1003 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01681cc5 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03cc162f drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0824cf15 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08989156 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 0x0b200ea7 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c0edaab drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c1225b3 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0db49230 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0eb6a162 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11ee406d drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x158b8032 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17635613 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x194357c5 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21e78ef7 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26278a74 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2808f7ae drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x285ad487 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x297731e5 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ae9d975 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bca5b61 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c26b526 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d42cdfe drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c4eee94 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3def09fe drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4159d30f drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41c1690a drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x471d233c drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4888510e drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x494cd908 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49aff092 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4bfcb314 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e1432c3 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e2759b6 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5217012d drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55c30fe6 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5706fbda drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5711643e drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c71bb14 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x617e4d99 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6286ffd9 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x674f74c2 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6772cbac drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a54ad17 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c1c1f94 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6cfe63b5 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ebbe521 drm_atomic_helper_cleanup_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 0x74b7e704 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x751bdd08 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7736d7b3 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a600e07 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c0ccb34 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cd51bfc drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80a85557 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8114c288 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83448225 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c321d72 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d2504be drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8da079ad drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f879f11 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91fb0732 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96456c2a drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96ce658e drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96e80423 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9948160c drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x999f5cf8 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b208f86 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e58b173 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa23bf1ff drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2a268e0 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa46fb0c0 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa50f5bd6 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8c94dba drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa1041f0 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad390b41 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae521279 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafd035ee __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2718ecc drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2d84f50 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5639ce1 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb99941c6 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbec4956c drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbef6d28c drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc01fee4d drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc029cff1 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2a45dec drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3c78eb7 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc46f7f13 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc48c10b1 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc524de9c drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6d25676 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd205756 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdd861aa drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0f30ef0 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1e3922c drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7ac1082 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7dd624b drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb553af7 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdcda7660 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd42e9c1 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfe0578e drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0bc42c4 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe54796e3 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8e7fdd6 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9b5d9c1 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee63671b drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeea9519e drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0bb6f1c drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6c3e56a drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbbb07a5 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x027d0334 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x045d9189 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x07ca6721 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x10a796c4 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1808947f ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18e6db5d ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1a701576 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ad1f097 ttm_tt_init +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 0x268fd08f ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x27fdb8e7 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3bb077f9 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c283345 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c6c8481 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4066f243 ttm_bo_kunmap +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 0x51ffaf27 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x520e90a3 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x570c7420 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5f20019b ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x60a03d46 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61ca0415 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x670d8415 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c5b42d7 ttm_mem_global_alloc +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 0x6ef5bc65 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75d05643 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x781ca952 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x798f5dd0 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7cfc1170 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80b68088 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8149cda7 ttm_fbdev_mmap +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 0x92e83980 ttm_bo_init_mm +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 0x9606cbda ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c402beb ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ec46728 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa01ec5ae ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa36a753e ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4c9c6f8 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa531ac1b ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa57c4ef8 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa94453ce ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab8c0abd ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad9bc49f ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba7968d8 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcabe631e ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcefbf1c5 ttm_bo_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 0xd3c347aa ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5771a5f ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd58acf83 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdbc8fe43 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe2925b26 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe4abf595 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe744cfa2 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe7e2a5e2 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xecaacf67 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xee922b4e ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf74b9de5 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x5dd59248 vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x61d52597 vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x8171ab2c 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 0x7e0481d2 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 0x2b392d68 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x40b64591 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x744fdfdb i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xb8da6b3c i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xfc089e43 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xd0a6775e amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0306055c mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0f6bca33 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x19165545 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2fbb4f2f mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x38ce147c mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x39561fcd mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4a937715 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4c0f3fb5 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x510c62d2 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x541e0059 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5dcbed2d mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6bdd7223 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7cd19212 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xca120ecb mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf516fc0b mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfd228813 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xa66aa9a7 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xff167227 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 0x2b252ab8 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x58d945d3 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8769110a ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8bc32446 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9ba5ef03 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 0x0ca0b52d st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x31bea150 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x39f915f1 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x673411a1 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x71a3ccba st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7a0cf394 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7e8b6015 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8b3ee2fa st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x919a1c23 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9f7c0d22 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa32dfc1a st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb5e7c356 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb6e3430b st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf574d480 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf5de21e2 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x0fa32bae st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x67ba6901 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x46c937e8 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x5f29ca73 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x0c69a7a6 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x3a7d5519 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x05a67478 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x05bfbf86 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x0a2a2406 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 0x32821d7d iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x346a3b6b iio_trigger_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 0xad932def iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xc93168ec iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdd2d5260 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe242cdf5 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xe4091d36 iio_device_alloc +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 0x3f0b246f iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xc86549d6 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xd821c0f3 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xf0cad835 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xcb6d43df st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe719cb08 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x831533ad ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x0ff240e2 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xdb5164cb 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 0x45b43a5c 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 0x11798ac0 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x37165b33 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x48d2b643 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5bb07725 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76edb0b2 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x773a02fe ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x793a8ae6 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7a943d5c ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7d542a33 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8ef075cc ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa54b4c87 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcf2d0edc ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd9330a13 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe19538e4 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf3d54699 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf4a863f4 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf7722b80 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02deccb5 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x037028ff ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06330138 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06b811ef ib_dealloc_fmr +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 0x0efa20ed ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f13bc98 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x112f2b60 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12b1d59b ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x193ba3c0 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19d994f7 ibnl_add_client +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 0x2328c85d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x247c9981 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26a86cc6 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b958661 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ce33f0b ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3006d8c6 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x320bd452 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x325cbc5e ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39ceef06 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x448b3a25 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c678e03 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4dbd7267 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x539e5ea9 ib_modify_port +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 0x5720a0ac ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cdb967e ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d9fb209 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x645e5b09 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72886445 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x789eec1e ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79ec9f44 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a1ac130 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fbfb13b ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81a1a034 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x833326b3 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84936ca6 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86017e59 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87599b77 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c48ca66 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f2650e5 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x900133ad ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90dc542c ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91d0b6ae ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95494a96 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95b9c84b ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99427468 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d75aafd ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e04ecab ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f91e902 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa05a3886 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2a190d9 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa32cfc23 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa43c0c69 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4b5bad4 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0914496 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb102469b ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4987334 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4eb2e44 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8016cfa rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb98ce2df ib_dispatch_event +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 0xc087e690 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0bbe794 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0d58908 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0ef69d2 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6074d21 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9eea32e ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xccd83ca1 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xccf8b652 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcdb03a08 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfafee86 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd27a17af ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3060185 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb367651 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddaf02a5 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdeb74902 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe30f5ab4 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7242162 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb9fcaba ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xecf909b7 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefe3d286 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5459783 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +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 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x16dfca6a iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x26c1f136 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x432d0831 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5c425faa iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5ccd269b iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5d8cae4d iwpm_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 0x6e56c6fe iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7112fe62 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x803e1f80 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 0x97a36073 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb4de55f9 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbc2d8f44 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xca09e425 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcfe1cf32 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xedd543aa iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x123da736 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x12c2f410 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1e1981af rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x205e1e63 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x20699075 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x259f66c4 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2c476dea rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x464267da rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4d50a999 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x54db5cbd rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x60c9a050 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x771c5402 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7d1bb9b0 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x82c5c966 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8b4c7ae2 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x94e79d45 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa77e0161 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb126a4f6 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb5bc67ba rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcf5108c4 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xee98c070 rdma_init_qp_attr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0a8a3890 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1714ae88 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x21e42736 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2e561cfa gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3934a37e gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3c1bf573 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x83f5080e __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9eb87832 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xba687c48 __gameport_register_driver +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 0x7b805495 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x8f44d5e5 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x333c0e44 amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x59d9e98b amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x6c502923 amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x8b93f9a3 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xcfb96210 amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xeb0712c4 amd_iommu_free_device +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x00f7989c attach_capi_ctr +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 0x377f5664 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4b301353 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x59873f34 capi20_release +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 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 0x875ac515 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x926165d6 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x962a3172 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9ed33a5a capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa34bd285 capi_ctr_down +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 0xbae566df capi20_register +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 0x27fdea62 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3032ff26 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x49596ee4 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x57d76115 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6f2f69c8 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9894ba17 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9f0fa6b8 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa9837b94 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb31b81f0 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb39a00c1 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc5ee946c avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcf075ef6 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd57fa0f0 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe9e7bf0c b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xea0af4eb b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x471be472 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x47f0e451 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6985caff b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8138ebd3 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x90b26160 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9cf9d57a b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa1357106 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa6e338cd t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd4ee1e84 b1dma_release_appl +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 0x1daa68a4 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x69663f73 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x89cd6444 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xdb0c4753 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x5aa8458a mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x81ff5e5c 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 0x9e0215d5 hisax_init_pcmcia +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 0x057c8abd isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x26153512 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x40cecf46 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9a3b01ac isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xfe581b36 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x20ecffa0 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x21a5ae77 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x9622b7e5 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 0x04963d90 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x05bfc4c9 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0a147e0b recv_Bchannel_skb +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 0x25704806 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x25fa007d create_l1 +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 0x3f196923 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x413ace9e recv_Dchannel +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 0x68b3a60b dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x766076d7 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8043eaa5 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8b544ca4 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x90234879 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb18be2f7 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb4b88c0c bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb9222be8 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb969f41b recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbca8dc80 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbe2f052c mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc8621791 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd8405ceb mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdc28377f mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xde0a4783 mISDN_freedchannel +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_core 0xfa979dbc mISDN_unregister_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 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x333da705 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 0x4ef90f1c closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x57b1b7c6 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6727abf0 closure_sub +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 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 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 0x0942c87b dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x82d45790 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x94b5d344 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xac129085 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x05f7e6ba dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x10483ded dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x10ca6f5e dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x85bb1ceb dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa01f0995 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xfef79562 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xb80c98ec raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x09227348 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x23afd9ae flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x36ead66d flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5d21f714 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x64b530dd flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6949c38b flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6f54141d flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7b8817b2 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x83e2cd23 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9729fa24 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc85ebd76 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd4f45fa1 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe47cf9fa flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/cx2341x 0x09451782 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 0x4ce8e67f cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x7fd18c3f cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb27bb2af 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 0xcfd82fb5 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x06a072f8 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xca70c27d tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0544fd4b dvb_dmxdev_release +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 0x0bab9b84 dvb_net_init +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 0x1b93e65a dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2b31c17e dvb_dmxdev_init +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 0x4136fead dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x41a6bcc9 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x49935616 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4cf3b0d9 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x582eda20 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x589a208f dvb_register_frontend +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 0x6e085bca dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6fc7d9dc dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x77d18545 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x79eaead3 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7a09e7e3 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e033236 dvb_dmx_swfilter_raw +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 0x84d76f93 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 0x8f0850aa dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9be05f0d dvb_frontend_suspend +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 0xab3a3f12 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbeb10ed9 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8988b7b dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb1d1c5a dvb_frontend_detach +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 0xf14f6e6a dvb_dmx_swfilter_204 +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 0x35e5d3f8 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x99dd3c4c af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x1772f5e5 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x106851d5 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x13f13115 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4c422c64 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x64a475f3 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x78b58d54 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa84b6ba1 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbec7fb03 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xeee7752d au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf650d77f au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x32851ed6 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xfb28263f bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xf1f691c5 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xf5e45cf5 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x3e6f5d19 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb000cd6e cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb5d91e62 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x31a0ffe5 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x1759436e cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x140c145b cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5d405a93 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x3f1513b2 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x22b8c7dc dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x282099aa dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2a1055e2 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa3ea383c dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb7189914 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x13a65501 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1932efbb dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2feff216 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5e808496 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6fdaebca dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x78bb4814 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8d0f6e8a dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8f09e3ed dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xac13c29d dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xae6fdd67 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcb973be2 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe9170a92 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe9264ef6 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf0578a5d dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf3873bc3 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x5b9e4c7a dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2578959b dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2ae7a9e3 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7ed82834 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x948eb58b dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa55f050e dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xab43cd7f dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x20816872 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x6f6803d6 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa61fe9b4 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xf934bc3f dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6be46b72 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc3a5cec5 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x345cefcf dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x84616b3a dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9d392ab8 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbf135184 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xec008d8f dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xaf23b62f drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x13d5d565 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xedc2d444 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x53af55ce ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xd9e1384f dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x5d92b85f ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x8b316bfd isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x1ee3dafe isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xcbe84baf isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x9b1f9205 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x9e54cb6a ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xaa87ec17 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xa5053edb lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x06f3d487 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x66d57a42 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xa0ef1804 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x974c06eb lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf84c1c99 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xff8777ad lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x94862f7f lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x6991ad69 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x9b54fc4e m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x944f578e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x5c1c0d6c mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x1e4b8737 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x58fab2d6 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x2bf6c847 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xdbaab371 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x13668830 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x60744344 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x60c6e149 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x21b1725e s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x77698ae9 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x0f4fe4f7 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xe4163e48 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xbe0badbe s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x920652ab si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x4ab33e2a si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x0a2d7969 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x5998bba8 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x9c50db31 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x6219224b stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x2e2dd97e stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xb9f01fe7 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xaa7c8d67 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xaba3083e stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x3cafedd4 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x3ff6d5ce stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x5bcd79f8 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x54343297 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x20bed4e5 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x1b3ea336 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xf439167b tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xbe2f7009 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x2e527a1f tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xcd04fc40 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xf9115428 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x3032b69f tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x10b4a1f9 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xa9e3e288 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x9c4c9199 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xfcf4c20d tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xaa110f31 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xee398007 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xa9d3bf8a tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x5ca5919c ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x1fb247c0 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x5182bdb0 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xefae10f1 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x55935ad7 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x105212d6 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1c918839 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x50af3921 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x753ba30b flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa4f3c35a flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc6b6cca8 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe3f4f51c flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x571468c6 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x627afe7c bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x7dba4ee5 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xaed5dc8b bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x098cea36 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x157b03a0 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 0xe89f875c bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x156e9f77 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x48b98a99 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4bfd3dd2 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4f744f24 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x51bdf77c rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x74dfdb59 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7745f0d1 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7b2ceabb dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbfe57b70 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x33155bd6 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x66d37550 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x70eef4a7 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x904b74ef cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb00c67b9 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf73a500e cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x09d0ffec 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 0x3be33997 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x47d14654 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4d161d79 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x8144e5f0 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb8f55a25 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xead51fae cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xfde2dd16 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x6611fd58 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xcce9918a vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x07ce111b cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x6633cffb cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xae04bbca cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xbf4d0956 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x027b75da cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x033fab97 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x15e13581 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x17fdfcc0 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xaf97dbf8 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbf4906f6 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdd77200d cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x04cdd5a5 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1d6161c5 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x249be3f6 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x28d2293c cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x29338cd2 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3048d769 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x563beb5d cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x56d90fc8 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6405af9a cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6612b30f cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x66a98a85 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x69848603 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x842931b5 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8660bf6c cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c5ce81c cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa1ba428f cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb558195e cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc68f93b5 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc9b05b30 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf2356f45 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x01c9fb25 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x13f03773 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x26c94a0d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3f4f407f ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x40b92bd1 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x49b4344f ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x58438898 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7611dd40 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x86e34dc7 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x886a0cda ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9bc2df9a ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xaf28e01c ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc6b252d0 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xce11c3a5 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xeb3e2e56 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xee27b283 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf550e17c ivtv_claim_stream +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 0x1cae652b saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x20d39792 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4ba8ff3e saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x58de75f3 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5a794dce saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x96cc8cc1 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc2a02653 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe2d2a406 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe6d46eab saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xee524552 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf65662e1 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf86f06a3 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xbe037015 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_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 0x1cd63282 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x47d0f3d5 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5718880d soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x581ae0b5 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcca34490 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcf7292ca soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe2095f98 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 0x1248082a snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5184995f snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6d04611a snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x76d0dcaa snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x8d08646d snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa2e947cb snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb05797ff snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0fdff798 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x310fc975 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4424d125 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x63533ed4 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb0a63a07 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb36e596f lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbd6c8e63 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc57b3e43 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/rc-core 0xad2b0461 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xd6fb2dcc ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x4f98fc31 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x03f1b985 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb8b034ff fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xe194d8f9 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xfb66883c fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x3332deca max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xf6b9a1e5 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x83a92d48 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xbbe19a6d mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x886a2cd3 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xde3f6dec mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xf1c52ff9 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xb19bcc7c 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 0x47348776 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x4bd3d4c7 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x4cf0e491 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x228df712 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xd05fc7f5 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2847f745 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x47260452 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xafb2f877 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd3fd4538 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe2f7817c dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe3da3434 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xeacf6cde dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf3a04973 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfdddda72 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0189b0cf dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3adc9bbf dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x443c0859 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5afb1fdf dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6b3a9701 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xdff2cbd3 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe03a3d1f 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 0xfe5c046e af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x09056bb6 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0fefad6e dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x179fe66e dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3a18e168 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7dd36b1c dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7f1a051b dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8784c44b 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 0xf0458506 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf8f54f4c dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfb59c95f dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfc594bd7 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x5a6e082a em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x77dd1ea8 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x341dcfc3 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x370991bb go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3cc9dafd go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x51329c19 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7edbac1e go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8b32469e go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa117e401 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb56d33b8 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc65078ad go7007_alloc +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x09e7d1d0 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2ddfdbf6 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3bdd4629 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7caccbcf gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x83ef00a8 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb65f9599 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xcc827947 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf94b7b63 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7ea9d0e7 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xddeaabdf tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf9e779cf tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xc64480d5 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xed83811f 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 0x4b4bd52d v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x50f1e188 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xde45fe13 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x22fd6f42 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x394584dd videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7cc8c5f4 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x90f638e6 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf0777b56 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfd0cec7d videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x84e0880f vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x84a52781 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x8eff5eab vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa124b332 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa50924f5 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd7b6649b vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xf57051f6 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02497a07 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 0x0a954c14 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0d581837 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e14bfc2 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10012715 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16972f0e v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ea015e5 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22c13e22 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22c6dfad v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x240f8b3a v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2a5a1dc3 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2c499ce4 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ea1f1be v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x389761f2 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ba851e4 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c282837 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42d92e75 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44e436de __v4l2_ctrl_s_ctrl_int64 +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 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c31c659 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d3bcecd v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x51b558df v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x572b7228 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x57359a93 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f2d047f v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x62ae94d3 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63f7a376 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65148b27 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6c27b622 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6cca3d02 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6da3ebde v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6dc63763 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71ae764a v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72fad1c6 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7454ea72 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x754b17b5 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b564496 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7beb62ac __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x85f4b3ef v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89c5c78d video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a49fa22 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c8b1ee2 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92b594dc v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92feb90c v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9454f4c9 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa081e7f7 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa14b5635 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa4033b5f v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa4fb3f1 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xae5709ee v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb0d3e5c3 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb1b9dd82 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb62ed3d4 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb81ba6d3 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcb8b35c6 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xccdc2063 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd153f97e v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd3130e49 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd9a3ca9e v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda696868 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdb0b03c8 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde998767 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf9ca669 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3f908de v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe5892681 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeaf430fe v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeef827d2 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf49712bf v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd00193e v4l2_s_ctrl +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 0x04aba45c mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1cdee41a mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1fe79b65 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2571190e mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x29c79668 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2dc550f3 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x373e9198 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3c8fc72e mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4d849fd5 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5003c6d8 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x641ba161 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x67745633 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x853a5252 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x88e593de mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8916d840 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8c4609bd mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x91b055b7 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x91ced170 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9998ea3b mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9a932e19 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa858b667 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaad36fd4 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbe033c70 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbf2c0ddc mpt_put_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 0xc6ae5189 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc768a7e6 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd31c2202 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd5c502c6 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd849b7e0 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/mptscsih 0x0228eecf mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x17ba0b66 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1949e174 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1a975a24 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1b934e21 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1d5f35d3 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1f8e64b9 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3c9e3818 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x505cafa5 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5c162264 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5deff2ab mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x61738cb4 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7f99d160 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x808e5c5d mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x875862da mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c958646 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x94791fd0 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9fd92d87 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa115a2d0 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xad83f58e mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd889bd47 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdefb452d mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe6413191 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf0ff3fb4 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf4a402ee mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf4dab69c mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xffcab95e mptscsih_scandv_complete +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 0x000358b3 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x6f3013ff dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x81967779 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 0x245e793c tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x58d63640 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xef122374 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 0x966a8744 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xfc01970c 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 0x16cdd3d6 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xc9598f2c c2port_device_register +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 0xdbe050bb mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4c734286 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x586cfafb cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x594b36d9 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8f698d6c cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xafea58cc cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb2ac0c73 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe1098863 cfi_read_pri +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 0x8ee7ac01 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x7938e49b lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xb9a6eb59 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x580dc3b4 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf3c0d261 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x7a185a77 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x88cda926 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x0fb581f8 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x285497cd nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3092b685 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x62d1a490 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x6aac8c7a nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb7c82774 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x72b7cd34 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x7ce4a9f9 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x9f1deccb nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x4b4b6b1b nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xe062227f 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 0x531cf4cb onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7952befa onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xaca90c82 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xcafaaf2e onenand_scan_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x345de875 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3c4b177a arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5159ad1e alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x53e0f82a arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5a0903a7 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8d562ebf arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc6c925c3 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe6bb1534 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf89d342e arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf99dc6a8 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x24dccbaa com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x4835e3a5 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xd4417682 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x06942cd1 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x12f518d7 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x17c23812 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x18a6fad2 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3d29be20 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x48738d49 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x878567c1 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x880dfea3 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb9c19f09 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe8826196 ei_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xf5a04b0d bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x67195a57 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 0x03fb4417 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x04764833 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0a7f2d60 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0fd2d3dc cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4c4b0d8f t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4cfcaa65 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x522bb8c8 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x54727906 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x68666022 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x688e6394 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x77a012e4 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x84fb9a6d t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa74e7989 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe4877cd6 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xef9a8d83 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf35fda20 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x088b8ca7 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0b126f95 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0d9fd397 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12733e04 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12cc0d1a cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1998e401 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1a959848 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1fc6a67f cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31ab721d cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x37fdec81 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3bdb9b5f cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3dfdb2ad cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4570fbff cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x55fd8671 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5949b25d cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x650f3268 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6779a0a0 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e56d91e cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x786cd4c0 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7ca330e0 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8e337a9 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xad9401fa cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb8252f19 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc68fd09c cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6f2224d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd1780be1 cxgb4_create_server_filter +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 0xe616df07 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeafe55e4 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec185ec3 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef223524 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf7fc0394 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa970f85 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfc301ac8 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x2f36597a 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 0x7b432d6c vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe1c806f3 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x6eba7d5b 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 0xdb53ae27 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02fdd6db mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x128b2430 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x133fed1b mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ef2fbfc mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x259f2ec3 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b7a771d mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3571a34d mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c4a98d5 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45c712a6 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e6b53de mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5099bab4 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5318f363 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57178ce5 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a3948dd mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60a6846b mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65dd8608 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b89d233 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e11dc74 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x832a3e0f mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83c8b565 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x889906c2 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ca0a288 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90ce003b mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93e62537 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa62c397d mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf34bf7f mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4ef243d mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6510b23 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdafabdaa mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddaee286 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5bf6b0a mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe78e70b0 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeadc9c4b mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec629bee mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3b02334 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbcea0ba mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01b4aa7e mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x06aff5fd mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x079548dc mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0797ecbe mlx5_core_arm_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 0x0b725439 mlx5_core_query_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 0x14919852 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f89cd9e mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1faa89c6 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2066c923 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20bf61a1 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x257c49e0 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29f662f4 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f6d28c1 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f3b8591 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52fd77dd mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53591700 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f0d0e9a mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6256e9b1 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c307e81 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f46c5a1 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8009b281 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80eef69d mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84963477 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x871b8ed7 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8feea207 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x932b4a1f mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94dfe71c mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x988285f0 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99c7380b mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c886243 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab10f0a1 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac74cc15 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb49d13d0 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc18843ed mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd102129d 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 0xeccc813d mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed117387 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0818ab65 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x305ad65a hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x7f92e237 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x98680417 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf9280f46 hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0e36816f sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x30dd2cee sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3b9e0062 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x51130016 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x619e2702 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x63557e8d sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x77cc10bc irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9171a0d4 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x994169e9 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa3008ee1 sirdev_write_complete +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 0x02031bbc mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x12951624 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x3674b7fd mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x5b5f78b1 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x870055af mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xb614be8a mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xe84230ef mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xf0433d4b mii_ethtool_gset +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x093e86e9 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x2b4016fa alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x5ac8590e vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x193ff482 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2b2fe577 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x60894e28 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x08e2ed44 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0dde2410 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x47dceca3 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x4bc0ce5d team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x9f633b06 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xb81632d2 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xb9ae1149 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xe6806c7d team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xed38545c team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/usb/usbnet 0x38225a1b usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x4c1b7f5b usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xa1119082 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x01be1bda attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x04a75b71 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x13658a55 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x28330051 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x411abfc2 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x59ab77f5 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x67b31316 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x80bafd0f unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x88ab9063 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbaaaf9ac register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe0aa4f9b hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xeeccc07d i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x3c29fb00 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x6be1b105 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xe103e3bf reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x108b6c24 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x13bba62d ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3ffccb91 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5b4f01c5 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5f6b4ebf ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x69fa0a18 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6b4ed14a ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x73ba59cf ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7df0a8a7 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7e8f941d ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9e8af472 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd898c915 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 0x11994ec4 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x505e9d24 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x550e0c1a ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x61920f86 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7f23798e ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x98750766 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa6f448f9 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc10b7eca ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc837202a ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcf8b4e51 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf83c67b6 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x449a28eb ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x53d39bd8 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5c2a7f87 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5e0246bd ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x680b20c7 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x70fee40d ath6kl_cfg80211_resume +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 0xa4849ff3 ath6kl_core_rx_complete +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 0xee75f33e ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfda7885a ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xff7630e2 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x07ca4e72 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1a709591 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1a7994e2 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x343b0c3f ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3917d853 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3d4e375c ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5a9f65bc ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5aa332c7 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x65ce88bf ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x80bd3048 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8eab4396 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9005f926 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9a39314e ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xab4acc17 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb13b570d ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbc3ddafd ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcb1d6144 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe4528f76 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe645da29 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xee598af6 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf150f08b ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfb68d001 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfd72385e ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02014236 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0598a94c ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05a1ec7e ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x075b7ae8 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0801f432 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x081ee317 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a50a25d ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14342269 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14ad9c02 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18388a7a ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x184ccdad ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a3087bc ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ced34bf ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23fbecbf ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24002068 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25240e44 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27438619 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x288b73de ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c190619 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d4c2eaf ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30124cdd ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30605edd ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x328954f4 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32c645fb ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34d70e41 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3675bdd7 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x382c1645 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38888395 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a4c947f ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b25d64c ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c4b62c4 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41b1b383 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42459038 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x461969b8 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b0ee3ab ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4da6b8bb ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4fc65ffd ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x532a8021 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54e869cc ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5696c5d8 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57d595c7 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5df45c8f ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62673192 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6451221d ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x659a93d3 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67d2ad56 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6863894c ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a25c780 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d95242b ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6eea0590 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x775ad84f ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79a16a5c ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79f14e3f ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7af85a6a ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d460e1b ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e62d15e ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85923eca ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86164f08 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x870a2adb ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87b6c0d8 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b8c3c73 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b8f6f0c ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d4ba644 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fd0c78e ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x923428b5 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97998230 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98354304 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98fab075 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99691094 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99babc9e ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9fa99e82 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9fd78644 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3274e23 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa32f0ea2 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa432123a ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa48e7057 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa61cbc1c ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa69e9704 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa749aea0 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac06a5fb ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd73c48f ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc283b847 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5b50a4e ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc7c9b872 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc89cff70 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8debd05 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9d0b6ef ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce716726 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1501ee1 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd63df5b0 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8992afe ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd97c4eeb ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda805ffd ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdac6e08e ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdaed10a9 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2074865 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe41aa157 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4a10f68 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4fe230a ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe83e57c4 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe979700b ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4a67d6b ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7f2e063 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc76d44d ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x19d75e1f stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa58e4ede init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xc872c763 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x09486d0f brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x10c7da93 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1976ea6f brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2443236e brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3866343e 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 0x4cfab2c7 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x71a4952c brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7d21c939 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7e358ed3 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x998bc61a brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9ccdbd3f brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xecb8e067 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf18a6077 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0451af9e hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0f67388c hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1283b925 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x19ea0319 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1f2ed7d4 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2674c7da hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2ad0b751 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x32b297b8 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x35497ba0 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x458800a2 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4a4fbbd6 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x51a6970e hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x538e2a15 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x596912b8 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x731b5e5c prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x766c6693 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8decd3b5 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa2b944f8 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaf768835 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 0xc17ac44a hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc6c3c08a hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcad979f6 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe9148f0f hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfbf8407c hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfcd12a30 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x02369ca9 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0b3a6ee9 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x13ba681b libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1ffb3491 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x341bdbed libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3601839b libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3e17634b libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3ebd182a libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x43744ed0 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x50a8165d libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5eca6f74 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x67f01f14 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6cfa3be0 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8720f4eb libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8d7901c3 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8eb2e1fa libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9d513a13 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa5e042bd libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc4728d4c libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd8e94faf libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe60296c9 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x001b52bc il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x029bd2f7 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04811df1 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0708cf3d il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07b52de8 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d324d61 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f5b6829 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x123047db il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19b465e8 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c4ac2da il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1cbd04e2 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2000e4d0 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28e06883 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x299211d9 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2bb57f42 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e5e4ac1 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30329bc7 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30bca50f il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37b6b43e il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x388ad1a3 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a5c0c06 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3cc272a8 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42e23d2a il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4439efe9 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x443b35aa il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4615343a il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x466a6858 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x484c79fe il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x494c0503 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a361984 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ca8523f il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51ddfd77 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x547f8633 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55f775ea _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x568c0898 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a05fe9c il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x615358ef il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62f8845e il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6359342f il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67ba98dd il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x682c208e il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a8fa72b il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b83b323 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c88d48c il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71eac39a il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7479f321 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7546e5ab _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x760371dc il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7700c4df il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8217eb4d il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x847cc505 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8aa96005 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d838034 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9525ffda il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x958f3e5c il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9854837f il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fe922a0 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1b871b7 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2c7b3d9 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3c7f6dc il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4a62ae5 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa50755f5 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6a8d480 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa736f978 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8199010 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa834408a il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab3fb9fb il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaff23cca il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb19e2877 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4165ec9 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4a8583a il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9e33e02 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc21c985 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd89c7cf il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0122dba il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1fd8bce il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcaa89a29 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb405f7c il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb7c096c il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccdea5bf il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd6c846c il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf46ec35 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd11cf4d4 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1b6c05b il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4da8a3d il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6d39c5b il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf57daf7 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe10f13ae il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe17e6b7a il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4786b7e il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4855d1d il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6d2e0a5 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe86a772a il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb2a1491 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee02f2b4 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef30e25a il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1a82a98 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf5878d06 il_add_station_common +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 0x01eaca31 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x085213b7 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0d1712ac orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1b189946 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2a2e6901 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2dd7854a __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2e3146cc orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2ecd663c orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x38a3ad4c orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4470ad06 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x517e10cb orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8c1389ad free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa0539d8e alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa8dd394e orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xde8795eb orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeff4d32f orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xf6f4c663 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00c64872 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x01184122 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x11761383 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x13789321 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1746a2d3 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x17930a6e rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x24c0a5de rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2e1fbd0f _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x309318e0 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x31ff9b90 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3ada3991 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x40f7426b rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x413819ca _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a324881 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a3d8e74 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5ed59613 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x608e0f66 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x63591bda _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x70865b0d rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x766e6cbf rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a7f831a _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7b2ebcc5 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f6aba46 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8562cb2e rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x894b433b rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x91fb33da _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x931e2253 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9969210c _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a317249 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa05ea1ee rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xacdaa641 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb31246f9 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb8516324 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc6195051 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc8f99524 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcc1c02b7 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd34f7fed rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd4e94100 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5f8de66 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe31b4c5c rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed6f95ff rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x62b9cee1 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x8194fb0f rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x8783af7a rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xb6746146 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x106ac479 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x344693b0 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x4fd29ebc rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xfaff884d rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x011923e7 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1f1c3ee3 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x29b6dabd rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2d5e6eb7 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2ec1b8db efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2eefda88 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2f9b9331 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2ff25d61 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x33b65355 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3b064a57 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4cdfb8bd rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x50ac3e90 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x540f3019 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x59dcad41 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5cd7d114 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6bceeb12 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6c0c7dc6 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x74713293 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x845530af rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x894b6d82 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8fac4909 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa08995c1 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa252cfac rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa2a9b25c rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xaff45b76 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb39db30b rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc409028a rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xccb0f11d rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcdbba77c rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdf3d1aae rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2a3b9800 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x35ab11ec wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb7c13cdd wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc1c05ef0 wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0x5e2a93a9 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x9520c5c3 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x8131f856 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x81ad9084 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xd74b580c nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x0f8cdcf8 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xb4d3c6a2 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x264c12fe st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2bbbd0a5 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4b0de806 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x661f5fa4 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x71c76aca st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x870d765c ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9c077c3f ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa00981fb ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb3a9f2d8 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0a8de440 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0e2e9de2 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x242d4780 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3d605b29 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3f157c07 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x688990c4 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6eb8486e st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7b2a0d26 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaf66fc0f st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbcf85e00 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc4db27bd st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcd047725 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd38f0452 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xece4397d st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xeced4dda st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf1cd8687 st21nfca_im_send_dep_req +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 0x79d7b00f nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xaae3230f nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0813b054 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x17e31cea parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x1915b9e0 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x1eb5a96b parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x21c4c41d parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x2dce3949 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x2fe1faa0 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x383d3c2f parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x3d9a23f1 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x3da27938 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x45f70823 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x4b115656 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4e29273f parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x5ca1c9f6 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5ed071b5 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x632e75fd parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x6c425745 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x7aa3c5cc parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x7c749e33 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x8a31451f parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x8acbe205 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x8ae30804 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x91c58584 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x9f4d31b5 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xa808f3c6 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xbf9235b2 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xc59b8477 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xc6f73ab7 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xe23834a3 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xe9e61bbf parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xfa111f78 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xfab57430 parport_release +EXPORT_SYMBOL drivers/parport/parport_pc 0x2eb4f7b1 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x9ce7d533 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0a00c8dc pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x156cf755 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x280217b1 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x290fe332 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x328291e0 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3d3f4dfc pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4314afda __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5ca91487 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x644b6e9f pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6a4ea8a7 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6ffa1b6d pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x816fc8cb pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x83a9249f pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x87cf8a35 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa5000dfc pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xab99ebfd pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb96c6831 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbd9430f1 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xec93a458 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x09d0f3ed pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1f673362 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2bba7a3c pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5441d435 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6b8da859 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x91e6d9fc pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x958eafa3 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb164f3c2 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc2afdcfc pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe6bf1bc8 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf62adb92 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x1bd64095 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x57fa208f pccard_static_ops +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x7982ecce pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x98dca4eb pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xcc42f268 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xd7706525 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x1bd72c7a ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x5b04cf63 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x628b5396 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x971eabf3 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xae1a6b63 ptp_find_pin +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 0x6a8e26e8 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x7434713f scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xce305909 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xdd3dfebb scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1f564a8c fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x31f3d002 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x491f564d fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7a320bf2 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7ed90d55 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x85fa8b1b fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x991191eb fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa23b5f4b fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa30d88d5 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xac10db5a fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xda0e745d fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfd7df62b fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a36b214 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10176dc9 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x116346c6 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x19db98e6 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b94ecf5 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28b49aad fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3193bd18 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x32021d43 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x343a546f fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38df9448 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4aca3a3b fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4dbede5b fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4fbf95b1 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x535776ba fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x567fe86c fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x607fc726 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66dc0a22 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x67b8d047 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6863586d fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6f887c1c fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7c939977 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7db963fd fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x88e2f06c fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8cb58069 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x97bdb3cb fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9e467915 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa34c1a8c fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3756d95 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae33536f fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3c5b5f6 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb751f510 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb7a0a25e fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf6f2056 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc5e9f3fc fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb3aeb2e libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcbc7e649 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd2867102 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe902addb fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2096932 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf36a8490 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf37e08ff fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9298ea1 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff5a4547 fc_linkup +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xbbfcdc0f sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xd0b80ce4 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe47fdbe4 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xecb1a32d 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 0x7dbaf2b9 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x05e3a74a osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0916d896 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13a6b500 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1bbabb61 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x293ddc2b osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x297dca1f osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x33e0d540 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x49166a48 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4c6ddef3 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x575d9abb osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x654b325f osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6991135b osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x73fa41e4 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74539b4e osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x755dd3ff osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7651ab8b osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7743509c osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x77748c50 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x793c7db0 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x79c7f6e4 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e1f2ea8 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e6e0cd3 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8cf82864 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9e0cc923 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa727b5c6 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xba1840aa osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcaafa5e2 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb391527 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd429ad93 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd58aa41d osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6fe92c2 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdd35de79 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe85f2a9e osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfa20d2c3 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfbc26775 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfe70ebab osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/osd 0x066faf71 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x1afe5fab osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x28acee89 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x468d85a5 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7862020d osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa34b220e osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x18e8126a qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6b0de10d qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x761a85e8 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x879c1d94 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8920bfac qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9a343c15 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc38faf6f qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc9524a1c qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd7dfdd0f qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe53960bb qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf02b390f qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf0bedd86 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3aecdeb9 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3ebefa0b qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x80211b57 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xa979aaf4 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xfaa877da qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xfb16d1e4 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/raid_class 0x07fd1744 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x14f1ee35 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x8f10d3dc raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3763756f fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x379f2a11 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x49bb426a fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x72678b14 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8164eb5a fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x81745083 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9aceaac5 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa7e13164 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa9752699 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb2a50ad9 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdeadd769 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe7ccb6fc fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xec3973c0 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0b8fffcf sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0d2d7ec7 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x11a9ffd5 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x12be3d2b sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1790da7c sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1e9799fa sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2c425b2f sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2c719a9d sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x550044fc sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5a4bb493 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6042e922 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6340545d sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6441fc8d sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x77ff1cb6 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7c56786b sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7fd37f55 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8148d5ef sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa9a8fd74 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbaa7bd18 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3cd08fa sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd57bf416 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe035f561 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe1fdfb93 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf3e8a0dd sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf805753b sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf9122651 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfca90e02 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xff012eb4 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0202e09b spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x371ab285 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb4bb8f0c spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb62ce02b spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xfc666c78 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x1c108e0b srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x2f545e97 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x4599fc73 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8d0fbe33 srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x41b57a30 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x428e1aea ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4c77fa6f ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x5ad14172 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8b218a5f ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x99446f50 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xfa54a532 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x24b3adac ssb_dma_translation +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 0x516a1901 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x592691cc ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x5999ace3 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x6c22811a ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x72134161 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x79213d2f ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x7928fbe6 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x82f1e039 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x86798788 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x87eb4a6b ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x887a302e __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8b69b315 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x93acc40a ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xb5689b9a ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd8201e40 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xe559bba8 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xe7d948da ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xfbec6223 ssb_set_devtypedata +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x039bdf31 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x05d3c102 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x33b952da fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x36dc6790 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x481ed45f fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x521edfbc fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5c4ab234 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5cb60c92 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6401ad0e fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6f15d85d fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x790e08af fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7bea6ecf fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7cd44d14 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8b222503 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9b836f65 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9d4f90db fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9d5638cb fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa1b6e210 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa9f52d9d fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaefb7074 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcb88d761 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xda3b5d7e fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdc65ec10 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe6c6fa96 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x20abfb96 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x383cd539 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x79dec831 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 0x0d9431be lnet_net2ni +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 0x1c9deab7 lnet_notify +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 0x243d3744 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 0x2e45a228 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3383fb89 lnet_sock_write +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 0x41cbc44f lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x442b7b3b lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4830e981 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4ceae7d2 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4da783c8 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x50bf7446 lnet_create_reply_msg +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 0x67198eb4 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x677e236d lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x67f0308d lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6995ed07 lnet_sock_listen +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 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x887b7a8c lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8d0f0d36 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x951aae4d lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9633687d lnet_finalize +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 0xb58bde9a lnet_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 0xbdb82251 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcd60ec1d lnet_sock_accept +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 0xe9cfd48b lnet_copy_kiov2kiov +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 0x0081fe91 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x015ad9f5 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1df83e58 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x54c148bb seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x5cf528dc 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 0xcf73fea9 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf7edfe59 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x359cd982 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x70693fe0 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x96550b45 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9a0c5ba5 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa3c7df67 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xcf253c20 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xe4ebd8d7 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 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 0x230d888a cfs_crypto_hash_update_page +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 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 0x5e15b41e libcfs_kkuc_msg_put +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 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 0x851f3969 cfs_hash_debug_header +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 0xae739a38 cfs_hash_debug_str +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 0xcd8ea914 libcfs_kkuc_group_add +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/llite/lustre 0x85800fc2 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x9290256b ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x937afc85 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa2a1beec ll_stats_ops_tally +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 0x25577ea8 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x5e50ed65 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x5fc78a93 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x60aa8fc7 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 0x00a27739 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00c69638 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0198cf18 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01ff5cc0 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x022a6140 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02be4092 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02cb47f2 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x031f47fb cl_io_submit_sync +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 0x03fdf485 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x044eb50f cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04baccf5 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04f81a33 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05552bb4 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f491d9 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f9e383 lu_device_fini +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 0x081d048a cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x086d79df cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088dccc2 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08ddcdb0 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09771223 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ac2abb4 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b517737 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c534d7e iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c9837a2 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cca6be6 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d7b5332 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d92a8c1 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d9797b9 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e1b21c6 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ed25898 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0efd94c4 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x109bc73f cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x110d2393 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11687bad cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x116a186d lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x143206a2 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x144bc040 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1561d5bc llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16316c7c llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16673c0e cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17980b26 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17cafc12 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17cf00b9 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19420991 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19f56491 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1aa8b82d llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1adef31e llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b5b147f lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b81dd97 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c2b9a89 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dd904b8 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ea55495 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ef46552 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x204d460b cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x206cc01c obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x206d3cfe llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x208a5881 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21c58b87 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21d130b2 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21f4a99e lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22a2dba7 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23d64507 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24428d71 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24afb2a1 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25431b3d lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x254e51f9 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x272862e7 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2733b4fa class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2785f1e8 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x280cbad1 lprocfs_at_hist_helper +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 0x29e490a0 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cceb7a3 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d3d4cd4 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d7b9a06 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30dfe40d dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d9b5a capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x317653f7 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x320d5ad2 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x323159b1 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3231dc7d cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32739112 cl_io_unlock +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 0x357cc5a7 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x359155a2 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35976b72 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x362ffef8 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x364bcfca llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36dd4348 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3709b34d cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3819e156 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38660cd6 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38943eae lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38c51de4 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38d3b71c dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3905a178 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39270713 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b1c9eda llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c007b49 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c99f85c lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ccc78c8 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d5d42e8 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e0b6837 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e3e0108 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e8eca3a llog_add +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 0x3f6aaf3a class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x401be55b capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x416cb79b cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42d5eee9 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4357b315 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44c33d04 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x454afe30 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x458b0af8 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4590092d obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47a24f40 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47eb4690 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x487a008f cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4929cfb2 cl_object_get +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 0x4a5c1637 ldebugfs_remove +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 0x4cf7efbb llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d9adaba cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e3f2bf3 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e790b60 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x505045f1 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x514d6de6 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x518aac2d class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x526aa314 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53349b03 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x534f88f2 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54647526 obdo_from_md +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 0x56394d00 llog_write +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 0x572d6b4c lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5800c9c5 class_exp2obd +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 0x5857ddcd cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59745c43 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59d77155 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a9fec70 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b0f271e lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b639fe7 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c94e4fa cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d01c291 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ddbc014 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e1f6370 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e3255d2 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e3d3aa1 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e829a25 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ecc3638 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f48908c lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x600a67c2 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x600f1f3b cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60149655 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x603f3cec ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6059de37 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61be5717 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x620808b6 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6302552a cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63734c13 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64901f40 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65d75bde cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x663cd6ac cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6651a3ac class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66bb9ce6 lu_object_find_slice +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 0x6788b3ec cl_page_find +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 0x69247081 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69a43d35 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ae3abb6 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b3b3283 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cd65a0a lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ce1190a class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d2e80c0 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dc6dc0d lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e0ea2c9 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e901cb6 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f51b478 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f909c37 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcb7042 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcfde71 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fd09413 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x712d07da lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x714bafb4 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x715e341a cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72293acd lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72e5096e lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x733a1de5 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73a5822a lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +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 0x76136742 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77487269 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7789d84e class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x779dad65 lu_object_locate +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 0x7857e893 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x785d4d56 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78f8aff2 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79805d37 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a7ae2e0 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ac54dad class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ae63bfc class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b577c5e cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c0a5c76 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7dd0473a lu_object_invariant +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 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 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81c1c7a9 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81e7c7ed lprocfs_rd_uint +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 0x84205c9e dt_device_init +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 0x853ce022 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x858911e4 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85898443 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x865f25a5 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88af14ad cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a57f927 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a5dd5e2 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aafdbcb cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5c66d9 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b82f128 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba69b30 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f77c92c cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90b47f6a llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91378256 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9221d024 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x928395bd dt_record_write +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 0x93f1170b lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9433f529 class_conn2cliimp +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 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9840095e cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99aa97da llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9acc4cb9 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9aed6597 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d97ef91 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e2f2bcc lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0709a8a lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1a965a8 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa402d57e lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa561d024 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6176c2f cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6ffba35 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa75dbbf8 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e5bea9 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8799810 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa906fca6 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 0xaa9bd6c8 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab208436 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab45f177 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab9595c9 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac40aef2 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad1bfe3f cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xada11fae lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaeb5aed6 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaef21d30 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaef31244 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf3df4c9 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafe70a70 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaff250b5 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb045881c cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb086f7f4 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0878dc0 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb09e3e51 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2730b3d cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb319ff98 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3ac8b4e cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4ec0352 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5715a70 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb58b2aed lu_object_find +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 0xb6c11196 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6d43c61 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb70b4a1b cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7750f16 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb89c37df cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c62bd0 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8db9fd1 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9a630d2 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9de0735 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba023976 cl_req_attr_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 0xbb1a974b llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc8ce67b lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd6f7574 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbde88dae md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbeb9e701 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbedc29e4 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf1f0022 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf627d88 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1080902 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1382673 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc19f09aa class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2f1f22e cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3fb967e cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc404837c lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc406ae2b lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4161547 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc41dbfe3 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc48037be llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5adf708 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5c3a264 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc693503a dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6c56bf4 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6fcebd1 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8bd5fc3 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8cfaf66 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8da7bfe cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9c2c222 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca632a03 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca6b529a cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcaa23d43 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcadccae0 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb287c6e ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb6641ca cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb91edcf cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbdfce0b llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc11cc56 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc3439e4 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce61e5fc llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce84c1b3 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcef43970 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0101fc1 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd03e83a9 llog_cancel +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 0xd140c1ca cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2017930 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2019d09 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd24b07fa lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd29ff87d cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2f71cd5 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3446480 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3ecfc7c lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4db672f llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5330534 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5d62d29 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd649e838 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd686fc44 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6d690e6 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6d9df0f cl_page_completion +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 0xda442e4e class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda4df674 dt_object_fini +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 0xdc39662b cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddd20951 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde0ee777 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde3b5e98 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdefd5653 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdff0a224 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0163c76 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0493022 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0be41dd cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0cbab9f dt_find_or_create +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 0xe1b52c5b cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29ff1c2 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2c286c8 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3fbc15f class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4292436 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4ea760f class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5571e15 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5c0a814 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5cca7bf cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5fab4b2 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6933e1b lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe71dfb2c lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe71e396c obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe76e3deb cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe77ece36 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8850bea class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8f4dc1d cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe931697a cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea576ba0 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaf2d208 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb253ad2 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebb97a24 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecbf6e73 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xececeba3 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedf842a7 class_cleanup +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 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf091501b cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0d8fe39 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf124183d llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf13997b1 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf19c8864 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1ec35a1 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3122e80 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3800d8d lustre_register_kill_super_cb +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 0xf57a2455 cl_wait_try +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 0xf83d42b0 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8b4a034 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa1e4308 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa53c415 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa725781 lprocfs_exp_cleanup +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 0xfbf70fbe dt_version_set +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 0xfed79222 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff2195e3 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff4be796 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffd18a52 cl_object_has_locks +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 0x019bd51c ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x020a0957 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x028eb209 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02d23ebc client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03340481 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04a3f246 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0623275a sptlrpc_target_export_check +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 0x0851f369 ptlrpc_register_bulk +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 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 0x0c9f94c7 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0df58c31 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0dfa3bac ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fefe9c7 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10199340 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10411195 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10bc6dfa ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10d118f4 req_capsule_field_present +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 0x11568e00 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11ba484a ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11c1a924 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b97e93 ptlrpc_unpack_rep_msg +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 0x14ee9d63 ldlm_cancel_resource_local +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 0x17575226 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18f01b15 sptlrpc_req_replace_dead_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 0x19c427ae sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19dd9c8b ptlrpc_request_alloc_pack +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 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 0x1e3598ab ldlm_pool_shrink +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 0x1fa7a441 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20a28ae8 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x217e27e9 ldlm_lock2desc +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 0x2331b755 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24352522 sptlrpc_get_bulk_checksum +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 0x24b159e8 ptlrpc_unregister_service +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 0x2628876b lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2634e492 lprocfs_wr_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 0x27b849f6 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28b04c96 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28bced6b ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29706934 ldlm_lock_cancel +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 0x2b658821 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b6f6938 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2be8353d ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c469973 _debug_req +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 0x2e4007bc req_capsule_server_grow +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 0x2ec5fd90 sptlrpc_gc_add_sec +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 0x30102253 llog_client_ops +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 0x311395ea sec2target_str +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 0x3436163d ldlm_cli_enqueue_fini +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 0x365609f6 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36f22c01 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x372a14d3 sptlrpc_gc_del_sec +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 0x38a8deb7 ptlrpc_lprocfs_brw +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 0x3a4289a4 ldlm_resource_unlink_lock +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 0x3d3df6bb sptlrpc_target_sec_part +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 0x3f46371e ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x402d1084 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40678802 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42f3a797 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x433c9a38 client_obd_setup +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 0x4658ef9c lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x470247ae ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x470d7dda ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47b293d9 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4934128a sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49b1d725 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c32d0b6 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cc5bea5 ptlrpc_resend_req +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 0x4d92a850 ptlrpc_hpreq_handler +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 0x4eaa347f ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f18dbaa ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f5fe983 ptlrpc_resend +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 0x50d64377 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x512cff2e req_capsule_server_swab_get +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 0x57871c84 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57ed0cad ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59305167 ldlm_blocking_ast +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 0x59e47535 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a6f2434 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af7524b ptlrpc_wake_delayed +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 0x5d4f8f93 unlock_res_and_lock +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 0x5fb81a3a ptlrpc_unpack_req_msg +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 0x60999f10 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61347543 sptlrpc_import_flush_my_ctx +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 0x620de691 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6303a081 ldlm_pool_set_limit +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 0x66f11743 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x676257e8 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67932b98 ptlrpc_send_reply +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 0x6b2318f5 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b5b5632 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bb6ac3c ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c0fe3b5 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c728820 ldlm_lock_convert +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 0x6e86402a ptlrpc_init_import +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 0x6fcd26f3 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x712a3da6 sptlrpc_cli_unwrap_bulk_write +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 0x73c40fa0 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7599405e ldlm_pool_set_clv +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 0x76d04234 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7835f7e7 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79fca5c7 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a20d0d3 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a8db66c req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7af8a3e6 sptlrpc_svc_ctx_invalidate +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 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 0x7e88ae5b ldlm_cli_cancel_unused_resource +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 0x7f6881a2 ldlm_prep_enqueue_req +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 0x8186e3f9 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81e7547a ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x825c85db ldlm_cli_update_pool +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 0x84be14cc 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 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86778a71 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86dce908 sptlrpc_cli_ctx_get +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 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a8990cd __ldlm_handle2lock +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 0x8caa4b68 ldlm_init_export +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 0x8d7dcdc6 ldlm_resource_get +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 0x90645b79 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91138211 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91371b1f req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x914840c4 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9166f172 req_capsule_set +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 0x92190138 req_capsule_client_get +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 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 0x97605339 client_import_add_conn +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 0x9839053c llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x99594cc9 ldlm_namespace_cleanup +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 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9becad4e ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e15e9c3 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa06775b0 target_print_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 0xa1930753 ptlrpcd_wake +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 0xa264ae06 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa268cd55 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa394fc83 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4078d18 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa43d56b9 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 0xa4cda6d5 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5117695 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5304e95 ptlrpc_pinger_sending_on_import +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 0xa6b11245 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c8d705 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa739ec42 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d94f8e ldlm_pool_add +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 0xa97e16dd ldlm_lock_put +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 0xace5860d ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad2fd8a6 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae7f3f59 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaea354c1 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaed8fbcf ldlm_register_intent +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 0xafb6f525 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafe66d7d _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb00cd7be ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb07daad3 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1921255 ptlrpc_stop_all_threads +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 0xb2d1f763 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3472510 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3672779 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb41788ab ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb42f43db ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb45a82c5 ldlm_destroy_export +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 0xb697a287 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb72a62e8 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7eff517 ptlrpc_retain_replayable_request +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 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbae432b5 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb0335ed req_capsule_server_pack +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 0xbf58b234 ptlrpc_prep_bulk_imp +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 0xc1386812 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1662dbc ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2806282 lustre_pack_reply_v2 +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 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc63e0e49 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6a398b4 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6e9d607 sptlrpc_sec_put +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 0xc79bfb5e sptlrpc_cli_enlarge_reqbuf +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 0xc81e0bc7 ptlrpc_req_set_repsize +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 0xcaa56e24 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcae7f181 ptlrpc_request_alloc_pool +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 0xcbd6d85a ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd8d9951 ptlrpc_register_service +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 0xcf128625 ldlm_blocking_ast_nocheck +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 0xd0d78fcf ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd160e6be ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1f53364 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2bf0614 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3d656ae sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd400a8a5 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd406f9fb ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4bf82ca ptlrpc_request_pack +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 0xd728a337 req_capsule_server_sized_swab_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 0xd91316bf ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb00662a req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb59d50f ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcebf959 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd062245 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd1a3107 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd82cfab ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd86681d ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdddb5e5f req_capsule_get_size +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 0xe030bfed lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1609fe6 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2bead6d ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3738053 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe38d7bbc sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3b10ed9 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe50077bd req_capsule_init_area +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 0xe6b0d421 ldlm_namespace_dump +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 0xe8af132d sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe960a525 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea9c5342 req_capsule_client_dump +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 0xec1a8557 ptlrpc_req_xid +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 0xed9998b2 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeddbe6d7 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee43a6f9 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeebee841 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeec33326 sptlrpc_sec_get +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 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 0xf360bbb6 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf38a522f sptlrpc_enc_pool_put_pages +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 0xf4eaf3bf ldlm_replay_locks +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 0xf5c8a6e4 do_set_info_async +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 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 0xf8ad9365 ldlm_resource_putref +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 0xf9d3b8a4 client_obd_cleanup +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 0xfb7e87ed ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb7ecb80 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfcf71a60 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd80b955 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe28b461 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfedb7d7f req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffaafd78 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffb452c5 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffb6410d ldlm_lock_change_resource +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 0xf4172fbb cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0238cb0f free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x02ce7de3 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x043d441d rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09d21170 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a2dda53 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e3e3f7c dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x10a9abe5 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x12b27cce rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2002df57 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x201640f0 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22a5bea3 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2381469c rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24690265 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25ccb471 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26191f43 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2996269d rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3228c1cc rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x398fa229 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3acb667c rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d29505a rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x476ce819 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5851f587 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x665e6d9b alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f330c21 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6fae9b18 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x778a5436 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x893177bf rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8c464024 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x90025be5 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93b45b0c rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9658f884 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9933fdcc rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa233ca95 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa352e723 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa490a967 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8c302c4 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0625cc9 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc3419d0a rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4d2d7c4 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc64782e9 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb335236 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd169d5e7 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe6b1c5d2 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe85dffd0 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe9b59297 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xee019540 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf1c65847 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5ac6e5d Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7d36f88 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7f5c347 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0d120b7b ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1bc7dce0 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1ca9c2c7 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1da5582a IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1ea7b9b4 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x205e2aac ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2318e4ff Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2480960b ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x249ff663 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x24a79a0b ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x31e7e39a ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x324d78dc ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x45f21954 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b00b370 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f37d389 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x53f60c3a SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56a120cd ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x588fe6f1 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b4b8165 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5bdd56bc ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x671e0e3d ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6fe565dd ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x712b8985 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75799ed7 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x77772c9f ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79cd8e7e ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79e42f91 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79fbd34d ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x851d54cf DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x86babdf6 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x87c7295c ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x880cf614 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x96635d75 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa73a29c7 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xae0a8a39 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb20e9154 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb216b62e ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb50e9516 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc91a1062 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc920ab64 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xca9732ff ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcbe8703a ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1f41609 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd6ebb7a8 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdb05a158 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdba3422f ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe9c69948 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf1fa8d9f Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf440ae04 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf5d4476f ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf75136a3 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfad3ad0a ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfadc51c8 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff983e2b ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/unisys/visorbus/visorbus 0x01ae7a02 visorbus_get_device_by_id +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x04d348e3 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x06fe2092 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x07fa128b iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x22e69bbc iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2a3ac728 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x436a054a iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x47e57819 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4c7da7a7 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x630a8e9c iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6ed9afe5 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x755bc32d iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x76a3e3f7 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7cdc16e2 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7edf372d iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8c447d9b iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8cc9c69a iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8fb75da2 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x909311f6 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x98ca348a iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb3143097 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbc2f8e10 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc088ef37 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc44e7484 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd811d66a iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe85f153c iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xea1ff402 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa2a48f2 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfabfc2d4 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/target_core_mod 0x017cdf76 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02c8e3a9 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x080fcd71 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c7a0212 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ce36e21 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1406003f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x15993285 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f1c2c95 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x20d74798 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x211855b5 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x22f860be target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x2636268f transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x295bb564 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x29bbfe4b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2db4072a target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x34545b14 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x3788a6f6 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x43ece197 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x44236ae7 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x44d151c5 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x46c7c5b7 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x49548323 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4ca27ed1 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d84f8f2 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e5304fb transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x51c343b3 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x527181ac core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x57d4ff5f transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x58ec0faa target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f537aae transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x60ed9ff7 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x62d1b758 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x69a923d5 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x6de274bc target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e6279be transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e7ac9cc transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x788aaaf3 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x813108a4 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x8320bd55 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x83ef21f9 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x843b6a71 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x90f30e51 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x916a07e7 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5925930 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa132211 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xafc012f3 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2be0dc9 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xb83e8cae sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xb88fbbff transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd6dad2f passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xbe14ae78 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2ed5df8 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc625860b core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6c6e21e target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xcccb1ec6 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf580bb9 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xd52ee24e spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9d0b642 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xdbc415cb core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xe0dee2db target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8ec3f87 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xec99044f transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xed2f62d8 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0870321 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xffbb5184 target_wait_for_sess_cmds +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 0x346e7a64 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 0xae6b9550 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0a5ac788 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0de8fe96 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x235a1391 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x42c1f16f usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4e7c2da4 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x82ff3adb usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9dae761f usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa0657671 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbe38b422 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd07b626f usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe566720e usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xea0917d8 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x8dbd0095 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xac2a6b43 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 0x57549c47 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x5c05b6f7 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x985ba172 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xec5f853f 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 0x3c0bd4e3 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4b11f122 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x77a907a0 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 0xabe1bc7f svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb3a6a56a svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb8ac55e9 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc2b14ab9 svga_tilecopy +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 0xf1d79361 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x085b0d92 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x381e65f6 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 0xa0050e64 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x0324eaf6 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x3e22d49c g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xb1ebd874 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xc716413b matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x1bf018f6 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x46e2ce83 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xc64acf36 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf5965255 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x1175421e matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x990c4a5a matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x77c966cf matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb3adb0f3 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb6ec8c66 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xd8f9e3b6 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x8cba8d65 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xb4e2c984 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x2b00507e matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4d1c71ab matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x8c419bea matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xaae6d39d matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xef70ad75 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x93852ee5 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 0x4bf3b8e5 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xb09870e3 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xba669eba w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xc82da7ee 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 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 0x040ad68e ore_write +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2a7248b9 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4c7c8456 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x57fb488f ore_read +EXPORT_SYMBOL fs/exofs/libore 0x6621c79a ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x6ba840d8 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x77f4a387 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x8f588d99 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x9e3c8296 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xac04c794 ore_truncate +EXPORT_SYMBOL fs/fscache/fscache 0x0d093e5b fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x0d531e8c __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x11c29eb9 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x20d96ebc fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x28c2c986 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x2e1b90f5 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x3106ec3b __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x35844282 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x3edc101f fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x44957146 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x469f5818 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4a555b7d fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x5cc1d6f3 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x5e5e078c fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x61160fbc fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x627080b7 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x6b339290 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7c71dbb7 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x895e1f3f __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x8fabefb6 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x922b7bc7 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x9271e909 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x9c0469e6 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x9c0a52fe __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x9c94e7c7 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xad428e89 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xb18254a2 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xbdae14c5 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xc62dd7c9 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xcd5726e3 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xcdf1f9a7 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xd29fbfb4 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xdef16f9f __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf075dd3b fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xf290cdb5 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xf76be76b fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf9fa2554 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xfca9cf37 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xff3e9b6a fscache_object_mark_killed +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 0x52d4aa76 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xc46678fa lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x37d71623 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x65663c99 register_8022_client +EXPORT_SYMBOL net/802/p8023 0xa4f2b39f destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xd5eef06f make_8023_client +EXPORT_SYMBOL net/802/psnap 0x120d296f register_snap_client +EXPORT_SYMBOL net/802/psnap 0x9cd6bda1 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0457eb90 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x05947ed8 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0eb12313 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x18085c25 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x2254ad2a p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x27a644b1 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x28169cc7 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x2c6af90a p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x348ca492 p9_tag_lookup +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 0x4008f32d v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x4014c42d p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x435dc59e p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x47bd74b4 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x4cf625fe p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x52cae59b v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x55ad7435 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x5a4b5bc3 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6ea3e107 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x6ebe91fc p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x8030032d p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x829e5749 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x839a1a5a p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x83e00f8b p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x8430212a p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x8694a5a7 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8ac039da p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x8b8d9d97 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x90f66a5c p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x919b8eee v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x9653f3bd p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x9665df60 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xa1f84944 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xac50aada p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb1ebb7b1 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xccbcb6bd v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xcd6b12cc p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd2d8e82f p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xd5a9a3c0 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xd6ea013a p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xe45edafe p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf7238e52 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x89632a24 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x94ae3f91 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xbb18d491 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xedf46ac9 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x02899adf atm_charge +EXPORT_SYMBOL net/atm/atm 0x05f52ec2 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x1bfbb10f vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x22b9f203 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x27b8b580 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x2b6406f0 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 0x474947ec deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x594d2e56 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x68cfd36b atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa36b9066 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xa9997474 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xccd4ccb9 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe13f3816 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xe35b4aff vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x067642bb ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x13616df7 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x13b08218 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x19ac3718 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x22a9e282 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 0x7ec3ddda ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x7f11d6ad ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa0985bac ax25_header_ops +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/bluetooth/bluetooth 0x0b7d5e54 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x17f5b993 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1af670f4 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1cccc6a0 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ddf6f6f bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2619b2fa bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2c979f5f hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3951e1c8 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4010a487 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4b45e81d hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c4c5dbd hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ce95b60 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5e60526f hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6069feca hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x655da134 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x667a8594 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6e27c49e l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x71469049 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x72999121 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x73a60cb1 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x88e0fc52 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 0x93ee9888 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9a694bb1 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ea1a21b bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9eb42a8a l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0672f1b l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa885269a bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb38c2d6a hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbc5d680 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc295d9a2 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xccbc0f56 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd06f1756 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdcfc2a48 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe18249ec bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec9f4a2c bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf3698c1f hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf6d82af3 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8c343bd bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xffd763ad bt_sock_wait_ready +EXPORT_SYMBOL net/bridge/bridge 0xe2b60a07 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x5fa480ff ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x6a10a1fe ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xeafebddb ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x0198b945 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 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 0x97fedb1f caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x99a7a327 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 0xc5d91a41 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xdf742750 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x035f4d40 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x1ac0f55d can_send +EXPORT_SYMBOL net/can/can 0x2076d8a2 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x27213453 can_ioctl +EXPORT_SYMBOL net/can/can 0x4c254f06 can_rx_register +EXPORT_SYMBOL net/can/can 0xdbbda05c can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0688b3a9 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x07a8d535 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x082b881e ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x0871e1cc ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0ee2d67a ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x0f7524b5 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x124ae864 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x176ebd36 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x1daf62f2 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x1fed0c2f ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x1ff60933 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x247d84d0 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x26304902 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x28c51704 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2f02dac9 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x2f4cc6a7 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x34721cbd ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x34a9bb64 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x37d672a8 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ebd8cdc ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x41ee538a ceph_auth_update_authorizer +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 0x4c630d78 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x4db238d5 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x4edb1f19 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x4fcea527 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x5099875c ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x56c08e7a ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5961622d ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x5ae6c1b2 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x5b41297d ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x5d89cff8 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x617bad58 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63ae7c5f ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x64e6842a ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x67561843 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x69b5d38f ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x6ac4ae9e osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6dbde5e6 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x6f2fb840 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x72fde668 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x73f5ed49 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x75ce4bb2 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x75f1a871 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x76d37163 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x78451b27 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x81a94180 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x858616a8 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x8804c04a ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x8b29827d ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x92eda372 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9708fa3a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x97f3267d ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9976cc49 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x999e1e31 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa03878f6 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xabc0de47 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xad70297d ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb02d1f53 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb46e3430 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbef07b7e ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xbfa00d90 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xbfa74c42 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xc487f9cc ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xc495abfe osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc7a32d3b osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd29919bb ceph_monc_stop +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 0xd83c4208 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xdbbc332f osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xdbe191b8 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xdd83cdb1 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xdd8f83db ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xde771d73 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xdf8b7eac osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe0490361 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xeb2889c8 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xeca69e86 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xee069e40 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xee8977ac ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf58a9504 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xf6a19e75 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xff35edc4 ceph_alloc_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x4d469a23 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x75b62d0a dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x7cababdd lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1025a7d4 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x53e84847 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x79bac85f wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xae55ea4a wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd5250313 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe18fd134 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x2cc3d2ae gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x55db66c5 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x0ca1d84d ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1a829a36 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1cf29682 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x7c2052b7 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x9f9947a3 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xb270bae9 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x2ab84617 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x610ba926 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x9b7e5a02 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x12de210a ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x541f17a2 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xc336a459 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x95a7803f xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xf34f4a84 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x8df0ec5c udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2a977343 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x320798bb ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x5e4c83fd ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf5e5bbef ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3e20e0fe ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa6e5aeeb ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xcb0482f7 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x3454731c xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x4f413fee xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x0d56625c xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xd61060cf xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x374b68b4 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x39af615a ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x457adfe8 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x54430302 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5a29328c ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5da43ebb ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8ca77d2c ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfac6676e ircomm_disconnect_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 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x18dde815 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x229a37f3 irlap_open +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +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 0x3a55bd65 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x459aab83 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x5036d4fe irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x5805f62e irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x62a50298 irttp_data_request +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 0x73cf1048 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 0x7dcd2cb4 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x84b62866 iriap_open +EXPORT_SYMBOL net/irda/irda 0x86941f27 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x912454f0 irttp_connect_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 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x9fd87bc1 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xa85e3a81 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbc8fcfda irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbd43a315 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc0adf79c irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xcb5a60e5 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xd35e8f47 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd821ac95 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xdcb7b311 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe2a57d23 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xe7dfdcee irlap_close +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 0xfc84bc2a iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xffe1e81e iriap_close +EXPORT_SYMBOL net/l2tp/l2tp_core 0x072a0312 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x00e90850 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x2c7ee09a lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x42e53bb7 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x5995aabb lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x62110399 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x8fe99465 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xc4ad6e8c lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xce8b0f1c lapb_register +EXPORT_SYMBOL net/llc/llc 0x0139f5d9 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x1ae0a7f0 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x42bcdcc3 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5d1713ec llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xc6a46d40 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc891774a llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xeb3cb37c llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x05d16e79 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x087d91b4 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x08f8cf10 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x092862b3 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x10c7ca77 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x112e7c0f ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x130c953a ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x13774d56 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x16d49284 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x18ec27c3 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x1fb267e6 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x20d6bc90 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x228d1c3c wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2335fd21 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x23f09bc2 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x242c4e62 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x25801d84 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2635b0a4 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x28cceeb4 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x2d4145ba ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x30a5095c ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x30b628ab __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x34ca24af ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x37042ed5 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x3da88901 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x3f024fff ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x40e1c6ce ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x41dee432 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x4539158f ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x45d25926 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x4831fec6 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4851b864 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x487e6fa1 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4d38ed95 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x4e77d11d ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x514f2e33 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x51a961b9 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5448552a ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x57580fea ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5cb9cf20 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x62f8bb49 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x6925b170 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x699fbf5e ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x6a436e91 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x6c13db13 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x6c8fee2d ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x7570fca0 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7af227d3 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x7bcef155 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x7e06d7b2 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x7e7a9c21 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x94d9bf18 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x98f98079 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9bf17912 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa0ca8f9d ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa1db28fb ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa377db4d ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xa9bd6a3d ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xaaa10c33 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xadf40913 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xb112daae ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb8ca0374 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xbe64fef1 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc1924cac ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xc3c62a8b ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc86833d4 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xccfec341 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xd0b2478c ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd2368d65 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd237768b ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd9262f4d ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xddb41a5c ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xe3aebd2a __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe6815130 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xedd211d6 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xeecdd4f6 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf9d0a6e2 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xfbd04f45 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x24a546d1 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x4feceafa ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5bf6ffe0 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x624074bf ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x7bcd5bac ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x86a133c0 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xc64104dd ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xd0720de2 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xe091afad ieee802154_unregister_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x344685e3 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x66258ba7 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8f15035d unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa52d8f89 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xac236a52 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaed432f7 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb719509a register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbcbaaa2c ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc2538957 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd5c449c8 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd7466737 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe8b3bf06 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeaf914af ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfffb2913 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x049b5a02 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x49716f87 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xecf407e6 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x0a8a47db nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x1ae87b2f nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xa5061467 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xa5d9af4a nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xa69a341f nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xdabef5f2 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x082db8e8 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x1c519785 xt_register_target +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 0x487fa7e5 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x57427d3f xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x5c1b393a xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x5f6b7514 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb8ad07fc xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xc8ccaa37 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe8432bf2 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xfddc7c24 xt_unregister_target +EXPORT_SYMBOL net/nfc/hci/hci 0x0d3acd7b nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x102ed4e8 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x15e03605 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x16ab453e nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x2ab5f4af nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x3d2e5f4c nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x55f52411 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x709a3386 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x7b688ad3 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x7e98f674 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x7faf21fe nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x93d8997f nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xb10c3535 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xd26b6629 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xd9f5fbec nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xe4157eac nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe807bf19 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xf100b313 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf1dafb28 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x05651111 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x27a87467 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x2fa4de75 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x3c129891 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x457ca406 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x5210b439 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x52cf520e nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x82c46761 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x886ec53c nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x88d53e12 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x8b6926bf nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xac0a9465 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xb3bf6f90 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xd076bfd0 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd8efdae8 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xe7c8d98c nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xf6f0c5b8 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xf762f916 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xf9f51f6e nci_prop_cmd +EXPORT_SYMBOL net/nfc/nfc 0x060ffcad nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x0ec7de79 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x25d58bc5 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x268f9b56 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x40e0a5f6 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x484c9c0f nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x60a97728 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x6db09c06 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x6ff51970 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7a38346c nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x8ee74ce5 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x9ba9f37c nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xb3a19fb7 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xc1fb4429 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xcea77b3c nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xd27795b5 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xdc0d81b5 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xee6b235e nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xf0b2666f nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xf69836eb nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xf6d2980e nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xf8b5cfae nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc_digital 0x00d5f9ee nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x0b1af6c5 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x2622c500 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa3a49b3a nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x1e9fa872 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x4d423a51 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x6de4b027 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x814a36c1 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x852a824b phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xa5f16a5b pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc49ded98 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xed25e4c9 pn_sock_get_port +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3d9fe549 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x481bb7ca rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x69eb9014 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8c284639 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x97f360dd rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x99718561 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9cad913a rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc00c20ea rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd50c51c2 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd94fbcdb key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe25fa5ed rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe5dbd359 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe867afd4 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xed3b2410 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfaf895c8 rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0xe0f860ab sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x3cf42c40 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x5b9c8606 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x85961392 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3be1164c svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x9621fbec xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xfb6a9c46 xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x2de0b32a wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xeb68a1fc wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x024d4aa1 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x0419670c ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x05810aa9 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x05b1b675 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x08a05acf __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x11473c98 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x12975707 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x16e188be regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x186ed47c cfg80211_ch_switch_started_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 0x19e82670 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1c21d81a cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x23769ba4 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2475be50 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x25ca8eeb cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x26617954 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x296967cc cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x297c80b7 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x2981d8cb cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x2c0b9156 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x344ed6ca cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x358dd13c cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4911b2c6 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4d4e0c0d regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x53133e87 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x56ee3a2f __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x573ee921 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x5847af4b cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x5a4b2aee cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x5e5eb021 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x60e9838b cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x62356491 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x64fad265 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x66c3a0c7 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x66e65fdb wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6ff0c6e3 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x70add5cc wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x71f1749a cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x728b0068 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x741fa888 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x75b5c73f cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x7be95a46 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x7d9324f2 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x7ea0fdc8 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ed20083 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 0x805f8392 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x818899e3 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x852d36bb cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x86422a29 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8eae1bf5 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x9132b94e cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x92ba459d cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x92ff5737 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x94250488 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x98d9a2e4 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x9c02dae6 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x9d641603 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x9e0e126e wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa15b92e0 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa4c72ac0 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xa6782f55 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xaa5d5d59 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xb090e1d9 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xb2579215 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbaf62fe6 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xc523375d cfg80211_tx_mlme_mgmt +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 0xc9d18e6d wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xc9e4e021 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xcb0b02ff cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd56010cb cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xd6a85a0d __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xdaa92095 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xdb609190 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xeb415b32 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xede21176 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xef4fb18e cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf39c2766 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfc460438 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xfd02afb3 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfeb128a4 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff6acf59 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xff8af5d8 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/lib80211 0x4a8b4429 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x79339514 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x91967309 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xa6e87aa4 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xad9a0cee lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xeb24088c lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0x67a4642a ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x7f8b73fe 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 0x4043f2dc snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x69e5ade9 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 0x7bd09f85 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa9225971 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 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 0xf6ebef3b 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 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 0xa07a9d7d snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x02308f7f snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x06551d9b snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x0cfd8a9a snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x0e372808 snd_jack_new +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 0x19d5932d snd_power_wait +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 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x361f305b snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x37e91bcf snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x43421895 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x48bfacd4 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x48fd245b snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4aa10725 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x4c89b95d snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x532c8744 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x5c62db2e snd_cards +EXPORT_SYMBOL sound/core/snd 0x5f0d6e32 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x5f6b8ed0 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x60b937ca snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x62232500 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x63fad323 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x6b00f1ac snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x6dc5ecf0 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x711bbcbc snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x7178cd70 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x75a88d4a snd_register_device +EXPORT_SYMBOL sound/core/snd 0x7881a18e snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x7b7255d9 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x7e75e758 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x80392693 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x83c3e736 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x8db3bd95 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x8dc6f829 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x8dce0b79 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x96f7ad0e snd_card_file_add +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 0xa5e31aa5 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xa9c13a19 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xaa26dcf5 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xae69be72 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xbb09bc52 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xbd784326 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xc5bf8c25 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xcb3bf5be snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xd02965cc snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xd92677f1 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xdc3341f0 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xe21d9596 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xe8e131a4 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xedf2e273 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xf8e3c95f snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x4207cc75 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x03ff0965 snd_pcm_kernel_ioctl +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 0x0bf0a8cc snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x0cc2afc6 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1e25c083 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x23e374a2 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x243c6b7a snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x2570d64f snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x274a6142 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x28e7313d snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x2c341cbe snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x2c9e42ff snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x3249ff54 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x35878876 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x35dfccce snd_pcm_hw_param_first +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 0x40037037 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x4011509f snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0x4217256e snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x44d5d908 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x4d4f0133 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x4f6e45ce 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 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5cfbcdda snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x5d845ad0 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x63ea84be snd_pcm_hw_constraint_pow2 +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 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7332e068 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x7b652d8c snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x81f3391e snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x82c439aa snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8887ac9f snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x92736edb snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x96a1ce59 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x97797d73 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x99d64cf3 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xa505053a snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xaae4ec68 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xab696701 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbdab55bf snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xbe509330 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc09aee48 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xc45aec29 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc66abb6d snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xca34c226 snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0xcbd806e2 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xce3a7506 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xd18a6dfc snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xd2e30931 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xdf074575 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xe35ed8df snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe51c5d82 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xee8d3e1c snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0186bded snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x096005c0 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x47549414 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x489aaeaa snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x49db527a snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x50e60a16 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x529f06c1 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x571c6c99 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x59dc2a7f snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6a8de7d2 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8e5777e9 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbcda1312 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcb852396 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xce2e81af snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd00dab1b snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe3e23edf snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe9cee4bf __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xec993692 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf74b4a6f __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x0a2c155d snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x347d75d8 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x39754efc snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x4ede8a70 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x50450180 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x59fdaa21 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x75585ccc snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x7adb0c03 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xaf1ef673 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xb98ab8c3 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xcff05483 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xf943d97b snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xf9d04961 snd_timer_pause +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 0xdbfb48a4 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0a7e6a7a snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x24578a75 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x314f22ce snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x423ce186 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x59aa93fe snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x67c2a20a snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9dc3e170 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcb76175a snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd4916cbc snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0d6a98ef 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 0x458e8c39 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x52cf179e snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x565030db snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x67330c35 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x740b1454 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x86cf05f9 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xab1ebdcc snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb1806648 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x05980505 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x09eb1bfe amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18910bba amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18c7184b amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1bd453ae avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1fe342b8 amdtp_stream_stop +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 0x33adcc79 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3d0d8570 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x50637a28 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59dd9966 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5ae09c45 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5f688016 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x640a3106 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6816787d iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x684fc619 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x77301eb7 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7e6f09cb amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7ec29124 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x815e7df0 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9093d5c9 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9426a41f cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9d4c06ed amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa2b8c935 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb3f2ea6a amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcb2e0199 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd4c8f0db cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe1189965 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xee93836d fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef6b836d cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3166d7a cmp_connection_check_used +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x921a2b82 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xd1f14ab2 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x08107c75 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc099f633 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd32f7b4a snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe02a7f54 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe82d512f snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe84d9ccd snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf49f9c1b snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf7a3be12 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x2ea53a28 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x4e1b051c snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9e2f70cf snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa692ff8c snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xe1faf3c0 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xfd9c3064 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x02cda083 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x56c6d8ba snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe17a488b snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe6e969d6 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x952340ce snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc94e0cef snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x19a06e5c snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x62ad562b snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xbf33095a snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc3f71775 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xda35979c snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe7dc42b3 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x0333d88a snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1a38f1c6 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x2e49cf45 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x41015879 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa41f1dbb snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdf5b16fd snd_i2c_bus_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0a7e88b1 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2d3a0a1d snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5769319c snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x64b5922c snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6b334be6 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7ecbdc3e snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x877ec155 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x90110069 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xea948a9d snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xfcdfe1f0 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x12bcfb4d snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1a51b6ba snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x259678a7 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x28470a0b snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x34ed0d7b snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x368505b9 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x471e0b49 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x589e0d08 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x60ac1c14 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c9e0d73 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x859b2715 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x87f12db9 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa77f9d5d snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbc87e3d4 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcfdf20b9 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdb789ced snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfbd9e283 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x9a7ee8bb hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0a68843a snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0e144204 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x42b460fd snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5440bf78 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbd4bad41 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcbffad8f snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd3a339b9 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdfe07a59 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf0fd8ee1 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x1266eeeb snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x4ba95ca6 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xc57a29a0 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2cbf6c0d oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4f9c21fb oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x55bcc827 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x619e4f66 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6ac464b0 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7960a6ea oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8596894c oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x894110b9 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8be56b7c oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x996f9391 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xafc88318 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb6b32a41 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb6f37c34 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc843ea60 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc9ad1c8b oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcc66ffb2 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd4f6e528 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb4fcaed oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe14c831d oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe1d9fa67 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xec1075a5 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x452c19d1 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4dc40252 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xd927e168 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xdc90c1be snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfcbf4731 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x88574884 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xc5b6bc12 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0x806b10ca sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0x27e39e49 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x2c88578d register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x3dfdf742 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x58569b02 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x77910c9d register_sound_midi +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 0xd90b172b register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xf11c1131 sound_class +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0d574319 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1dbf1486 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 0x952d3421 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xca5577d8 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xdf1ac64b snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xea2d4701 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x01aa0213 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x059fc7fb snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x200c99f4 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x40db7e75 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x459424bd snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x65e11301 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xde5f51d1 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe1adff47 __snd_util_mem_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x11a0a3d2 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 0x0027fbca from_kuid_munged +EXPORT_SYMBOL vmlinux 0x002c5cc3 agp_copy_info +EXPORT_SYMBOL vmlinux 0x005c28af blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x0060e038 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x007a35dc pci_select_bars +EXPORT_SYMBOL vmlinux 0x0098c011 km_query +EXPORT_SYMBOL vmlinux 0x009ecc18 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00c4dcc7 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x00d6804a ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00dec270 key_link +EXPORT_SYMBOL vmlinux 0x00e9ab45 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x013575c2 blk_make_request +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x01804745 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x01a3c225 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x01cd6a21 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x01f25e93 ht_create_irq +EXPORT_SYMBOL vmlinux 0x01f54039 skb_dequeue +EXPORT_SYMBOL vmlinux 0x01f77635 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x023005e1 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +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 0x027ec3f5 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ae067b devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ed29ab param_set_int +EXPORT_SYMBOL vmlinux 0x03041f24 search_binary_handler +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03498156 cpu_rmap_update +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 0x0388fd50 dump_emit +EXPORT_SYMBOL vmlinux 0x03a94161 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x03ac6d78 to_ndd +EXPORT_SYMBOL vmlinux 0x03c525fe pagevec_lookup +EXPORT_SYMBOL vmlinux 0x03c6483f __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04105f77 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x04298b8a copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x043bbe70 phy_resume +EXPORT_SYMBOL vmlinux 0x04467504 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044c8962 tty_devnum +EXPORT_SYMBOL vmlinux 0x04620b1c xfrm_state_update +EXPORT_SYMBOL vmlinux 0x0474bc6e scsi_init_io +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x049e44b6 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x04a1c524 dev_deactivate +EXPORT_SYMBOL vmlinux 0x04b045d1 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x04ba8cb3 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x04bbbbe6 scsi_print_command +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 0x04f3c24e elv_rb_del +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05157d4a vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x0519659b vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05aaa104 blk_put_request +EXPORT_SYMBOL vmlinux 0x05c372d1 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x05cc1ce2 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05f85d1e param_array_ops +EXPORT_SYMBOL vmlinux 0x06052f8d __memmove +EXPORT_SYMBOL vmlinux 0x06065ad0 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062b412f swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0636f28d blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x063aec96 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x06487dd3 blk_start_request +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06a5a458 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x06b99657 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x06bc275c sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06d5d8c5 mount_subtree +EXPORT_SYMBOL vmlinux 0x06ee621b __getblk_gfp +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff73a9 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073b44cd netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x074a01f1 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x077cc1ff inet_add_offload +EXPORT_SYMBOL vmlinux 0x078597ea pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x079711e4 security_path_rename +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b53933 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x07b61f4c fb_set_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d081ba __netif_schedule +EXPORT_SYMBOL vmlinux 0x07e364a3 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x08048c08 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x080b4ebe inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x081fd534 nd_device_register +EXPORT_SYMBOL vmlinux 0x08237a29 sk_dst_check +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x085416dc account_page_dirtied +EXPORT_SYMBOL vmlinux 0x085e648f phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x08602f22 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x0869fe04 set_anon_super +EXPORT_SYMBOL vmlinux 0x087d1fc5 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08b7125e __free_pages +EXPORT_SYMBOL vmlinux 0x08bbde1b input_free_device +EXPORT_SYMBOL vmlinux 0x08bf4297 scsi_device_put +EXPORT_SYMBOL vmlinux 0x08d267b4 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08ffa6fd nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x09003406 init_task +EXPORT_SYMBOL vmlinux 0x0928811a swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x093a1f5e scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x09498a45 agp_free_memory +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095cbd51 user_path_at_empty +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 0x099e0c1b sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x09a06735 would_dump +EXPORT_SYMBOL vmlinux 0x09a374b4 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c7dcf4 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x09eb36ca mdiobus_read +EXPORT_SYMBOL vmlinux 0x09f273fa lookup_one_len +EXPORT_SYMBOL vmlinux 0x09f5d7a1 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x0a0d86ab netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x0a176873 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a56ef54 md_integrity_register +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5bc82a gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x0a603eb0 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x0a63290f mmc_of_parse +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a71b9d2 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aacb011 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x0ac9f9a7 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad67b0c inetdev_by_index +EXPORT_SYMBOL vmlinux 0x0add5bfa save_mount_options +EXPORT_SYMBOL vmlinux 0x0b015e07 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b3de4ad blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b868a3f inet_frags_init +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b913db1 tty_unlock +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bbc8dcf tcp_release_cb +EXPORT_SYMBOL vmlinux 0x0bbec5e0 devm_request_resource +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0be9d0a7 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x0bee402c remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x0c098057 drop_nlink +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c254615 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x0c28d207 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x0c3f7790 dquot_file_open +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c57a79a mdiobus_scan +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c922d76 iterate_mounts +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cd905e1 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0d218769 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x0d29810c tcp_check_req +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d3f2305 tcf_action_exec +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 0x0d82dd74 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x0d85d392 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x0d860bdb blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0d88b2bc blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x0d8cebe9 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x0d95239e ns_capable +EXPORT_SYMBOL vmlinux 0x0d989d94 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x0da0de2e dentry_open +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dd599df __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0dda1270 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x0ddbd36d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x0e28a097 bdget +EXPORT_SYMBOL vmlinux 0x0e3a2e40 key_type_keyring +EXPORT_SYMBOL vmlinux 0x0e4b77b6 __quota_error +EXPORT_SYMBOL vmlinux 0x0e4d0e67 d_find_alias +EXPORT_SYMBOL vmlinux 0x0e4ea258 __module_get +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8aa534 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0eca444c find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0edaa889 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x0ef52c5b block_write_end +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f394174 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4eb949 dput +EXPORT_SYMBOL vmlinux 0x0f610df3 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7351cf dquot_get_state +EXPORT_SYMBOL vmlinux 0x0fa263f4 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc5e040 read_code +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fda5cb8 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x0fdeeb5b nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff2eff0 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x101c3e7e ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x101ce267 simple_write_end +EXPORT_SYMBOL vmlinux 0x1026b432 arp_send +EXPORT_SYMBOL vmlinux 0x103de73f neigh_for_each +EXPORT_SYMBOL vmlinux 0x105862cb param_ops_ushort +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1083e9c0 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10a0b3cc mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x10a7ffa8 lease_modify +EXPORT_SYMBOL vmlinux 0x10b118f8 security_inode_permission +EXPORT_SYMBOL vmlinux 0x10c1a6d2 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x10c2f187 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x10c3ab5e freezing_slow_path +EXPORT_SYMBOL vmlinux 0x10cafe0e __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x10e1787c pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x10ea691e netdev_warn +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1108bc9e __invalidate_device +EXPORT_SYMBOL vmlinux 0x11175479 revalidate_disk +EXPORT_SYMBOL vmlinux 0x11190342 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x11228810 bioset_free +EXPORT_SYMBOL vmlinux 0x1133df49 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x113be7ee netlink_net_capable +EXPORT_SYMBOL vmlinux 0x116317e1 filp_open +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 0x118bf809 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11bd1342 vme_master_request +EXPORT_SYMBOL vmlinux 0x11d83409 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x11dcd8e8 get_task_io_context +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fbb63c vlan_ioctl_set +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 0x12244681 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x122adcfc vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x12387a13 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x1239e57e cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x12618065 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x1263fe3d dcache_dir_open +EXPORT_SYMBOL vmlinux 0x129cd922 generic_permission +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a2e648 scmd_printk +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a5a703 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x12b0a72f filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x12b10e3a skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132c8a03 __breadahead +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x136f59ba ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x1381cae8 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x1387ece8 dst_destroy +EXPORT_SYMBOL vmlinux 0x138f72ab unlock_page +EXPORT_SYMBOL vmlinux 0x139500d4 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x139c98d6 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x14154e22 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x142f76d1 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x143db96c pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x1460338b nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x14618415 param_set_short +EXPORT_SYMBOL vmlinux 0x1481ad37 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x149931fb agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x14a11108 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x14a9f7c1 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x14e01246 sync_blockdev +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x15041dd3 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x152e8c47 skb_store_bits +EXPORT_SYMBOL vmlinux 0x152f6b0a pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x15351212 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x15402e96 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x1547bfd6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x15492bd1 set_pages_wb +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1565ac30 param_ops_string +EXPORT_SYMBOL vmlinux 0x1567fd62 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x159fad24 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x15a1fe7c input_set_abs_params +EXPORT_SYMBOL vmlinux 0x15ade914 d_add_ci +EXPORT_SYMBOL vmlinux 0x15b80495 tso_start +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15e6b673 freeze_bdev +EXPORT_SYMBOL vmlinux 0x15f846ce netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x160582ee first_ec +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 0x16455866 md_reload_sb +EXPORT_SYMBOL vmlinux 0x164f0e6b md_finish_reshape +EXPORT_SYMBOL vmlinux 0x16525b05 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x165cf531 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x166dafdd tcp_sendpage +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x168ecf66 param_ops_bool +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e6f358 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x17482bbf mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x177dc3ec inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x178fc438 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17abaa5c tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b5d87d xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x17dfa9a0 cad_pid +EXPORT_SYMBOL vmlinux 0x17e4d54c i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f4e995 __frontswap_load +EXPORT_SYMBOL vmlinux 0x17fb6dfb tty_do_resize +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1872d3f3 input_register_device +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a4709e pagecache_get_page +EXPORT_SYMBOL vmlinux 0x18a9ca04 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18ca6192 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x18da8807 seq_release_private +EXPORT_SYMBOL vmlinux 0x18f874e3 blk_register_region +EXPORT_SYMBOL vmlinux 0x1901d72f cfb_copyarea +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x193a9596 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x19439f53 genlmsg_put +EXPORT_SYMBOL vmlinux 0x194fe2ed __register_nls +EXPORT_SYMBOL vmlinux 0x1969aad8 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x19707f07 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x197ef32d inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x1990b9af mmc_erase +EXPORT_SYMBOL vmlinux 0x199df22d pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19aae6cc security_file_permission +EXPORT_SYMBOL vmlinux 0x19aea851 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x19b3b64d dm_kobject_release +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19d288be skb_clone +EXPORT_SYMBOL vmlinux 0x19e0521d __elv_add_request +EXPORT_SYMBOL vmlinux 0x19e9a627 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x19ff7a6e get_phy_device +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a7e0388 alloc_file +EXPORT_SYMBOL vmlinux 0x1a87920c rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ac7b927 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x1ad241df mutex_lock_interruptible +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 0x1b175c61 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x1b1d999b d_invalidate +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2c6dab __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x1b4bf6e4 tcp_connect +EXPORT_SYMBOL vmlinux 0x1b4d7748 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x1b565848 kdb_current_task +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b628fbd d_tmpfile +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b73501c tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x1b78c44e fb_set_suspend +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8ac5b8 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8b9e93 km_policy_expired +EXPORT_SYMBOL vmlinux 0x1b8d0fe4 kill_pgrp +EXPORT_SYMBOL vmlinux 0x1ba1b971 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x1bafd8e5 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1be42a50 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x1bf1283f __page_symlink +EXPORT_SYMBOL vmlinux 0x1bf366eb nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x1bfa4900 poll_freewait +EXPORT_SYMBOL vmlinux 0x1bff4cc8 replace_mount_options +EXPORT_SYMBOL vmlinux 0x1c06abea block_write_begin +EXPORT_SYMBOL vmlinux 0x1c122c40 __sb_start_write +EXPORT_SYMBOL vmlinux 0x1c1d4c5a blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x1c64a14e uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1cb4a269 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x1ccb416b __put_cred +EXPORT_SYMBOL vmlinux 0x1ccfe0de inet6_offloads +EXPORT_SYMBOL vmlinux 0x1cd9e06e skb_seq_read +EXPORT_SYMBOL vmlinux 0x1cdf5287 param_set_ushort +EXPORT_SYMBOL vmlinux 0x1cf8cebc rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d4ff733 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x1d592690 release_firmware +EXPORT_SYMBOL vmlinux 0x1d675ee2 cdev_add +EXPORT_SYMBOL vmlinux 0x1d6e13ad skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x1d84417d pid_task +EXPORT_SYMBOL vmlinux 0x1d99539b blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x1da03c0a mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x1da4c946 key_validate +EXPORT_SYMBOL vmlinux 0x1daf12a8 ll_rw_block +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dbd3c7d phy_start_interrupts +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 0x1de22e21 agp_unbind_memory +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 0x1e10a247 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x1e1ee7e3 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x1e253546 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e44855a devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x1e4bf4da is_nd_btt +EXPORT_SYMBOL vmlinux 0x1e548479 simple_fill_super +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7abc9d netdev_change_features +EXPORT_SYMBOL vmlinux 0x1e8e553e wireless_send_event +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb2b527 request_key_async +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1edee756 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x1ee63ab9 secpath_dup +EXPORT_SYMBOL vmlinux 0x1efd4330 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x1f0530a5 sget +EXPORT_SYMBOL vmlinux 0x1f3bba1f phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x1f693edc i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f6ef667 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x1f7dadc4 register_quota_format +EXPORT_SYMBOL vmlinux 0x1f7e3f51 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x1f9b7ad8 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x1fa5094d vme_unregister_driver +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 0x1ff52d2e cpu_info +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20001043 vfs_readv +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 0x201c1f66 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x201ed40d x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x2033842e kmem_cache_size +EXPORT_SYMBOL vmlinux 0x2036b0b0 crypto_sha256_update +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 0x2058b970 dqget +EXPORT_SYMBOL vmlinux 0x2059a447 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x205ce49b clear_nlink +EXPORT_SYMBOL vmlinux 0x207191fc vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208162b3 set_binfmt +EXPORT_SYMBOL vmlinux 0x2085b9d8 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x20865d78 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x208faa0f __napi_complete +EXPORT_SYMBOL vmlinux 0x2097c8e0 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20b00f33 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x20c3f8a3 simple_unlink +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c81901 ping_prot +EXPORT_SYMBOL vmlinux 0x20cca1c2 seq_pad +EXPORT_SYMBOL vmlinux 0x20d2362d backlight_device_register +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e07089 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ec0cad blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x2121afa5 genl_notify +EXPORT_SYMBOL vmlinux 0x21382fc9 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x2145efe0 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x2146d902 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x21701c7e blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x218b61d9 generic_file_open +EXPORT_SYMBOL vmlinux 0x219167a8 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x219e4f74 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x21a4bb01 phy_disconnect +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21b807d3 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x21c1dcce do_splice_from +EXPORT_SYMBOL vmlinux 0x21c9ac59 vfs_getattr +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x21f57f1b input_close_device +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x22152aee d_instantiate +EXPORT_SYMBOL vmlinux 0x2220c03e neigh_table_clear +EXPORT_SYMBOL vmlinux 0x2221aedf pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22402679 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x224cba85 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x225b36e4 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x226ca8bb alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x229ca6e1 set_pages_x +EXPORT_SYMBOL vmlinux 0x229dd5aa unregister_filesystem +EXPORT_SYMBOL vmlinux 0x22b01e96 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22ec858b sock_recvmsg +EXPORT_SYMBOL vmlinux 0x22edc855 padata_alloc +EXPORT_SYMBOL vmlinux 0x22f82b29 module_put +EXPORT_SYMBOL vmlinux 0x230bcaa1 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2366639e iget_locked +EXPORT_SYMBOL vmlinux 0x2373aecc jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x238f5c1a _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b00420 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x23b69a36 tty_port_close +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bdaf4d clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cef5f0 inode_init_owner +EXPORT_SYMBOL vmlinux 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23dc4e2b blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x23e746d0 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x23fabff9 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240af0d0 dev_addr_init +EXPORT_SYMBOL vmlinux 0x240bcf29 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244407af iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x24724104 migrate_page +EXPORT_SYMBOL vmlinux 0x24747cb8 dcb_getapp +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x2488415e __nd_driver_register +EXPORT_SYMBOL vmlinux 0x2498ce76 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x24af7809 d_drop +EXPORT_SYMBOL vmlinux 0x24b905f8 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x24be3b05 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x24d5b266 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x24f5862b sock_from_file +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250bd54a qdisc_list_del +EXPORT_SYMBOL vmlinux 0x25150e51 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25474976 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x2550a27e lro_receive_skb +EXPORT_SYMBOL vmlinux 0x255c2728 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x25603807 md_check_recovery +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a0d302 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25d10403 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x25de6c8f bio_add_page +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ec8dd3 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x25f9673f pci_iounmap +EXPORT_SYMBOL vmlinux 0x25fd292e i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x260c3532 simple_follow_link +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 0x266c5eaa sg_miter_stop +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x26b7749c vme_irq_generate +EXPORT_SYMBOL vmlinux 0x26c15f72 rtnl_link_get_net +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 0x26e8f58d mmc_remove_host +EXPORT_SYMBOL vmlinux 0x26fbf8e6 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x2714add9 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x272d48f3 follow_pfn +EXPORT_SYMBOL vmlinux 0x27326e49 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x27485275 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2761c243 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x276e48a4 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x2796a7f2 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a26097 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x27a7846f arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x27abfc66 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b340e4 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27d0ae3b ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x27d12fa0 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x27dc314e generic_make_request +EXPORT_SYMBOL vmlinux 0x27df46fe fs_bio_set +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f20bae __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x27f73d13 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x280c606e scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x28492df8 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x284e243d dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x284ee0cf pskb_expand_head +EXPORT_SYMBOL vmlinux 0x2864b81e tty_insert_flip_string_fixed_flag +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 0x28b2c64a set_nlink +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28eb5103 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x28f65b9e __kfree_skb +EXPORT_SYMBOL vmlinux 0x290c42c0 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x29122e90 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x2915e0e2 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296e3f4c nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x29baa616 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x29d9b6a3 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x29df6d0c simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x29eecb5e pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x2a19fac1 blk_free_tags +EXPORT_SYMBOL vmlinux 0x2a28f247 pci_find_bus +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3fd6c4 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a632b64 dump_align +EXPORT_SYMBOL vmlinux 0x2a640382 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x2a74e491 nf_register_hook +EXPORT_SYMBOL vmlinux 0x2a7aa0c3 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x2a8b8f4d fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x2aac963e dquot_alloc +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ac4a6cf mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2adcf600 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x2ae019e2 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x2ae79674 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b157335 __inode_permission +EXPORT_SYMBOL vmlinux 0x2b17bc1f lock_fb_info +EXPORT_SYMBOL vmlinux 0x2b24c2e9 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x2b2a3b46 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b72435d icmpv6_send +EXPORT_SYMBOL vmlinux 0x2b86e110 devfreq_unregister_opp_notifier +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 0x2bb94502 vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0x2bb9c2b1 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x2bd24720 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x2bd3d33a pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c0cb7af pci_set_power_state +EXPORT_SYMBOL vmlinux 0x2c0fe13b pnp_start_dev +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c436b28 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x2c44c6eb cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x2c8d85c4 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cab0578 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x2cb47e00 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2cecaddd current_fs_time +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d4605db set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x2d530ebc wake_up_process +EXPORT_SYMBOL vmlinux 0x2d8f4709 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x2d945355 fput +EXPORT_SYMBOL vmlinux 0x2db19494 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x2db59b22 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x2dc6a5be skb_queue_head +EXPORT_SYMBOL vmlinux 0x2dcfa2b8 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x2dcfe624 skb_checksum_setup +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 0x2df1a1b2 bio_copy_data +EXPORT_SYMBOL vmlinux 0x2e03ec6d d_alloc +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e0e1036 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e36606f __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x2e38c482 udp_set_csum +EXPORT_SYMBOL vmlinux 0x2e440aa3 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x2e687236 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x2e86f331 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x2ea4460c kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x2eb1669d tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x2eca0784 rtnl_notify +EXPORT_SYMBOL vmlinux 0x2edc2c02 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x2ee7d05f mmc_detect_change +EXPORT_SYMBOL vmlinux 0x2ef3911a put_tty_driver +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 0x2f226a71 input_open_device +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f45d2a2 get_cached_acl +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f47dd38 cont_write_begin +EXPORT_SYMBOL vmlinux 0x2f4bad09 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x2f50ac45 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x2f624d49 kill_fasync +EXPORT_SYMBOL vmlinux 0x2f88f68c pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x2f99a793 gen_pool_create +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc6bc63 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x2fc77472 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2feb4376 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x2febc6ab pcie_set_mps +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x2ffa721b devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x30253f9e ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304396d3 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x304895bc proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x3055f9d2 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x3070212f put_disk +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308cadc9 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30ba0529 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x30bce685 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x30bfcbd2 dquot_drop +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30eb37db phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x30ebf19b tcp_proc_register +EXPORT_SYMBOL vmlinux 0x30f950a4 ether_setup +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31258d0d dst_alloc +EXPORT_SYMBOL vmlinux 0x3129333a devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31559a3c scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x315b8ce1 proc_set_size +EXPORT_SYMBOL vmlinux 0x3171454b netlink_ack +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317b8eca tty_port_hangup +EXPORT_SYMBOL vmlinux 0x317d21e8 bdgrab +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31a6f4bb dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b5f73b sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x31c4b236 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x31ca0a90 dev_crit +EXPORT_SYMBOL vmlinux 0x31d33e79 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31f5ebcf md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x320c2fb1 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x32242c1a tty_set_operations +EXPORT_SYMBOL vmlinux 0x322c2b93 find_vma +EXPORT_SYMBOL vmlinux 0x32395408 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x324fc54a __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x3254cf79 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x325fe078 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32a6eabe try_module_get +EXPORT_SYMBOL vmlinux 0x32b86aa8 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x32bcb6bb clk_add_alias +EXPORT_SYMBOL vmlinux 0x32c3db7d tcp_parse_options +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32e1d560 bmap +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32fa852e mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x330a08ee simple_release_fs +EXPORT_SYMBOL vmlinux 0x331886c6 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x331d4522 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x331f95ed scsi_remove_device +EXPORT_SYMBOL vmlinux 0x3335740a d_genocide +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3343a11f ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x33477279 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x334fdbae genphy_read_status +EXPORT_SYMBOL vmlinux 0x3356b90b cpu_tss +EXPORT_SYMBOL vmlinux 0x335a99fd blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x338c94f0 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x33914227 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x33a60742 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x33b584cf proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33b8e78f xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33cfd282 get_user_pages_unlocked +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 0x34395104 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x346bb29a sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x348706b3 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x348b493e alloc_disk_node +EXPORT_SYMBOL vmlinux 0x34988547 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34bd6579 default_llseek +EXPORT_SYMBOL vmlinux 0x34c296bb __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x34cc8b69 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x34f0939f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x34f27d31 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x352b2e88 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x353290b6 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x35387b35 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x354f8803 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356c7971 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x3575f3c7 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ab8d75 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x35bc44b4 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x35cd1def __blk_run_queue +EXPORT_SYMBOL vmlinux 0x35d1f07f scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x35d620d9 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x35e3c19c eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3620d307 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x3664f1ea unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x3675a58b inode_set_bytes +EXPORT_SYMBOL vmlinux 0x36850375 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x368bb03d from_kgid_munged +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36ac6a13 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c4cb59 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x36f1286c qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x371bf2aa __sk_dst_check +EXPORT_SYMBOL vmlinux 0x371e8d92 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x373397d1 vfs_create +EXPORT_SYMBOL vmlinux 0x373c75da jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37698080 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x37762e8f sock_init_data +EXPORT_SYMBOL vmlinux 0x378cecf8 pipe_lock +EXPORT_SYMBOL vmlinux 0x378f0263 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x379e223c generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b70a97 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37f10be4 pci_clear_master +EXPORT_SYMBOL vmlinux 0x37f25296 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x37f3e083 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x38064276 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x38089bc9 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x3811f051 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38570cfd pci_bus_put +EXPORT_SYMBOL vmlinux 0x38678ba3 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388eb5c1 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x3895c522 agp_generic_free_by_type +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 0x38d321c0 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x38fa5658 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x3915ba0b tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x392369ed audit_log +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 0x3946b012 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39610537 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x398fe0ee pci_set_dma_seg_boundary +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 0x39a7f428 genphy_config_init +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39d58ab2 neigh_lookup +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 0x3a06296d pci_disable_device +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a2368fc backlight_force_update +EXPORT_SYMBOL vmlinux 0x3a2691ea cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x3a290e89 __init_rwsem +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a392068 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x3a40aaab kmalloc_caches +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ac6dae3 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x3adc81e2 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x3ae99be8 tty_throttle +EXPORT_SYMBOL vmlinux 0x3b0334eb scsi_scan_host +EXPORT_SYMBOL vmlinux 0x3b424b26 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3b5cef46 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x3b606499 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x3b640ea9 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b7a66be blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bdb6a05 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x3c01f7f0 dev_get_flags +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 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c817dcb kern_unmount +EXPORT_SYMBOL vmlinux 0x3c82487c mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x3c8e89f5 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x3c98e061 acl_by_type +EXPORT_SYMBOL vmlinux 0x3cb2c730 finish_open +EXPORT_SYMBOL vmlinux 0x3cd61801 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf972a9 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x3d02ea1f tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x3d1194e0 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x3d3cb8eb inet_del_protocol +EXPORT_SYMBOL vmlinux 0x3d48702e blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x3d50dd9b from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x3d555811 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d907308 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3d945971 dst_release +EXPORT_SYMBOL vmlinux 0x3d99abde param_set_byte +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 0x3ddbefdc agp_put_bridge +EXPORT_SYMBOL vmlinux 0x3dea7620 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x3dee1553 mmc_free_host +EXPORT_SYMBOL vmlinux 0x3dfc2978 inode_init_once +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e07b8d2 request_key +EXPORT_SYMBOL vmlinux 0x3e1748ac get_fs_type +EXPORT_SYMBOL vmlinux 0x3e21d82d sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x3e251a9f mdiobus_write +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e3448d2 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x3e3a6227 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x3e530f6d jbd2_journal_restart +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 0x3e98d17a acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x3eb31035 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x3ec4c0bd dev_load +EXPORT_SYMBOL vmlinux 0x3efe7dc9 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0d9f32 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f2651aa dev_get_by_index +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f568979 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x3f727229 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x3f775461 generic_readlink +EXPORT_SYMBOL vmlinux 0x3f77f3dd cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x3fa69fcc param_set_uint +EXPORT_SYMBOL vmlinux 0x3fc16bbb blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x3fc1bc53 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x3fc330ff sock_wake_async +EXPORT_SYMBOL vmlinux 0x3fcb9a10 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x40329b92 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x404c8f98 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x405a6b6d tty_free_termios +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40770c4a blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x408ff42c gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4091a9a8 phy_find_first +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 0x40b12af4 inet_frag_kill +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 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d836d8 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x411e3ca5 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414fbc15 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x416d5167 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x41731062 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0x4181fe88 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x41821846 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x4197b2cb dev_set_mtu +EXPORT_SYMBOL vmlinux 0x41bb5c7c __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x41d628ad xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x41ea8130 address_space_init_once +EXPORT_SYMBOL vmlinux 0x41f3f413 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x4214f44f sockfd_lookup +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x422846d7 pci_bus_type +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x42393c76 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x423c938b __pci_register_driver +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4254a479 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42673c95 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x4283bcee elv_register_queue +EXPORT_SYMBOL vmlinux 0x428496b6 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x4291ce7e pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x4294d518 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x4295ea08 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ba5943 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x42c21946 sk_filter +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d24aa8 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x42dcf37e neigh_seq_next +EXPORT_SYMBOL vmlinux 0x42e85c18 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x42f3c147 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x42f61e7d fb_pan_display +EXPORT_SYMBOL vmlinux 0x42f90a5b serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430f6a73 mount_pseudo +EXPORT_SYMBOL vmlinux 0x432b706a __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x434d639f netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43587659 inet_put_port +EXPORT_SYMBOL vmlinux 0x436392b6 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43869497 register_console +EXPORT_SYMBOL vmlinux 0x439b4a28 vfs_fsync +EXPORT_SYMBOL vmlinux 0x439e03df netif_carrier_off +EXPORT_SYMBOL vmlinux 0x43ae1202 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x43b2951e genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x43b459db key_task_permission +EXPORT_SYMBOL vmlinux 0x43cfe6cb lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x43d79683 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43fcb4c4 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x442ec7fa blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x44310ab9 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x44447c69 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x446760ec km_new_mapping +EXPORT_SYMBOL vmlinux 0x4469d311 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x447e5b23 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x4489da02 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44926e32 netpoll_poll_disable +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 0x44b0e02a inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44ca4539 ppp_input_error +EXPORT_SYMBOL vmlinux 0x44d4881c jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44ee103e kern_path_create +EXPORT_SYMBOL vmlinux 0x44f69964 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x44fa009b blk_finish_request +EXPORT_SYMBOL vmlinux 0x44ff993d param_get_short +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x45116975 dump_trace +EXPORT_SYMBOL vmlinux 0x452dee26 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x452e99b4 file_open_root +EXPORT_SYMBOL vmlinux 0x452fcafe neigh_parms_release +EXPORT_SYMBOL vmlinux 0x4539533e tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4546d485 dquot_operations +EXPORT_SYMBOL vmlinux 0x4560c543 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x45712a92 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x4578a21c md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45804c53 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x458b903e alloc_fcdev +EXPORT_SYMBOL vmlinux 0x458d1241 __ps2_command +EXPORT_SYMBOL vmlinux 0x4590d5d0 amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0x4598cf47 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45c742c2 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x45cfacba unload_nls +EXPORT_SYMBOL vmlinux 0x45ec6f7f page_waitqueue +EXPORT_SYMBOL vmlinux 0x45f4111e locks_free_lock +EXPORT_SYMBOL vmlinux 0x45f5be7a __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x4604a43a mem_section +EXPORT_SYMBOL vmlinux 0x46084e83 md_register_thread +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x463bd5d7 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x4641b640 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466f2a2a serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x4681b98a bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x468838da xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x469b3823 agp_enable +EXPORT_SYMBOL vmlinux 0x46a8e23c tty_port_close_end +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470c8b82 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x471a0581 softnet_data +EXPORT_SYMBOL vmlinux 0x4726f559 blkdev_put +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x476413f1 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x4773f76a netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x4775e9c3 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x477e6dcb amd_iommu_pc_get_set_reg_val +EXPORT_SYMBOL vmlinux 0x4784f50a swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47912324 vme_dma_request +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47ba9709 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x47d44f93 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x47e52bac input_register_handler +EXPORT_SYMBOL vmlinux 0x47fc30b2 single_open_size +EXPORT_SYMBOL vmlinux 0x4804ae2c tty_port_block_til_ready +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 0x48222bb9 __block_write_begin +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x484d1d4b fget_raw +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486c5423 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x4871291e dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x4890ab8e tcf_hash_search +EXPORT_SYMBOL vmlinux 0x489e1880 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x48a49752 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48b9fa4e serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x48ceefdc sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x48d08ab9 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48e03c9c kmem_cache_free +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x492866b3 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x492cf8c1 kernel_connect +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 0x498c58ac set_blocksize +EXPORT_SYMBOL vmlinux 0x49a568fc udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49b83dd8 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x49d6ac80 end_page_writeback +EXPORT_SYMBOL vmlinux 0x49dd964b tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a1a5fff add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x4a240e8c blk_delay_queue +EXPORT_SYMBOL vmlinux 0x4a3c2fdc bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x4a4210b9 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x4a7fc768 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x4a81bcc7 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x4a8671ab fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x4aaaa7dd sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x4ab619c8 vga_put +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad2d65d scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1c795e nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x4b22bc39 neigh_update +EXPORT_SYMBOL vmlinux 0x4b50431e phy_register_fixup +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b7a69ab mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x4b88c2fb param_ops_long +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4c05e380 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x4c1d295c input_unregister_handler +EXPORT_SYMBOL vmlinux 0x4c1e7c0d blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c3e13bf fget +EXPORT_SYMBOL vmlinux 0x4c470cf8 d_obtain_root +EXPORT_SYMBOL vmlinux 0x4c4761af set_trace_device +EXPORT_SYMBOL vmlinux 0x4c4f1833 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x4c64108a pneigh_enqueue +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 0x4ca3d0ee tcp_poll +EXPORT_SYMBOL vmlinux 0x4ca50f5e proto_unregister +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4caaadce mpage_writepages +EXPORT_SYMBOL vmlinux 0x4caceae2 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x4cc4c18f xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x4cccc1d4 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x4cd45434 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cde083a phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x4cee6b86 mount_bdev +EXPORT_SYMBOL vmlinux 0x4cf26ee1 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x4d0ea2a5 touch_buffer +EXPORT_SYMBOL vmlinux 0x4d0ef1ee netdev_update_features +EXPORT_SYMBOL vmlinux 0x4d2545a1 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x4d28b640 kill_litter_super +EXPORT_SYMBOL vmlinux 0x4d2c112f vfs_symlink +EXPORT_SYMBOL vmlinux 0x4d3d3a19 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x4d423460 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x4d443380 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x4d534d91 vfs_writef +EXPORT_SYMBOL vmlinux 0x4d5a6594 param_get_int +EXPORT_SYMBOL vmlinux 0x4d69de73 pci_bus_get +EXPORT_SYMBOL vmlinux 0x4d74709a mb_cache_entry_find_first +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 0x4dbb54f5 netif_rx +EXPORT_SYMBOL vmlinux 0x4dd278b2 pci_iomap +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e186c6a scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x4e25df4a md_update_sb +EXPORT_SYMBOL vmlinux 0x4e27beda flush_signals +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e359b68 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x4e4d9c47 locks_init_lock +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e829b47 dev_add_offload +EXPORT_SYMBOL vmlinux 0x4e9f0fb0 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eaf6ad6 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x4eb58542 mntget +EXPORT_SYMBOL vmlinux 0x4ed1784a find_get_entry +EXPORT_SYMBOL vmlinux 0x4ed307e5 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ee58ff6 vm_insert_page +EXPORT_SYMBOL vmlinux 0x4eec2b95 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x4ef82c1f bio_chain +EXPORT_SYMBOL vmlinux 0x4f105376 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f24c0d0 netdev_printk +EXPORT_SYMBOL vmlinux 0x4f2518de proc_create_data +EXPORT_SYMBOL vmlinux 0x4f287046 tty_kref_put +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3e2ef9 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6a2f8e tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f79a6e9 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4f9ae770 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x4fa4e926 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x4fab0836 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x4fdc481f reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50189ba0 release_sock +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5058281a forget_cached_acl +EXPORT_SYMBOL vmlinux 0x5060b6a8 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x506cd2d7 udp_del_offload +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50b94154 set_page_dirty +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50c28c2e __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x50d3d08e alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50d85eed kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50eca140 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x50ef53a2 sock_no_listen +EXPORT_SYMBOL vmlinux 0x50fec988 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5137874a skb_vlan_push +EXPORT_SYMBOL vmlinux 0x513b9dcc bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x514d70df __bforget +EXPORT_SYMBOL vmlinux 0x51511b3d f_setown +EXPORT_SYMBOL vmlinux 0x51693a97 release_pages +EXPORT_SYMBOL vmlinux 0x516ea955 send_sig +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x5176f078 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x51bc58f5 dev_trans_start +EXPORT_SYMBOL vmlinux 0x51cc6223 free_page_put_link +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51f615ec keyring_alloc +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520774b0 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x522b360a __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x522cadb6 put_filp +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x5295239b nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x529f33fe pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x52ac07ca inet_ioctl +EXPORT_SYMBOL vmlinux 0x52ce7c8b vga_get +EXPORT_SYMBOL vmlinux 0x52d7c411 fasync_helper +EXPORT_SYMBOL vmlinux 0x52e6a4c3 dev_alert +EXPORT_SYMBOL vmlinux 0x52ed85ef mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x52fcb01f ilookup +EXPORT_SYMBOL vmlinux 0x52ff0fc8 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5319bff4 mmc_release_host +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x532cd576 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5334d104 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x5339588c inet_frag_maybe_warn_overflow +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 0x538232fa i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x53865d12 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53af4feb scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x53b8681d free_user_ns +EXPORT_SYMBOL vmlinux 0x53cf5a3a md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x53d15e2e cdev_del +EXPORT_SYMBOL vmlinux 0x53dbcbf5 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x53dd1c02 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x5404eee6 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x54059a2a amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5420ce62 nf_log_trace +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x543f330f fb_get_mode +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x54571f65 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x547e4daa dma_supported +EXPORT_SYMBOL vmlinux 0x548b2879 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x549991fe skb_queue_tail +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aaf22b __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54e1346b scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f0968a __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x5508b328 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x551ba30f devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x5524e25f nf_ct_attach +EXPORT_SYMBOL vmlinux 0x5526eca2 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55469ef7 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x5556098c simple_getattr +EXPORT_SYMBOL vmlinux 0x555f6938 lockref_get +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568be2b dev_get_stats +EXPORT_SYMBOL vmlinux 0x558d9697 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x559d9563 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x55ada7a0 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x55b276da pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x55b33b34 bdev_read_only +EXPORT_SYMBOL vmlinux 0x55d222b7 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x55d2859a dquot_transfer +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x5606cd18 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x5613b863 led_blink_set +EXPORT_SYMBOL vmlinux 0x561b6042 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x569524dc __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x56bc9aa4 drop_super +EXPORT_SYMBOL vmlinux 0x56c24b85 try_to_release_page +EXPORT_SYMBOL vmlinux 0x56c4b54f agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56e153d7 genphy_update_link +EXPORT_SYMBOL vmlinux 0x56ed3c1e pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x5711fefc fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x5723ea0a rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57357aee sock_i_uid +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 0x5792051e i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57a20a9b udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x57a7dde6 inet_getname +EXPORT_SYMBOL vmlinux 0x57a89399 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x5803f4a0 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x580c2f44 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x580f6125 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5832c811 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5841f049 clocksource_unregister +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 0x586f5e93 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5883863d sk_net_capable +EXPORT_SYMBOL vmlinux 0x5884d27e arp_xmit +EXPORT_SYMBOL vmlinux 0x5896b47a pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x589bd789 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x589f1daa tty_register_device +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e58c58 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x58e83f2d pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x59016a6d neigh_app_ns +EXPORT_SYMBOL vmlinux 0x5918e71a security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x5918ecc6 blk_rq_init +EXPORT_SYMBOL vmlinux 0x5934f33f dev_alloc_name +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5961a564 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x5961e8b8 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59c3e7ef __check_sticky +EXPORT_SYMBOL vmlinux 0x59dab675 dev_mc_init +EXPORT_SYMBOL vmlinux 0x59ec2397 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a1407aa __ip_select_ident +EXPORT_SYMBOL vmlinux 0x5a344889 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a6f1cf8 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5aa0ea40 blk_put_queue +EXPORT_SYMBOL vmlinux 0x5aa4ad48 __scm_destroy +EXPORT_SYMBOL vmlinux 0x5ab36923 keyring_clear +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5aca5265 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x5ace98c8 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x5ad1d6b4 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x5adb4617 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x5ae2f4a7 padata_free +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b025c60 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b70c2f5 prepare_creds +EXPORT_SYMBOL vmlinux 0x5b78e389 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5b8b706d eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x5bb382cd generic_start_io_acct +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 0x5bd5c4b7 __break_lease +EXPORT_SYMBOL vmlinux 0x5befae3d agp_create_memory +EXPORT_SYMBOL vmlinux 0x5bf41318 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x5c000af9 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c06796a simple_readpage +EXPORT_SYMBOL vmlinux 0x5c09b696 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x5c15bd4a __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x5c342633 dquot_destroy +EXPORT_SYMBOL vmlinux 0x5c60a83b blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x5c66e3b1 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x5c9ab4c5 ppp_input +EXPORT_SYMBOL vmlinux 0x5c9b026a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x5ca8bde5 md_write_end +EXPORT_SYMBOL vmlinux 0x5cb2eb5c cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf96e72 make_kprojid +EXPORT_SYMBOL vmlinux 0x5d0161ec proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x5d0eeeb7 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x5d144fa0 generic_writepages +EXPORT_SYMBOL vmlinux 0x5d1fda4d __get_user_pages +EXPORT_SYMBOL vmlinux 0x5d24dd31 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d69646a scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d8ef0fa dev_emerg +EXPORT_SYMBOL vmlinux 0x5d920d16 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x5d9b5912 seq_read +EXPORT_SYMBOL vmlinux 0x5daa8bec eth_type_trans +EXPORT_SYMBOL vmlinux 0x5dc837c4 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x5de4bb97 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x5de71a2e skb_pad +EXPORT_SYMBOL vmlinux 0x5de91cc4 vc_cons +EXPORT_SYMBOL vmlinux 0x5e03e47b fb_find_mode +EXPORT_SYMBOL vmlinux 0x5e2f9c32 i2c_release_client +EXPORT_SYMBOL vmlinux 0x5e6fd90f dma_free_attrs +EXPORT_SYMBOL vmlinux 0x5e71772d dev_driver_string +EXPORT_SYMBOL vmlinux 0x5e781fa1 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x5e89e25d d_move +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebb6598 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed1b7af console_start +EXPORT_SYMBOL vmlinux 0x5eff8fb0 soft_cursor +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1f4bc3 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x5f37af31 __mutex_init +EXPORT_SYMBOL vmlinux 0x5f5fb85f lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x5f632a9d netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x5f6c2718 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x5f7fdf17 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x5fa58813 dm_io +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fc9cdab tty_name +EXPORT_SYMBOL vmlinux 0x5fcc3a23 set_bh_page +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdb5f7e kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x5fe082fb pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x6032c9f1 pci_restore_state +EXPORT_SYMBOL vmlinux 0x60341c26 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6035dbb7 param_set_invbool +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x608fc15f vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60c4261c udp6_csum_init +EXPORT_SYMBOL vmlinux 0x60c6da90 key_invalidate +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 0x60dfe0e1 scsi_device_get +EXPORT_SYMBOL vmlinux 0x6107695e dev_uc_sync +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x610e33e8 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x611b2ba2 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x611e78cd console_stop +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6150b94d thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x6161d3f9 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6184411e clear_inode +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x6193ec0f inet6_del_offload +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a9bacd component_match_add +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61ce52c1 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x61f7e861 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x61fb248a node_states +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x62174335 dev_printk +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 0x623d8086 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x624fe1cf pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x6250fbaa filemap_write_and_wait +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 0x628d71b5 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x62b6ba29 seq_putc +EXPORT_SYMBOL vmlinux 0x62bd8a69 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x62d476d9 follow_down +EXPORT_SYMBOL vmlinux 0x62e86935 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x62ed6fce pci_release_regions +EXPORT_SYMBOL vmlinux 0x62f17f2a max8925_reg_write +EXPORT_SYMBOL vmlinux 0x62fc2946 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6304b716 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631b84ae scsi_host_put +EXPORT_SYMBOL vmlinux 0x6331a5ee security_path_rmdir +EXPORT_SYMBOL vmlinux 0x63390f10 update_devfreq +EXPORT_SYMBOL vmlinux 0x6350f2ab compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x638b6fc3 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x639fd791 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63bb5bd7 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c857b9 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x63d085c7 make_kuid +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f1e522 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6401b0fb __ip_dev_find +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64162ff9 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x643651bb from_kuid +EXPORT_SYMBOL vmlinux 0x6447ed97 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x644f8793 dm_get_device +EXPORT_SYMBOL vmlinux 0x64572da0 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x645930fb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x648bb6b1 file_remove_privs +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649a4c3b kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64b9bc13 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c60438 kobject_init +EXPORT_SYMBOL vmlinux 0x64e3ecb2 __blk_end_request +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x650be1f2 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652b3f63 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x653fae06 genphy_resume +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655eae03 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x655fb2a6 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x656bfa36 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x65738216 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x657b289c dm_put_table_device +EXPORT_SYMBOL vmlinux 0x65899864 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x65936b0a i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x65ab597b igrab +EXPORT_SYMBOL vmlinux 0x65b8afcb xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x65cd7895 request_key_with_auxdata +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 0x65e87d70 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x65eda0db ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x65f18fc6 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f7570c ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x6601366e __vlan_find_dev_deep_rcu +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 0x665e628a mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x665e70ec vfs_iter_write +EXPORT_SYMBOL vmlinux 0x667a5246 kernel_listen +EXPORT_SYMBOL vmlinux 0x6682ff85 phy_detach +EXPORT_SYMBOL vmlinux 0x66876205 lro_flush_all +EXPORT_SYMBOL vmlinux 0x668bdcbc pci_release_region +EXPORT_SYMBOL vmlinux 0x66915f8f scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x66ad59df do_splice_to +EXPORT_SYMBOL vmlinux 0x66c03fd7 path_is_under +EXPORT_SYMBOL vmlinux 0x66d485ae ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66d94c7f dmam_pool_create +EXPORT_SYMBOL vmlinux 0x66f1194f padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x6722f3bc _raw_write_lock +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673de931 freeze_super +EXPORT_SYMBOL vmlinux 0x673e923e input_reset_device +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675029c3 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x67686e67 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b6367a blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67eca325 I_BDEV +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x682eb6af iov_iter_init +EXPORT_SYMBOL vmlinux 0x686da53a inet_csk_accept +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687c45c3 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x687d48e0 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x688cceeb blk_get_request +EXPORT_SYMBOL vmlinux 0x68964e6c ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x689937a1 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68be4a92 i2c_transfer +EXPORT_SYMBOL vmlinux 0x68d6d7fa scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x68db7c45 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x68f25b1e abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x68f260cc filp_close +EXPORT_SYMBOL vmlinux 0x68ffcce6 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x690c9bf4 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6920ff27 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x6925d9ed inet_frag_find +EXPORT_SYMBOL vmlinux 0x692d0557 fsync_bdev +EXPORT_SYMBOL vmlinux 0x69342b3e genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x69394302 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x69423cfa blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x69572c41 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6976f43d nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x69789804 tty_hangup +EXPORT_SYMBOL vmlinux 0x697bb859 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +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 0x69ce86d5 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x69e0797a amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a168aaf mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x6a2a748c request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x6a3c5757 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a60eb88 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a8645fa pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x6aa15232 netdev_err +EXPORT_SYMBOL vmlinux 0x6aa66eb5 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x6aa95986 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x6abcf52b tty_unthrottle +EXPORT_SYMBOL vmlinux 0x6abff17f truncate_pagecache +EXPORT_SYMBOL vmlinux 0x6ac1cf05 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad03f8d __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae32bcc __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b112d6b twl6040_power +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b40f720 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x6b5d0e6b tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b657649 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x6b670a5c page_follow_link_light +EXPORT_SYMBOL vmlinux 0x6b733b35 bio_reset +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b779ea8 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x6b880e5c generic_ro_fops +EXPORT_SYMBOL vmlinux 0x6ba3b83e compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x6ba51dd2 pci_request_regions +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc490e gen_pool_free +EXPORT_SYMBOL vmlinux 0x6bce099c serio_rescan +EXPORT_SYMBOL vmlinux 0x6bdb10b5 vme_irq_free +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be762e5 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x6becdc9e skb_split +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c15661c module_layout +EXPORT_SYMBOL vmlinux 0x6c402009 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x6c44bc15 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6ba4c7 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c8ebbb3 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x6c9d3a01 ps2_end_command +EXPORT_SYMBOL vmlinux 0x6cc42aee proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x6d0a4701 mb_cache_entry_insert +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 0x6d3cba38 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x6d5ecb4b nf_getsockopt +EXPORT_SYMBOL vmlinux 0x6d642511 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x6d753133 eth_header_cache +EXPORT_SYMBOL vmlinux 0x6daf505e inet6_bind +EXPORT_SYMBOL vmlinux 0x6dbcdc62 get_tz_trend +EXPORT_SYMBOL vmlinux 0x6dc0351a pci_pme_active +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df834bd scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x6e2c272a task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x6e400863 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x6e421349 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x6e62470c skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x6e6c3bcc param_set_long +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e8f4648 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x6e8f833f dquot_disable +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea8f4f5 mdiobus_register +EXPORT_SYMBOL vmlinux 0x6ecbccfb pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x6ede93ce commit_creds +EXPORT_SYMBOL vmlinux 0x6ee0976a xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x6ee6ac2e tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x6eff32b5 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f309de4 fb_blank +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f62b5d7 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f9e5a1a __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb104f __lock_page +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcc6a75 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x6fdf1fa4 may_umount_tree +EXPORT_SYMBOL vmlinux 0x6fe2a4a0 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x700afc94 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x7014fa7f kernel_read +EXPORT_SYMBOL vmlinux 0x70160733 set_pages_nx +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x702d0be9 get_agp_version +EXPORT_SYMBOL vmlinux 0x703c7787 serio_open +EXPORT_SYMBOL vmlinux 0x7043a19c pci_disable_msix +EXPORT_SYMBOL vmlinux 0x70448322 dquot_acquire +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705f2bc0 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x706a0d28 simple_rename +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x70974341 __d_drop +EXPORT_SYMBOL vmlinux 0x70d7541f mmc_put_card +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70dda3d8 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x70debc51 md_write_start +EXPORT_SYMBOL vmlinux 0x70df4390 inet_shutdown +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70fff957 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x7105c6ee xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x7119de7f napi_gro_flush +EXPORT_SYMBOL vmlinux 0x711cf8ab mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713b920a mark_info_dirty +EXPORT_SYMBOL vmlinux 0x714629c3 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x716df2f8 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71828a66 proc_dostring +EXPORT_SYMBOL vmlinux 0x718743b5 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x71956d94 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x71961cb7 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x7199d300 datagram_poll +EXPORT_SYMBOL vmlinux 0x719ce376 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a8e215 tty_port_init +EXPORT_SYMBOL vmlinux 0x71b7529d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x71ccd438 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x71d15c0e __frontswap_test +EXPORT_SYMBOL vmlinux 0x71d812cd vfs_mkdir +EXPORT_SYMBOL vmlinux 0x71f1613e mmc_can_discard +EXPORT_SYMBOL vmlinux 0x7235e927 seq_puts +EXPORT_SYMBOL vmlinux 0x7236bed7 phy_driver_register +EXPORT_SYMBOL vmlinux 0x72371a86 generic_update_time +EXPORT_SYMBOL vmlinux 0x723f431d give_up_console +EXPORT_SYMBOL vmlinux 0x7285517a simple_rmdir +EXPORT_SYMBOL vmlinux 0x72926b73 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x729cf254 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x72a94f7f insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72aba91e udp_seq_open +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72c2a6d9 dev_notice +EXPORT_SYMBOL vmlinux 0x72e91f54 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x73061786 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x730b634e simple_link +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731fedac block_read_full_page +EXPORT_SYMBOL vmlinux 0x73241a3f write_inode_now +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7347d696 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x735b6775 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x735ee834 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x736547fb inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x7376fb2b amd_northbridges +EXPORT_SYMBOL vmlinux 0x737a6cb9 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x737bbe36 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x73cc9b19 inet_offloads +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e41f2f netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x73ee868d __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741bd29a dup_iter +EXPORT_SYMBOL vmlinux 0x742612c0 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x74333360 lookup_bdev +EXPORT_SYMBOL vmlinux 0x744e761f new_inode +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x74657d63 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x74778368 follow_down_one +EXPORT_SYMBOL vmlinux 0x747a6b23 get_io_context +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74b3bdfa elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x74b4e786 unregister_key_type +EXPORT_SYMBOL vmlinux 0x74bf2b93 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc03b2 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x74d8bc1d mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x74ddbb5b try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x74e4b417 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x75046828 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x751a9d61 padata_stop +EXPORT_SYMBOL vmlinux 0x751e54dc i2c_register_driver +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7539b252 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x753aa5e0 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x75658b9d param_get_invbool +EXPORT_SYMBOL vmlinux 0x756c8dd8 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x75aaf1da qdisc_watchdog_init +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 0x75e2d020 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x75f8e1cf generic_show_options +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x761ce7f3 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7654c251 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x765db461 bd_set_size +EXPORT_SYMBOL vmlinux 0x765eaf07 set_create_files_as +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76653f83 skb_push +EXPORT_SYMBOL vmlinux 0x766f5a02 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x7671247b swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x7672074c xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x767587e0 inet_sendpage +EXPORT_SYMBOL vmlinux 0x767648b3 neigh_destroy +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 0x7690c6a2 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x76a8a37d sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x76bdc3bb ip6_xmit +EXPORT_SYMBOL vmlinux 0x76c0c599 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x76cd750c adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d648b0 unregister_netdev +EXPORT_SYMBOL vmlinux 0x76d80c8e devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x76d869dd seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x76e9a40d ___pskb_trim +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x7707ef00 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x771b8ec4 queue_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77369e07 __serio_register_port +EXPORT_SYMBOL vmlinux 0x773d85d7 __frontswap_store +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x777e0fb3 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x7786749a i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x778991c6 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77af787e dm_put_device +EXPORT_SYMBOL vmlinux 0x77b72eea sk_wait_data +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77e9ed8f blkdev_fsync +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 0x78159cd1 notify_change +EXPORT_SYMBOL vmlinux 0x781a2413 devfreq_remove_governor +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 0x7850d272 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x785ef543 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x786b4b36 km_state_expired +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x7879a972 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x787cde39 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fbf96 tc_classify +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78ace508 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x78b8c412 kill_anon_super +EXPORT_SYMBOL vmlinux 0x78d659d8 mmc_add_host +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78f0a88a request_firmware +EXPORT_SYMBOL vmlinux 0x78f8ef96 __bread_gfp +EXPORT_SYMBOL vmlinux 0x7905d7c1 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x790e6723 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x7911c2d5 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x792b8d85 misc_deregister +EXPORT_SYMBOL vmlinux 0x792d3c3e inet_listen +EXPORT_SYMBOL vmlinux 0x79458f10 mmc_detect_card_removed +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 0x799621ae dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79aef318 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x79bd81a1 netdev_notice +EXPORT_SYMBOL vmlinux 0x79e39227 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x79e9b498 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x7a0a9260 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x7a17b2e0 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x7a18a26f xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a2c3968 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x7a3ae32e _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a71dc6e pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x7a72c768 netif_skb_features +EXPORT_SYMBOL vmlinux 0x7a79d8bd phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x7a7b250c sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9b02f6 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7aa073b1 block_write_full_page +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa3bca6 param_set_bool +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acbecec vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x7acdae0b genphy_suspend +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ade490c phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x7ae5a334 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af099d8 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x7af3468e tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b34d458 mmc_start_req +EXPORT_SYMBOL vmlinux 0x7b47cf82 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b617831 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x7b743667 blk_run_queue +EXPORT_SYMBOL vmlinux 0x7b793433 empty_aops +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bb56725 generic_setxattr +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7befb8b2 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x7bf5c414 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x7bfa7def blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x7bfca5d4 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c198f40 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x7c201485 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x7c269229 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c40fd5d mdiobus_free +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c570aec scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c72d1d9 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x7c787b79 __sb_end_write +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7caa5ebd udp6_set_csum +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cba8ad0 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x7cd34558 nf_log_set +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d05cb99 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0dd9ed update_region +EXPORT_SYMBOL vmlinux 0x7d105d58 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1a8a54 proc_remove +EXPORT_SYMBOL vmlinux 0x7d2530c6 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x7d287136 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7d2dcf08 fb_set_var +EXPORT_SYMBOL vmlinux 0x7d496b15 param_get_byte +EXPORT_SYMBOL vmlinux 0x7d513930 arp_tbl +EXPORT_SYMBOL vmlinux 0x7d5fdd2c inode_change_ok +EXPORT_SYMBOL vmlinux 0x7d6761db mount_single +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d86a3ed __napi_schedule +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7d97a4ac pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x7dabfe33 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x7db36b9b security_path_chmod +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dc91d07 tcp_req_err +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7dde7e44 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x7de4ada7 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df63d30 pci_match_id +EXPORT_SYMBOL vmlinux 0x7e22dc02 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x7e54086f textsearch_destroy +EXPORT_SYMBOL vmlinux 0x7e5fb90d sk_stream_error +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e900f6f kfree_skb +EXPORT_SYMBOL vmlinux 0x7e9c64d7 vme_bus_type +EXPORT_SYMBOL vmlinux 0x7ea29e56 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x7eb7fb67 module_refcount +EXPORT_SYMBOL vmlinux 0x7eb87ab1 serio_interrupt +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee752e8 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x7eed1442 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f331322 set_device_ro +EXPORT_SYMBOL vmlinux 0x7f46ed40 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x7f471d71 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7f5d8686 kthread_bind +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f66d3fc xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x7f7a7a17 km_policy_notify +EXPORT_SYMBOL vmlinux 0x7f85eea0 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x7f8e5057 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x7fb6a33d kernel_getpeername +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fdbfa30 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ff6b673 bdget_disk +EXPORT_SYMBOL vmlinux 0x7ff6b9ed get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x7ffc138d thaw_super +EXPORT_SYMBOL vmlinux 0x8014fa00 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x8015b4b9 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x8021f246 inode_init_always +EXPORT_SYMBOL vmlinux 0x8026a524 iget5_locked +EXPORT_SYMBOL vmlinux 0x80437d49 d_path +EXPORT_SYMBOL vmlinux 0x8052e703 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x80542030 ps2_init +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x8078cc06 neigh_table_init +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x807ebc9d kset_register +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80dc460f kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x81075f4f ata_port_printk +EXPORT_SYMBOL vmlinux 0x8110829d dentry_path_raw +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x81239c16 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x812c8e9e phy_start +EXPORT_SYMBOL vmlinux 0x81347038 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x813ae502 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814d49c1 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815ab76f path_put +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x816014dc nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x81849b85 free_task +EXPORT_SYMBOL vmlinux 0x81a3d6cb simple_transaction_read +EXPORT_SYMBOL vmlinux 0x81bc3688 file_path +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81f1209b pci_fixup_device +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820faf55 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x8211d435 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82285fab open_exec +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8269782b tso_build_hdr +EXPORT_SYMBOL vmlinux 0x826ffcb4 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x828e7893 register_netdev +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82be1b57 sock_create_kern +EXPORT_SYMBOL vmlinux 0x82d6dfb1 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x82db7231 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x82feff59 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830793bf blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x8310472b vme_register_driver +EXPORT_SYMBOL vmlinux 0x8318db29 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x831b74cc nf_reinject +EXPORT_SYMBOL vmlinux 0x832d209d mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x833400f6 cdev_alloc +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x833cfd30 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x8348d40c free_buffer_head +EXPORT_SYMBOL vmlinux 0x83650d34 led_update_brightness +EXPORT_SYMBOL vmlinux 0x836a855f __pskb_copy_fclone +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 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c347da pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83db5cd7 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x83e4f3f1 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x83fe4994 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x84002eec sock_edemux +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 0x8420bdfa d_lookup +EXPORT_SYMBOL vmlinux 0x8428c6f3 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x846b0bd3 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x848a4cfe xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x848e6abe eth_header_parse +EXPORT_SYMBOL vmlinux 0x849055dc inet6_add_offload +EXPORT_SYMBOL vmlinux 0x8497508f __vfs_write +EXPORT_SYMBOL vmlinux 0x84aef428 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x84b15ebc file_update_time +EXPORT_SYMBOL vmlinux 0x84c5027a copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x84cdf259 vfs_readf +EXPORT_SYMBOL vmlinux 0x84f64719 nonseekable_open +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850589fb __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x8507c383 proc_dointvec +EXPORT_SYMBOL vmlinux 0x85107e51 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x851e7a09 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x852139ec agp_bridge +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x85432a44 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x85562250 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8572a17a disk_stack_limits +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x858139da sock_alloc_file +EXPORT_SYMBOL vmlinux 0x85869931 page_symlink +EXPORT_SYMBOL vmlinux 0x85955178 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x860c460a buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x861b2b8d submit_bh +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x8621ffcc agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x8632039b ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x8643c489 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x8644361d page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8655ec81 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x86588053 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86c50c89 mmc_request_done +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87259f9c sock_create_lite +EXPORT_SYMBOL vmlinux 0x873f5607 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x874adea5 udp_add_offload +EXPORT_SYMBOL vmlinux 0x874e5b36 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x876225ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x876822de sock_rfree +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 0x878e1960 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x878f83f0 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87acc274 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87f89ce0 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x88009cd8 kobject_put +EXPORT_SYMBOL vmlinux 0x8808bf00 __f_setown +EXPORT_SYMBOL vmlinux 0x88201ee6 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x8825560d user_path_create +EXPORT_SYMBOL vmlinux 0x88512135 input_register_handle +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88cec5e8 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x8902824a is_bad_inode +EXPORT_SYMBOL vmlinux 0x890deac7 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x89169133 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x891d8e42 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x893c5fdc mmc_can_erase +EXPORT_SYMBOL vmlinux 0x89548683 unregister_console +EXPORT_SYMBOL vmlinux 0x897a4e61 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b0e85f elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x89bdad78 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89de6683 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a0e4df1 setup_new_exec +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a49ec11 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a680b42 skb_append +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a864967 param_get_ulong +EXPORT_SYMBOL vmlinux 0x8a8f126d skb_tx_error +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa058f1 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x8ac4074b end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x8ad0b85e pci_set_mwi +EXPORT_SYMBOL vmlinux 0x8ae3f54a phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x8aef1bd8 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x8aef4633 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x8af45fae devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x8afcc76c noop_llseek +EXPORT_SYMBOL vmlinux 0x8b096f99 dma_set_mask +EXPORT_SYMBOL vmlinux 0x8b2267b9 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x8b2b5aff vga_con +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b400043 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x8b40e41f unregister_qdisc +EXPORT_SYMBOL vmlinux 0x8b428d21 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b548e00 netdev_state_change +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b627176 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x8b7336db bdput +EXPORT_SYMBOL vmlinux 0x8b7babca input_flush_device +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b849375 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x8b951573 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8bae6e20 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x8bb7bda5 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x8bbf1a1a udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8bce5195 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x8be543ce tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x8bf090c8 kill_bdev +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c37203f t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x8c532d0e rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c80dd30 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x8c87d796 prepare_binprm +EXPORT_SYMBOL vmlinux 0x8ca05263 mutex_unlock +EXPORT_SYMBOL vmlinux 0x8ca6c653 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x8cbba6ac dma_find_channel +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cc7b380 build_skb +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce751c2 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x8d0bfd9c blk_stop_queue +EXPORT_SYMBOL vmlinux 0x8d32c647 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x8d3d3bad i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x8d424c2f unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x8d473257 may_umount +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d55d4d5 da903x_query_status +EXPORT_SYMBOL vmlinux 0x8d5fa2b2 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8d616424 thaw_bdev +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7f2799 posix_test_lock +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d8f381f tso_count_descs +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8da716ef security_path_truncate +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dcc69b5 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x8dd0a220 sock_no_getname +EXPORT_SYMBOL vmlinux 0x8de7b86b nf_log_register +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e04e302 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x8e082688 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8e14ced7 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e34bd4e dquot_release +EXPORT_SYMBOL vmlinux 0x8e56b3e1 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x8e7c6901 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x8e87741b dentry_unhash +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ec58794 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x8f00e0dd dev_close +EXPORT_SYMBOL vmlinux 0x8f033675 redraw_screen +EXPORT_SYMBOL vmlinux 0x8f0b9684 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x8f163a2a acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x8f16d4d3 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f3acd3e file_ns_capable +EXPORT_SYMBOL vmlinux 0x8f4a8590 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x8f4cf71f elv_rb_add +EXPORT_SYMBOL vmlinux 0x8f507124 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x8f68bc1d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8f7f2717 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x8f80eb68 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x8f8e717b dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa6fc8c i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x8fb31fcc set_disk_ro +EXPORT_SYMBOL vmlinux 0x8fcb5d84 iterate_dir +EXPORT_SYMBOL vmlinux 0x8fd6acea set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x9005a8ab loop_register_transfer +EXPORT_SYMBOL vmlinux 0x900a7c84 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x903186a1 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x9034271e dev_add_pack +EXPORT_SYMBOL vmlinux 0x903bf335 bdi_destroy +EXPORT_SYMBOL vmlinux 0x903eb0ff inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x9041f465 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x9048233b skb_copy_expand +EXPORT_SYMBOL vmlinux 0x906b930e tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x90855c39 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x908e1ab4 dev_mc_del +EXPORT_SYMBOL vmlinux 0x9098e09a mount_nodev +EXPORT_SYMBOL vmlinux 0x90a92485 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x90bb991e bio_integrity_free +EXPORT_SYMBOL vmlinux 0x90bd2024 pci_save_state +EXPORT_SYMBOL vmlinux 0x90d9f308 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x90f167e0 blk_start_queue +EXPORT_SYMBOL vmlinux 0x9110aafa __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91496ea2 __devm_release_region +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91772f40 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91bf9293 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x91e45938 generic_getxattr +EXPORT_SYMBOL vmlinux 0x91f9a6c1 elevator_alloc +EXPORT_SYMBOL vmlinux 0x91fa424e skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x91fd1a64 vme_lm_request +EXPORT_SYMBOL vmlinux 0x92316539 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924d872c scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x925092e7 processors +EXPORT_SYMBOL vmlinux 0x925503e2 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x9277ed1f pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x9286c3ac rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x929041d9 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a1eb81 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92c03117 simple_setattr +EXPORT_SYMBOL vmlinux 0x92d27375 check_disk_change +EXPORT_SYMBOL vmlinux 0x92da11c2 down_read_trylock +EXPORT_SYMBOL vmlinux 0x92da50a6 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x93050d45 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9312d991 vm_map_ram +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x932c653e have_submounts +EXPORT_SYMBOL vmlinux 0x932f15be devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x933c8d6c key_unlink +EXPORT_SYMBOL vmlinux 0x933ff0c4 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x9342e94b dqput +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934b0c63 simple_open +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9391738b netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b9cad5 sk_common_release +EXPORT_SYMBOL vmlinux 0x93bb3b9b x86_hyper +EXPORT_SYMBOL vmlinux 0x93d01c96 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x93d46b14 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x93e1bc88 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93faffb8 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940875f3 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x941d8662 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x94207602 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x94329c40 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x94528a1f kill_block_super +EXPORT_SYMBOL vmlinux 0x9453b964 cdrom_release +EXPORT_SYMBOL vmlinux 0x9456d4d9 kernel_write +EXPORT_SYMBOL vmlinux 0x9467024c __dst_free +EXPORT_SYMBOL vmlinux 0x946a9822 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b92872 uart_match_port +EXPORT_SYMBOL vmlinux 0x950a6dbf pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9549d6fb ilookup5 +EXPORT_SYMBOL vmlinux 0x9561c6d6 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x9563f4e9 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x956cc24f tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x9579e347 fb_class +EXPORT_SYMBOL vmlinux 0x957d4b02 vme_slot_num +EXPORT_SYMBOL vmlinux 0x9586fc70 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x958c3fd1 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95bf5484 key_alloc +EXPORT_SYMBOL vmlinux 0x95cb216a pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x95cc57b6 complete_request_key +EXPORT_SYMBOL vmlinux 0x95e1a75e scsi_register_driver +EXPORT_SYMBOL vmlinux 0x95e20e06 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x961253ab sock_create +EXPORT_SYMBOL vmlinux 0x963105aa blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x96631dab jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x967461dc __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x967a7f82 netdev_info +EXPORT_SYMBOL vmlinux 0x969c0f35 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x96aba385 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x96ad6f1b dev_addr_del +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96efbe28 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x97005d84 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x970ebc44 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x970ee46f get_empty_filp +EXPORT_SYMBOL vmlinux 0x971b472e devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976334e4 vme_slave_request +EXPORT_SYMBOL vmlinux 0x97841e0a pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x978b35ef security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x978c5381 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a1b774 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97aa1d64 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x97ad193d page_put_link +EXPORT_SYMBOL vmlinux 0x97b46223 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97c95bc9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x97de04fc bdi_register_dev +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97eee4df netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x97f239dc devm_release_resource +EXPORT_SYMBOL vmlinux 0x981158ee skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9833d841 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x98571ac4 param_get_uint +EXPORT_SYMBOL vmlinux 0x9860f65f cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x986590a0 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x9887e2e6 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x989b7405 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x98aba687 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x98b2b9d0 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x98ba2d83 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98f16469 path_get +EXPORT_SYMBOL vmlinux 0x9907d823 i2c_use_client +EXPORT_SYMBOL vmlinux 0x99084a56 vfs_iter_read +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 0x9962dad6 blk_init_queue +EXPORT_SYMBOL vmlinux 0x998fafff dev_warn +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +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 0x99e92549 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x99f1da57 netlink_unicast +EXPORT_SYMBOL vmlinux 0x9a1506bd __register_chrdev +EXPORT_SYMBOL vmlinux 0x9a16e1c3 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a33c721 padata_start +EXPORT_SYMBOL vmlinux 0x9a3ba6df generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a81d456 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x9a8aa09b dma_common_mmap +EXPORT_SYMBOL vmlinux 0x9a8e6411 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x9a932657 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x9abf4417 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x9ac2fc4b nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x9ace5fd1 led_set_brightness +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aeeebb6 sg_miter_start +EXPORT_SYMBOL vmlinux 0x9afa039e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x9b12d5a0 pci_set_master +EXPORT_SYMBOL vmlinux 0x9b1d229c netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x9b298ff5 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3b0ead pcim_pin_device +EXPORT_SYMBOL vmlinux 0x9b6638bb tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x9b66ebcf udp_ioctl +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 0x9bc18a51 input_event +EXPORT_SYMBOL vmlinux 0x9bdc970f inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9bfe685a sk_capable +EXPORT_SYMBOL vmlinux 0x9c21e1df netpoll_setup +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5a1e9b bio_advance +EXPORT_SYMBOL vmlinux 0x9c888de9 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x9c9273ce blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cd6bac8 blkdev_get +EXPORT_SYMBOL vmlinux 0x9ce1e873 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x9ce3afa2 tcp_close +EXPORT_SYMBOL vmlinux 0x9cfe6686 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d292679 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x9d2faefd inet_sendmsg +EXPORT_SYMBOL vmlinux 0x9d3149ce xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3635fd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d50f5dd inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x9d621f3a sock_wfree +EXPORT_SYMBOL vmlinux 0x9d65dc99 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x9d6d74af phy_print_status +EXPORT_SYMBOL vmlinux 0x9d795b3b sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x9d8ee5ca blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x9d971b29 netlink_capable +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dab4188 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x9dced142 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x9ddf5a4e register_gifconf +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0df5d0 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x9e2849e8 security_path_unlink +EXPORT_SYMBOL vmlinux 0x9e2ba725 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e338bac eth_gro_complete +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5c7136 mmc_get_card +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 0x9ea01f29 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecbb87a jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x9eeda5ac skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x9ef4a32b kern_path +EXPORT_SYMBOL vmlinux 0x9efb683e dev_mc_sync +EXPORT_SYMBOL vmlinux 0x9f1d7ed5 generic_fillattr +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f6a48cb inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x9f6b6f4d end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x9f7baecc dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f83c878 __dax_fault +EXPORT_SYMBOL vmlinux 0x9f95ee70 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fcc678b __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x9fccfd4b dev_set_group +EXPORT_SYMBOL vmlinux 0x9fd67dfe ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe102f5 down_read +EXPORT_SYMBOL vmlinux 0x9ff655e4 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0007b63 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa017702a blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xa029b1a6 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xa035ff16 clk_get +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06525ed dev_get_by_name_rcu +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 0xa0a72ca9 input_unregister_device +EXPORT_SYMBOL vmlinux 0xa0ac01d4 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b7a0c8 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e65e38 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xa0e99ac5 skb_put +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa101b9be sock_no_bind +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 0xa146d5dd pci_remove_bus +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1791755 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xa1923701 mpage_readpage +EXPORT_SYMBOL vmlinux 0xa197974c mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xa19d6d27 vga_client_register +EXPORT_SYMBOL vmlinux 0xa1a1dd6a vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xa1aae861 register_netdevice +EXPORT_SYMBOL vmlinux 0xa1ad835c vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1be13dc __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xa1c1cc7f __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1daba4b get_acl +EXPORT_SYMBOL vmlinux 0xa1e2ac50 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xa1e3f840 generic_write_checks +EXPORT_SYMBOL vmlinux 0xa1f3048c ata_print_version +EXPORT_SYMBOL vmlinux 0xa1f3088c padata_add_cpu +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2294743 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xa22c84de pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xa242bd62 kfree_put_link +EXPORT_SYMBOL vmlinux 0xa24d30fd param_ops_byte +EXPORT_SYMBOL vmlinux 0xa26039af max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xa26193ed dev_base_lock +EXPORT_SYMBOL vmlinux 0xa2641d33 touch_atime +EXPORT_SYMBOL vmlinux 0xa28095c1 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa284d15e init_net +EXPORT_SYMBOL vmlinux 0xa29931d2 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2d79d04 dev_uc_add +EXPORT_SYMBOL vmlinux 0xa2ea7038 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xa2ff3048 phy_init_hw +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa3260aef register_key_type +EXPORT_SYMBOL vmlinux 0xa335f610 vfs_llseek +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa37eaba0 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xa39f8142 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xa3b37415 add_disk +EXPORT_SYMBOL vmlinux 0xa3dc2d35 elevator_init +EXPORT_SYMBOL vmlinux 0xa3fa5ed9 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa4029381 install_exec_creds +EXPORT_SYMBOL vmlinux 0xa4042bc7 elv_add_request +EXPORT_SYMBOL vmlinux 0xa40df917 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xa40ea3f2 kobject_add +EXPORT_SYMBOL vmlinux 0xa4192abf pnp_is_active +EXPORT_SYMBOL vmlinux 0xa42e44ff vfs_rename +EXPORT_SYMBOL vmlinux 0xa441e873 ip_options_compile +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa496615f cdev_init +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4ca1beb nf_afinfo +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa50e7ff0 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xa5291621 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xa536508b padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xa5410043 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5567a24 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xa55aed49 __neigh_create +EXPORT_SYMBOL vmlinux 0xa56b8140 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xa572b883 mutex_trylock +EXPORT_SYMBOL vmlinux 0xa58295be unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5aae004 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xa5b175e3 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xa5b598fa input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xa5b9a846 PDE_DATA +EXPORT_SYMBOL vmlinux 0xa5ba4518 _dev_info +EXPORT_SYMBOL vmlinux 0xa5bffce2 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xa5c9d783 iunique +EXPORT_SYMBOL vmlinux 0xa5ceae1b cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xa5fdd9fa netdev_crit +EXPORT_SYMBOL vmlinux 0xa6137df2 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa63f1013 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xa64566ec dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6873a3f posix_lock_file +EXPORT_SYMBOL vmlinux 0xa699bec0 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xa69e24b9 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xa6a5e465 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xa6a9a22f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xa6b68325 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6d75768 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xa6ddded4 dev_open +EXPORT_SYMBOL vmlinux 0xa6e121ef ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xa6e67fe8 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xa6ef5540 input_get_keycode +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa7201a63 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xa72229d0 generic_perform_write +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa72ded7b bio_split +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa75103eb down_write_trylock +EXPORT_SYMBOL vmlinux 0xa7875954 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa7b54dbd ipv4_specific +EXPORT_SYMBOL vmlinux 0xa7f47c29 seq_release +EXPORT_SYMBOL vmlinux 0xa807bdf2 security_path_mknod +EXPORT_SYMBOL vmlinux 0xa81679ed lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xa8199fbd compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xa81b224b vfs_link +EXPORT_SYMBOL vmlinux 0xa821b323 security_path_symlink +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84e241e bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xa864c0b8 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa872b6fa compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xa8bb9458 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xa8bd0d7f inode_set_flags +EXPORT_SYMBOL vmlinux 0xa8d8e536 d_make_root +EXPORT_SYMBOL vmlinux 0xa8efbee2 passthru_features_check +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9075082 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91a400e posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xa9328b04 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xa943d95a param_set_ullong +EXPORT_SYMBOL vmlinux 0xa970253a d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa98e0598 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9b7a3e7 inc_nlink +EXPORT_SYMBOL vmlinux 0xa9bad488 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9c01d0c __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d8e1c9 key_revoke +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa0e5982 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xaa13e14e phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xaa1476d7 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xaa26e41f _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xaa2c1946 skb_trim +EXPORT_SYMBOL vmlinux 0xaa32cc07 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa8401b9 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xaa9081e0 register_filesystem +EXPORT_SYMBOL vmlinux 0xaa94de73 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xaaa583df tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xaab808a4 security_path_link +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae23332 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaf9a6ea netif_carrier_on +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab01bbf5 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab64e8cd netlink_set_err +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 0xaba78d61 proc_mkdir +EXPORT_SYMBOL vmlinux 0xabb2ed2b seq_lseek +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabe0407f dm_unregister_target +EXPORT_SYMBOL vmlinux 0xabf42a41 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xabfcccdc proc_symlink +EXPORT_SYMBOL vmlinux 0xac059e48 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac194e89 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2053fb rtnl_unicast +EXPORT_SYMBOL vmlinux 0xac28942d mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xac2d83f6 kernel_bind +EXPORT_SYMBOL vmlinux 0xac337484 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac3ef41e always_delete_dentry +EXPORT_SYMBOL vmlinux 0xac488a66 sock_i_ino +EXPORT_SYMBOL vmlinux 0xac55dd33 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xac620d03 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xac63be1f pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xac875bd6 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xac88bf70 lock_rename +EXPORT_SYMBOL vmlinux 0xaca4f572 clone_cred +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacac094d devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xacaecf25 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccc6317 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacda43e5 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xaceedfd4 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0cf095 account_page_redirty +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad2218f3 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xad2de984 revert_creds +EXPORT_SYMBOL vmlinux 0xad2eedb4 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xad3151a3 scsi_execute +EXPORT_SYMBOL vmlinux 0xad3dbb64 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xad3fa64a param_get_charp +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadf92630 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae3f6492 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xae4b8212 bh_submit_read +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae79896a i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xae88a9be truncate_setsize +EXPORT_SYMBOL vmlinux 0xae929c6d netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaef28905 unlock_buffer +EXPORT_SYMBOL vmlinux 0xaf08e37a kmem_cache_create +EXPORT_SYMBOL vmlinux 0xaf175447 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xaf3224eb md_cluster_ops +EXPORT_SYMBOL vmlinux 0xaf354cbf invalidate_partition +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3eed2d blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xaf4044d6 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xaf4522a2 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6eb821 dcache_readdir +EXPORT_SYMBOL vmlinux 0xaf7cd356 tty_port_put +EXPORT_SYMBOL vmlinux 0xaf82e7f6 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xaf8c95d9 udplite_prot +EXPORT_SYMBOL vmlinux 0xaf8d4f3a mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xaf99d4e1 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xafb02176 register_cdrom +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafd02cc6 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafd97623 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb0179f90 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb0332193 input_allocate_device +EXPORT_SYMBOL vmlinux 0xb03c62d4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xb05ed2d8 acpi_device_hid +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0855b67 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xb08712b4 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0c84222 textsearch_register +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0fb822c pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xb100d8b0 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xb110299e agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xb11efcd1 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb17a3b7e tcf_register_action +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb189817a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xb19a07fe inode_permission +EXPORT_SYMBOL vmlinux 0xb1a20de1 elevator_change +EXPORT_SYMBOL vmlinux 0xb1ab5ab1 uart_register_driver +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 0xb1db3873 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xb1dc8a72 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xb1e0bbe0 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xb1f3ea2f pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xb20be3b3 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb2133d0d fifo_set_limit +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb222d053 icmp_send +EXPORT_SYMBOL vmlinux 0xb22b6854 skb_checksum +EXPORT_SYMBOL vmlinux 0xb237d202 user_revoke +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26ebb07 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xb277c15b inet6_release +EXPORT_SYMBOL vmlinux 0xb280983a pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xb2887b3d compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xb2b690c9 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2f2b3d3 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb301a8c9 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xb310b37c done_path_create +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb336c314 ps2_command +EXPORT_SYMBOL vmlinux 0xb33b9690 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0xb33b9c20 acpi_bus_unregister_driver +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 0xb3571fe5 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xb36796c1 km_report +EXPORT_SYMBOL vmlinux 0xb3b0c6ab simple_statfs +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e948fc seq_open +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4049e2f netif_napi_del +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4382edf pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xb4521f21 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xb4536614 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xb45651ec init_special_inode +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb492584c blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xb4a29d92 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xb4aea3a5 vfs_writev +EXPORT_SYMBOL vmlinux 0xb4b54703 kernel_accept +EXPORT_SYMBOL vmlinux 0xb4e50f9c page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xb4edf927 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xb4f22726 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb4fbb8fb xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xb5042204 dm_register_target +EXPORT_SYMBOL vmlinux 0xb5154055 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb544de80 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xb55ea463 sock_no_connect +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb586b566 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xb59823e1 seq_dentry +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d59bdd napi_get_frags +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb5e0e547 do_truncate +EXPORT_SYMBOL vmlinux 0xb5e43fbf scsi_print_result +EXPORT_SYMBOL vmlinux 0xb5eb1c70 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xb5ecebdf __sock_create +EXPORT_SYMBOL vmlinux 0xb5f1c531 generic_listxattr +EXPORT_SYMBOL vmlinux 0xb61d58bf framebuffer_release +EXPORT_SYMBOL vmlinux 0xb621aa00 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xb6240b1d grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6372baa scsi_dma_map +EXPORT_SYMBOL vmlinux 0xb64130f3 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xb667bbf0 __inet_hash +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb680d4a6 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xb682163c nf_log_packet +EXPORT_SYMBOL vmlinux 0xb68d8550 cdrom_open +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6990a93 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b3ff18 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xb6c7882b security_mmap_file +EXPORT_SYMBOL vmlinux 0xb713117a current_task +EXPORT_SYMBOL vmlinux 0xb7398cb4 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb77a2228 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xb7819245 skb_pull +EXPORT_SYMBOL vmlinux 0xb796052f bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xb7a53de9 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7cd2958 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xb7e77597 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xb7fdb19d fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xb80e5c18 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xb812c9c7 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xb8220b0e keyring_search +EXPORT_SYMBOL vmlinux 0xb82bec2e dquot_commit_info +EXPORT_SYMBOL vmlinux 0xb8452380 sock_register +EXPORT_SYMBOL vmlinux 0xb868e790 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xb86b7c6a simple_dname +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87d5bb2 dma_ops +EXPORT_SYMBOL vmlinux 0xb87e2976 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xb882d29c seq_escape +EXPORT_SYMBOL vmlinux 0xb89e88bc input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8cadfba generic_read_dir +EXPORT_SYMBOL vmlinux 0xb8d6509f amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb918a492 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb9367092 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xb93caf11 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xb958efab blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xb9746620 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xb97f8328 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xb988aa65 d_rehash +EXPORT_SYMBOL vmlinux 0xb9939249 nd_integrity_init +EXPORT_SYMBOL vmlinux 0xb9bb2bdb blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xb9c4ee22 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f86fb7 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xba01f11c iterate_supers_type +EXPORT_SYMBOL vmlinux 0xba076215 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xba0af950 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xba17064d fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xba19f17a register_framebuffer +EXPORT_SYMBOL vmlinux 0xba1dc4eb blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xba2b8544 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba332cb9 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xba41e3fb dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba52a549 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0xba6029a1 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xba674ac4 d_alloc_name +EXPORT_SYMBOL vmlinux 0xba7ecc4e pipe_unlock +EXPORT_SYMBOL vmlinux 0xbaad598c skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xbab99a06 make_kgid +EXPORT_SYMBOL vmlinux 0xbac2fedd mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xbaef6c38 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb0d4c33 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xbb2d507b posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb482adf phy_device_register +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb52d1cf devm_gpio_request +EXPORT_SYMBOL vmlinux 0xbb57c6f8 noop_qdisc +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 0xbb67d009 finish_no_open +EXPORT_SYMBOL vmlinux 0xbb779f88 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xbb7b9f69 do_splice_direct +EXPORT_SYMBOL vmlinux 0xbb7beb8a phy_connect +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 0xbbbb451a _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbc13a95 generic_removexattr +EXPORT_SYMBOL vmlinux 0xbbe2149a qdisc_list_add +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbc009ce5 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc26841f udp_poll +EXPORT_SYMBOL vmlinux 0xbc5c00f8 do_SAK +EXPORT_SYMBOL vmlinux 0xbc71f44d inet6_getname +EXPORT_SYMBOL vmlinux 0xbc72015b downgrade_write +EXPORT_SYMBOL vmlinux 0xbc97263f call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd21ab3d scm_detach_fds +EXPORT_SYMBOL vmlinux 0xbd3f2836 nf_log_unset +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4cae24 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xbd878481 param_set_ulong +EXPORT_SYMBOL vmlinux 0xbd8d3121 dget_parent +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbda6abc4 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdb9beeb __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xbdbec404 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xbdc50233 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xbdc58fbc pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xbddcd02f __skb_checksum +EXPORT_SYMBOL vmlinux 0xbdf77cbe vga_tryget +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe02e752 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe4dc026 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xbe4e4bfe gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xbe73daa5 sg_miter_next +EXPORT_SYMBOL vmlinux 0xbe7cbed1 km_is_alive +EXPORT_SYMBOL vmlinux 0xbea09a24 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xbea405b5 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xbeb7eed8 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbecf0546 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xbed59dbf block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xbee6fc9d blk_execute_rq +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef83369 get_gendisk +EXPORT_SYMBOL vmlinux 0xbefc0e92 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xbf3f79f5 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xbf509713 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xbf56784b blk_recount_segments +EXPORT_SYMBOL vmlinux 0xbf630d79 register_md_personality +EXPORT_SYMBOL vmlinux 0xbf6539cc bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfadf02e up_read +EXPORT_SYMBOL vmlinux 0xbfaef05c inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfcd37ee scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xbfdfbfa0 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc001296b mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xc00abcf0 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xc027dd22 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xc0351929 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xc04e7b0d get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09d2bb1 inet6_protos +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0abd6f7 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xc0b6bba3 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xc0bc915a phy_device_free +EXPORT_SYMBOL vmlinux 0xc0c1b4f6 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0f0db50 seq_path +EXPORT_SYMBOL vmlinux 0xc0f42fa1 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xc0f67b56 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xc105511c tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xc10c1705 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xc1376644 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1685d62 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xc16a2b71 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xc17c2a17 blk_get_queue +EXPORT_SYMBOL vmlinux 0xc17e8f5e xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xc18195b2 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xc188c6ac __scm_send +EXPORT_SYMBOL vmlinux 0xc18c5278 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xc19e8700 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xc1a7f615 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f6904b blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xc1ff8134 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xc21c014a pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc21c1a21 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xc220c48b pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xc22d814c arp_create +EXPORT_SYMBOL vmlinux 0xc232cc0e ip_defrag +EXPORT_SYMBOL vmlinux 0xc24197d3 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc2547f6a override_creds +EXPORT_SYMBOL vmlinux 0xc25e0b24 from_kprojid +EXPORT_SYMBOL vmlinux 0xc26298b0 fd_install +EXPORT_SYMBOL vmlinux 0xc2719ece fb_show_logo +EXPORT_SYMBOL vmlinux 0xc2807057 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xc288a2ba security_inode_init_security +EXPORT_SYMBOL vmlinux 0xc28bb0f9 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xc2993f9c jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a9ca68 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xc2b1a1f9 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xc2c857f1 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xc2e4c47c pci_choose_state +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc3031df8 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc316fa70 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xc31aef2c fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xc3228885 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xc350f0b3 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xc35c0eca mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xc365c561 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3bba870 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3ca7e12 phy_suspend +EXPORT_SYMBOL vmlinux 0xc3d93c87 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xc3f500a6 del_gendisk +EXPORT_SYMBOL vmlinux 0xc415ee23 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xc43378af pci_enable_device +EXPORT_SYMBOL vmlinux 0xc43529b2 simple_write_begin +EXPORT_SYMBOL vmlinux 0xc45a3186 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xc45ac520 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xc46039dd scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a58a96 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xc4a6ac31 phy_stop +EXPORT_SYMBOL vmlinux 0xc4b7184f generic_setlease +EXPORT_SYMBOL vmlinux 0xc4b8adea sync_filesystem +EXPORT_SYMBOL vmlinux 0xc4c9d3ff filemap_flush +EXPORT_SYMBOL vmlinux 0xc4da4ded registered_fb +EXPORT_SYMBOL vmlinux 0xc4f960e2 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xc4fb9336 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xc5092e89 mutex_lock +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc51785f0 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xc53739fd jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xc5422e41 bdi_init +EXPORT_SYMBOL vmlinux 0xc54723d1 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc5552c62 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc5804706 read_cache_page +EXPORT_SYMBOL vmlinux 0xc5851c3a __register_binfmt +EXPORT_SYMBOL vmlinux 0xc58898ea input_grab_device +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc599d457 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xc5a0f835 sync_inode +EXPORT_SYMBOL vmlinux 0xc5b5ae62 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xc5d61d75 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6080505 get_super_thawed +EXPORT_SYMBOL vmlinux 0xc611a123 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xc61aff57 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc61fbd7f jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63c46c7 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xc645403a free_netdev +EXPORT_SYMBOL vmlinux 0xc651d91f bitmap_unplug +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc6854b08 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xc68e8fa2 neigh_xmit +EXPORT_SYMBOL vmlinux 0xc69cb107 d_walk +EXPORT_SYMBOL vmlinux 0xc6ac4e84 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6b3831b gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xc6b62505 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xc6c6014c get_disk +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6de42ec pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xc7022efe get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xc71cae72 mpage_readpages +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc747114b tty_register_driver +EXPORT_SYMBOL vmlinux 0xc749867b netdev_features_change +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc756f089 csum_and_copy_from_iter +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 0xc795c861 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xc799da36 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4e47b free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ae9ce0 param_get_string +EXPORT_SYMBOL vmlinux 0xc7bfc185 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xc7cba461 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xc7d138d2 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xc7def2ff unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xc7e65d22 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc7fdea29 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xc8062efb xfrm_lookup +EXPORT_SYMBOL vmlinux 0xc80a2d73 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xc80da8cb nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xc828682c set_wb_congested +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 0xc86d16ad inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8852142 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a7a438 __brelse +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b8b363 proc_set_user +EXPORT_SYMBOL vmlinux 0xc8be1843 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xc8df544a qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xc90d538d generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9628b46 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96c635d neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97b24b9 tty_port_open +EXPORT_SYMBOL vmlinux 0xc97c240c nf_log_unregister +EXPORT_SYMBOL vmlinux 0xc99092aa d_obtain_alias +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9bf2c89 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xc9fe8098 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca085b5b abort_creds +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca10655c amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0xca120368 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xca129e75 get_user_pages +EXPORT_SYMBOL vmlinux 0xca1d439c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xca274761 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xca2caf47 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xca3730cc unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xca39189d cap_mmap_file +EXPORT_SYMBOL vmlinux 0xca3e55e1 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xca3ea4eb __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xca41a826 skb_clone_sk +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 0xca9de8de sock_sendmsg +EXPORT_SYMBOL vmlinux 0xcae801a0 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcae9aaf9 block_truncate_page +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafd57e8 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb11f35e sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xcb281ac9 iget_failed +EXPORT_SYMBOL vmlinux 0xcb2fe377 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xcb5eb79e xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb955cab dquot_resume +EXPORT_SYMBOL vmlinux 0xcb972413 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc35b84 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcbf721 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xcbd79714 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xcbdc2ecd __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xcc08ff17 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0xcc0c4caa pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xcc1ac4fb blk_peek_request +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc4dacf4 __devm_request_region +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc55433a vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc79f14a __dquot_transfer +EXPORT_SYMBOL vmlinux 0xcc7c18c5 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc843edf jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xcc95abf4 con_is_bound +EXPORT_SYMBOL vmlinux 0xcc9aa2a6 register_sysctl +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcccdef95 agp_backend_release +EXPORT_SYMBOL vmlinux 0xccd39ef5 phy_init_eee +EXPORT_SYMBOL vmlinux 0xccd50bf5 mntput +EXPORT_SYMBOL vmlinux 0xcce89791 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xccf8ea10 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xccfd397b iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xcd1458d7 d_delete +EXPORT_SYMBOL vmlinux 0xcd1fdc8e udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3ba873 vfs_mknod +EXPORT_SYMBOL vmlinux 0xcd453619 tty_vhangup +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd813bf3 vmap +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcdb2f870 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xcdbbf0d5 load_nls +EXPORT_SYMBOL vmlinux 0xcdc1dda1 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc48523 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xcdcb9af1 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xce1ce8b1 input_set_keycode +EXPORT_SYMBOL vmlinux 0xce1f9769 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce41079b skb_unlink +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4cd2cc fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce95588d tty_chars_in_buffer +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 0xcee462e4 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf075dec abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xcf15bff8 copy_to_iter +EXPORT_SYMBOL vmlinux 0xcf250294 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xcf35b224 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xcf48d069 __get_page_tail +EXPORT_SYMBOL vmlinux 0xcf6bc653 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf77654e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xcf8078de phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xcfae2fd8 md_error +EXPORT_SYMBOL vmlinux 0xcfb27bf9 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfcc634c dev_uc_init +EXPORT_SYMBOL vmlinux 0xcfe3d2bd sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xcff4bd52 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xd0320197 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xd0552c1c pcim_iomap +EXPORT_SYMBOL vmlinux 0xd06b068f del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0863c49 iw_handler_set_spy +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 0xd0aad407 sk_stream_wait_connect +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 0xd100dd9d __lock_buffer +EXPORT_SYMBOL vmlinux 0xd13dda5f __getblk_slow +EXPORT_SYMBOL vmlinux 0xd14b991b dquot_initialize +EXPORT_SYMBOL vmlinux 0xd15c2012 proto_register +EXPORT_SYMBOL vmlinux 0xd15d160e vfs_write +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1763e64 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xd17d82aa setup_arg_pages +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd187f5ec jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xd192e988 to_nd_btt +EXPORT_SYMBOL vmlinux 0xd1a4adc2 netif_napi_add +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1ec031c inet_accept +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd214e0e2 udp_proc_register +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd2364510 get_super +EXPORT_SYMBOL vmlinux 0xd23bc8b1 __xfrm_policy_check +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 0xd2564aee bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xd257592c __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd26c1012 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xd26cf2bb simple_transaction_get +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2998e64 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd2aab171 elevator_exit +EXPORT_SYMBOL vmlinux 0xd2b06647 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2ba5119 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e24ac0 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xd2eb69a1 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd30a4a40 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xd311ed43 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xd31a0d1b devm_ioremap +EXPORT_SYMBOL vmlinux 0xd32dfff2 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xd335b8b6 nd_device_unregister +EXPORT_SYMBOL vmlinux 0xd346e214 scsi_register +EXPORT_SYMBOL vmlinux 0xd346e795 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xd348aed5 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd37127e2 md_done_sync +EXPORT_SYMBOL vmlinux 0xd3719d59 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0xd3b6f7bc md_flush_request +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3c2e7f7 iput +EXPORT_SYMBOL vmlinux 0xd3d0ec94 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xd403f39f mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xd405a0a5 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xd42b270a unregister_binfmt +EXPORT_SYMBOL vmlinux 0xd42eb4f0 bioset_create +EXPORT_SYMBOL vmlinux 0xd45117f8 submit_bio +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd4709a90 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xd476a45d inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xd47fdf31 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xd480b095 loop_backing_file +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4d3f31c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0xd4d6e4c0 bdi_register +EXPORT_SYMBOL vmlinux 0xd4d828ab blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xd4e6b625 set_groups +EXPORT_SYMBOL vmlinux 0xd50173f8 rt6_lookup +EXPORT_SYMBOL vmlinux 0xd50238b8 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xd505c391 dquot_commit +EXPORT_SYMBOL vmlinux 0xd50ddc18 netdev_alert +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd5104ed2 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xd533ffa1 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xd53b1f90 tcf_em_register +EXPORT_SYMBOL vmlinux 0xd53dcb8a agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xd54eb7eb ip6_frag_init +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd556591b tcp_child_process +EXPORT_SYMBOL vmlinux 0xd5828f81 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xd5ae3501 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xd5b0863f pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xd5c99840 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0xd5dfb83d end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61c65b4 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xd62090a0 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6368593 __kernel_write +EXPORT_SYMBOL vmlinux 0xd63ab030 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66497c1 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69119d3 should_remove_suid +EXPORT_SYMBOL vmlinux 0xd6ad7e95 mapping_tagged +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6b5e9af scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xd6b83f21 phy_attach +EXPORT_SYMBOL vmlinux 0xd6bae541 pci_request_region +EXPORT_SYMBOL vmlinux 0xd6d39f56 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f8ff05 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xd70f8e79 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xd7293979 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xd72f93fb pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd73c79b9 copy_from_iter +EXPORT_SYMBOL vmlinux 0xd74ad667 filemap_fault +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd77d88a0 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd785e4ed remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xd787c2a3 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7a2bf6b bio_put +EXPORT_SYMBOL vmlinux 0xd7acdfc6 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xd7b10ceb bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xd7b32d3c napi_disable +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea0c29 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7ed2b7e udp_prot +EXPORT_SYMBOL vmlinux 0xd8076828 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xd81366b7 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xd817ae7f dev_activate +EXPORT_SYMBOL vmlinux 0xd82c026b rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xd8526ad2 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xd8833351 qdisc_reset +EXPORT_SYMBOL vmlinux 0xd88b3e67 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xd895d9ee jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b167ed ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xd8b1e666 sk_free +EXPORT_SYMBOL vmlinux 0xd8ccac95 netif_device_detach +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd9114a68 pci_get_slot +EXPORT_SYMBOL vmlinux 0xd91ab6b1 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd935338e jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd95a28a7 pci_dev_get +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd9734fa3 no_llseek +EXPORT_SYMBOL vmlinux 0xd97f58c1 noop_fsync +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd988ca4b tcp_init_sock +EXPORT_SYMBOL vmlinux 0xd98986d1 amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0xd98d561a pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xd99d5d98 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xd9a0a98a jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9eddf2c cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xd9eecd6a set_cached_acl +EXPORT_SYMBOL vmlinux 0xda3c3f6f napi_complete_done +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda5601ab dev_remove_pack +EXPORT_SYMBOL vmlinux 0xda650960 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xda6749ea cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xda7379fa jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8370da inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaba8001 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdae2ab6d pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb07d1f1 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xdb2a407b pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb5d9d10 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xdb667cc9 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7bc775 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xdb982f8b dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xdb99cacd tcp_prot +EXPORT_SYMBOL vmlinux 0xdba22a0c serio_reconnect +EXPORT_SYMBOL vmlinux 0xdbafe78f sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xdbc2cee5 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xdbde7dfe ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0be817 register_qdisc +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +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 0xdc5f5da8 lockref_put_return +EXPORT_SYMBOL vmlinux 0xdc7da053 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb0a9c2 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xdcb7164e nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xdcb83f5f nobh_writepage +EXPORT_SYMBOL vmlinux 0xdcc09753 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xdcc1e1bb block_commit_write +EXPORT_SYMBOL vmlinux 0xdcc2174b kill_pid +EXPORT_SYMBOL vmlinux 0xdccd49d9 i2c_master_send +EXPORT_SYMBOL vmlinux 0xdd0c1220 single_open +EXPORT_SYMBOL vmlinux 0xdd26ca77 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xdd3fafca scsi_device_resume +EXPORT_SYMBOL vmlinux 0xdd57d299 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xdd57fa11 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xdd7b4ed6 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xdd9099ee seq_printf +EXPORT_SYMBOL vmlinux 0xddba05a6 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xddc387ed dev_uc_del +EXPORT_SYMBOL vmlinux 0xdde83545 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xddec134f bdevname +EXPORT_SYMBOL vmlinux 0xde0686ce unregister_cdrom +EXPORT_SYMBOL vmlinux 0xde0b2e3c sock_no_accept +EXPORT_SYMBOL vmlinux 0xde0e2cdc padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde1f2b7d init_buffer +EXPORT_SYMBOL vmlinux 0xde395091 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xde5fc045 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde733850 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeac57f7 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xdeb252f0 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xdebce3cb __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xdec9d66e udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xdecb21bf __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdeeb2f42 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xdef8dfcd bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xdefa107c xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xdefa2b6f inet_add_protocol +EXPORT_SYMBOL vmlinux 0xdefaa5de bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf159a35 simple_empty +EXPORT_SYMBOL vmlinux 0xdf2b1706 find_lock_entry +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf466a62 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xdf519128 eth_gro_receive +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf97833a bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xdf9d762e md_unregister_thread +EXPORT_SYMBOL vmlinux 0xdf9f7430 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xdfbc9117 from_kgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd31682 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfd60879 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xdfda1a0d dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xdff65aa3 dquot_enable +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe01ed833 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xe0271a45 param_set_copystring +EXPORT_SYMBOL vmlinux 0xe02f68bd fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xe038a43e netdev_emerg +EXPORT_SYMBOL vmlinux 0xe04bc64d down_write +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +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 0xe08d49dc cfb_fillrect +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c11c18 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xe0c718f6 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xe0c72c45 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xe0cb2e74 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xe0e95718 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xe0ebfc32 vme_irq_request +EXPORT_SYMBOL vmlinux 0xe0ed854a devm_clk_put +EXPORT_SYMBOL vmlinux 0xe0f3cb2c pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xe107fb81 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11b94c8 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xe11fabfe set_pages_uc +EXPORT_SYMBOL vmlinux 0xe12649d5 tty_write_room +EXPORT_SYMBOL vmlinux 0xe134e3cc pci_reenable_device +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 0xe15c9b9b dev_uc_flush +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe1943655 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xe1ca3b58 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xe1e7f9a5 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe2085a5c inet_addr_type +EXPORT_SYMBOL vmlinux 0xe214caef nobh_write_end +EXPORT_SYMBOL vmlinux 0xe220cb09 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xe224a878 blk_complete_request +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2513525 inet_release +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe25f7f13 load_nls_default +EXPORT_SYMBOL vmlinux 0xe27f782c inet_del_offload +EXPORT_SYMBOL vmlinux 0xe28233e6 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xe28bcbe5 pci_bus_write_config_word +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 0xe2b1a624 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xe2ba619c skb_find_text +EXPORT_SYMBOL vmlinux 0xe2ceeec6 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe30abeba sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe33eb3f6 start_tty +EXPORT_SYMBOL vmlinux 0xe3433bc7 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xe34eb0da dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe35167d8 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xe3582ce3 security_path_chown +EXPORT_SYMBOL vmlinux 0xe3682c94 __alloc_skb +EXPORT_SYMBOL vmlinux 0xe36a20e4 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xe390a665 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3ab5b4c put_cmsg +EXPORT_SYMBOL vmlinux 0xe3ba2b02 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e00f2e max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xe3f6afc5 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xe40ef5d7 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xe4155be5 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xe4349a54 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xe459d85a pnp_device_attach +EXPORT_SYMBOL vmlinux 0xe462e7ca node_data +EXPORT_SYMBOL vmlinux 0xe46695d6 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4996863 d_splice_alias +EXPORT_SYMBOL vmlinux 0xe4c22d4e mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xe4c79804 d_set_d_op +EXPORT_SYMBOL vmlinux 0xe4ea4704 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5257878 page_readlink +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe55c2141 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xe55d36d9 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5793679 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xe57e9cac inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe583b9a2 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5ab988f mmc_can_trim +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe6107ba2 vfs_read +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe63df4ae neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe66074f9 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6b93e12 sock_efree +EXPORT_SYMBOL vmlinux 0xe6e8f32b tcp_ioctl +EXPORT_SYMBOL vmlinux 0xe6f98a28 sb_set_blocksize +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 0xe710b591 padata_do_serial +EXPORT_SYMBOL vmlinux 0xe71603e8 flush_old_exec +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe73b9e1f ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xe75731f5 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe765f06d blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d6d0ba write_cache_pages +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8287df6 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xe828efd7 put_io_context +EXPORT_SYMBOL vmlinux 0xe832a763 cpu_core_map +EXPORT_SYMBOL vmlinux 0xe84ac4c2 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xe863c844 __genl_register_family +EXPORT_SYMBOL vmlinux 0xe864f361 tty_mutex +EXPORT_SYMBOL vmlinux 0xe874e599 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xe874f54f tcp_read_sock +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe889ead5 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0xe890eac6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe898a75e bio_endio +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c93daa nf_setsockopt +EXPORT_SYMBOL vmlinux 0xe8cbf314 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xe8ce626b mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xe8e6eacb padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xe8febe1d fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xe91376a7 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe92406cb tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xe9420581 padata_remove_cpu +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 0xe968d5de vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xe992ce99 km_state_notify +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9bef496 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xe9c31131 pci_dev_put +EXPORT_SYMBOL vmlinux 0xe9c536d9 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xe9e13ef5 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xe9e163d6 xfrm_input +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fc4d80 single_release +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1ebb67 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xea3411b4 unlock_rename +EXPORT_SYMBOL vmlinux 0xea37b538 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xea38e723 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xea6e8b23 __ht_create_irq +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea7c1bbb delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xea80cb9d pci_iomap_range +EXPORT_SYMBOL vmlinux 0xea82bf03 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xea867772 phy_device_create +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea922195 input_release_device +EXPORT_SYMBOL vmlinux 0xea93c5df blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xead9c5ea __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeae9e025 key_put +EXPORT_SYMBOL vmlinux 0xeaf0b5f6 udp_disconnect +EXPORT_SYMBOL vmlinux 0xeb065428 pci_find_capability +EXPORT_SYMBOL vmlinux 0xeb17fd87 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xeb180c55 insert_inode_locked +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 0xeb5e796e netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xeb8391af phy_attach_direct +EXPORT_SYMBOL vmlinux 0xeb8b6d09 input_set_capability +EXPORT_SYMBOL vmlinux 0xebb75c8c mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xebc249fc bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xebcf1704 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xebedb566 inet_bind +EXPORT_SYMBOL vmlinux 0xebfab646 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec119c78 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xec4af5b0 __find_get_block +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec636f62 dump_page +EXPORT_SYMBOL vmlinux 0xec84991f irq_to_desc +EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy +EXPORT_SYMBOL vmlinux 0xecb08cb8 sk_alloc +EXPORT_SYMBOL vmlinux 0xecbeae4c vfs_statfs +EXPORT_SYMBOL vmlinux 0xecc049a8 kset_unregister +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd16605 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfadf29 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xecffc9a6 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xed164037 tty_check_change +EXPORT_SYMBOL vmlinux 0xed230f0a try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xed2a435a __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xed5677c8 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed75f848 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xed9d820a nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedd3c065 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xedda67ed ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xeddea57e amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0xede49a8c inet_select_addr +EXPORT_SYMBOL vmlinux 0xede549d2 mount_ns +EXPORT_SYMBOL vmlinux 0xede6102b sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xedf43be0 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xedf578ce param_ops_int +EXPORT_SYMBOL vmlinux 0xedfc64c0 simple_lookup +EXPORT_SYMBOL vmlinux 0xee22c25b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee32d75d __pagevec_release +EXPORT_SYMBOL vmlinux 0xee50b44f ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xee6c3370 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee830c30 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea96731 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeeb5e39e unregister_md_personality +EXPORT_SYMBOL vmlinux 0xeee6b1da brioctl_set +EXPORT_SYMBOL vmlinux 0xeee7b033 dma_pool_create +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef427cb lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xeefd1242 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xef042047 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xef111c67 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xef6e9358 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xef80ddab path_nosuid +EXPORT_SYMBOL vmlinux 0xef95b2d2 devm_free_irq +EXPORT_SYMBOL vmlinux 0xef9a005d dev_mc_add +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xef9df929 dev_addr_add +EXPORT_SYMBOL vmlinux 0xefcade84 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd8f0dd generic_file_llseek +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefdecbad truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefef6c0a uart_resume_port +EXPORT_SYMBOL vmlinux 0xeff886a9 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf004ce41 vfs_setpos +EXPORT_SYMBOL vmlinux 0xf004e17f pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf021df08 input_inject_event +EXPORT_SYMBOL vmlinux 0xf0263701 __vfs_read +EXPORT_SYMBOL vmlinux 0xf037ff5d force_sig +EXPORT_SYMBOL vmlinux 0xf04f5f24 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf074bef8 qdisc_watchdog_schedule_ns +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 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0adef22 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf0b339c9 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xf0b36c2a param_get_bool +EXPORT_SYMBOL vmlinux 0xf0d99f83 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xf0dd5b6b tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10997e5 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11052f5 mpage_writepage +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf118a0db scsi_host_get +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 0xf14d9c33 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xf1557bde wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xf15c05bc blk_end_request_all +EXPORT_SYMBOL vmlinux 0xf16a81e3 up_write +EXPORT_SYMBOL vmlinux 0xf1906eb6 write_one_page +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1d2ac8d fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f170db dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xf2078248 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2378c7c gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xf23c093e jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xf23e217a ip_getsockopt +EXPORT_SYMBOL vmlinux 0xf23f7d96 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2551a4b netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xf2789293 audit_log_start +EXPORT_SYMBOL vmlinux 0xf27ae61b security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xf28409fd dst_discard_sk +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf29d3d8d import_iovec +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2cd003e pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xf30b490f netif_device_attach +EXPORT_SYMBOL vmlinux 0xf3127605 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3179479 dcb_setapp +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3485561 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf39079da tso_build_data +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 0xf3bb52ae ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xf3d5755b tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f33c53 blk_end_request +EXPORT_SYMBOL vmlinux 0xf421c7aa tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xf43cc9fb serio_close +EXPORT_SYMBOL vmlinux 0xf4413349 poll_initwait +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf442c6bf ata_link_printk +EXPORT_SYMBOL vmlinux 0xf45b5c44 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xf45fb4fd put_page +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf478d537 ps2_drain +EXPORT_SYMBOL vmlinux 0xf47e2cb4 skb_make_writable +EXPORT_SYMBOL vmlinux 0xf48d34e9 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xf4a1e049 flow_cache_init +EXPORT_SYMBOL vmlinux 0xf4a569f1 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c50087 bio_init +EXPORT_SYMBOL vmlinux 0xf4cf9cac xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f97432 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xf4fcd9e7 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf528acba eth_header +EXPORT_SYMBOL vmlinux 0xf531d660 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf569dfea __dquot_free_space +EXPORT_SYMBOL vmlinux 0xf56bddba devm_clk_get +EXPORT_SYMBOL vmlinux 0xf580a4a2 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xf583ee20 scsi_add_device +EXPORT_SYMBOL vmlinux 0xf5937e7e blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xf595d58f fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xf59b9786 invalidate_inode_buffers +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 0xf5e7e39a sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5edde44 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xf5ee0f39 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf5f7f245 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xf5f81812 blk_init_tags +EXPORT_SYMBOL vmlinux 0xf60af544 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xf60f393d alloc_disk +EXPORT_SYMBOL vmlinux 0xf621bb7d queue_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xf634b5cd skb_insert +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64c9278 agp_generic_mask_memory +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 0xf6b5f444 sock_release +EXPORT_SYMBOL vmlinux 0xf6b64093 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c79d76 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xf6e53a23 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0xf6e7339f wait_iff_congested +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fa8de7 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7231ed9 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf74e8e83 pci_platform_rom +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7628939 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf7739862 set_security_override +EXPORT_SYMBOL vmlinux 0xf775e893 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xf78aa83d __seq_open_private +EXPORT_SYMBOL vmlinux 0xf78d5ba2 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xf794482b devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7d22b62 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xf7d65bb0 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xf7e401ca skb_queue_purge +EXPORT_SYMBOL vmlinux 0xf7f738d5 mmc_gpiod_request_cd_irq +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 0xf82d2ee6 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf923da97 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xf94601c2 __destroy_inode +EXPORT_SYMBOL vmlinux 0xf946c665 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xf9580aa5 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xf977b50d __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xf98c21a0 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xf98d0740 dev_err +EXPORT_SYMBOL vmlinux 0xf99a70a7 read_cache_pages +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b55305 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9d58388 consume_skb +EXPORT_SYMBOL vmlinux 0xf9edc532 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xfa06365c inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xfa077e43 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xfa21052c bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xfa2c0a6c blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xfa509c21 kthread_stop +EXPORT_SYMBOL vmlinux 0xfa52785f iterate_fd +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa741160 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xfa7f66b8 set_user_nice +EXPORT_SYMBOL vmlinux 0xfaac2c47 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xfaafaaf6 __scsi_add_device +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 0xfaf1b750 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb0d1985 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xfb235702 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xfb2e3958 generic_write_end +EXPORT_SYMBOL vmlinux 0xfb49cafb twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb736ebc wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xfb7679dd tty_lock +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb8ba5cc lease_get_mtime +EXPORT_SYMBOL vmlinux 0xfb934c05 vme_bus_num +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbba31b3 read_dev_sector +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc66425 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xfbdb8528 dump_skip +EXPORT_SYMBOL vmlinux 0xfbe709d4 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc24a764 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xfc29d2d1 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xfc3625c6 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc4f80c8 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xfc76d5f5 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb3d9ab deactivate_super +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcce39d7 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfe5217 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xfd1f5a58 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xfd280082 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xfd2f4d43 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xfd3449b9 scsi_unregister +EXPORT_SYMBOL vmlinux 0xfd471246 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xfd505f49 vfs_unlink +EXPORT_SYMBOL vmlinux 0xfd50e2ee pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xfd5a59b0 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xfd6d6229 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xfd7229e4 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc55310 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xfdc71a9f stop_tty +EXPORT_SYMBOL vmlinux 0xfdcdced0 vm_mmap +EXPORT_SYMBOL vmlinux 0xfdd4e8a6 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xfdd8daa4 sock_no_poll +EXPORT_SYMBOL vmlinux 0xfddaeb3e qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xfddc0a98 vc_resize +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 0xfdfd9a0d dev_change_flags +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe06bf34 rawv6_mh_filter_register +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 0xfe2b0b9c irq_set_chip +EXPORT_SYMBOL vmlinux 0xfe374874 seq_vprintf +EXPORT_SYMBOL vmlinux 0xfe3ed290 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xfe3f33d1 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe67897c rwsem_wake +EXPORT_SYMBOL vmlinux 0xfe6d8a92 send_sig_info +EXPORT_SYMBOL vmlinux 0xfe785d45 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xfe79a398 skb_copy +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 0xfe9c7629 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfea6389f udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xfebb7058 elv_rb_find +EXPORT_SYMBOL vmlinux 0xfec26514 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xfed8f53a eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xfedbe2b0 follow_up +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfef9bda2 kobject_del +EXPORT_SYMBOL vmlinux 0xff00d4ab tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff264a34 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xff31519a ihold +EXPORT_SYMBOL vmlinux 0xff354843 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xff41d3ad swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xff4c6123 setattr_copy +EXPORT_SYMBOL vmlinux 0xff616250 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6e9ee3 param_ops_short +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa355d1 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xffaee762 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xffc35623 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xffd29a5f bio_map_kern +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +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 0x50dc55b6 __camellia_enc_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x76686dd4 xts_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x828be0e1 lrw_camellia_exit_tfm +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 0xd43fcbbb lrw_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xf4521fda camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x335dec12 glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x4ea2392a 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 0xb21782b3 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xd991cc56 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xf53ac115 glue_cbc_decrypt_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 0x606a8162 serpent_cbc_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x71cbe10f lrw_serpent_exit_tfm +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 0x9fa9c0b5 lrw_serpent_setkey +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 0xc466674f 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 0x2e70f054 lrw_twofish_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x59d929c2 lrw_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 0x690e34e1 xts_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 0x00a5bd9c kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00e5d2af kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x015bddb1 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0242196a kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x02d6254a kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x04776409 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x05976b5d kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07345bdc kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x08358e0e gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0a46bd78 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c19e9cf kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c247ac1 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x114d447f kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1178a60f kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x120384d7 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x159ed8dc kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15a21547 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18f007ba kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a2f180c kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d4375df kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1eb677d3 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f7af249 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1fcf257a kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x26f771a9 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x272c18e1 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2821217d kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28bade63 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28ec0e46 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b36a093 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b977a5a kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d54a3b1 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d65f8c7 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2ee1e74c kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2fbab5c4 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x303ad2a0 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x32cef7ae reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x34e098c0 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3530689b kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3653c9d6 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a84b7e6 gfn_to_page_many_atomic +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 0x3eb2d84b kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x49963019 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c51f664 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x50020b5d kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a2a3f7 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53c9fcdc kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x542fccfd kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5594a0f0 kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5672f16b reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x58603d60 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b7a3135 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5e45fb53 kvm_requeue_exception +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 0x6643dd12 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x67b47f62 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x681292ab x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68a02b68 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c08ac09 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6d6d8cb4 kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6d9df40b kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6dea39c7 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71bb7330 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x738cb8f6 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x762a738f kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76649161 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7718e1f9 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x772be870 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7b51523b kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7bd9943f kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c502ab9 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ccfacd1 kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ce77d32 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e938cfa kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f2c1163 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x81047a25 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x81f11bff kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86e05dbf kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a26f7b0 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8d884d17 kvm_write_guest_page +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 0x90b0fa3e kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x91c46c7b kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x943e108b kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98522446 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ab5e883 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ca9c80d kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e0a98ec gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ee59155 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa094cd41 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa11fd88d kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa120db3c kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa18bb283 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa1a5bf04 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa38fb3c7 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa508e36b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa62ba4d7 cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa66bfab4 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa7b63a50 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa8b869a2 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa9ffb9c5 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa79cab5 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac0c3215 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacead758 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf275715 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb27e9c9d kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb346c24c x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb3779064 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb403d507 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb60ff467 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb7b0fed3 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb993813d kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb9e89358 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbb3ed11b kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbce8c639 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe501625 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc16b0506 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc23ce1d8 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc254d61c kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc28f30e0 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc39603f8 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7abb561 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc8b1707a kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc94c30e5 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca11cac8 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca17f723 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xccfeee2d kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcef3fec5 __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd03be9df kvm_cpuid +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 0xd1697629 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd2868957 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd4ca6e3c kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd87d0dc7 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd91ce000 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd9f41508 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd9d27b0 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdeb9e564 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdfee9e8b kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe293384b kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe3883cfd kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe5678bd6 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe80fb756 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9d65c42 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb012a4c kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebe96b03 kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec89fb3d kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf44d1d11 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf8c46067 kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfac83ef5 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd993cc6 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe8707db kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff1b6b53 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x41282bfc ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x65d02401 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x94728087 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9ea64878 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xc8d06ef1 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe2dc6287 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xeead6c71 ablk_init_common +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x19d06c47 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x29d6faa2 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3f429023 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x435cf62b af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x485544c9 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x6cbb870a af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x884804db af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa0c354a3 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xaeacb373 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xe28c499c af_alg_register_type +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 0x936d505d async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x74c330ef async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x9533f908 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x0ad8cd5b async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x849ba763 async_raid6_datap_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 0xcb234e36 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 0xe7dae319 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 0xafd545e8 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 0x091b210d cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x1275fb47 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x1bbf7fe3 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x36d6b484 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x424aeeaa cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x58bbf6ed cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5cd61f51 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x97052fc3 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xdd576195 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe66876f5 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x82cf26ac 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 0x5604a772 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x333e1bca shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x52fbb9fe mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x5358de2a shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x920abf53 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc080b67b mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc0ca59aa shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc4ca8541 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdd9b5c4b 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 0xf697d73d serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xa6c6860a twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x4c471dc4 xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x3507dbb5 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x8588ed97 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 0x0cecdb89 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0ff03881 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1897a79f ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1a454f09 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2a53b5f8 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2bb3ac41 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2be78cc0 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x358f6b76 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4385d453 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x698f147b ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x71b3f2a1 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7274e07a ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x74d15355 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x83320286 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8a2e792a ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x99c3d8ff ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb5427ed6 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc93d5de3 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xda1e2db4 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf16ae709 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfd98a080 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfe21fc21 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x08d7e188 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x134a21c3 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x30f0e9c7 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3aff059e ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x425f9029 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x774d3471 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7b60ec6c ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xc43e08d8 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcc91628e ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd3838e95 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd5876068 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe4245bb7 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xec80aa61 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x5a76b332 __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 0x56ab287d btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5c50251b btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5e221a59 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x643a4d0f btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x77d9dd83 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xb7561206 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x05cfb1cb btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5ca3f8ca btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1e33cc69 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x25ae7970 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3fd0e724 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x46a25119 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc3a33c4a btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc48cabfb btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xce9a5849 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdc0a7db3 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xec7f8de5 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf5658831 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf69011f7 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xa76b043c 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 0x8742b29c 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 0x93d6f16d amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x062811ef edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x07b5bc48 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x089d6825 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0b4f9ad0 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0feae9a7 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x173cad2a edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2f1a99fe edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3140a410 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x407fcbef edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x43d534e2 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x473ba334 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4eff4daa edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x89c2d841 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8bc35ea3 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xabd563e9 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbce0759e edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc3e8373b edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc59fd1ab edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd66fbf37 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdaf5b38e edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe806a868 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe8a4297d edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf37d50e7 edac_mc_handle_error +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 0x457101b3 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x68b6e784 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe8b032c6 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 0x368bae99 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4397629e ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4ea45837 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/hid/hid 0x01a458c0 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x06c672d9 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19b46e67 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1c25f4e4 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1ef8ce6a hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1fe64c9e hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x20fb963e hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x250a61a6 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2791569d hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3a898c07 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3b16a10f hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3ff0d5f6 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4226c736 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x431176f5 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x460866b4 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x481302c4 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x48b3baa1 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4addf017 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d964b17 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x515df360 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x54672f82 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5ff6d018 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6c9f869d hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x89ddc2ec hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x96d28470 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9853870d hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa0c825dc hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb5e38744 hid_disconnect +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 0xd88b9d53 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdea5fcf7 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe1299c01 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xefedb16c hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfacdcb8e hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfd5edd78 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x0ad926b9 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 0x810a2f07 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa0588b1c roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd17757c6 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdb7c94e5 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xe513d0c0 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xeb87091a roccat_common2_send +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 0x6ad8384e 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 0x2ed72e31 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x460fe6cb vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x5b3a440d vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6289fdc0 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6890cacc vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8be373d7 vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x910f5678 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x93b23844 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa76a89ab vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xb0667529 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xb944f378 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xcabf00bf vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xcf0507ca vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xecbcac71 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xfe04284d __vmbus_driver_register +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 0x2ddd25f2 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x398f615a pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x597e699d pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5cddccb8 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x67a0daab pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x82bc7492 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x846b5d1f pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x89321ac0 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x970e41a1 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9c4dbcde pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa68c13d8 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb39e120d pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc2130d04 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc369986d pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe24d63fa pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x09325354 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x13499406 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x226f0156 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x22cf0d06 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x41ddbc42 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x76344f55 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x970bf67c i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb328a1fd i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xca91405a i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x8f7b8d76 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x8b5538ba i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xd7d778b9 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x1fe9bfb2 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x5f952657 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2ab0f809 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x50079303 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x59677d91 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9182ed6e ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xab059eac ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd288dd36 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdfbee4b8 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe7a7d440 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf857d7c3 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 0x4b43969c adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4d3f85a0 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5a4fac37 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7914aa5d adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8d6e3730 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa4fff19f adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa6c16764 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xad9c1c4d adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc6d90f38 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdd1f4db1 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfd4aab24 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xffec5061 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x13525e2c devm_iio_device_free +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 0x5dd930fe iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x62fef79a iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x63bf61a4 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6e0f3b37 iio_buffer_get +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 0x84cd9eee iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84fde2c6 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x85e93e96 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x94ab48e4 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb010f45f iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb2826575 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb4645fa6 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbef47e5b iio_read_channel_scale +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 0xd04925b8 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdbfa98ef iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe1bf8905 iio_enum_read +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 0xeac8bfc6 iio_push_to_buffers +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 0xf94228db devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfda51dc9 devm_iio_device_unregister +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 0x67d650a6 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xc3cb970e cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xcb878fc6 cyttsp4_pm_ops +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 0x2d0106a7 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc428af24 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x18519dae wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1d78b186 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1db2d736 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3962b0bb wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x43b28a6d wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7693d54f wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x96fc2b41 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xae153801 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xce82a377 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcfda21d4 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe876ad7f wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf5c8b025 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 0x045f14bd gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1f351e56 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x255c152d gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3a8cc9d2 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4df40e48 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x555b6469 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5f85716d gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x65a4786f gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6e20eb5f gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x71c0ea83 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9c1d861f gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa11e8e2c gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa5453926 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xac72ea7e gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc411d8f6 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcde02b05 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe220ca97 gigaset_m10x_send_skb +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 0x02b7a156 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x09b0d138 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2a5863ba 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 0x42c275ff dm_get_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 0x86c174c0 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xaa458264 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 0xdcbb1819 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf37fe765 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xffdfdad6 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 0x1a6e1415 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 0x069af4b5 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x1414601a dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x33eacb17 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xda92e7ca dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe898fc3f dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xef6d30d4 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf15fcdba dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x0c1d23ec dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x55a1f017 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 0x0f54aa12 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 0x40639116 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 0x4ae35fad dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x95c8db4e dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa0151492 dm_rh_delay +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 0xef805262 dm_rh_bio_to_region +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 0x42d1207a dm_btree_lookup_next +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 0x89365891 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 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 0x0556dabd saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x06023b06 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x393f2f63 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x46f9fe1f saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x576ba6f7 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x632d53b0 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x81d44b82 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa1eeb475 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xab4370d1 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb3000c83 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0a67b3c1 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x177a72b5 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1ed0e422 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5d5a1776 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6f90df5c saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc60e099d saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdebc4544 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x04ce380f smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x091fcda1 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0aae5ec9 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3212b76f smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x34c1bbb2 sms_board_lna_control +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 0x48cd6c72 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x545e5a1f sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x76abdb04 sms_board_setup +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 0x8c85324d smscore_register_hotplug +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 0x9d9f68ba smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa34456b4 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbc690d18 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbd58a0b8 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd6a2bfc1 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd78ab473 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdc8d5b07 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfee1e01b smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x79920a28 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xfa247d27 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xaa4c6ec6 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0fa69fda media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x12fb8f41 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 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 0x7c736800 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xa145803a media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xa8fac435 __media_device_register +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 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 0x78af8489 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x013e8e30 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0212dc82 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x09fc5dab mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x21bec351 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x22f6ca8e mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x24830467 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2df87a3f mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2e4375b2 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x47149290 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x53345b08 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5500b54a mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x569278e6 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x73cd42b4 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7c30f457 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x90e15f1f mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaa99cde2 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb4e1dd04 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc8a90435 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe96fea02 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x08cd3db8 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x09fe504c saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2e010581 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x302d2fc1 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4ee3e15b saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5bbe6ae0 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6c61a01d saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x742db90e saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x78301121 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7f378ab8 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x80e9aa0a saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x84fd3bf8 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8a737b9a saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x968e9dda saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa2357dea saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaa92cf04 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb632b2e8 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbc28dd14 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xefad7d72 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4ba8cc8e ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4de2b2b2 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x50feb8f3 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x58d48f9c ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6dd48403 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb254a420 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd4a0ed61 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x5f7702d3 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x977bfb07 radio_tea5777_exit +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 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 0x62583ae9 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x832a803f rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9b5bb5b2 ir_raw_event_store +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 0xd60ca530 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdd88f9e3 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xed62eb00 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 0x4ccb4ecd mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xd3725fb6 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x546da2fe mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xe15afd48 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x9cad0397 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x8604474a tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x2bfff8d7 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xa132adf1 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xe151cb17 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x40751eb7 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xde227acc tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x54711b0f tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xa9fbb4e9 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xc4a8a0a1 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x11dfabbc cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1cb24c08 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x38073b00 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x40f6733e cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x590b6bdd cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5db3abc4 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5e9c7283 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x608a9ac0 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7b2fe7e2 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9d94f496 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9e34dabd cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa0a3ca73 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa18603e0 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa31d4047 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbf3b3236 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd9bede8f cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xde252fca cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdf803d32 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xed767dc3 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfbaa6f9c cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xda2a1d92 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x7dfbefe6 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0a4aa9da em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x12d4d957 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1c52ebb9 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5328a1bb em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x56778939 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x59b3d803 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x63017367 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6abcea14 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x77479d64 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8255e7d8 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8a01816c em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9b44f88d em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb50b66b8 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb8dd3f77 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc2290e84 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe578864a em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xeba5ca1d em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xefd1abaa em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3b3ad519 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x483cabc5 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x4e4de0ed tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x6fd8264e 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/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x33eeb4af v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x3ac3d818 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x62ce078e 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 0x8189155a v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa4bdc3f2 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xafad880b 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 0x05089596 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x74e89ef1 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0a281f47 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0bcdc0ad 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 0x2af5374a v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2ee482f0 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x32330ffb v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x349b178a v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3742997a v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x42cdfe27 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x491ce482 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4962dc46 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4c63535d v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4e490246 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x615f46da v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x74710ff5 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x842d8829 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8476fdd1 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x873df0c6 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa1ac7d44 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb12acb25 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb9f566f1 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbf57eedd v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc39acf01 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcba28341 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xce8be265 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe426db72 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe5f6ae0e v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeba7453c v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x16ba72af videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2d03ec8f videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x37561db0 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3a4582a2 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3bfcaa41 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x406a6c2d videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x53ecd64a videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x53ee40b4 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f8078c4 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6d07a382 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x75d2f689 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x843c3659 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x87eff7f4 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8b37d156 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8d944e37 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa4c904ba videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa97d00fc videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa9c67461 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb453270e videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb8b371cb videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbc883d14 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd8e06784 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf4001f1a videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfa2fb988 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x506c9879 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 0x6e077183 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xc4dc7b52 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd86d0efe videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x04127ee7 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x8b8a5467 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd89b4014 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x006f9bc6 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0554682b vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0839adb4 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0bcf4314 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0c25b491 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x188d66cd vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1976726a vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1998b7c8 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1ff35b46 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x25b2a47b vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x269007ce vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2754706c vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x31346b8e vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x31ae853f vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x328c3d1d vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x33e2bdc6 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x36192671 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x442b0f48 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x47f9c9d4 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5d7acee5 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5dba2c3e vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6a19febc vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6c0c3941 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8866151e vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8ee8eacb vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x930e4b0a _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x96176751 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9e4a1f97 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaa9d4d97 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb78d392a vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbbafc914 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbc60a484 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbee5a689 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd700d803 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd97683b6 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf3ace849 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf72c88bb vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf85747ba vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf8bd4eb5 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x4843e7a7 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xb3a4461d 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 0x9b145186 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xcee5be56 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 0xa4ac1534 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xaefb4fb7 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xe640748e vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xfc5c19a4 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xfb1b6b42 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x026e83e9 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x02e703a3 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x238cda5a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27aa0e6f v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x286b5f8d v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2c490c5e v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31fd8e7d v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c44fa35 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x416de683 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x562d9b4f v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x875b772c v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8d96f8ec v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x92a32dbc v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9d375abd v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb9a4d1d5 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc15fba78 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc209fce1 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 0xd72d3edc v4l2_device_disconnect +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 0xe5ccf0f7 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7b75a25 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf0e47d6f v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3c73cc0 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf6396e6c v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf6fac69f v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfdf2c805 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1b16f81f pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xad102686 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xf781a5cb pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x25c454d4 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x31e49a2b da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x4c12a845 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x733810e4 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x976a789d da9150_reg_read +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 0x742b125a lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x77fab891 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x80f684d2 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 0x95ab05b3 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xa1f63a45 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xb480ff5e 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 0x21c7ff61 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3ae52b0e pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4a4521f6 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x60e9544b pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8a520cec pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x95d8529f pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9d524c24 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa4a82fef pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa9e74fde pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb60d984b pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcc58a047 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x03cab2c7 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x29c4a87a pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x78789946 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x792f1b57 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8fc83858 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xbcd92b3a pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe2df8a2e 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 0x14e45ae6 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1b47ea58 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2006559b rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x25ad503b rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x29444c30 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x319f1736 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3bf13d1c rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3f1026ff rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x564231b0 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x63e790dc rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6eb53a01 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x78b7c292 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x84436086 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8c87b1be rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8d3f0816 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x91bcdc8e rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x94ee5472 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x98b97581 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9fd67f06 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb7a2bf8f rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb9607ca1 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe526a414 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe89333b5 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf0d842e3 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x29be82a1 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x53e890e9 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6cd629c8 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x70c0b2c1 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7df80d81 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x81594dda rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x98774f3a rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa7b7feaa rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc41e6834 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe2e0ac2e rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xeccf0bee rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf51a36fb rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xff773268 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1ab61db2 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1d304534 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2309efb5 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x233a524c si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2600217c si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2d4804c0 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x35c7312e si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3f8a5490 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x40d10299 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x41c05296 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5c22ce53 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5c2c8625 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x691f0e67 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x69f63b92 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7e8ad3b6 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8433bb0c si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8c4722c0 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8f26319f si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x927c91a2 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x96643106 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9ffbf573 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xad017c2d si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb05d2d7e si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb1776c74 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb89135d5 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb9ba8c97 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc19a1b65 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc9f87f1e si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcd8f6895 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd1a38caa si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd26a09d6 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdc56ce97 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf9fd7836 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xffd9397c si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x2c3b1a48 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x64e474a2 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6dc70090 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa6cc2631 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xf30c3822 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x03b46cd2 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x16d0f7ee am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x6e57105b am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xa8003046 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x4c385a37 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x902b073b tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbb000dfd tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfde48364 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x57257db7 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xc399912b tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xee4e5330 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xf745be97 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xab15a3de ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x0d7778ed cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x1d846803 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x22e85c61 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x45d36fbe 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 0x10918119 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x13a2eb47 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3aced66c enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7f2745b4 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7f8fc0d0 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x81e81b6b enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x83a3b8a4 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa3fcb2e1 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1348c8b5 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x258a941c lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x38548b12 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4dd31a43 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x694c40f5 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x79f51e89 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x99b93038 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc4d817ee lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x126af293 mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x32ad334e mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x50eeab53 mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x73607e4c mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa02b3b1e __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa055ef04 mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa1f64dae mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa40aafb6 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa7d4f5a4 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa9c9ac47 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbd688977 mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbff49143 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc78bf107 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcab345e8 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd65a1f24 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xda9acd7f mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xdfaa081c mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe49e70b8 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe8dd0278 mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xec7c9334 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xecb3bb72 mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xee8d5ee7 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xfd2307ec mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xfe92fb98 mei_hbm_pg_resume +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 0x0fe4a868 scif_open +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x312fde67 scif_send +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x31f517c5 scif_get_node_ids +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3a96410d scif_close +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x89759ee8 scif_recv +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x9ca7d2f1 scif_bind +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x9cd1ab58 scif_accept +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xd169e0e2 scif_connect +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xeea36e4b 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 0x1d122cd6 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 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 0xaada3519 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/misc/vmw_vmci/vmw_vmci 0xf0b21344 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0d9fbe86 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x155b617f sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x310b0826 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x54b3a70c sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x580efe4e sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6a7b869d sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6ca88a94 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8d0d9ff3 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xadcf86af sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcbe53c91 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xccf60144 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcd0bffea sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xceff9300 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfd9fb4e8 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0b443f7b sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x12c422c0 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x152807aa sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x18aff2e6 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3912f765 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6798db95 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8efb543c sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xcf963727 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xde9be5d4 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x05b326c5 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xc78426bb cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xf8ad0353 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x5f529008 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xacab5f8e cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd2f9145e cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x76fef720 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xbb3d2ffa cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdefea129 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf9b7f90c cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01c60bc7 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0305dea2 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x10474735 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1d413c3d mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3ae4c628 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c35ca64 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3ce1c047 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40db6071 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x53d013e9 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5872d375 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5e1d15e8 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63aa2e64 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63aaa89c register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x642aad2e mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x64adebf1 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x68f1e75f get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6d96c8aa mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6f6361a9 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70d990cd mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x71786754 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x71814c16 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e7853fb mtd_block_markbad +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 0x8989d532 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c63487a get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9eabe61e mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xacebd217 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb46e601a mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1daf0a4 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcf96bfa9 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd12f678b mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd33e4a2c mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc428f98 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0591b10 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe74ec267 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe8938f84 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf1aa7ef9 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf744d37b mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc709199 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc7cda6d mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfd199daf mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x51a7d60c add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x5fcc898d deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8d275e62 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc879b1a1 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xcc3a5b39 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x67368dc9 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xbdd93c85 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xef4b1998 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x6ed1bb28 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xed5c23e4 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x38f1272c spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c4e9d31 ubi_leb_write +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 0x4cbd7e6e ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x635309ca ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66016f1b ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66a390f9 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7b7fecdc ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7ffa899a ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa08894e2 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaa57510e ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xad89f4d3 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbd7f02d0 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe785a2a6 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe7986635 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf54a6fb9 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x044cd09e free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1f60c191 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x492ad517 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x59fc0dd1 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x95170e03 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa0a7b125 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x03512621 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0d259657 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1c800cc6 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x21701ff8 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3af330ea alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3e808fee open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x474b9716 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4bf0aebd can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5359df5f can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x675c0054 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x828730e7 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb0bd5d18 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbbcd445d can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd4bffe5d alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd8585cbe free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe33c3f45 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe4b25139 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf4647b38 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x385f0071 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5967c932 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x72c246f9 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9727d4a1 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3ec687c8 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8f6782c9 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8fe1fe63 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe3823eb2 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x013004d0 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0140dd2c mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01847947 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x079dc22c mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x086a79c0 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a1a5eff mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a8118a7 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c0fb2e7 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10838a1c mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1241d7fd mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1632566d mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16b31fae mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24936c72 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25b97c0b mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2605df28 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x282c7940 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x287c0c23 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30faecce mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31a79f61 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3271ccd2 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33414eb2 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x336c9565 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34a4aa08 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34bd43bc mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34dc4111 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35b14812 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3df31315 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f210ed8 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x400d7469 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42613452 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43860ca0 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44224ed2 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4503fd53 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46c885e0 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c80a191 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fa0dd22 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54851d3f mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57317247 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x580cc8aa mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5887b9cd mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5cdd8d0c mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e2157d0 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f71f7b4 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5fa969dc mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6019d16b mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x638744de mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6907e460 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6adaa995 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70a349ca mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74393f81 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7581f70b mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7770e7be mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7859ac4f mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d20620a mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d20d7a9 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d569009 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80208391 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81a826e3 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x824db872 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82591651 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82ab864e mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82ec5dfb mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8652b02e mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86f90a3a mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88ef300d mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8904e248 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f02b7e3 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x913026cd mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92a825b3 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9403a6b8 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97832f02 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d4d108a mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ffe6aab mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0927563 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1bd5407 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1f2d371 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3e953c4 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa698a720 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa773e9da mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7b46331 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa853bdb0 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8f619f0 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9fc534b mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabcd5d56 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb21360f2 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb49aa527 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb59aeb3d mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb63b5504 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb93c91fd mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9529ebe __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcb20c10 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcdaf61f mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcffab1f mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd75129d mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc39995bc mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5c1135f mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc66f8128 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8487f87 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb5abbeb mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd4ecaea mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf616a94 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd05058b7 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1a6a5fc mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1bb0f0c mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1d48172 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd50be3c6 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd668aa06 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe023172e mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5dd4ac0 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6483da0 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6f7e7b7 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeafa7523 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb99028b mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebe2ff08 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec11c00c mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecfdc757 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef0658d1 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3d63880 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4654f4f mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcf22ae9 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd48945b mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdcb7141 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfea6bfcf mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x004113a8 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x058f88c8 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0859260b mlx5_core_eq_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 0x0af21ebd mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b40203d mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13524dfe mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20370a02 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x369092ce mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39828856 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3d8a79fe mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40736838 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48929091 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ca18f22 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68726ad1 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6cab9762 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a8ea47e mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ae9635a mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93a4ab58 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x948e309a mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x972b7ece mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x978e22ba mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9960b3ed mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3e00c5c mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae48e734 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb56109bc mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc43d0c1d mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcd31d1fb mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd19b6b72 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0729799 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe98b4596 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1b33772 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf53d28f3 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6d7cd5a mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe1b5e38 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfedd2d3d mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x03a1681b stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x34567da5 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x68b417dd stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xfcd844b3 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x381db297 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x4428074d stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x6531df10 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0f5fe000 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x29083fd7 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x61f6dcb1 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x65f15db6 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6d559d92 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7358f52b cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x85efb1a7 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8e36248a cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xbdf373fe cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xdce2a1fa cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xec5afdc8 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf6a96e2c cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf853965c cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfa665b57 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfe599ea6 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x68715d97 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb17bbf5a macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd4d58bee macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd6c6d758 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x254f62e2 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x27a4df71 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x479e5f20 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x64a53438 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd9b5c35e usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1fbb182a cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7cf1a14f cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8d8d6d7f cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x91559cc6 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9bb4b8df cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xbadc9b19 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xbc1a1d26 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd67195cc cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfe1dbb90 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0ae25522 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2a575345 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3ad77921 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x441b7417 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x99f630ad rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa10c25f5 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x04cde858 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1c6e3af8 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x21156333 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x220a5583 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x29ef6d0e usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x336f997c usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3656388d usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a024ebd usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5e417bb8 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x64f74c10 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x65b934de usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x73950746 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x74b02c05 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7ad4422b usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7f3b37ec usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x96376375 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa86f7512 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xabd8d042 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad34c03b usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb65e5b92 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb727866a usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb7dc5409 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbc7cea1a usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbc854523 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbf4d43e6 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc5e3255e usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdffcaa4f usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe440c657 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe8f4ecc5 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf03f4010 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfae58b6f usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfef4918b usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x0af6f3e0 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xcd18343a vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd1708399 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xede3c251 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x02536071 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x235a7fff i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2715c4e5 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x28cf29d5 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x513cc23e i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x75da1569 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8abe9620 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaf436b8d i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb08c3b4a i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbb5b53de i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbe545471 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd7178ec7 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd7328030 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe6be24e6 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xefffc34c i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfc289254 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x04f28014 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x166e289d cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xacff783e cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xe7968856 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xdb3b69f2 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1ea749fa il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x442c3413 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x91271fe0 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xe39caced il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf6e97816 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x028293c0 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x06547527 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0953a909 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a225c15 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 0x1c80b0d7 __iwl_info +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 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 0x5f455b2b iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5f86ba5b iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6988b3b8 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6fd40e14 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7792e6bb iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7c4ab99f iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x80cebf94 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x887a66ba iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8fd9e32c __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8e3fa2 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9ec70b61 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xab4a9c3f iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xac03c155 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xad1a6b36 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb7d85f6e iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4243667 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc62e0116 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xde7c1ff9 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf8a74084 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x084a32a9 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0c275770 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x35bcf7ed lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4915dd95 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4f2965ae lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7ee21d4e lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x89a1e755 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa8a34d47 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb601343e lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbb3f066c lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcf4cc300 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdaa05ab1 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe01ee2a2 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe7be1012 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xea1c7dca lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfd6fda0c lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0f50e4e2 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x12095c56 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x52bc62c2 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x707ce5f0 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x73a8c5f7 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xad8b3e5a 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 0xdb9495c5 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf88e7c77 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0341b9c8 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x20c10d74 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x270c4b85 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3df280b6 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x410a7355 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x41d732a5 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x452415c1 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x766bb852 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8272627a mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x83c7960e mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9e240be4 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb11f0197 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc4ae38bc mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd0aaea26 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd3df1818 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe1cb3718 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfabe535b mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x08a692c9 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3b5f7ac4 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x64ef0e23 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x65b2c342 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x69af99ba p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb4523c17 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xde53da91 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe13fdb77 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xed7e8d9d p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0de436c8 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x722e37c0 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x84ac377f rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa3d3769e rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x003ad921 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0bb3b3a6 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x386bdc3b rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3950c45e rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a659e89 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3be109fe rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x439467b0 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x46580207 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x46be1702 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4cfd310b rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x56612cff rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5d06a245 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x602abe46 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x69c198f4 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x71b80ace rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x771812c3 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x779607bd rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7de8b547 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x802814af rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x84b570e1 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8586f43c rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8e6d47c0 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8fd42397 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x919736b6 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa0d6895d rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa489438d rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa78d7889 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa9baa400 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb11a2988 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc8da520c rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xca99349c rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd57fc9f5 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe3827e16 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe92d9282 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe93d5f88 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xea3ed324 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf5a5c01d rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfb565aad rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x18715f42 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x18ca8ccd rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2728c846 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3598a1a0 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3a3e9d05 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x405a0fde rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4a559c94 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x52d74aa3 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5950175a rt2800mmio_get_entry_state +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 0xa5d378f7 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcb591424 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd9ec6cfa rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf37b3c77 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x000cbebb rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x09583e1b rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0c542601 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0e0a5c25 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x154f0073 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x157abb86 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x162350a0 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e289cc2 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e5d658f rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e496302 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e4caf1e rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x412fbe0e rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4a14a5f1 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4cdc63f4 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e59e1fe rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x510b956b rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5267d2c4 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5dcdb7c1 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x61639485 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x66ba56b0 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6fb3742f rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x768cceb0 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x790e853c rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x796b71e3 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7a45b775 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8ee9bb22 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96ad4a2a rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96dbda8a rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6a045d0 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa89a5d54 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb468fc5b rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbcb90f4b rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc727785a rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd824c5f rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xce9f204d rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1cfe2de rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd59785a2 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd667bf2c rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd97f06c0 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdd7bafa2 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddb0b725 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe39158c1 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe7c9843f rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe83fc36f rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe89282fc rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeaba6c95 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x04ecebab rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x10a28e0d rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x44a4aa7f rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x650241e5 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x6bb65ae3 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x5a25bd58 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6508f95c rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x70f80daf rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf5247c4c rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0f8c5aef rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1860888c rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x34c4fe64 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x54d2a36f rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x65467096 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7aba330f rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x81050113 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa3313ebc rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa8d15330 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc5c915ce rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcd0c60dc rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd199de75 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd91e73f8 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe018b4c0 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf2ed5ece rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfd77e116 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8664340b rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xedcbdc9c dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf76e24b7 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfcb4f053 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x07ba94c1 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0dfdd1c3 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1c372733 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1eca6d53 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2bdb48d1 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2da9922f rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4180f405 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x474ffb1e rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x568ac7dd rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5ef5822f rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5ff64658 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x64f8c1ef rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6a24d605 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6cb25fd2 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6da269ab rtl8723_phy_pi_mode_switch +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 0x737a446e rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x82f41d09 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x92bf01e8 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x99930075 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xab98de24 rtl8723_download_fw +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 0xafe36ac6 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc02acf40 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd8845a8d rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe96c6480 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xea7374f4 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf38bfb6b rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf49f8eea rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x18b3c2e8 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1eda4eb5 rtl_recognize_peer +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 0x364b8eda rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3957bc09 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x40a495f8 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4e7f015f read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5fb88838 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x859ed17a rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x98ae34f0 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb0384766 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb85a8656 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcf662050 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd37a27e9 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe37d2128 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe4d81e94 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xea5ac00d rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xec03be1f rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x61aba4e2 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x974e06ee wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xfed19cf6 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x045dc693 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x061c1681 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0a303e3c wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0a500a3e wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x11af6001 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1b2fcd85 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1c02aec8 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x26d66d67 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27616602 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4bfcf603 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x56d31321 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x60d88e9e wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6a9ea167 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 0x7d27f8cc wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7fcba20c wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x81f353e7 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8defde7c wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8fbf8de5 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93aef955 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x96d278d5 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9998f4b9 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9ac6977a wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9e141d67 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa9da6540 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xae7f513c wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb2ec89a0 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc25ffa93 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc7346441 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcabde3fa wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccc8ccf4 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd109eff5 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd1d06e31 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xda557104 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb374e48 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe1c1192d wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe48ac045 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7f3fea7 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeb2acd40 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xed91484a wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xedd15db3 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf4dd56b0 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf6bfab08 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfdff9e82 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x0ddb7d67 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x4904c89d nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8d08f20f mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x000b7d14 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x13abea9c nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x234bc0a1 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x6cb1b09e nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x05889269 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x27db7127 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x42d5cb82 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x44e56145 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x459fb0a1 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x51bbdfe5 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x933ffef5 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbd900b2a 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 0x5c36bcbe ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x765d1f19 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 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc7e40774 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/pinctrl/intel/pinctrl-intel 0x086c30b8 intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xa8877683 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xcd02b5bf intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xe598bf13 intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x1ac8354c asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x882b6371 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 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 0x034ddba4 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x759e4dfd pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x865610f7 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 0x5a51421a mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x862f2a5c mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xabbe969a mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x125f8073 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x36e7f9dd wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x80e9b550 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb0247ce6 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdab8b2dd wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf1ce4984 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x55366381 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0ab53cfc cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d09f679 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0e4f232d cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x14dbbb9b cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x15d2fc22 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1bc4eb18 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2052d541 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x30a32d50 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x30c49b5c cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x31ef957a cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33b1df35 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x37ee9a7c cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x424d00f2 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5531d60a cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55554a81 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x574d7423 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x581e8ad3 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5965d8ec cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5ccd5be5 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6155a852 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6714cc7e cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70247a15 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70f79004 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x81010404 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8354a206 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83d5d371 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c572062 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x92d1c393 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9399b19a cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9458216e cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9a385de7 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9c1dfc0e cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ca71c06 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9cee19c3 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa67d5654 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa9cd6423 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb6b20928 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbde168c7 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe97568c cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbfe27fa9 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcafae105 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe1e46193 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe7fc8838 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe9d736f4 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf6e8edc2 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf78737d9 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x05a98f16 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0dc92169 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x28737c98 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 0x9258487e scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa1f24c38 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe6473eb3 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xebb4c983 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0093b981 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0e4322db fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1c860f3c fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x55057f04 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6c0f134c fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x756d5fcd fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9a83f9d0 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa9fa91f6 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xad9ca467 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb68337a8 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbb10b52f fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbea52eed fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc2cc9c96 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xccf52d80 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd5ef3dcb fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xee5e278d fcoe_ctlr_device_delete +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 0x011b5d2e iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0b01485f iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0f766a42 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12086d71 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17a3ec88 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17b91568 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f142e5e iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2317485f iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c536828 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x364651e4 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3aa5d562 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4b05cd2d iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5467889f iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54897788 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a34cb17 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d1a944f iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61c9e84e iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6dddc105 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7a123ce9 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7f501f90 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8ee63cb9 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98b6e1fb iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa03dc9cf iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa48f947f iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb0938a2f iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb6040dba iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb71d8d86 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7e96288 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb82f4d89 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbcc416a3 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbff3c458 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9f38e6f iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcd0d50e1 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcd27e86d iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xce9396db iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdcc895f3 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe4f5077a iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf5d2cd25 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf93ce9c3 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbdf226f iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc1c7ee2 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfcf334dd iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00a37d5a iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2bb55d6d iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3b327c70 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x74f5d2cc iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x81af7a91 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x86007969 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x928a464e iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9e92669c iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa17d74b9 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa26e7aca iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa59d5d08 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb0aa747f iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc37ede39 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc84ccb15 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xca7fc73a iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe7dc7f90 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf6c7db70 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x007f1e75 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0096bc6a sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0b7872e3 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x153b341f sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x19b7c30d sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1a3261b6 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2115b405 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2be4d611 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x333edc81 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x45bf0c21 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x55b7305f sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5f27244b sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x62239184 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x74f9c8c6 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x887d4281 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaa3449ea sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xad7b58dc sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xae0ad05a sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb8b62954 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc507b881 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc9ae9dce sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd360f40f sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd954dace sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf1489ff4 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x058f74ae iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10e171e8 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x111bd5bd iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x123dbf07 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1c7cc748 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x280e3f3f iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x28f7e68d iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c736fdd iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2ea2e81a iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3c790bf7 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41463290 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45616537 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a05b7fb iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4b1918f6 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4c813117 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5a727ac9 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x69ffc266 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6fe78d0a iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x707671a8 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x726f2bf8 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x738d0142 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x777cd186 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x853256a7 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x886f062a iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8adc4097 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa0327f8e iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa0d0fb49 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8c36bdb iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaad621b0 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xabb020d7 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb45fa72f iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbfa21735 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc60a8c4e iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdac2d373 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3322eb0 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe6f0ffb3 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeddc816e iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf06e80e6 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0eb267b iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf26a18e7 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x05796bcd sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x09493381 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3c323bb4 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc783e660 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 0xd8a2fcd4 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x01e0a5a4 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x18a89966 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1957635b srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x46eb3d1d srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x82ca3d63 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf73cf484 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x33cdf9f4 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa35954d0 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xc3ff4231 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xef2e6ef6 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2d182ac9 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3c4dc13f spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7c07fa86 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xad65aa4b spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf50fd121 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x19e244e2 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2f5755a2 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc97b7b00 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf9374479 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 0x03791f2c comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0530ba09 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b030960 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x20eb4f58 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21f6853d comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x24e0e016 comedi_buf_read_n_available +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 0x38be5b6e comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3bd1f80c comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47a96bef comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4d1e3223 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x50a2ee1f comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x54dcf328 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x68d8c5fb comedi_alloc_spriv +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 0x873e3b82 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8984a281 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8af62dd7 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8e23fbed comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92642054 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92751440 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9354d638 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa5aa3640 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa5d9ff7d comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xae023fda comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xae9fee23 comedi_inc_scan_progress +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 0xbd427ef0 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc0caf8e8 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc4ba4b42 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc7e203c8 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd864aa12 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdd9d254a comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf097f00a comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf6dd0ed6 comedi_dio_update_state +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 0x251195db comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x64ba6ee6 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x98c3c4fe comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xb815822d comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xc1a6694a comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xf1ba93d5 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xf6139601 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x08974316 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x398333c6 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x62c9a992 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xb6253575 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe485188a comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf9eca7a1 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 0x0cafc41c comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x10c38220 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6728a397 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc5d46d78 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe0c07dc3 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe38f6577 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xeffcbf87 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x28aab87f adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x1924e97d lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x26dec13e lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x31703dc1 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd99145 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xa90f9212 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x053af304 synth_remove +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 0x1837097b spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x21034f1e synth_add +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 0x6138bb4a spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x636cf32f spk_synth_is_alive_restart +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 0xb48956f8 synth_buffer_peek +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 0xca66523a spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcb634cd5 spk_synth_is_alive_nop +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 0xeaa1b6c2 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 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 0xf816e734 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 0x0d792fd8 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x9a9c5b53 int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x30a888c1 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x3166cfc5 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x5c881243 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x7c6d5287 intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x0953aa71 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa1c516ea __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xbd14fe1c uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x0cc22efd usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xeaca717d usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x358015c1 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x5bb5eab2 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x17c3c77a ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x4fde0c22 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x75884216 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x821e23e6 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb218773e ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xbf22ac84 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1691bea6 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x20cbf946 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3b580bde gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3bf12aa6 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4719c629 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x51a96676 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 0x8a1e38cb gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x92df17a7 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x93db925c gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc46ab967 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcdd011ee gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe4160fe8 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe8af1e32 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf79dbc2b gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf9098a46 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 0x814673f8 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xae04e115 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 0x7791e2bc ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x8e441a9f ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xbd51e61e 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 0x0c805e6c 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 0x2325a7f6 fsg_show_removable +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 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 0x81bea74d fsg_common_set_cdev +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 0x875117bf fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8f8110bd fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 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 0xbfe3f84e fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc9880881 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1002ff2 fsg_lun_close +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 0xd790524c 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 0xeab1a83b fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xefc2e69a fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf1e1d58a fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf2d5712c fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf3c575bf fsg_store_ro +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 0xf6553b42 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x13ea2d51 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1539120b rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2afef6bd rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4bfef40a rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6636a295 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x686511ff rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6b9dde1e rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x95f7cb5d rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa51504ab rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbba18572 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc262c257 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc2751bd5 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd6bb7826 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdbba4a2c rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe80d0fb3 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0b322529 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0dad7f26 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0dc6c2cc usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x110eb6b4 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x199920f1 usb_get_function_instance +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 0x51d05007 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x56a067d9 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5f9a0b18 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d6c1978 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d8dda70 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8420a3e5 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8724696c usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8df56285 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x939c2c30 usb_gstrings_attach +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 0xab174a80 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb0247fa1 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb1e7c996 usb_add_config +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 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd4c84d4a config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd8c3b4b9 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xded63717 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xea806fab usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xef6102ca usb_interface_id +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 0x1835879c 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 0x4cc90a89 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4dc0238d usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6f10bd46 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7a7876a2 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x821b593f usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x872aed08 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xca8876b3 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf7940ccc usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf8af04fc usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfbe517be usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x7ad91f26 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xb9e72cf6 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x03ece817 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0fa5c180 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4df0fb5c usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x73cf9940 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7f06bb28 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x830cd83f usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7321763 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf17adb00 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf6339a90 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x3011524f 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 0x56c2acc1 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xfb760579 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x025beaa9 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1bf0aa5d usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4eec17ff usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6546880a usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6c127677 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7b0a8974 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x85f7cbeb usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x96a21b9d usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9c357625 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9e73111a usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa1e39485 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa6de4b55 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaae9494c usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6368518 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbb95122e usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc629e268 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd0f3217f usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd9754992 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdeac1813 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xeda70d23 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf6249ccf usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x250f908e usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3d9daff8 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5367a86f usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5e560a4f usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x613931b7 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x62bc38ef usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6350ca04 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6b86e913 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6e057acc usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x74a124fb usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7cb4489c usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7dc0a6e2 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8abfb01b usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x92c3f3d4 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa6d0ea2a usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa99b2632 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xae166435 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb36d0ead usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbd375b98 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc9847e7d usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcfe495f9 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd4d9094a usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xda7496ee usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf2c49570 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1c906b68 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x23d4153e usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x24008c98 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x508c5ee0 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6373d324 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x63da461a usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x667ff60e usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7175a9f5 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x82e7e07d usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x87dbb50c usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xabc4c07c 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 0xde9dd265 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0257418c wa_urb_dequeue +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 0x17d43026 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x39260076 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7debf9a8 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xebbe5a23 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf137bd0d wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf35b197b wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x00d363a4 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1fefb982 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x51e2514d wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6cb3245e wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x745aa8ab wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7cfce413 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x84e172a2 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x84ea3b42 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9df4ead7 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd592e7fc wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe0f8a61a wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xeb83eef8 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xed0e9c7d __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xed0f1a11 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 0x326ff905 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x60651e4a i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xafd72fbd i1480_rceb_check +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 0x012389d4 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x034681fe uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0f423d85 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x23c076a5 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2df7bb64 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x463c4131 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x470cede9 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4a955f1c __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4be23a02 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4dea4dfb uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x582696e0 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x68cc421d uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6bc7d742 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x72c3f252 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7325bc15 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x80ea88e4 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x82054378 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x820f0cd3 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8864383f uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8afb2ae8 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x97bab2a9 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9a81ca27 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa50fe8b4 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa9efcf26 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaecce5af uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb660de0f uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb8ad57c1 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc019021d uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcd3a8b84 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcdfd820f uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd02e7ce1 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd71c4346 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xde084073 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdea99444 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeccb71a1 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfb8fe3eb uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfbfc1ad5 uwb_rsv_modify +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 0x40e2b366 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4a38cccb 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 0xa4c1c96d vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xae5b8cf0 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xbd09c481 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 0xfd87479a vfio_add_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 0x04be549e vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2a17810c vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2c205216 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x36d15b98 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3b8a57a9 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x40affc9e vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x473c8778 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4bef9f1c vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4bf5aa57 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6374f980 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x71f5281e vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7370fd37 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x742fa61c vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x80d3e4fe vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8909df62 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8948d4cf vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x90f64869 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x97364b08 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9f5f8198 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa085622f vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaea8fc20 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb5d36b1a vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb67be33c vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc23cee9e vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc90ba7f3 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdf7cb4cb vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe2faea2f vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xed08a335 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf095265a vhost_add_used_n +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 0x470ebc2b ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x548cc21c ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x62c67568 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x78aea6c3 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa7b711dc ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb586094d ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd91e16e2 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x16f4248c auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x21f1175d auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x68f0a7ac auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x721f1c02 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x842d93c7 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa444073f auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb039d5d3 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb0f31d6f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc4f3ec06 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xea4a7710 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xe2b00f61 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x2e465873 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x6176b637 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xaa37bbfb sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xcb74a62d 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 0x6bfc1de8 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 0x195c3308 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4bc8f263 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x907e2ffa dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xb1fa16aa 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 0x330db0ab nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3ca3dcad lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6be786ab nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x730d1410 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x897de84b nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x89915dae nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xfe94753d nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02cb7ab7 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05bcf37c nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05c14555 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08b7f57c nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d73df30 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e125bec nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ee6fae3 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x105bd091 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x136c49ee nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x140a598c nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1bc101b4 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d6e6f20 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22915fe1 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a499732 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e89813a nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f27dac4 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x309bcd23 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30beefd5 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30cdaf37 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34985ac8 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3811abc8 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x392a8a41 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b9571f9 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c408cd0 nfs_remount +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 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41f16877 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x439d40f9 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x453adf69 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49a83723 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49f93053 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d44e74c nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e119fd2 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e50dc76 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5147993f nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55d4efe2 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59085f46 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ac4090f nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ae5518d nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b06118e nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c98fedf nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61aa1fd7 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6383f90c nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65cc9a83 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x669aa70b nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68e74836 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x696f2ac5 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b23f37a nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d005e07 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e91d88f nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x704c164a nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7228c168 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x724f49ef get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x727604e4 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x732622d1 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x763a3eff nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7be0eafd nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e7c46d7 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81d60015 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8279eb21 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82c5a66f nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8384900e nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8403c844 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84c19417 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x870225ad nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8dbf7fcf nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ee4f5ab nfs_pgheader_init +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 0x92d252ff nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93693d31 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93e2e3f6 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96b5a717 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99fe1bb9 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cdda5de nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d01c5fc nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa00e3a11 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0f600a0 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0f91e3c nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1c3d1e1 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2191dff nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2916124 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2a1ad50 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c096c3 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8dabbbd nfs_generic_pg_test +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 0xaee90615 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafc513ef nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb04dc131 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1aa843f nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3e7cadd nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8ceb771 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba14189b nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb36974f nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb3d1856 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbfa5e1e nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd459db8 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe32a1e5 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbee4bb36 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3802e6d nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc39ee538 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc543180e nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xccf05d52 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd37720f nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd6bf2a2 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcdf43f17 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce3eaafd nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfad6bbd nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6239482 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8763382 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdaf6aa95 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb5e500b nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf8f49d7 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2833a4e unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3d76d77 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe55bb9c4 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7688d8d nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9299b2e nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9c14bce nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea5b7115 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec829180 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed562c14 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xede8da67 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee042397 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefc3a94f nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf08eb59f nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5b070d8 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5f77096 nfs_request_add_commit_list_locked +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 0xfced6bea nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x6dc8412a nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0057a13f pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x006f343a nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0315643d pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0705035d pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08f8d018 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b7c7372 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0d6e0cff pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ee6a3e4 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0faf5547 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x18132681 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19b55697 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2148d188 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x234695df pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x237d1664 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x26283fc7 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c377fca nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x32d851d3 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3591e320 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3fa8710f pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4d606db6 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x524c3456 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6411ef9a pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a3aa17c pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ac4fdc2 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ee71fec nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71258e2a pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x757ac14f nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x80c9dbf6 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8bcb97ee _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8edcb330 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x913b7988 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x921f6f48 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9af2cabd nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa166c9b6 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa3572bb3 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa456958d nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaa0d05cc nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb3368aad pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5741d3f nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe51799d nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc7e2562a pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc8cd4dbd pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcad3520e pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcbe0dff9 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd70d20d pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd423afc7 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd628bd7b pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9ae6b77 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb9e4213 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe05e9eb3 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6c01294 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed1de6ed pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf6d519d1 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7b0b333 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb348978 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb69d826 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe973136 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x223c0173 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xd328c023 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 0x235e144d o2hb_register_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 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8b5c4a65 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8d882a4e o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x906e981c o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x97e7d9b6 o2hb_setup_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 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xba511322 o2nm_node_get +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 0xd208c5fd o2nm_get_node_by_num +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 0x03bab2a9 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x09bd0f1b dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x300b5bf7 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x475c1eb2 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 0x8715c7c0 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xaca669ab 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 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 0x63f7a06a torture_shuffle_task_register +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 0x6dbd8f40 _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 0xc269456d _torture_stop_kthread +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 0x115c4a43 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x5306e45d lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x0454ac43 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x3efe68ab garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x606d0b25 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x6bae11aa garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x8d851888 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x9edfebf8 garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x04ea6d7c mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x052042ae mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x22a6a233 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x6ae634e4 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xcd645a88 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xf50f270a mrp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x359dce86 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xe51adac8 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x6d9044bf p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x95279e5c 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 0x7aafa0a6 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 0x05adcf3e l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0679a34a bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1fe32c76 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x33a39293 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x4332d669 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x4593d3b5 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9a206fc2 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbe776c2b l2cap_add_psm +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2e75e571 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3ba5433c nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x579dded9 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5ac44812 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xcf8e6964 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xcfba4f98 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdb9b40d2 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe4009b0b br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x151a0a6a nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x5da27c7c nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x04132c74 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x07bba3f0 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23f70278 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b4b7df7 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2cf6a1c5 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2d60c6e0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x333b4f59 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x362cda52 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3fc6f7be dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4afddffc dccp_parse_options +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 0x5cdb1d72 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d46977f dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a610f0e dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7c1a8cb1 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e596a13 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ef3fb07 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9e82e743 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa17a68e2 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb48b2768 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb59102c5 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbaec8534 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc05f13e9 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc09ceb4a dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc4bc6100 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcac9e411 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcf86413e dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd72f2d29 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd9d53f12 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdc9d6429 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdcff36fc dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe9a22f4b dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xecf81150 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe4954be dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2e3472d5 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4b054e0d dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5fe45096 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa36c969e dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc69e10d6 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xcd96991d dccp_v4_connect +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x10103d1a ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6e418129 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xbeca9a39 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc018553f ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xabb83f11 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xadda3544 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xe1e5f318 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x0e4262e4 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x189f725f gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x5cad8400 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x63d20b22 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0x84feb18d gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x674ef659 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7daa838f inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x98d11aa1 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xedbfa7bb inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf2cd5543 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfd9fdaf2 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1c94fba5 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3fffe9d8 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x57d4c6d3 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5e6a2bc6 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x659c7edc ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x85da682a ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x966ddcd5 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xad84d02d ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xafcd1656 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb9afa7b4 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc766c5c9 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd5a11b0e ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe436120a ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf8f65f71 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xaea61b5b arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xa88fc3af 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 0x05e13f29 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x64dcc51f nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc79b3490 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe63d6b32 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xeba95ee8 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 0x9791f69c 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 0x0a8e28e6 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3c99ffa0 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x9f70fd8e nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xa0ef2fc2 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf894bd5e nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x1ddc172c nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x527fa2d8 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x65bf4ec7 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x948a7508 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xdd85173d tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xfc2a89d8 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x571bb91c udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8a702af2 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xf3652c53 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x2cd8abdb ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x2e93c42e ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6f6c0aff ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc6752cc6 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xdfcb9418 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x1790b97d udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x61d82527 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2287666f 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 0x159fb426 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x29d48bfe nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x33466a7e nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x3de1a05a nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xd3ca5f87 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 0x49ae6f1e nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x1eb450c6 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x28cb07a0 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x67f64558 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xa9c11c83 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xbc320112 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x23c499e6 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x06ab8c7c l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1e4755a1 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x392a21e3 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3dbc8646 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4139d40d l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4b7f2e55 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4f097972 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6ca23784 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7639160e l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc11dffba l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcee823a6 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd6905c52 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xde989939 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe749e674 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xeaf2c892 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfcc1b2e3 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x02253e13 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1e97aaa3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3a205711 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4785054e ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4f082a65 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x65c8ee10 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6941b299 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6b8249bb ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x74fc31b4 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa2691b15 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xace70cc5 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb00f1268 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb646aae8 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb8e648e5 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc646c7b4 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc824e0e4 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc893c6ed ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2c035a99 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3883df3c ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3cf36b65 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4412f2a2 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4d1c76c8 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5df3a3fb ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x706fc6e1 ip_set_put_extensions +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 0x89d93077 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8e24389e ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x90ca996d 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 0xa6bd42f4 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb365e325 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcb039f2a ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcdd999f3 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd91afe6d ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdb94a3f9 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x18bbaebf register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x299c99be ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x870e2c92 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xcb213ac1 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01dd2a26 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02bfce7a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03db9173 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x130d2449 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16e510b9 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19f15cfe nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a1d3fdc nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a61235e nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1abf4f88 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x22352140 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2271e70f nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x248795a0 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26c03204 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x287ca696 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28f95399 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29652e28 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e2c8487 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2f2368bf nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2fb176a8 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32539c91 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33e356cd nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34fec10c nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39577fe2 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3adf1767 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3dc883cd nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3eb83517 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4726d3f6 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4dc24a21 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55512242 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5aa5f821 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d890366 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ee502a7 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x602e3be7 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66234b97 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x686b4009 nfnetlink_parse_nat_setup_hook +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 0x6a42c88b nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72573749 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74deed0f nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x75a61db8 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77ad3d55 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82d72357 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87e7f5ed nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e3e3e63 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 0x91f15479 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x923d26ee nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9290b1ab nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93ba9acc nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97c3c774 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ad5e94f nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b53a106 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b57bb6c nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ccc5498 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa17fc749 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5f5a5f6 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaaad9ce8 nf_ct_unlink_expect_report +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 0xae8648b5 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0158359 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 0xb7587a44 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc04be38b nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc138da83 __nf_conntrack_confirm +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 0xc491a071 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4e10e1f nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb32a3b8 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5e944d8 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe639fd91 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7e080c6 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7eb0eed __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe904c13a nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb3169ae nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeba22a64 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec530a7c nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf06d21b2 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf07fe958 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf468e985 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5aa9cfa nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff125b0b nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x4343aafd nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x449be0c4 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x43b35b86 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0483f47a set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x173784ee nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1d73d43b get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x307186ec nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3287565a nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8ee35ce9 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9531c575 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xacd62b20 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb2fd5549 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe0feeec5 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x3925f61e nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0efb8619 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x4239d2b2 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x85ce78bc nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa3d0ebb3 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x76a5b1fa nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xe963f276 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x26ceb071 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3c3042a6 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3d22d02c ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5d6060a4 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6175fd15 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x95ddd0a6 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9d1adf9d ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xb8384300 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x163c37af nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x111fd001 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x65ac8760 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x822f0ea6 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xa4d0f637 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x01854257 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x06957cbe 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 0x3df92c19 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x422c7736 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x69dff2bd nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x72582eb4 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x791da462 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xca2c5d93 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd597941d nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x14ea78b3 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x8d6bbe4a 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 0x4ad8f709 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 0x9e3e05f0 synproxy_tstamp_adjust +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 0x0c99f450 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3303b796 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x430ed6cb nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x47dcad03 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x655145c2 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x659734d7 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6d075b09 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7eb2b014 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x83ab7e4b nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x874c785b nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9446185f nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9d78a897 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc48f31ef nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdab1a994 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdd20c1d5 nft_validate_register_store +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 0xf7fc72f5 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xff0974cd nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x096f0ac4 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x295bbe85 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3c5ac8eb nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3d4f4e6d nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc5ae34af nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd8fece07 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf4793fc4 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x97a75728 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xde2d77c7 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x23461d81 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x753c0040 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xae4b22b1 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xcf9c1f09 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x727efce9 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x7c0fef60 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x967f21c2 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x9a0fdd0f nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa4569616 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd3ae8749 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x8aedcb91 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc7ae9652 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xd5a303e4 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1dc42957 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x96879980 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 0x0a2785d1 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1f7bba76 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2b5bd505 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x50186254 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5708fbc4 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 0x696c2a54 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6a6ff382 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x711cc273 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9a505654 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9e88cc86 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa30b2e38 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaaacd671 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb85893f3 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc2a9351e xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc3ef64f1 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcc012ef6 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd077bb06 xt_request_find_match +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 0xf306d67f xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf9b38e5e xt_request_find_target +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 0x24afe58e nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x43d91dd7 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xcd2ad21f nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x6e82d05d nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x7591223b nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xe96e4935 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x01c7dfdf ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x39d0b584 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9c0e8474 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbcfff00a ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xce202a1d ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd3526a4c ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xdd54c196 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x088b119a rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x08e3d2eb rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x20875f31 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x25915afd rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2cd65af3 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x309305f8 rds_inc_init +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 0x3bba1bb4 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x3f5e8a84 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x4e7dabaa rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x638ddec9 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x69bb2db1 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x72968731 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x79d7a9e8 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x7a65b2f9 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7d39e82f rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x975d4b30 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x9eda5bb0 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd8363649 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xd8cbd5ab rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xdb78c0d1 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xe1e05baa rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf5106883 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x53ad794d rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xfa8f1539 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 0x385425ea gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7f561e68 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 0x9a09099f 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 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03785418 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0560975f svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x063344f3 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x067addc7 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x099330f0 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b9726b8 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e01c1e7 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ec6cfbd put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f0c731a rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f9432cf xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1066b095 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11e67c11 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12105caa sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13ec1503 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14148024 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1478ad78 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x150038a9 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x187e623b xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x194e34e1 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b6972ca xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d4efa26 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d856b30 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e6ff4e1 xdr_init_decode +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 0x21198a0c sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2211fb42 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22775022 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2408a6c4 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2417dce4 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25351e08 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2537b85f xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28204dd7 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a9626d4 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b60886a rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eefee4c xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fbe7d27 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3007ac73 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32a7cf59 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3427a709 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x353e1cb2 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3543a46c rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a5efe58 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cdb8a00 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3da5cf34 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3db9b319 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e38487b rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e644970 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3eb5b640 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f3a88d0 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fa40a91 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40af09b5 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41698740 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41eb2b53 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x428d3449 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44565802 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x459785bd xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x468cadb4 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46ddad49 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47bb7cdf xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x491dfa59 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4921d8cc xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a9476f1 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cbd5a15 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d19bf40 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d7666d5 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50153738 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558a4adf auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56c69624 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x582d90ca cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5abbb845 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ad63521 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bc8fc6b rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cfec3c9 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d926f1a unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f0aabe7 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f7d2d67 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x618ac6bc sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x627648b0 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62d647ef xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x637c3026 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64469c25 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x657a97c3 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x668e98eb svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66d14081 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6af34651 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b59c27e svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b8ab5e6 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f6b12c8 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72c0759c svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72cfefd0 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72daf4af svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73999852 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73dde8b0 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76b48d67 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x786d4925 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ac514c3 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ffd173e svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8067d47f rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81583a8f xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x815fcac7 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87d78f32 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87fead38 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ad3eee8 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d146209 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d74e726 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8da6dc45 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f31970c rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90d02cc1 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91feef9f rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9344cfb9 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96bbb2af svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99525719 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99e3428d gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a373db4 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aabc3b0 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ba8a32e sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ce31531 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fa3a83c svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2446ed7 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2d41e57 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa56d187d xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5cb92d9 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6195b87 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6caca3b rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7814a8d xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa900aac0 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa42ce3e xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabb39fdc csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabf2f406 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad6585f8 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae93634f svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1bc3962 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2c9037c rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8f314e2 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9feaae8 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaa82b1a rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcca0458 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc06835f7 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc18835d8 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1e0ccda rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc20a1c70 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2891a88 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6ca70e3 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6d64d32 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc77459e2 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd125459 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdea8abe svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcea3e3f8 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf3f5cd6 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcff989e2 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd08fad10 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd100cb49 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd271ba59 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2778d1b svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2cccceb sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4689d29 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd512ce66 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6c54fb9 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9b1778e rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd63c86f xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddcd9b80 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfaf3158 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe15022a9 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe312606d xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe35f5060 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3ba4043 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6382fcc svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe64c676a rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe68f2187 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe74441d7 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8d45f86 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97d10d1 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9a0cb67 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebb0f372 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec5e6e97 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee698595 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1210731 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf163fbaf rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf172efec rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf468b730 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf471244a cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf51e039d rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5f7f041 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7118e54 rpc_peeraddr2str +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 0xf9e1dfb4 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbee7ebc rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd39dacf xprt_set_retrans_timeout_rtt +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 0x1dc58819 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x377ef8d3 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x48c93306 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x58c76131 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x688a37d2 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x788d698c vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8e5b5164 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8ec3a02a vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9944d623 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa9f3e7d7 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc5f2948d vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeed4950d vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf596701e __vsock_create +EXPORT_SYMBOL_GPL net/wimax/wimax 0x02f176e4 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1644a78e wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2eb1ebd1 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4cbecdd5 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x60379bcb wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7c48caee wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x84d4dafd wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x86fe72fb wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x982abf51 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa179403d wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcfa0cfe2 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd1d304a0 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf0382143 wimax_dev_init +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x087ab840 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1054a40c cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x12dd6dca cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5dbe564c cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x630e2493 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x94808bd0 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaad276e5 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb7b504b9 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb969e7f9 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc765bcb2 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf40a43b9 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf7120971 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xffa9af9d 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 0x64861ba1 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6ab3ad20 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x97df972c ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9fcad7b4 ipcomp_input +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x4722f8ab snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xea0f1899 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x14e1c6cb snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x1be2b0d2 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x1c801a1b snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x399acfb4 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xdab8315d snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xdc5a657e snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xf2173610 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x1b2659ac snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x700335a4 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xd6b6db5a 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 0x0de0fa68 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x5311f57a snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x59ecdf06 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x5e17322b snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x74dd9e98 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 0xbc8d5d1a snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xd6352f10 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe8d01019 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xffb9bc9e snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x02d33fa8 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x0dfdc26c snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2b15290b snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6d9417e9 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6e6ea18c snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9a41ae66 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd5e6ebb7 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd77a2253 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xea11acb4 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf4432dfe snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf9714fe5 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0053391f snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x05820b2a snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x05e6ac91 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0719ebe9 snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0c49a0a4 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d6ed56c snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x11040b09 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1720d28e snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1af3d74a snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x25c2b377 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x25cc8332 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b9db08a snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2edd5599 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f29773b snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3226d247 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x324f64ef snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x34ac7e3b snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x43b1a956 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x47a5ca83 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4cd3fc87 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f604dcd snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x63d76316 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x64cfaea8 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x681ba607 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x72ffe0a6 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x75c7356a snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77981953 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b107bf7 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b5edccb snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c4c1723 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c552d68 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7cdf0fa5 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ea95537 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8565b2af snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8795acc4 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8cc66324 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x914e353f snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x955eb93f snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x98c0c9b5 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9aafefc5 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa0da2220 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa420aa1b snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa438fbf6 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa8c7d7c0 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaae4960c snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaef5f84f snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb07a2682 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb4673f78 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb5f3e127 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7d2819e snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8b3b3a9 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba32f22f snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc227800 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xce32d155 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd63a902c snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb95f128 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdee11ff6 snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe03e796f snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3d96cfe snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6a824b0 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe8892197 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xedcdd667 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeebb7449 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf1067ea4 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf22f2c45 snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3bc93ee snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfc6fdc90 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfee9ba94 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xff337a7d snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0864a523 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x32b512c8 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x33303de9 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb47ada8d snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc9b91618 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xcc0b321e snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00c82f71 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x027a2b0b snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x058e0df1 snd_hda_set_power_save +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 0x069e05f8 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x090440e3 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09c76c20 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a9fa023 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cf76198 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e9c0bf9 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x109991f4 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14bd6cfb snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15db9a31 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x162168cb hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17b60f3c azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x188ade41 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19dd1beb snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19dd2f89 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b60d83f snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1de76a1f snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f07fece snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2061f1ae snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x225a19e0 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x237e3fc2 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b06c1b2 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f9bef87 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x310d0df9 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31dea69f snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31dfdc90 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32f97ddd snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34136c02 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36151090 snd_hda_codec_load_dsp_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 0x377a4534 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3af4be64 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3af6e8db __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b70807c snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c5af17a snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cff560f snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e600915 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ea87e2d snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4078313c snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40a70ba3 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41972ce8 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x432f89d5 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44096794 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47b3045b snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49596237 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a9cd122 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f96c71e snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5134446f snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54749341 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54e8220f snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56f3ba96 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58983190 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58b587e6 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bd13309 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5cf06c65 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d7bd804 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ec43267 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x605f70db snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61a86512 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62c8f955 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62e10a01 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63b20ae4 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x650b84b0 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68276884 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ba43181 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6cbf56f3 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e5af08e snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75da2b7b snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7790b131 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x780938f1 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x791d9436 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ca8f8d4 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81976b64 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84c53cd3 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x876f2388 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x879f0d90 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8993b96a snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8aa70122 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b3a1c13 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c551b71 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ea7745d snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x905650de query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9077afbe snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91002977 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95df7f19 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95efae30 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bad203e snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ed76efc snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f549e88 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0174107 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2532464 snd_hda_enum_helper_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 0xa30efac4 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4dd8124 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa78061e9 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7bbbd06 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa857fc79 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaaba2887 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb04da1b5 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb11dd21a snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb530c8fb snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5fc5a78 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd89235f snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc11d9b03 snd_hda_pick_fixup +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 0xd2597045 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2ffa66e snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3c1237c snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd41ef7a7 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd66c83be snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd676055c azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc5c4eb6 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc741a7c snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde8b73ce snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdec19221 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf5ed34f snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe53c4660 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5f1c5f2 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe61016eb snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9344f3a snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9ee867a snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeebc7baa snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeede6ba6 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff28cabf snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff9ae739 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffcaa26b snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x10417418 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1ccf9b39 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3050e3da snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3cc296c6 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x49f1c849 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4a5c73c6 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4f8efee9 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5060e139 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x54824cc3 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5cad81d0 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6cb44895 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6f401dad 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 0x7bdcf8cd snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8447c275 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9893ad51 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa5bfe71c snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc6f7bc5a snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcbfa92f7 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd1c1db29 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe8a60075 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf4be8e02 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x1e157ec3 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x5bdf0d9a cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x498cdf06 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x991678ba cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x3e6feb29 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x5913e171 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x629a8043 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 0x4bf3b751 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xce663fd1 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0xc5960e86 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x18c0cee0 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x21ad0d05 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x73fb5bf0 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xa958c790 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-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 0x97004280 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xcc4532d1 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x62b72443 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x69a6b6e6 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x139a6ba9 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x17898bcf rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x26406873 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xaa9ea36d rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x397f3e6a sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x5c31ad5a sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xaa7392ec sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xad1db528 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xde4cd823 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xec99c7cc devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x565fb500 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x8c97a92d ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xe98ecc98 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xfc9ff426 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x828a15af ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x16b1fc63 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xe590ab1c wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xeba3a3d7 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xed86bc35 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xd15b8836 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x3e2a22ae wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x7a6be7e1 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xf346dd01 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 0x00064331 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0x1af770f0 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x07c4cfb6 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x09c1f2f0 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x4e83f0ed intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x7b77c5ed sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xa5871172 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/baytrail/snd-soc-sst-baytrail-pcm 0x5f626f16 sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x83fb031b sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x8c8fd8ac sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xc9ea48f2 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xda44fa3a sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x04c2e13a sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x09483f83 sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0b6d22e8 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0c3a93d9 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x167c6561 sst_dsp_dma_copyto +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 0x1cee1d39 sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1f214c80 sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x242e2adc sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x28370390 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2843541b sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2c72b8c9 sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3282e8ac sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x337d109b sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3597a6dc sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x359f9dbe sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3b74754e sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3e91d0e8 sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x42a5fe69 sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x43c80273 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x450dd0fa sst_mem_block_register +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 0x4aef8d68 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4af3bc2e sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5629f649 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5d4ca3bd sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5db62fa7 sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5f0f6272 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x66c57afb sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x66fff18e sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x69669b6c sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6b8de7a1 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7971f8ee sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x79d4d3d5 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7bbfd3dc sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7c752d82 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7fdf2f94 sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8110e04e sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x841e86e6 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8c20c7eb sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8ccb972d sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9401fb56 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9624ed09 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9f7f655b sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa742491f sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaaaffc33 sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaff3a126 sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb2c44b1b sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb314e597 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb41f90b7 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb5ff662a sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbc40585c sst_dsp_dma_copyfrom +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 0xbd94301a sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcfba4e01 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd237faae sst_dsp_outbox_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 0xe519cd36 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xea0595fb sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf73176c9 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfa28bc9c sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x0df84cfa sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x18164e60 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x2b8699a3 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x34d0a888 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x775a7245 sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xb7e4989e sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xd6d3638d sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x4180e557 sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x89a9d992 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 0x02555df5 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x032227bc snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x070538ab snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0744a602 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0747cfe6 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a8632f6 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0dd14c53 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f749f46 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10870e66 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10d0412b snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11709497 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1247fdd2 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x140e31ef snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x141657cb snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x179280f5 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18915b94 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ac3ba3b snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c0b95cd snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1cbf5b07 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1cc2f95b snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x204c7800 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21a75043 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21dd48ab snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x269d4ee8 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28a8ff56 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ab96b0c snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ffacfe9 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3009dfe6 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x304ff716 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30a49a2f snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31a4c362 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31d6abd4 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x336eb3b5 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33e6f6a5 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x341f353f snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3593564f snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3adda7f9 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d88e88d snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x414db161 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4212c1ca snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44d13ed7 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x458056e9 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x478dbd0c snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c3463d3 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4db75c64 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e73a9c6 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5005098f snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50b66057 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50f6ac80 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x519f2648 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x525a51cb snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x532d6aeb snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54822762 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55902381 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x572a6850 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ab162dd snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c59a272 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5cbf2541 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dce371c snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f29d21f snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5fb61401 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62401722 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x638be337 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64147cc6 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67b8c500 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c6bcd27 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c6ea8ea snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e3c6948 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x709a3a73 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7390a150 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75e372b2 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76a6beed snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76d98bfa snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76f87690 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77e1229f snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b87c48f dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e8ba017 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8004293b snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x801b3521 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81e3bc6a snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83a1e372 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83e726f2 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8712eb8d snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88c228f7 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89ae7f25 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8bec316a snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c5a2219 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x930559ce snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93d5ecc6 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96b717ca snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97b415e3 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d24f28f snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa083a582 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0afeefe dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0cc402c snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa12f02e0 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1abdbeb snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa836a3e4 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9ccc68e snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae0005bc snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb147144a snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb29b1ebe snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3fcd828 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb51bf77c snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5d04a84 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb603f241 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb711424c snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8013b9f snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdb57dea snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe302d35 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2fac6cd snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3247ac0 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc58c28c9 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc63304f6 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6a9d87f snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8fcd678 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca5b380c snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce95c6c3 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf33a5d2 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1590a9f snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1ae97f5 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd300a462 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd813655f snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde557d49 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdea4eb1b snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe168685e snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe351c632 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4ef19c5 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe563ce2e devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6ffb017 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 0xec8820d6 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xece8391b snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedae112b snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee074d96 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef9175f9 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf13659f8 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1cff661 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7557b52 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf84d2e03 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf937e4bc snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb7c882c snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfbe7493e devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfcba2a7b snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdb6a056 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe08b339 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff737669 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0238f91f line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x08704205 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x115aae5f line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x172a8bc3 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4a06e055 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4ff8502a line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x51234f5b line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x52c100bf line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5824e086 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x587f64e1 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5d31c91b line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc5a14db6 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe12dae2f line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xefb54bba line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf4e20764 line6_init_pcm +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 0x001a8925 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x001cc7fb key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x001f3130 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x0033af5f platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x00413501 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x0041f3a8 scsi_target_block +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 0x00d523f8 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ffec3d clk_register_fractional_divider +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 0x01288710 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x01539d27 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x0153a97e ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x015a644e devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x016b4649 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x016b80f7 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01b2e1b4 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x01c9ba10 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x02092586 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x021a4ad8 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x02434cd5 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x02512048 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x02585106 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x025b40ae blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x0272401f pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x02791874 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x02897165 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x029084c7 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x0294eef0 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x02bc79fa acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x02dde13d scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x02e51f35 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x02f1ebb0 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x02f82ea5 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0313497a wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x0317324b scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x03240aa1 put_device +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x035848ff ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x035bc872 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x035db192 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x038f47a3 ablkcipher_walk_phys +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 0x03ef2f0c apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04208948 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x044c04d5 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x0489e2f1 usb_free_coherent +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 0x04cd0b05 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x0502a0f5 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x051876cc component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x0544230f fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x055213c0 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x0554eb36 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x05625bff dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x056f0fbe __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x057ac30c usb_string +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05e9f27f posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x05f9fcac ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x06227621 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0651879f ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x0651ca0a nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x06796ae4 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x0682deee trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x06984624 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x069a9b22 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x069affca pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x06ab4481 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x06c05820 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x06d1fec4 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06f99256 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x07185aaf pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x0728e752 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x075e7fa6 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0766a9b5 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x0781998b ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x07963998 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x079cab3f request_firmware_direct +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 0x07cdb593 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08201946 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x085f2630 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0861c7a3 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x086bf189 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0883a5ca wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x088de0b0 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x08ac8143 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x08b32160 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08ce7b01 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x08ef809f crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x08fe3fdf perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0925e186 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x0938599c ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x09830c51 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x098b508e dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x099a648e sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x09af3621 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x09d60422 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x09e9712a generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x0a19cf21 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0a4db814 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a8f4ff1 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x0aa0ffbd device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x0ac2431f device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x0acfc64d gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x0ad4008f ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0add2e52 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x0aeead39 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0bf132 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0b14a7e3 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x0b1aeeab trace_seq_path +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 0x0b8483b7 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x0b8f76dd led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b9865bf debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x0ba8c68d pci_find_next_ext_capability +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 0x0c1f41e2 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0c1f989f devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0c21c6fd pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c43d754 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x0c71ccd0 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x0c740d71 spi_new_device +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 0x0d12388a mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0d190423 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x0d2ff8bf device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x0d3b9beb perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4cc44a ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x0d7509fd pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d896b27 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x0dcd8419 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x0dd7a5b2 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x0dd81d11 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +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 0x0e154f80 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0e308faf regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x0e441633 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x0e5d5ca1 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x0e601420 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0e799646 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x0e91ef11 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed6eca1 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x0edb07eb class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x0edfd1b5 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x0f1f8453 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x0f25fc3c i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f3b1fc3 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x0f4191c1 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x0f467c6e powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x0f602c62 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7db11e fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0f7fe186 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x0f865c04 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x0f9164bf devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fd5a913 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x0fe1e20d wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0ff9b1c3 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x10114c45 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1023e45b sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x102cd039 device_create +EXPORT_SYMBOL_GPL vmlinux 0x1058089b skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x10990f14 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x109e67a0 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x10a37f7e smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x10b5a75e register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x10bc648f pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x10c1199d input_class +EXPORT_SYMBOL_GPL vmlinux 0x10e371dc __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fb000f nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +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 0x11850910 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x118acd93 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x119df890 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x11ce5bfa devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x11ee4141 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +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 0x126e5dfc bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x12709936 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x1291ee9f acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x12923655 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x1294d80a get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x12afe12d usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12cb1084 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x13018bb0 dma_buf_fd +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 0x1340d384 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x1345d65c devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x134cd75b pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1384af68 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b7e976 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13c45f01 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x13cb9166 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x14365419 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x14546201 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x1488d2fa inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x14d3b256 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x150d9b3b inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x152353ec __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x15421d7a __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x154b3c16 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x155a9f49 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x15745287 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x157c58af ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15910c94 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x1594bd6d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x15a9336b crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +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 0x1604ec8a acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x160fcf63 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166751b1 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x166b1f28 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x16861e62 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x16b43eeb device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x16e95d3f ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x171864c9 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x171b97da debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +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 0x179f0163 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x17a15a1b evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x17eb45ce __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x1818dc10 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x1829fd4f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x183b9beb inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1848eb66 init_dummy_netdev +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 0x187d2615 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x18826e85 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x1887f19c crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x18c0a434 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x18fe94cc xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x19115800 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x19341772 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dba52 acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19798a84 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x1986c316 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x1991738c rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ab806d power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19bbdfab gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x19bd4a4d devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x19d21fc0 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x1a19b7cd skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x1a22ea31 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x1a60d48c gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x1a691247 crypto_lookup_skcipher +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 0x1b0a55d2 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x1b0eb1c6 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b421e6b fuse_sync_release +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 0x1b991818 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba78c27 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bc9db40 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x1be8b15a net_ns_type_operations +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 0x1c6aa6be inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c879a72 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca90182 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdaeab4 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1ce2df24 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x1cf661de crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x1d3a1cf5 thermal_zone_device_unregister +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 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 0x1d9cea88 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x1dade819 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x1ddfb9fd ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e0c8594 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e1218ae nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x1e323fce handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e386fe6 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x1e41c368 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1e5a73f4 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5f70fe nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x1e62336e pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x1e68ce14 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1e6b307e pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +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 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ede364f xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x1eed6238 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f302390 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x1f4c5c50 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x1f50e057 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x1f60f936 wakeup_source_drop +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 0x1fabe65d gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x1fccba10 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1fd0cfd9 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x1fd1490d ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x1fdda5ec ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x1fe32364 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x20029aba usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x20060efc nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x200c04d8 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x201d2585 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x2023da67 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x202aaa08 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x20394c00 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x2046ee6a md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x20477269 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x205c5a1b __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x206df36e scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x207f2ede hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20914278 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20aa956b extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x20b2f3d1 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x20c4f7ca wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x20f07aec blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x20fba861 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x211a1e94 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x217512b1 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x217828e5 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x21818964 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21abb93a skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21affe5f fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x21ba0d23 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x21bc4c9f driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x21c5aadb blkg_lookup +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 0x21d70b2d fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x22253308 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x224ff2cf xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x225f5904 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x22797a41 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x2284f4dc bitmap_copy_from_slot +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 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2303d72f mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x23374d8d wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x2352ddd2 regulator_get_bypass_regmap +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 0x23b5e8da netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23bc13ed __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x23d81c5e regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x23e39a70 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24362c44 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x2445170e virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248e61b8 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x24947686 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x2495b8d5 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x24a6ccf7 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b43670 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x24b83044 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24dd58b0 aead_geniv_free +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 0x2506c993 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x250e374f tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x25308692 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2538ce6c gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x25603761 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2598ccd3 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x25c7b083 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x25dc1c16 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x25e38477 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f2929d pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x2616ed84 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263b3fa3 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2657dd58 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26827ff5 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x269071f4 nl_table +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 0x26b9284b usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x272643b2 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x272db2f9 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275584bc gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x277a8fc4 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x277a9395 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x278f312d __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27a77227 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x27b6f916 fib_table_lookup +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 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x280e9cba ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x2815fb84 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x282a216c trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x2878be70 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28ddb36b sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28f2ad14 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2917b597 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x292c571a crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x295d8edf regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x29846db2 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x298d0a27 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x29ad3899 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x29bcff8f crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x29c0f4f3 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x2a1ec0f7 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x2a3193c0 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x2a54843c nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x2a5514c9 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6a0800 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x2a982407 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2aa5cba2 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x2aab3418 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2ab2b986 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x2ad6a019 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x2ad7ce6d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x2ada1ccc fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x2adef634 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2af82cc4 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x2b069ab2 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x2b162bf2 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2b400ee0 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x2b41b424 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2b497fcc xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x2b53f43a usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x2b74fb47 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x2b8c5809 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b9a7540 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2ba25a97 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x2bb35288 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2be0bcd6 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c1a3897 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2227e8 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c383464 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2c613fad filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x2c7167f1 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ce82efb tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d01498e rhashtable_walk_stop +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 0x2d29f529 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4b0441 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x2d4dc088 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d61b2ac blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x2d676020 component_del +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2db57825 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x2dce48e8 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x2dddfcfc ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x2df30b9b tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x2e0e2bce usb_hcd_unlink_urb_from_ep +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 0x2e43ae70 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x2e50f8c7 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2e55f6a7 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x2e6678de list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x2e695eca serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x2e807adf __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x2e8b324f dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x2eae7ce3 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x2ebd078a acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec08106 md_rdev_init +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 0x2ee4bc2d relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x2ee843d3 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x2eec6ca7 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f442cd3 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f68fbb9 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x2f766c59 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x2fa3854b ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x2fa41f28 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x2fb344da sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x2fb4f86d regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x2fb5154b sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x2fbd5875 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2fc18372 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff4c7bf acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x2ff9eb8b hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3001349b vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x300ef3a9 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x30147780 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x30198d31 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x3020b308 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x303edeb9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x30410b12 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x30552f42 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x307e45a9 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x309471b6 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x309e694f pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x30a70f16 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x30b0b758 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x30b151d0 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x30c79c21 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30f81353 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x311a1a63 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31273ec1 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x312d6224 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x31552a4a raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x3159b272 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x316de67f usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x31a5069c ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31e26f52 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x3236c058 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x323ffb84 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3288fca8 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x3299d317 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x329f1e25 power_supply_changed +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 0x32c89c62 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x33150900 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x331b5d5f sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x3324703c pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x3327e0bc pci_generic_config_read +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 0x336f9c1f devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x3390106c __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x33a2f618 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x33a32e4c cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x3407b64a srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x340b46fa transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x341e6ebf blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x3438447c skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x3464be5d gov_queue_work +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 0x34a2c382 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x34a4f63d irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x34b34024 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x34e1ed65 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x34e9c06b rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x3521281c netlink_add_tap +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 0x35589476 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x35791f2e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x359df1c8 put_pid_ns +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 0x360e4df6 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36312489 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x363674e6 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x3694879f regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a3e588 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x36aeb31b cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36dbd670 __inet_hash_nolisten +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 0x37218566 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x372fc690 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x374055c4 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x374093d7 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x37570cae inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x3763a4f1 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x37758d4d usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x377bf157 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x377dd460 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x3797053d usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x37c1600e regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x37c60859 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x37ccbc84 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x37da5e30 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x37e58e34 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x384c72ca bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x38528cc1 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x385efb40 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x386abedc pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x386dce5c dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x386f0b1e regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x387a7a91 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x391e07b8 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x3924bbb9 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x393d4a42 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x397c76aa regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x399cd25b pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x39b6e6af tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x39c5721a xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d1ce9f ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f2d579 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x39f75008 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x39faaa2e ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3a173ec4 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3a1eaf83 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3a21003b regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2938ff ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a3d2d6a bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x3a4a6352 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a6c8069 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x3a76ee6a need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a94eab5 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab522bf crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3afa11ca percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x3b0381ae usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3b1fb01e xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x3b480093 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3b4bc201 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x3b5f79f7 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x3b653236 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x3b6e0679 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b741b52 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x3bdf66a2 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x3bf9cc47 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x3c4a81a1 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x3c759978 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cad1fd4 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x3cb128dc sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x3cca395e crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd373d4 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x3cd6901f __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x3cdf9b32 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x3ceaa14b reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3d1c78c8 device_move +EXPORT_SYMBOL_GPL vmlinux 0x3d1ce858 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x3d387764 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d86eac4 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x3da0eacd sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x3da0f990 pm_runtime_forbid +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 0x3dcea0b0 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de8deb2 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e2ba225 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x3e538c11 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e6559a9 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e783b26 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3e835b52 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x3e8712cd __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x3e9ae1c8 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eac449c acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x3ead0b09 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x3eb13b7e xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x3ebeef20 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3ee1fe22 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f01e0de ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f453cbe phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x3f58827a get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f922e1b fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x3f964e09 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x3fa29855 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fbb1d8c sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x3fbe8098 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x3fbed68e palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fc90022 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x3fc9de92 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3fca5f57 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3fe22b54 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x3feae2a1 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x3feb39c3 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x3fef2adb serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4002d255 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x4013a589 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x4017d833 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x401d1ce7 rtnl_register +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 0x4066bd3d regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40725141 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x40802ba3 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x408212ba hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x40943bd4 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x40956073 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x40ad9d51 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40ba46d9 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x40c5b466 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40ed408e usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410078a1 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x412dbf61 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x413add64 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x414ccaee pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x4172d5ac inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x41742338 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4193b883 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x419450ac __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x41948fa7 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x419677e0 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x419bd823 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41d6f47d klp_unregister_patch +EXPORT_SYMBOL_GPL vmlinux 0x41de4359 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x42181929 usb_hub_claim_port +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 0x427d5c68 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42a8b648 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x42bb8d80 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x42c3c782 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x42c812c3 rhashtable_insert_rehash +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 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x4363e800 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x4366ffe5 device_del +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x440614c5 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x442860ae pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x445a1c96 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x445d6844 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44d04068 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x44d89c06 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x44d8f1ac irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x44e829bd part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x44eb0b7e __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x4508e361 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4532e810 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x453e3c5f ip_build_and_send_pkt +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 0x457f2e7a crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bc0972 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d5cfcf acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x45ef6f11 ata_sff_prereset +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 0x462c0e50 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x463e3686 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x46434934 disable_kprobe +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 0x4684d39c gpiod_get_array +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 0x46b24015 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x46bf41f5 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x46e0e615 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x46ee0ef5 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4772dabd pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x47805692 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47bbc44c usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x47c34751 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x47c9841e usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47ebe236 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x47f4f13c pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4813bffc usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x483678f9 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x48410e7e usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x484bb767 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x48511d50 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x485d8ee7 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x48614e55 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x4863a659 usb_init_urb +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 0x489c5a59 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x48b531c5 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x48c19ba3 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x48cdf1f5 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x48d2c4d5 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x48d39426 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x48d4c96e devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x48e527ca extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x48ebb0b7 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x48fab635 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x4989bbdf blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4997b919 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x49e0e1b4 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x49e4045e phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x49e4eb33 pv_info +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 0x4a51caff get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x4a5bdf80 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x4a7096ad pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a93703a crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x4aa3520c locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abf4fd3 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x4ae9922d of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x4af0e531 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x4aff0fff virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x4b2909a4 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x4b4f830e register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x4b54b9a1 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x4b589f10 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x4bbf0c13 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x4bc2df29 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x4bcd924c usb_kill_urb +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 0x4c520254 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4c5eaf7a pci_generic_config_write +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 0x4c9c1b75 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x4cb5080c mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d151a4b sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x4d37f40b pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d76a61c netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x4d7e86e0 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x4dbe1f3a pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x4dc4b2e3 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4dc5c47e blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df0f753 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x4df5b7a4 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e20d7cd devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e498ca0 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e5c48d2 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4ef4fa60 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efa18a2 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0921c3 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x4f1412f8 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x4f2c71ca securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x4f4297c3 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f62cd38 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f86ba3f ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x4f9e1a68 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x4fa20724 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x4facc542 platform_device_add_resources +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 0x500596d7 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x50231a97 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x502fbf42 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x50452059 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5048ad63 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x505338ed gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x505383e1 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x50674cad regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x50701224 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5085c57a debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a2fe94 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x50aa6e2b crypto_init_shash_spawn +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 0x512e9677 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x513244df tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x51511719 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x5157e27a event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x5164fd0f fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x51720d74 ata_do_eh +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 0x51976bfb wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51adbbca klp_disable_patch +EXPORT_SYMBOL_GPL vmlinux 0x52020986 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x5209f390 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x525068b5 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5276f1a2 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x52839ad5 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52a4d60f trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x52b22b26 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x52c1c3a1 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52d9a800 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x52da6e18 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x531c93c2 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x533f41b0 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x53416328 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x534346b9 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x534bf340 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x5359520a simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5368b815 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x536bff57 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x537665d0 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x5378bbb7 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x5378bf15 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5388c6f2 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x538cfcc3 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x539dd6e2 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x539f606b usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x53b7c0b1 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x53d5d073 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x53eec5e7 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x54114fb1 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541d1025 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x54489b17 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x544e2bdd mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x5454966f sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x545ace60 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x548198b1 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5486f4ab xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x54905d3e phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x5499b5cd device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x549fab89 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x54b0cbd6 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x54b38ba6 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x54c6bcb1 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x54cf3a77 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x54cf80a1 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x553250fb ata_host_alloc +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 0x556d2034 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557fc2ac relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x559dc4a5 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x55a3a0ea bus_register +EXPORT_SYMBOL_GPL vmlinux 0x55a57eeb device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x55aa28ec ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x55c4a3e1 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x55c8fc59 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x55d283e1 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x55d64567 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +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 0x5639d6eb trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5650e103 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566131c9 __udp4_lib_lookup +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 0x56aa54cf i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x56b4a77b wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x56b65582 cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x56c032a8 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x56c43f32 thermal_generate_netlink_event +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 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a09255 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x57a2e82c debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x57bf3db2 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57da524a inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x57e66b51 blk_mq_free_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 0x57f79565 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x580bddff dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x581811a2 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x581b3c42 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x58488004 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x5850a6ff pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x58770a52 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x587bd46f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x5886c373 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x589e0b33 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b44283 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x58c0b19d devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x58db4980 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x58e07139 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x58e4b29d cm_notify_event +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 0x592f5b9e pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x595aade4 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x59967311 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x59a34138 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x59b0882b md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59b2d85d sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x59c873b9 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x59d94d19 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e72daf usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a174d81 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x5a1eba0a blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5a21780f spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a3029fc devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x5a33cf03 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a489fea ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x5a4b37a1 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x5a636625 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a866d75 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x5a8a53a5 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x5a91e7fa ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x5aae9b74 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x5abe3a1a usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5ac827af ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x5ad1426e regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5adbe3d5 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x5ae43100 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b32ab6e pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x5b5157ff bus_set_iommu +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 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be852fa get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x5c1b7b5b irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5c219fc8 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x5c36d77b cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x5c4d91f5 clear_foreign_p2m_mapping +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 0x5c961e35 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x5c9802df wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb39a1a mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x5cb58267 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc60297 acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x5cef7580 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d0ef9c9 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d415567 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x5d462b46 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x5d5ca512 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5d6f079d thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5d8f8d60 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x5d929eeb do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d9b9eb0 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dafdebe __fib_lookup +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 0x5e0577d4 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x5e0be4b7 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x5e4a4ab8 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x5e4bcdd1 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e541b95 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x5e65c984 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x5e682ddc crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x5e69edf3 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x5e6d1771 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x5e7b411a __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x5e7ff6cb regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x5eb0ccdf sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5eb54a04 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x5ec79f32 handle_fasteoi_irq +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 0x5f46343d cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7a027f cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x5f7f32eb event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x5f9eb468 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x5fc1053a posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fc749d2 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5fdad83d of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdad92f arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fe907b7 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5ffe6090 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x60290bfc __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x60329c91 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x60352f6f pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x604b77e0 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x6096b4c0 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x60989fe4 of_css +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a58da7 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60d3493c ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x60d584f0 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x60fb329b skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x610615bc scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x613f8d91 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x615f9a4f cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x615fdd37 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6176ce89 device_register +EXPORT_SYMBOL_GPL vmlinux 0x61ab3e42 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x61b12344 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x61c4adf0 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61dd05b8 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x620227cc crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x626dfac9 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x626fcbd7 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x628d48b5 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62af785d md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x62af8b0e ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x62b9b4f5 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x62e4bd1d sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x6313fff5 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x632846b9 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x63628c9b regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x63773236 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x6387b141 device_store_int +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 0x639be141 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x639f1b7c rhashtable_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 0x63f440c0 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x63f98203 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x63fc3686 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x640d59c1 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x642dbc19 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x647ec8b4 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6485dbd4 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x648ff7d4 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64c93ab1 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x64cb2804 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x64d23d16 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x64f5ea37 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x64fdbd3b wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x650d09b3 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6510c651 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x65156ecd dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x65205c14 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x655dacd4 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x6591670f rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x65a38e27 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65cb6202 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d12d9a add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x65e48e87 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x65f2b42c dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661db9a7 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x662c40e7 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663c46bc sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x663f46c7 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x663fe198 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x6658d80a dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x666c0b39 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x666f0a76 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x666fabc5 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66920624 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f1e18f __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x671f2e83 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x67486620 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x67599f73 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x676e764e acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6780f8cb usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67acd038 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x67bb15c7 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x67db56da irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x68026430 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x68078438 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x680bed5f rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6817a49d crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x682ee2f1 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x68337b6c tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x683b656a crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x684ae879 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x685c82cf nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x685f88e7 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x68607454 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x68639536 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x68668850 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6876f6f3 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x688033f5 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x6881c63a cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x6881c7a1 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x68845808 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x68b5fb03 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x68badb88 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x68bc0f2f ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x68e56b94 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x68f1eeb1 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x6908c737 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x691ee942 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x69218168 xfrm_audit_policy_add +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 0x693135c2 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x6939d809 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x694de4ca inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x695e32b2 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x6965c364 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x696ea4b9 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a5fac3 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x69bd430f pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x6a0092e1 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x6a0387cb of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a308af1 find_module +EXPORT_SYMBOL_GPL vmlinux 0x6a3da6a1 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x6a46c43f usb_match_one_id +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 0x6a6b5d32 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7674a8 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a89237a pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x6a91c468 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6adf5d43 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6af7c189 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ba73dab ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x6bb92cb3 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x6bbd1840 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x6be00013 crypto_register_pcomp +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 0x6c3f9bd8 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x6c48d73e usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c8e6825 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x6c979667 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca702aa rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x6cb1de82 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd65551 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x6cdfda26 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x6cfa3e35 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x6cfb84d2 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x6d077561 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x6d0bcd42 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d40c664 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x6d5b7e92 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x6dad4842 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6db0ae5e securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x6dc82a25 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x6dff20f4 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x6e03c747 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e07b88f page_endio +EXPORT_SYMBOL_GPL vmlinux 0x6e42f614 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e62ad46 devm_regmap_init_i2c +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 0x6e930a63 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6ef84ce3 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x6efb31ae __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2cb142 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f46bf15 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x6f564be2 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x6f643ab7 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x6f8383a1 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x6faa4129 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x6fcb826c kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x700d08e9 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x7015b36d driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x70472ffc ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7065493d led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x707c5876 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70807c0a inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x70826847 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x708cda3a ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x709b0278 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x70a62c3a set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x70be4a1a kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x70bffecc led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x70c8a619 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +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 0x714ad75e usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x71615377 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7190dcbe find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71c362c6 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x71c5a90c bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x71ca0570 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x71d11ce3 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x71d1888d extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7207ccbe hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x721f070c ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x722ea559 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x72457ca7 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x7263f949 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72800d79 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x72832c2d sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x72ceb8f6 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72d953a3 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x72e2a5ef dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x72ff6be9 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x732264aa i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x7325a799 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x732b5035 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x7338f8fc blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x73437b1a iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7356a989 inet_csk_clone_lock +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 0x73cbe0dd ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e4dfad pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x74021c04 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7411115a exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x742ebea0 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7433d1c7 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x746047cf ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7484c5db regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7486a978 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +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 0x74b9f79b hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x74baaa22 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bcef9f da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74ee9449 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x7511c305 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7513b2f3 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x751add47 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7526ee6b get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x755b5e01 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x757a0ffa gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x757f4f39 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75d48bed wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x75e38ccf map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x760a073f pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x760f037f phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x7614c8d3 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7630ffb6 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x76437689 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76867014 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x769309a2 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x769b91de transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x76ad27f6 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76f38a1e ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x76f900f8 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x77288a6d ehci_suspend +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 0x77477780 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x7751704f fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x77525c02 wakeup_source_prepare +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 0x7773972b sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x7773a87e regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7775d418 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x778f18d2 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x779343d0 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x77a68be7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x77b47430 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x77bb5f06 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x77d47335 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x77ded485 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x77f881ec task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x7805bc0b reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x783d0b8f rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x7841323c sdio_f0_writeb +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 0x78a073e8 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x78ac086b tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78d30c09 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x78d3fdfb alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78e17dfb udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x78fa6e11 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x790d6907 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796605b4 crypto_aead_reqsize +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 0x799e495e ata_sff_wait_ready +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 0x79f53ee0 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a1332b5 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a30333b __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a4fcec0 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x7a546761 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x7a6e99f2 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7a8f81a8 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x7a91130a pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa539ba __module_address +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 0x7acef56d ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x7ad8c387 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x7aeb8a2f pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x7af97ca0 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x7b01d1d4 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b1f60d1 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b33522b spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7b683848 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b7193ed tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x7b8be56c tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7ba3a6b4 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ba64131 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x7bb2e91b gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x7bb5868a acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x7bc8ac43 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x7bf0136e device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x7bfdf142 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x7c0acba1 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x7c11ad00 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x7c21995b acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c80d3bf sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x7c831ec0 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x7c945b19 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7ca01f3d xfrm_audit_policy_delete +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 0x7d119faa device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x7d154011 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d63923b sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x7d78223c init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x7d792eeb swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x7d7ab135 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x7d9c2402 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x7d9d10e5 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x7d9ef798 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7da2c10e __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x7da2c43f bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x7da9aec8 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc54a5c tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x7dd005f7 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x7dd604cb file_ra_state_init +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 0x7e02ee6a regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7e058c37 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7e0f9441 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x7e374ef7 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x7e597d83 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x7e616a2c spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e664eee devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eaa5fb6 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x7eb8aefc dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x7edc75a5 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x7ef4010f nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x7f0df566 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x7f0fc885 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f3c55c1 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7f4c4465 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x7f4e68f8 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x7f6148e4 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x7f636275 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x7f64cbe9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7f839114 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x7f8a116a subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x7f8becfb shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x7f9b15f0 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7f9eb0b7 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x7fa62beb mmput +EXPORT_SYMBOL_GPL vmlinux 0x7fdc1a23 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x80156244 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8046a1e2 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x804afd6b pci_cfg_access_trylock +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 0x80a541b6 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x80aff75f ipv6_stub +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 0x80e1728f xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81265c00 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x812aa9d3 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x812bdac9 perf_event_read_value +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 0x81576eef bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x81747c15 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x81794175 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x81807c5d ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x819d4fa4 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x81ee628a acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x81f97886 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x81fd0eea shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x822da496 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8250bd52 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x82574320 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x825886d7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x82729f23 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8274e136 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x828a37a8 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x82967b38 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x8298abb5 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x829cd069 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x82b11343 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x82b9a5e9 serial8250_handle_irq +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 0x82eedaa5 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8365551f usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x836666ce alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x8383d298 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839efa2a ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x83b7da0c ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x83ba5fbb hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x83c932d6 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x83e1db39 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x83f6213c pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x840fc70d devres_find +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x845834de ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x845ed22e regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x84649c65 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x8492050c seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x8495e2b3 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x84a04a81 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x84af29db regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x84bc2eab get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x84c4ff1b ping_close +EXPORT_SYMBOL_GPL vmlinux 0x84d58e7b fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x8511e76e nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x851e69a8 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8522343f __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x85335ed5 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x8534ce7f crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x853ad7a8 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x8555865f device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8565341f sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x85686e7d unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x859a4c4d pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85c7f0bd rhashtable_walk_start +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 0x85d8d1ab blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x85f15561 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x860c5746 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x8639c82f pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x863c91ae devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x8649586b ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x8651cc6f usb_autopm_put_interface_no_suspend +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 0x86848994 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86b7fd34 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x86c1521b blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x86db6e24 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x86df49a6 get_dcookie +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 0x870757b4 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x871ccaaf fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x874763b6 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x87989165 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x879dfdb5 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x879e1e39 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8801e524 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x88074027 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8811ba3f shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8851b2df user_describe +EXPORT_SYMBOL_GPL vmlinux 0x88652d5d usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x886cda79 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x8895b075 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x889ed6f7 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88d4f09b gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x88e44be1 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x88f6aaf7 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x8910882a blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x891df0d2 unregister_wide_hw_breakpoint +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 0x893d17e1 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x89587836 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x895b9b9e dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x89637420 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x8969d013 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x8992cb6d virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x89975310 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x89b6d4c3 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89d183a5 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x89d6e2df uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x89f19401 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x89f2a89a platform_get_resource +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 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a8c06a8 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac30389 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x8ad531b7 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x8ad8011d regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8aeaa570 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8af48323 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b0b95c0 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b19b4ed power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8b419de9 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x8b4552ef ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x8b4f2d1d acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x8b7396ec pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x8b786385 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8b9694e7 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x8bb8b0a6 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x8bd0a97b class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8bd53001 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x8be4321d __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8bfe1ee4 irq_gc_mask_set_bit +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 0x8c0e78b8 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x8c2a3892 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x8c32af14 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x8c3a9ab3 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8c3c1745 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x8c5c0696 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c712e84 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c95d735 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8ca28f38 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x8ca5bf17 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x8ca7b9b8 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d0a5baf disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8d1692ab devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x8d175608 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x8d1fd6b8 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x8d1fe5ef ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d5344d3 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8d8dabbe crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8de56aea gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x8e02b1ea register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8e214b2f __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x8e383a80 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8e3f021d agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8ecf8093 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x8ed6862e usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x8ed8e78a rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8ee58541 usb_add_phy_dev +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 0x8f0a8328 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x8f0bb05f rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x8f1a89a7 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8f1dde6a regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x8f29b636 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x8f2fd67c usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8f43041b efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x8f53f217 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x8f59d553 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7efd40 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x8f8ff989 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x8f90034e ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x8faf08e2 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x8ff1ebdf netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x8ff8bd83 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x90022ba2 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x900da517 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x90390bb3 seq_open_net +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 0x905013df sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a40274 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x90c6a3bf iptunnel_pull_header +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 0x90e6559f pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x913e44e4 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x914db337 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x91503888 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x916f2930 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x9183868c rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918b9484 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x91a0fe39 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91cb62ac driver_register +EXPORT_SYMBOL_GPL vmlinux 0x91dbbcd2 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x91ee8f27 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x91efb9b1 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x91fc5950 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x9217c4c0 __pneigh_lookup +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 0x92516806 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x9295e6fa da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x92a5c3fe devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x92b0be6a register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x92c32e72 device_add +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 0x92fd1a25 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x93066e91 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x93171589 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9341533c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x93631c4e power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x93684d3d blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x936b230a register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x9375a11c cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x937b369a hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x93faa770 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x9400f510 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9452044d ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x94778726 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x9491a248 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x949f2618 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a8f2d3 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x94ac143b vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94c38c78 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x94d83012 sk_attach_filter +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 0x953b0c32 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955fa132 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x9560dcb1 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958e7768 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x959393af agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x95a4ef17 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x95ae4c30 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c2122b __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x95c6ef07 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x95d0cd27 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x95ef8a73 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x95fc65ac unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x96040c81 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x96043747 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x960a2fe9 user_update +EXPORT_SYMBOL_GPL vmlinux 0x961c00db devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962ad0aa da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96340c19 spi_busnum_to_master +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 0x96626e61 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x96681f51 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x96869c28 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x96badf4e rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96e5357a __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x971913d9 ata_sff_data_xfer32 +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 0x9760d3d7 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9775d5f4 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x977fa2ba hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x97959b58 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x979d155f debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97f0f9eb crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x980b148e spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x9811c9b9 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9846dd6b vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986cb86e fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987e5e4d dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x98813530 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x989d4451 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x98a5e9ee cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x98a6b124 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x98abc650 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x98cdca44 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x98d045b9 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x991a05eb wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992c7377 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x993d6449 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x9948c82b inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99659519 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x99691dfe wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x996f9ca8 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99813fb6 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998addd3 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99aab442 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x99b68100 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x99c61b52 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x99d1d017 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99e46d37 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2a95a2 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x9a3e7246 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x9a51a7e5 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x9a63c2a6 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9a6c9f62 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x9a780ec6 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9b637f inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af89b1d pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x9b4b4953 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x9b55caa7 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x9b6003c8 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x9b6a7412 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9b6fc979 ata_do_set_mode +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 0x9baf9d28 fat_free_clusters +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 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c3158b6 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c56fb84 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x9c5eb01f get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x9c7b59f7 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c81734e mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x9cbe84b7 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cd42f15 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x9cd6b35c pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x9cd76711 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9cedb8fc rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d1538a4 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x9d2d237d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d52f61c usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x9d6bcf70 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x9d93b539 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d95fd20 ata_sff_qc_issue +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 0x9dd960f2 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x9de09e3a ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x9deaf4ad gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x9df45b41 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9dfcf236 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x9e018010 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x9e05499a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9e0d74c4 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9e1c0a0a crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9e1e9210 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9e2ab9c6 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x9e2e7b10 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x9e3777d4 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x9e4388d0 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4eeb7a dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x9e6488c3 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x9e696943 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x9e6b808d xen_swiotlb_dma_mapping_error +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 0x9f0754a5 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f210508 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x9f35f8f2 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9f4a740f get_device +EXPORT_SYMBOL_GPL vmlinux 0x9f6a2aea fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x9f74e680 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x9f7f23b5 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x9f9b1d96 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9fbae31d dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x9fc2f226 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff34ac1 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa0350c2c tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xa080a67b phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa08549a0 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa093466e dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xa09652b7 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xa0c70e25 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0dc010d gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xa108a1c2 pci_pasid_features +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 0xa11ce057 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15947e9 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa15ea82b pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa15ef418 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa17ec2e2 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1c7c92b wakeup_source_destroy +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 0xa2068063 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xa2088ba4 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xa22f2897 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xa249a261 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xa25cffc2 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2704fe7 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xa27355d4 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa2822d04 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa2a05232 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d798af acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0xa2e6c674 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa2eb785f __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xa2f661b4 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xa313f5e1 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa36972ec regmap_bulk_write +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 0xa38fd138 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xa390f701 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a63c9a pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xa3a80dbc klp_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3ce415c crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa436a0b9 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xa4513ef9 rhashtable_walk_next +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 0xa490648e rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa4b73cf2 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xa4d28faf regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xa4f816d7 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa4f8457f scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xa4fcacf7 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa50b24e3 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xa514099c pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xa51c0cb3 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xa52cc68a crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xa545795e ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efc344 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xa5f01965 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xa5f9038b irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa6170f85 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa61bf1d3 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa62a430e __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xa63d3a9c virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xa653461e wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xa655b4b5 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa666a696 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xa66c384e pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa66fe092 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xa68046fb blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xa694506f platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xa6980a93 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xa6b0df29 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b32b59 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa6b5b7f4 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xa6c4ba0c devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa7002272 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xa704a26e key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75c2925 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa762f6e4 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa78c6590 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xa79cd184 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0xa7ad51dd usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7e5d096 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7fae3cb alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa7fbe47d xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa837693f regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xa83ed92b acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xa84dee55 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa888aad0 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xa894ac76 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa89526a9 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xa8a79f48 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bebafb pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xa8e70703 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9000315 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa9047b60 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa91d6eab task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa91fa64f uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9624637 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xa96a937c screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9881cbc platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xa98f0913 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xa9909ef8 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9d96527 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e19dfb __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa0bee0d __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xaa373cec device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xaa3af4d9 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaa90486d modify_user_hw_breakpoint +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 0xaaeff7d4 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xaaf2c711 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xaafcb3f5 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab0755d6 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab3e80b4 tty_buffer_request_room +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 0xab62cab5 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7153c3 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xab799f2f sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xab90e73f ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xab932f30 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc8988a tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xabdf2a34 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xabfd3dbb ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xac344a1e dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xac44d6fb rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xac548678 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xac7487b8 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacc1f328 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xaccce2c3 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad05c250 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xad1b54ae __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0xad1da33e usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xad28aa03 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xad408d65 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xad48df4e devres_add +EXPORT_SYMBOL_GPL vmlinux 0xad78e651 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad8f546c rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xad978cc9 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xada9f0ff crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xadc39cb0 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadcb0856 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xadcce545 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf9b445 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xae2ee9c7 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xae3021c2 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xae35be1a transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xae391ef8 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xae4d2f9f irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xae5db715 device_property_read_u16_array +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 0xae9b8fec dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xaead74dd rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xaebba46c ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xaf1ddbb0 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaf2e7ac9 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xaf92666b syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xaf946c9b __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaf9481e2 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xaf9cbd05 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xafcac779 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xafd22a56 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb002010f irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xb007a7f1 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xb011c820 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb0261179 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb02ca088 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xb0340e6f pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04e4ced led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xb06cedb6 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08b5916 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xb08d6fda regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb0afc937 acpi_subsys_resume_early +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 0xb0e00040 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb107f5f6 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xb12b9f1f acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb13a5637 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb153a922 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xb16c7921 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1899a72 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xb18a40e2 klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0xb196a5be ndo_dflt_bridge_getlink +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 0xb1d87778 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e2f4cc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xb2144e78 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb274241f fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb281e0f9 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb295ec53 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xb29fdde2 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb2bc71a4 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb2bdc974 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb319d94d crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb32af9f7 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb357e92f blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xb37d67c6 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xb3bf6ae5 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xb3c914d1 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb3d89ff0 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb3ef5e9b __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xb4400761 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb457a9ac __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xb4759adc stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xb47afa4a rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c6b0ce vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xb4c729bf fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4e77e3e __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4ee878a pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb51dc166 md_run +EXPORT_SYMBOL_GPL vmlinux 0xb51df08f usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb520c00a device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xb523afd4 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53635eb relay_close +EXPORT_SYMBOL_GPL vmlinux 0xb546133a tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb5547c79 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0xb56dcfb9 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58bbcb4 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a45aaa sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb5ab367c usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xb5b0bf33 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5c25bbf rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb5c5d418 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f5f8b5 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xb60785d6 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb64f3233 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb672462f cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xb675843a debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xb6846fce inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xb69831bc fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xb6984b9a ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xb6a5649f skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xb6ae6504 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b3e9f5 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xb6be6abc rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xb6ca1982 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6efa7e5 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb6fe0539 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xb703b4be usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xb705d4ff crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb707add8 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb71a6eee skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb73fba07 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xb74b3bb7 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xb79d405a ref_module +EXPORT_SYMBOL_GPL vmlinux 0xb7bcbce6 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xb7bf4b67 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb7c6b1df ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e05667 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xb7ed99ef __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xb7f6e2fd subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80573e4 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb808c71b scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xb80b4354 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xb80bde8b devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xb8138e20 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xb81b89a8 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xb84c2b54 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xb85de0d2 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xb8ab6fa3 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8b97972 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xb8c8cf13 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8dd1814 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xb8e1dbda find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xb8ec3706 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb94eb26f rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xb96c5501 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xb9757262 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xb98828f7 crypto_larval_kill +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 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e69571 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0xb9e875bf tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb9eb057e mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xb9ebfb0b devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xba0ebdc9 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3549a1 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xba572e59 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xba7030fb gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xba7200fd dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xba80ed63 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xba8eb918 blk_queue_lld_busy +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 0xbaca169d serial8250_release_dma +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 0xbb4ebfca input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xbb576616 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xbb5f8ba5 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb87b408 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xbb8b5377 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbc4defb crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xbbcadcdb ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xbbd32d7c platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbe4ce24 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xbbe9498c x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xbbec7ba1 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbbfb85c2 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xbc01f259 virtio_device_freeze +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 0xbc6f7f7d iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xbc7f80b7 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xbc7f86e8 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xbc84fed5 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xbca2cd1b usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbca73e6d ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcbd94cd device_attach +EXPORT_SYMBOL_GPL vmlinux 0xbcc3bbf5 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xbcc8bc59 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcec4cd7 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xbcf2c772 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xbd0416f2 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbd226cad devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd43c06c power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xbd4e9903 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd8be6e8 acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0xbd8cd7ba bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbdcc24cb arizona_dev_exit +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 0xbdfb8230 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xbe07409b regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe34d6d3 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xbe5d0996 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe85520d clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xbe9acce7 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb41622 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbec8c6d3 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xbec9593e usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbef79538 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0e84f8 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xbf1aab4c crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xbf571a68 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xbf6f94b1 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xbf70c548 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbf97dc2b spi_register_driver +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 0xbfc6e0b7 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfe86fae fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xbff483ef serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc00ce5d5 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xc01c3627 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xc031d95c devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc04c496b invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xc0594760 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xc05a789c __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc05c640d gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xc06a693c add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08cec3b bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc09ad1ac blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b07285 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xc0bcecb5 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f78b9d smp_ops +EXPORT_SYMBOL_GPL vmlinux 0xc115a8db irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc126785d ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xc12ccd7a key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xc134b9f8 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc138b541 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xc13997b9 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc145e16d crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc15985b3 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17527ca rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xc1787d0d lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc1a1e7be thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc1a834c7 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xc1b43bf6 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc1b48304 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xc1c33430 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xc1d05379 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xc2220736 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc247ba21 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xc24ae0d1 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc268cee8 tpm_chip_unregister +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 0xc2d97f20 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc2eef5c3 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xc2f310ca relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xc2f8dc90 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc2fa5713 acpi_dma_request_slave_chan_by_index +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 0xc35704d1 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc35f7aca shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc369e616 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3b94941 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xc3ce91b9 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3d2c394 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xc3d83fa1 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xc416eece dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc447dd93 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc44c0098 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc462bc45 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc46b06ba inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc475b2b2 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4964cc9 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xc496ce55 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc4bb353c da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc4bfe700 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xc4f6c49e __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +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 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc586ec58 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xc5885526 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc58f1ed8 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a7f47b tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc5a8c70d xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xc5a9ad53 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xc5b2bbf2 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xc5b49ec4 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xc5c65031 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xc5dae4b8 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc60650fc crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b159f generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6774e34 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xc6775422 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69beb97 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a6491d usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6c5eb06 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc6c99c7a pwm_free +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 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc75927f1 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xc79f814b blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c29346 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc813deac tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc8187e5e crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xc835738f usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xc844fac4 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xc869ba6b __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8854c5b ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8d15a09 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xc8d66671 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc8d8fa24 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8f788cb thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc90fbd91 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9207764 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc968f88b nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc9762f85 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc99b7c0b user_read +EXPORT_SYMBOL_GPL vmlinux 0xc9bb8033 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9e6af4e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f132fc rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca021b71 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xca12e0aa blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xca48eb66 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xca4edf45 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xca59d001 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xca6631b0 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xca6e44b1 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xca7979d3 platform_device_register +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 0xcab3956a ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xcab85b0a scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcadde5c2 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xcafa6dac ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xcb1089a8 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb34ee79 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xcb43022c xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb51b8f7 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xcb665a3c kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xcb6716bc usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb97e061 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcba092ad ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xcbb8c81c bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xcbb91978 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xcbbe7ec3 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xcbc560ac acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbef7d68 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcc19e90d regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xcc20434a hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcc3695cb regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xcc497a60 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0xcc4f9ffe raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xcc64b087 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xcc80da7d exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8e8edb thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccedeb2c fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xccfdaaa1 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xcd21d3d4 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcd35ba91 add_page_wait_queue +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 0xcdafd7d7 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdb92ec0 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd44be8 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcdf4404a __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce276ca1 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xce315c14 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xce42ece4 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xce633abc regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xce661ceb input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce86f9d1 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xce8d3aff regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xce98de23 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xceb02566 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb2247c acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xcecc4e91 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xcedb16ec mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xcedd81d2 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee1d68d crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xcef11995 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf2085cf usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xcf3983d9 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xcf3ad1cc kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf6026a3 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +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 0xcfe8576c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xcff8c226 devm_pwm_get +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 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 0xd08b2b2b usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xd08e4b5a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd09f47cd platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e66d9d virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd10ce036 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xd10eced9 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd1180d7b __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd11b4b84 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd134b015 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd14809ae thermal_cooling_device_unregister +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 0xd19d6a6c mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xd1b78aca tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd1c2ec57 fuse_put_request +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 0xd24f11e8 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xd26343b5 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27c69e0 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd29673dd md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xd2a12364 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xd2ade0d5 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2d1927b hrtimer_forward +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 0xd2fa048c fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xd2ff575c pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xd310ae06 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd31de365 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd348d0b5 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd3a2bcc1 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xd3b5f3ab arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xd3bedcbc pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xd3c35c08 spi_async +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 0xd42191df fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd434387a tcp_unregister_congestion_control +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 0xd45ea32f hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xd47642be usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xd49ad656 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xd4a1851c regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xd4a2e423 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xd4abbc5a irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd4bfb1e5 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd50dcf94 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xd517005f tcp_done +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 0xd5aa1e5d usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xd5aa402a relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5ce3152 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd5d0cde5 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xd5da5fde __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60cc1e1 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd61e807e regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xd631323a class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd63437a1 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd6400e3c usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xd653d802 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xd6634c98 xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd679834c crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xd67f6d81 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xd69cffc0 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd6a9770c regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xd6b26a27 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xd6b47d21 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xd6c57099 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xd6d2fe70 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6d52383 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xd6d569a4 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xd6d5ebfe devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xd6d7f28e regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xd6e1e709 sdio_align_size +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 0xd701fa64 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xd704c007 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +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 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 0xd77719e3 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7929afd usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xd7a47c42 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xd7a85c5a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xd7d73b21 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7db53fe blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd83859d1 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0xd8598a34 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd877af7c serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8a1bf4f bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xd8b82e07 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd8ca03ab pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xd8d1a118 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xd8e829c2 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd9027c41 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xd904176f inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd904b557 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd934a118 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xd940714f pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94fa823 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd96efad7 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xd9781471 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd98cd7c2 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xd995c655 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd9af8769 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd9c5e714 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9fbd3b2 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xda5f0cdd dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xda606a09 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xda644efa device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xda76f444 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda8d25d3 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xda8dd962 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdaa59cd5 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xdada1d14 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb065890 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb06be44 usb_sg_wait +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 0xdba60203 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xdba955a1 crypto_init_ahash_spawn +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 0xdc2c31a0 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xdc308700 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xdc3d1e20 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xdc414fb2 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xdc505521 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xdc55e985 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdc576e6e tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc66e18d gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xdc767747 ata_sas_port_stop +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 0xdcb70f75 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xdcb78eaf gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xdcbfc74a pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xdcd260dd __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xdce680de ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xdcf3bfd2 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xdcf86c17 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1e14d5 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd46ece6 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xdd4b5807 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xdd4e42ff pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd50393e kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd606e28 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xdd614a0f inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xdd961de1 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd97a3f7 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdd9e26f0 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xdda79094 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xddb8de1a perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddcfe6d2 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde7dfde unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xde02adf3 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde074ad6 clk_register +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde1b2adf gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xde2dd591 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0xde33ccb5 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xde4f2de0 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xde59b0d1 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xde792992 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xde802094 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xdeb05020 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xdec11c33 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xdef983ce usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xdefdbb03 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf0e4ef6 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf6cb65c preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf70f6ed regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdfa01d6f rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xdfcb2be1 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xdfd3e0a4 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xdfdd7035 usb_ifnum_to_if +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 0xe00aef49 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xe0205f56 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe05188a9 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xe06e059c dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xe07d8553 devm_hwrng_unregister +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 0xe0b1848b kernfs_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 0xe0d8e298 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xe0df7854 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xe0e1bf40 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xe0ecc881 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xe10c00be transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe1670da8 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xe16b0d30 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe18e180d class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe19c9784 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe1a0208b tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xe1a2d67e usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1dfe7c9 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe1f27512 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe1fc669e acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe2261f95 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe231a6bf blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xe24aefb0 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xe2565bbd irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xe266f14b sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe28f9f1a uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2971400 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xe2dc3381 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xe2df5ec3 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe2f4e061 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe315bb52 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xe32c3516 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xe34b1aaf mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xe36714de uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38e47a8 usb_unlocked_enable_lpm +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 0xe3ccb3fa usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xe408f73e pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe418fde4 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe421eddd class_dev_iter_exit +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 0xe480db72 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xe4919f35 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a825f8 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xe4b74087 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xe4b8910a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe4dc7e19 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4f6e4c2 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xe5072853 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xe50fdb35 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe5229e9b usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xe52db470 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xe5427e5c devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe57c70c1 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5b124b8 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5b84ffb regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe5ce9f99 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe5da99b7 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe5e21009 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xe5f2d14c crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xe63a0d92 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe63e756d usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xe641f5c2 ohci_restart +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 0xe6622d55 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe66bd6a4 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xe6807a36 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xe6b170f7 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xe6befbd7 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d30606 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe6d3bc9e device_remove_file +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 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe74eefac hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe770be2a pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe7741a4b sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xe77790f9 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe792b2f9 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xe7b8a774 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7f44f6c fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8409bba tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8615f75 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87bfeb8 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xe88dbea3 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe898dd69 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8af98fd dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xe9022dcf rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe91a905f register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xe92657f3 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xe9316619 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe9339308 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe950d0d3 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xe96d9994 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe989ab6c uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xe998681e extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe99bf5b1 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xe9a040ef bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xe9a1aa32 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xe9b9996f tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9e13baa regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe9ed3fd0 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4c9552 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea6bbf36 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xea80746f usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xeabf1def ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xeaec5e42 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xeb03235b unregister_asymmetric_key_parser +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 0xeb531b21 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xeb5d3cf1 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xeb615a56 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0xeb6c0fde serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb9fae6e crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebabecd4 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xebafd1b6 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec0e3765 regmap_get_max_register +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 0xec431684 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xec5a7273 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xec62ca04 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec78a102 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xec80f309 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xec965a65 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xeca6d41e nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xecad3b34 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xecc6dc0d sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xecc90964 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xecd0c75f ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xecf6e128 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xecfb5a98 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xed0b8df2 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xed0d68e0 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xed0dc48b _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xed2d4007 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xed89c528 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xedb2b317 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xedcdffd4 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xedd5f640 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xede9d280 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee1afa4e xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xee31481c scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xee40a691 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xee56fc3a cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xee6050b0 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xee6167c6 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xee6a983e sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xeea5b7b2 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xeee02a09 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xef0df840 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xef0f8208 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef23600e skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xef329cb0 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xef45c3ff xen_unmap_domain_mfn_range +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 0xef82e958 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xef84e589 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef989e92 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb38153 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xefdbc6b6 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefe8e3e2 do_take_over_console +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 0xf06aa249 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07436ee ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xf0775ed4 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xf07bc70e skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf088e4c2 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xf0b53100 split_page +EXPORT_SYMBOL_GPL vmlinux 0xf0c4cfa3 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xf0cb04c1 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xf0e7679c sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf0ec7027 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0fc4ded ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xf1134ec8 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xf11eb7f4 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf13ae54b da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xf142cfca dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xf1625399 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf1665451 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf196131c irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xf1a67771 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1da71e1 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf1e5a93d usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xf1ec716a ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xf1f5d77d devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf1f6017d devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf21ce952 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf23334ba regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xf242465e regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xf263a3aa devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf291252d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xf2b86970 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xf2cc2c74 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf2eaa4d8 device_set_wakeup_capable +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 0xf31b1eb1 dm_get_rq_mapinfo +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 0xf34c5b25 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xf364f7da dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xf369b493 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf392f77c is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xf39f0c81 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3ab62db __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xf3b0b60b sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3c4cdf7 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xf3ce81c3 debugfs_create_blob +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 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf400626a sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xf403b175 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf4091541 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf40bce5e gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xf42f7042 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xf451379c napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xf475454d pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf47e0170 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xf4884f45 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xf494dad4 tty_init_termios +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 0xf4a4629c cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xf4d89727 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf50822cf crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xf52256a0 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf52a8ffa call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf534b20b regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf534d5ce pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf56a8584 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5823d1d init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5971a1f regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf5a49d98 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b61188 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf5b7203a pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xf5b87b4c rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xf5c5fd0f iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xf5ce7110 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xf5f318e1 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xf608ac06 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xf613788b debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xf6165dca usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xf6209b95 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xf62bd722 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xf6303750 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xf686cc77 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf6a61e84 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xf6a633aa crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xf6a9556a btree_grim_visitor +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 0xf6db64f8 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6eeafae __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf6fa8b6a raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xf6fcf4ce debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf7044538 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf77475eb fuse_conn_get +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 0xf7f2224a ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xf7f3c713 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xf80c4915 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xf81c335c skb_gso_transport_seglen +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 0xf8d1fcf4 regmap_update_bits_check_async +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 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9354281 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xf94080cd phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf9588d4f rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xf969b003 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf98285a4 devm_spi_register_master +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 0xf9c12adb blkcipher_walk_virt_block +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 0xfa02294a sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa25e141 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa6ffb29 xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaad8307 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xface7b21 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xfad475f9 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xfaf08807 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xfaf133f1 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xfaf860b1 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb116c07 fat_fill_super +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 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb736421 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfb7381c2 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xfba1c75f virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc994bd ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfbd239e6 ip6_sk_update_pmtu +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 0xfc2aae58 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3f8272 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfc99fa89 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xfcd33ed8 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdeb36b irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xfcf9c7f4 fuse_direct_io +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 0xfda40f0f platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xfdab760d device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xfde427df usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfde57272 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xfdf437ce rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xfdf460bc fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xfdf82263 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe4b650c xen_swiotlb_sync_single_for_device +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 0xfebfea3a devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfec1fd06 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee02f24 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xfeeef67d rtc_irq_set_state +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 0xff06bccc dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xff15909c sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2c7c3a __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff360d1d udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xffa72981 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xffa8c732 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0xffb9a17f usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xffcd8354 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xffd0a19a xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xffd8b76f dax_truncate_page --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/amd64/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/amd64/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/amd64/lowlatency +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/amd64/lowlatency @@ -0,0 +1,19490 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x4e881e87 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 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0xfb78c19a acpi_video_get_edid +EXPORT_SYMBOL drivers/atm/suni 0xeaaa368f suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x235f7367 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 0x05717a4d pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x23369311 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x237b1f94 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x3f99f0dc paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4705b8e5 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x58bdc1dd pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x8df5936b pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xa068c8d9 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xb0f0d0ad pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xe3bda26a pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xe7f21d43 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xf8b04413 pi_write_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xcd29271c 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 0x20ba7e31 ipmi_smi_add_proc_entry +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 0x643f1297 ipmi_register_smi +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 0x7a3bb855 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x7a3e27dd ipmi_smi_watcher_unregister +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 0xa2e4a797 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 0xbebaca81 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xdec095a5 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xf88fdd1b st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xfbcc079f st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x6b726429 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xd06c2b62 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xd8d718a7 xillybus_endpoint_discovery +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 0x6d4c704e ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0x7611498a 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 0x5b65bd5a kgd2kfd_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0073549f drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x016018fd drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02f84ffd drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0329397e drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0677f0fb drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06d61f6c drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x079a6ba4 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07cd8d8c drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x082e1939 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08ee93a5 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08fdc9ab drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a1f0aa9 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a4570ad drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a73f565 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a9a1724 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ca98f66 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cb66bd5 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cf97016 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e0be9af drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f5a6600 drm_vblank_count_and_time +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 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13230a9a drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13bc5e8f drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14294f71 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14680c32 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x168f1af8 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x177f8c35 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1838681b drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1896f50d drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +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 0x1b6de9bc drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d03af32 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d504a31 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e649e35 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20843a7d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2164abf6 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2278babf drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x228be3f1 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x240ff6f1 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24571d0f drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24b424ba drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24cd745d drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2509622f drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26ffea90 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27fdf1e8 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b3601fb drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d8028e4 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2db1ea30 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2dd45be9 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fb6b560 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31656d70 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x321ef178 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32a9f4be drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33112ebc drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33a50693 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33d449ce drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34112349 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34ada190 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x362cd5ed drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36423bc2 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37e2c51e drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a410d9 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38da44a1 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3921619a __drm_modeset_lock_all +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 0x3c91cc6d drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e5a8679 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e785829 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb30c26 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ecd78d3 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ff194be drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x412a4693 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4190a492 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41a9c70b drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42a0c8a6 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x439dacc1 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44921ef5 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45911fc7 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x462f522b drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490fb829 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aa5a50f drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b1c2fa6 drm_mode_create_scaling_mode_property +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 0x4d6b24c0 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e3b2d17 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e76fd6d drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea6c35d drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ed3214c drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5096adaf drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x518228e4 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52f17b9c drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5514ce35 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55683196 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56491dd0 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57a8a209 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57c9fd5a drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x580537f7 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59c72302 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b29f18c drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b2feaf0 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b758f55 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b83021d drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b85f8d1 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d36bf77 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d8570c4 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e3eaa4b drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61540085 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6165cfd1 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x616db510 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61c77de5 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61f62f72 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637253c8 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6397b398 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64595ba6 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6461ac16 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66120208 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x666bff93 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6677d1ea drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66fe6f63 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67074f0f drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67c809c5 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68b74386 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68e513e0 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6940e2f8 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69b41863 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a181213 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a37e333 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ad5ab4d drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bdf155c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d5fc31a drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f10464e drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f958c08 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x706d3106 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70ca0c16 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x725f97b5 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72817dd0 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x729501d9 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72aa64b2 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x730145dd drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x746c1285 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74dc75b1 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76758778 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x799eb99e drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7aa75038 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c02140d drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c0d1df2 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c180437 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c2dcdb8 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c4c7df4 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dae65da drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e2063bf drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7eb48e32 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7feeec7f drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80d828d7 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8226c703 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8357cd64 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84e3b52d drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84f8dc9c drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85caa2a9 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8759e576 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87fac393 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8911c48e drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b05b349 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bafed11 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d081d39 drm_mode_find_dmt +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 0x916a6718 drm_atomic_add_affected_planes +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 0x928b1035 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x929def63 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92f6ebaf drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93c906b4 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x959ee355 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x992c0eec drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x997b7f9a drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d1c47bf drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa007a2ae drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0d380eb drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1308582 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1862a70 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c1f1d2 drm_legacy_rmmap_locked +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 0xa2e5ffeb drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa360768c drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa64bcac0 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6666186 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa749384e drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa88b115f drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9900339 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa6fa57b drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaae0517d drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac5ee377 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae22c298 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae40d927 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae737c3d drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1058d17 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1cca867 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2cae873 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2fa77cf drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34de41f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb386d8cb drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb43911f3 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb480a01c drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4b7a12b drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4bab3f5 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb590d73c drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb71395bf drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7164605 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb76ca41d drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8a8a15d drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb969e4d8 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9b63a1d drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9b82e8e drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb4e5acc drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc26b635 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc9979de drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe0f7e21 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbed19494 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbed2d6e9 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2ce40c6 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3b2a4c8 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc46ce06f drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc67eb6cf drm_framebuffer_unreference +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 0xcb0deae2 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb51ea97 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbb2e6a1 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccbba873 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd066849 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd1921e8 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd18f53d3 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1a4bbb9 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3bd8b72 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5821c55 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5b1834d drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8cb136a drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9a7878e drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9e90d02 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9f2bac5 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb6bad08 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdba45aa8 drm_vblank_pre_modeset +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 0xdd856742 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde0bfd16 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeddf807 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfa9d706 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfd6b387 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe03ca622 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe25c3aed drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2826304 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3a07599 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4163d61 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6cf88b2 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6e2663a drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe82653b5 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe98b5837 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecac7bb3 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedf657f7 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee17695a drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee20d531 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee95617b drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee97ef01 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef72388a drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefad7806 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c35785 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf39c22a0 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3e85b89 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3ed3a02 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f3c7c2 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4b4cf98 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5f93242 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6594874 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6800a3b drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf77bb883 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7a81565 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9be733a drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb325563 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb824673 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbce5231 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc2cafb2 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcacdd17 drm_atomic_crtc_set_property +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 0xff2d2800 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff91d7bd drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff9b7369 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03616446 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09950043 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0da8a0cb drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x106e9270 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10b63009 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17efc354 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1dab3e51 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1fcdf7cf drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2096a28b drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20e2d866 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x210db550 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22d752a4 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22df196f drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x234f8eae drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24243f95 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25d20d85 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28d98757 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31c83e69 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34f58283 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x469709f0 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47ac5b8d drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c0482c3 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52b29939 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52ce05db drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54b9c011 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x556d3d6e drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a920cc7 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b7021fa drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5be7375a drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c406285 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d4cb599 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f37c191 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fec33e7 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60c9e054 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69045f5b drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e34cdef drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ee696b3 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6efce38c drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70a7a9ad drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71655400 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7200dd07 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7218ed24 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7785a3de drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cf0e815 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fb0db75 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81ee24eb drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85d1db8d __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87c12b09 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b148bd4 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e4cda83 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f8745dc drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x919c11fb drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x926219cc drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93c593f9 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95056294 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9871b9f4 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ca32445 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0e7efd7 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3aceba9 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa716f38b drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa74ef058 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa869a233 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab3e8079 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae7d6bb0 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb20d97d0 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4185ba9 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5f9d2cc __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb837fb1a drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb90fc7ca drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba20abb3 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc535671 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc942f30 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd0ffb4f drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd2c5608 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe0b4ebb drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc067bea1 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0f21ee2 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc678be7e drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc717f96d drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc98b4405 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9c35ad8 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcba3e9ab drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdb2db0d drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf2929b9 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd241740a drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd281ddf6 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd569e8c1 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda5c20b2 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc3e8f63 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd28b404 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1004fa6 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe353f08d drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe39a00f1 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3aa7f75 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe450fc95 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4df5310 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5defa9d drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe81921cd drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe83ef966 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeadecf8c drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed8c261f drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeee41400 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef4a56ab drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf008c136 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0d7abdb drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf379640e drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfabcef81 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd5bfd4b drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe5c3e8e drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x013cd652 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bb78bf7 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17319c34 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1db45c04 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1f9d2911 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x246dc53b ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2519db26 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x254c3576 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2802a349 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b280a93 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31b8c09f ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x321d4211 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x36be480f ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x39516f55 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c68ab92 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c70ee32 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x44003371 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x490d7977 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c0755d1 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50a042a2 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5688b293 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5970bc2f ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c98ed3d ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6265c5df ttm_pool_populate +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 0x7379a2c6 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x798a0933 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7cf15fed ttm_mem_io_free +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 0x8486c6e3 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8643bcbe ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x897179b8 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d879f63 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8f5a4e4c ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8fa90cc7 ttm_bo_move_memcpy +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 0x96cbbea0 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9868739b ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7861ee1 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8723bb3 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xabe584a1 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb5e50096 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd0aff7d ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc76a18ac ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc7ce3d12 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc906331b ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcee02b61 ttm_bo_manager_func +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 0xd63bbd2c ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc4473a3 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd9a77cd ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe0b12b39 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe8459b5a ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe9fe8f68 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeb8eb71e ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0da127b ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf35825c6 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf6a3fa28 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf90544c8 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x17adfde5 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xc1559181 vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xf0199855 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 0xc18211ca 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 0x04ec2b3b i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x756801d2 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xebdb9669 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x8da03783 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x8dd04f0e i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xe4c86fb6 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x36764a14 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x42626113 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4d9ab48c mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4f0a87e2 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6cea98a2 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7bdba76b mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x87587952 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8ffd46a2 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9130b369 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xab8bc0ba mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb72a8195 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcf19edd9 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe23683c9 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xeda24998 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf0259da6 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfab8b3e3 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x72a768eb st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x8dbf0d73 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 0x24ef7ca2 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x2ab88bf9 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x6666cbd9 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x93bb68c2 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xc0a2e5b5 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 0x2b68eba3 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3b130926 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5dfdfb11 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6e4fd050 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6f5ec193 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7664130e st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8a5e4eb9 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x944ad407 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa123263a st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb0010416 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb0973c86 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbc761718 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbed4e109 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xedb188dd st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf160fbfc st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xa3fafd79 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x68ecba60 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x3b25a5e6 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x47bad848 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x07da19ba adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x58d4e14f adis_enable_irq +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 0x2d9ac41a iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x32821d7d iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x346a3b6b iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x35baff05 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x6b68988f iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x71325603 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x7f37fe91 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x7f541262 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x831ef33b iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x89e3615b iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xcae8a56d iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe0da6c61 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xe5d7819e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xf67987f6 iio_device_alloc +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 0x070af336 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x1aadbf02 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x1e4a97ca iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xdb69580e devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x7de19472 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xfd132718 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x831533ad ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xa756588b st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xf4d90410 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 0x9a8c415c rdma_copy_addr +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 0x02af9c64 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x086dac9f ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1957d6db ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2136d93c ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x28395e8f ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x41662721 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x42dbb1b6 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4c9d829d ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4e323237 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6967374f ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8d6aa445 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9ccb889e ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa405177c ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd4be6559 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd676042d ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdf6fbc75 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfeaabf3d ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0bd785e2 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d9db662 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ecb6b63 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x117a339d ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ab15418 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x223e1f56 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x279f13d0 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b83fc66 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39ceef06 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45a6fdbb ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x468a432e ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48becf46 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a901432 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4fc76baa ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x536e23b2 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x548e765b ib_fmr_pool_unmap +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 0x57371807 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5af64d73 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b949459 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d3c8d90 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60c86426 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6415cdcf 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 0x6f80ae4c ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7496b573 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74dcc96d ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7624cda0 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78b39cb9 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a84cc28 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x826ef27d ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89607254 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8963422f ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8cadd0a1 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f2650e5 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x917939d0 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91fc37f0 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92f5641d ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94e41d2b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98351528 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b14d9c7 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ccc59fb ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa452b7ca ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa51f9cb5 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6da5466 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa775e7f7 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabb13912 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xacc83409 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaeb17127 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb26feec2 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4b154c0 ib_resize_cq +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 0xbb842203 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc1091ee ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc6b8be9 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbde0cb86 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe86a6b8 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbea3cc64 ib_modify_srq +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 0xc754832a ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcba51bdc ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce1e7a7f ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcecfb9e8 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd01edad4 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2ece13b ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3542467 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3725f39 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd72be6eb ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd957a29a ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9be0b77 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda63884a ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbbba409 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbde2cc0 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde2cbd4b ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1ed5fe7 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3fc4113 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8a36b10 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9d4ff9b ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xebc14f54 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xece06743 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed954153 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefc1ddea ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3281d65 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3f41a0a ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5d41805 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf96b9b5b ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd6d0b6f ib_dispatch_event +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 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1b86b115 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1cbe3bfa iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x353b8b56 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x40e77f6f iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x44f47e4a iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x60c7b677 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x63a94b40 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 0x73859189 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x763e7c49 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x793ccd48 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x90d03889 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91f7a694 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x938a9200 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb164d9ca iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe848e06c iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x264341a9 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x37b14e56 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3b07989e rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x54aef71e rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d1fd8d2 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6149de84 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x61e13daf rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x675decb9 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x68f9aea2 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6fe5c1c8 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x71331879 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7b72ef7d rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7bb91f16 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x85e61bbd rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8f18fc3c rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb0516cde rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb583bf25 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc7f1953a rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd9a9b3d8 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe063dad9 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeaf78e19 rdma_listen +EXPORT_SYMBOL drivers/input/gameport/gameport 0x35fa9f25 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3ba7d368 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5f0b2592 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x73a46b4d gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7597e927 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x79c6b94f gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xaf89d5cb gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc477b95b gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe9ac4bbc gameport_close +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 0x8965a860 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xaa443dd9 ad7879_pm_ops +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x30b5307c amd_iommu_free_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x39adb3ac amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x47aceccf amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x4eff7faf amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x604ec11c amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x9d4b6f52 amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x12220056 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b7f1574 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 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x436e7dd9 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4a78e2f8 capi_ctr_suspend_output +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 0x70f9faba attach_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 0x796939ce capi_ctr_resume_output +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 0x990f856f capi_ctr_ready +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 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbbf7f667 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 0xe9c23cc9 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf29721a0 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x01fdf6a3 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x07e87654 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0d185eb8 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3df8e767 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x490dcfb3 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6d1225dc b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x70fa65f3 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x809f32d3 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x92e951cb b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaa3739d3 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbbb0be87 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xca36f775 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd44c5951 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd49986f9 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xeb247bbe b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0585e43f b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3050fe75 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x32d711a4 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x92313853 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9e6eb60b b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xeff01879 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf6b2b38e b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf7f0cf6a b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf86594c8 t1pci_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 0x08e1b43c mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x3a3fe369 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x566be456 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x5a921570 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x47fdb761 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x49ec91f6 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x0d23c7ac 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 0x3769f926 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x4c8c08e7 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x5d189eac isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa3669ffd isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa9872ed6 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x6511aef3 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xd44da252 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xeca21ec8 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 0x06504207 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0f980d4a bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x13afd329 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1d588a2b recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x223b6843 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2315e034 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2355bc55 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 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x57b8d281 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6e1c86ab mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6f1c2071 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x81dc4258 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8bba26ef mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x91b8852f bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x926067aa recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb6ae3334 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc5604447 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcadae30e mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcd3bab67 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd27e9d9b recv_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 0xd5ba486d dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe453dd3f mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe58cbc6a mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf5d6e8d0 recv_Echannel +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 0x186d0b81 closure_wait +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 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 0xc69fc194 closure_sync +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 0xd9dbd5b0 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe0f6d6ea closure_put +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 0x039ab9d1 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x15dbcd40 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x3ce439f5 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xac0eada9 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2c39c4c5 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x335466a8 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x484c368e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9899a46e dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9f889f32 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf904218e dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0x4b4bb035 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x11684698 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1e52b55f flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2fed948d flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5a2ad442 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x631eb753 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x689239ff flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6ae701e9 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7a0c927d flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8fd03d85 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9c56fa73 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa1d1fc7f flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa58f8524 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfa41225d flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2cda5a68 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 0x5ef07237 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x7e8f5928 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa0bc22bd 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 0x0c613e6c cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x4b7eeee4 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x82492a18 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x00509669 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x02250a7c dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08c0ecf2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0a17b3f0 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0a2fd3f6 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0c874a17 dvb_dmx_release +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 0x419eadae dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x46ed1b77 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4cf3b0d9 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x50b32fbe dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5182c380 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x62592152 dvb_dmx_swfilter_packets +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 0x6e08ccfd 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 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 0x8166484e dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x81a26809 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8825a6c9 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8bcbbafd dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9252fe40 dvb_ca_en50221_camready_irq +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 0xa5fe4508 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd1bf9bf7 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 0xdc77f62f dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe231233f dvb_dmx_swfilter +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 0xef77aadc dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf1890479 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf3898929 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 0xe386d16f a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x30abd52f af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x23c27755 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x14e89a31 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2dbf5b1f au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2f968aab au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3e63755f au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x795fdab3 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc2941dcb au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd61f55e4 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xec8c4f9e au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfd5d6a9f au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x7e65876c au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xc19afd46 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x85e29bf2 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x25eaf767 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x4a7b572e cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x942a5d0e cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xc63f0784 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x02fd8888 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x1fae9924 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x821c1645 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xc43ae53f cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x22c30c75 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x025232b5 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0a031813 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xaf4dd2ba dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc576703e dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xdbe5b6da dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x029436b0 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0a2150be dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1e7187ca dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2fd5d348 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x377f83c6 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x58327e12 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6bc7c335 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6c378dd3 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7d3eb665 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa8e5e1ad dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xae68b5d4 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe3463398 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe5c2fa0f dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xef9e1da5 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf49896f9 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xc62e4b0b dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1eb625f8 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x54b48647 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8a74c8b5 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8c35c145 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd7da7ec1 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xedc6d98c dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x22f9a236 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x7bc00aec dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xf1483897 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xf273f562 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb05b959c dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xaa8e15bf dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x00f4002a dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x190fe334 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x21a34ab9 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3856576c dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7be7378b dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xbaa7f950 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x1c1e7785 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x5f6d967d drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xce5162aa ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xcf85d54e dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xea65d702 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x78835b80 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x69f28e85 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xe0595811 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xf5a2f7e0 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xbec24065 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x789f0430 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x3fe25996 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x7896d40a lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x61f5065e lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x998a0df8 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x128d6da1 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xd4b9ebcc lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf30d298b lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x131a1360 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x3f2c77ac m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x83ca0cb1 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xbfedbf47 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x2a70ac9b mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x6e7905e8 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x5decf938 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xd26a307e mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x5e2584de nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x8890a201 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xe5fb74eb or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x2805830b or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x88c79b3d s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x3fedb65b s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xd417288c s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xdf791593 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x52c892da s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x162513c2 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x9abd95b8 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xed5e016d sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xbeebc3ac sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x9c785131 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xe44f4d29 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xc0536c8b stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xaf42445d stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x407bfa35 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x7ab02f8f stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x499a7439 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x4ac34c23 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xea52702c stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xf28dbb8a stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xf28ebf61 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x29205c84 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xf64a548d tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x958d98c0 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xb80465b6 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x88425b8d tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xbc57f3e5 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xee7411e1 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x30222af6 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xb2dd2c5d tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xe8589bae tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x939be9a0 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xff9176b0 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x5c96c23e ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x2f85d0e8 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x3faffeba ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x6f80c51f ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xe466987b zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x6a13a621 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x61e9caad zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2108b00c flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x50817021 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6a5d5fd2 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8206fad6 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x98ba6e6d flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xacdf0a50 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb76230e5 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x06163e54 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd187a872 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe7e58b0a bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe9e9d2e2 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x7901f0f9 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/bttv 0xc315ed17 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xd9c57e7b bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2b20e597 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6eebdfc0 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7eff71f0 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x83d1fdba dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8e125a75 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8e8fcfff dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xace2bb7c dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe44a5297 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe7e9560f rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x20bfbd37 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1cf61720 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x477be3ff cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x9d45137d cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb53db81e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xca27d661 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x2d10177e 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 0x4f0220d1 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x93557d82 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa7bba108 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc41d3dca cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xeeb16268 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xeffe40cd cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf3f11b1b cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x2419a314 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x683f2557 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x00187380 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x1f4c4c22 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x74c811a7 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf0febaf7 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x47679c3f cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x52319fce cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7e69e80d cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xad5d3b0b cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc84aedd3 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd158a103 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdb3901e9 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1e4c97bf cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2ddf3093 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2e0782cd cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x41b5e28a cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5542fda4 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5648eb93 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5d9235e5 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x689fc1d2 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6ae87284 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x72e614b3 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x838045e8 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x868d417c cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d1d4301 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaf156d4f cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb6d58752 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbfd3bd4f cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd928583c cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe1bfc0a3 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf68025c8 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfe1662f9 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x06eab60d ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0c863ef7 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x18371084 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2d60e3aa ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2f4c72f3 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x33963c50 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3844387c ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x43b869e1 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x518730ba ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x51edbaaa ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x62448ce6 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x73a4af9a ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x80609ea6 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb99882e2 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdcd19da2 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xeb90b779 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf0629d25 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0194c5bb saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x10011cf5 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x30ba9f4c saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5935fb0f saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5f691eac saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x844cc133 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9fd78806 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xabb3333e saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc354275d saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe744af27 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf3f93d95 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfb136b32 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x1a9d6019 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_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 0x1375ddc3 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x2ed2d4d4 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4ab3ddd1 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x692e39a9 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xabc56e60 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xae3d80b1 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe7bd3787 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 0x07f84f32 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x118217e8 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x17829ca4 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x22c519af snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2bb1403e snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc0d412d2 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe530484b snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3df962c9 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4a9b7342 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5a41cc2e lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5d8cebd9 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x700b1064 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9ee9dee1 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb5b47d66 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb7c5c1b7 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x0fe2f140 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x74d6b0d9 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x1b44d85a fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x2a12c2c6 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x20467b21 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x456c1da9 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x70b6585f fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x6b448ecf max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xe0a55c22 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xc78cf378 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xffc4445d mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x3dcb5373 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x6c902fd5 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x44645059 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x63aba7f8 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 0x46502034 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x0357e875 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x7cf1f255 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x46a2c5ad cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xaa14e073 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1fa0dbb4 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x45336673 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4db99468 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x52fe6855 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5f292327 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x67bd89ca dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x87bb6094 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xef6acb3b dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xff843dd9 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x31ca1738 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4ee02ae5 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x51964d73 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x63b203f0 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7dd4c23c dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbe0c8e72 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfa7f2ab9 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 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xdde51af6 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x05159bd4 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x27863bd8 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x32a80a97 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x336f9345 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x45914b4f dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x825d73a5 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x98a33913 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa32eb0a9 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 0xc2ddf5dc dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdbc555fc dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe747598b dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x53ea002b em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xe7a8090b em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x026a298a go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0a93c054 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x46da39ca go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x70e1e7b1 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x89615c8f go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc75b497f go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xda5f8622 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xfa78859b go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xff56409b go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x149c7e10 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x17db9b52 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1955167e gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x946d07c1 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb60674b3 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xbf4fadfe gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfed78ba8 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xff2ad59b gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x73691fac tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x792f837f tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xfe8880a0 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x89edf81a ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa22af9d0 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x1828e72f 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 0x9f923c37 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xe0066c06 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x3202ab4f videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x41a8d967 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x58c3b501 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa59d7403 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc463ed1e videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf43c0510 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x83a9dce5 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x1b571b5c vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x8fab4d33 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa0c9d111 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xc5981158 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xdfef07de vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xfe870fa5 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x00a27bd2 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08ccc9e0 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0aeac8ec __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0bcbb7eb v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x13df108d video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16151385 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ac00600 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b88e309 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21c0e685 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22859cc8 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x23b38e32 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x23fb81c3 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x328220cd v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32fef55d v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x34eb6c6c v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3664e5da v4l2_ctrl_handler_free +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 0x3f6fe9ff v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42c7808f v4l2_ctrl_new_int_menu +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 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x57882956 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d182723 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5deb2c87 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x62e73b8a v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x634c7c0a v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6494f0d4 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64b12587 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65c4ed9e v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x671a4dd3 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6ce257b0 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7207f88c __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7453389e __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7562dc7f v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78b2f6ce v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x792be05d v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a0cec9b v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b4ffe52 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d72134c v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8330280f v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8b0faae6 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9569c826 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a968bf3 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa4bd2bcd v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7d0e8a1 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab51342d v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xabd40803 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb06fcbd4 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb15f1357 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb236a8bc v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb5f78dc5 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7476de3 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8dd2310 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbddef511 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc02d371c v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc2478300 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcba07c8a v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd32c2faf v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc187008 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc808efd v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdff0febd __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2f2957b v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe804d517 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea4cb2b1 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xed431e5f v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee5a7bdd v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf19f638c v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf269c247 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf5d1ed4b v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf860ff0f v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff111536 __v4l2_clk_register_fixed +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 0x024125f9 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x03357ba0 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1c85e592 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x27cc6278 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3190d1e2 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3c706c86 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x49cce65d mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4e4c25a1 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x529b1473 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6325a654 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x831bd789 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x865952dc mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8674ea1f mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x87aa32a6 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8ca6200d mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8d554ab3 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x933d0111 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xabdd1a4d mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc3ecacff mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc932e346 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcdaaa91b mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd1ef248f mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd907c1cd 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 0xe2834a46 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe4f81164 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeb629e61 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xed65f763 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xef1196ef mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfed73868 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0f7258f8 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1aac9450 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2fb5c284 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x412efc75 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x44cbba3b mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x519e1a2d mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x53fa7530 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5ed46c58 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x62cc99f0 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6326ee10 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x640b51d1 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6889333a mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x790463d7 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x838ab2bf mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8d0e587e mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8ddb80f1 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x99f0817c mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa5446ae3 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa9e6564b mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaa6485d4 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xac38f4ee mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb324c69b mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc25fd0e6 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcc426565 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcfcff793 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xde8c18d7 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe54969f2 mptscsih_bios_param +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 0x394b9adc dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x6f896415 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xc31b48a4 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 0x24c3d50b tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x8e5c0426 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xb88493bd 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 0xa782f3a4 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xae9f45dd wm8994_irq_init +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 0x6a7f09da c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xa7a19ed1 c2port_device_register +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 0x4699367f mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0df4e9f4 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5714043e cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x94378bc6 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd590608a cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xdc61bd89 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe17bcae0 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xfebb14ea 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 0x258d8cfc mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xea1a86d0 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xb9a6eb59 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x6ef87dce mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xf3e604c1 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x148fc16e denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0x66ad727e denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x36bcbe28 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3b8c412e nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x58f8d240 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x9726b052 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x9aea0b58 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xe285bc12 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xac8dfe01 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xe0151736 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xf61249e5 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x177f806c nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xaf02211f 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 0x1b946709 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x2e818a1f flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xbf585e25 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd1fd9c67 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1e76ccad arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x20a2daea arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6139e8be arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x66b7f978 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6a118c1b arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8c9341ad arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9993200f arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa7679e9d arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xeed5e75c alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfd12347d arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x3916e9f5 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xb9538b19 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf41aad39 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x12e03ac6 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x274e1bd1 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3542ad57 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x74587c15 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x80cf8f5a __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x95a219d9 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb3342b53 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe2466d87 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xecb46cdc ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf97687f3 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xd551086d bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x4f4f3e56 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 0x03ed4abd cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0900a7b4 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x39a0b4c3 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3ec7c4eb t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4f1ab42b cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x56444e14 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6b6b1e74 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x72df7866 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8f5ca0da cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x90c58970 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9896f40f dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9abe5815 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xaed8d18e t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd09dbcf4 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xffbb5fd5 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xffbe1f37 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0064d26d cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0a10fbbc cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0ccc1055 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1071dc51 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x122d19f3 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12cc0d1a cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x24c6068c cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2d6c5134 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x32b42aa6 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x39626c81 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3dfdb2ad cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x431ae845 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5876e61c cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5c2971fe cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x73b423ee cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x75a0686e cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7c94b1b7 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x80f5052f cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8686a6aa cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8b8467b0 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9187cd33 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa73dac16 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb425b162 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc221637f cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc5fad683 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6f2224d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xca588cb7 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd2573048 cxgb4_update_root_dev_clip +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 0xdc8652f2 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe45ca19c t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe5d47d50 cxgb4_remove_server +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/cisco/enic/enic 0x09846370 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 0x874b4ef4 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xae0891a9 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x41ac2c54 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 0xf69730c6 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0721c5f1 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14b41a87 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26e6bc4b mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3445db58 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x427dc6ba mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42eb24d6 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49d2a726 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5163f65e mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51839a1c mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57669c91 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58c94fe8 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c54c1d0 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61457f34 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64ec30e0 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66279c79 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x832a9650 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88ac26fb mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8aafd3e1 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9138817e mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x963bead3 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ca1dd0d mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2706ffc mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaea9d3db mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafa22bae mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1d35f25 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8bbe734 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc43da634 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd29a90c mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2503584 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2be25ef mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe729ea46 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7752284 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedb5ec33 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf11c1f52 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf18289e7 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf65bcd44 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01b446be mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05f877aa mlx5_core_attach_mcg +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 0x0db329db mlx5_unregister_interface +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 0x1c37fb2f mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2694e943 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ab8a5c3 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2bf4b518 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b888882 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c349064 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f20356f mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56ae2657 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b756aa3 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5fa3ac63 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68d046b7 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6cc2f520 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x769ca7d6 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d2d87f4 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81842502 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8570995a mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86de0ea9 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8fe0ac86 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x97af4c60 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaee4bde3 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb36ad96e mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb932cf0c mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbe708e5f mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbe803952 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc00bfcf8 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc0b320de mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd43d1d2d mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd9e9b17c mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdec03a41 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe002a72b mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe126fe2c mlx5_core_destroy_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 0xe87bc43f mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee8d28c4 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6c53d90 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x08b662cb hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1cdbb396 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2d15c81a hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x729c9d2c hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa47bdaef hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x057e7378 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x16fef6d0 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x42e8d2cc irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x88fae83b sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8e99ca92 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x95c6f492 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9e7c15b6 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbacf83d2 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc0333957 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe34f18b5 sirdev_raw_read +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 0x013810d5 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x1f341d4f mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x3d5ed45e mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xadbb800b generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xb9c02981 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xbbc622d4 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xc8db9bd2 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xd440abba mii_check_link +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x6699c43c free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xa6e6447b alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xd8bab94c vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x4a8f0657 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x992ccef7 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xd7a021ff pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x77892350 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0461a8bb team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x5bf4ef46 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x7e97cc95 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x8d83bc22 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x9054fcd3 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xb4a01070 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xc666f17f team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xd892a1bb team_option_inst_set_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x05567ae1 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x30cb8a63 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x4a8bb753 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x23beb320 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2a72273d hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x391207a9 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x405ab437 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x44347f0b unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5ac2c544 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5c03097d detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x65651cfb hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9b3f9f38 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa0502b9f unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe566acb8 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x69c8b086 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x869a8ee3 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xb0f9c922 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xf73ddb1f init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x35e3cf4b ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3fdd0ee8 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4d767dbf ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e1c9639 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x51ab8242 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x660cf583 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa116b433 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xae8c42cb ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc6d4d019 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xebc2cba4 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xeccf565a ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf2d40b4e 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 0x14de7b70 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x23b74dc1 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2e28e03f ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6902ec55 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x752c9765 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9876585b ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x98f2f0f0 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa39d042c ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcb39622b ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe83638a6 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfe80a40b ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2bbb2b2f ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x55c5e36f ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x65f628e1 ath6kl_core_create +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 0x9496638e ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9c7e6e75 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa939d54a ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe0092f8e ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe01edae8 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf4c8fa85 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfafb6326 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x03a0b155 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x08136988 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1e95c9bf ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1ede9c33 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 0x384588e8 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3c305a8a ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3f4a6edb ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4b0c9325 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5729b30e ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5a119439 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x667217b8 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x77d11eb1 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7e2795e1 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x84990767 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x88a7b7cc ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8f82cdbf ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa1c0370a ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb563a16d ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb8ce3e28 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xca3dda6d ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcce1e80c ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcefa6546 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 0xdd37034d ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x028113e9 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05b3dade ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05fc81bc ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e37541e ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f9c5487 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fb8ae76 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fda275b ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x103dc864 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18820e46 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b924891 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1cf8786f ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1de0a93f ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e48cbe9 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2146bda1 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x262cb672 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29cf72b8 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c5f2343 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2da43698 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39fd3585 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a650a28 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3bd45706 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e07ca72 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4033647a ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4084bff9 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x429cf303 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42b38ad2 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4374c87a ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49ddd2bc ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a45e134 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a77c456 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a876a64 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4adbdd52 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f84822d ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50ba366a ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52a1ffa7 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x539ec7d1 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54c4f1be ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55a5a9d4 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x562acef7 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58a05c0e ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a479bbd ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60f99063 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6120698a ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64054a6c ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65ec7267 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69ca6773 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e09c228 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x71523dec ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77d29e56 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x788d6e8f ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78e82da0 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a6b8ccf ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a88d133 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f089cbb ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x864c49fe ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8690530c ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86f41489 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ba40881 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f4bd2cb ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f6725d9 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96aa131e ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96ad153e ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x982cf5e1 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9989bbe5 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99d2d7f2 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c28b8c1 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9cd53037 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1d02f4a ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3a1ab15 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa82093d8 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac81f761 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae935f30 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb60a5812 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6c5eba8 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb861846e ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba56cc07 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba8ab464 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbab85820 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe3ed946 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc098a877 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1f98601 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc28dbb99 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc724cb1a ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9a3c9c1 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd4c9f2e ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfae0af3 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3a262b3 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd507ed5e ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd72e5d92 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdad2ee3b ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb6210e1 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf6ed85f ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0f927d4 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7f37017 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe85950ac ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe87bd99b ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9b95bde ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9c47acf ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf362bc25 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3d009f8 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf66e90ed ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc752289 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd266f77 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdd1457f 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/atmel 0x96cc92fb atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa1901dd4 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa40b3583 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x06eedca6 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0ec3b683 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2a86af01 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3457b915 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5c382b5f brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7691be53 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x871c349d brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f17197a brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc0851a03 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd561746d brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd87e0262 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf9f372f5 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfee46606 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x099aca4c hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0fe06cc8 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x13e0f0e8 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1f9fb89b hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x29ed8795 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2b913aa9 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4099c250 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4cc34837 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x51f146df hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6646d542 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6e5d7a36 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x76e57644 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x82fb9a02 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8ad64778 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x93bc0fb8 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x95e0cd3b hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9d873b7f hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9e3edc11 hostap_set_hostapd_sta +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 0xb3ce7fef hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xba73789a hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbe7ac9a4 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdc08340c hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe1da82c6 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfa25a8a8 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfc03d714 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x075d8f8c libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x12b8cf46 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x27544934 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x40bf77ec libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x505094bf libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x617141cd libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x64712e8b alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6d293833 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x70c47f3c free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8c45b3b2 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x907f80f2 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa56b715e libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc5614594 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc5ad6a56 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcf6b86c4 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd2376a10 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd81f27ff libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdc10a51a libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf59d5be5 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf65fd7c1 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf7800054 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03c6231c il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x091a9a66 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0962cfbb il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d0cf60a il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0efcfe2a il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11d83896 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x147173ab il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1508adb5 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x155ee43b il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18808e85 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a2f79cb il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x278ef259 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x288a5e45 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28ef3c8e il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29811860 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b2c2081 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c69d022 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ca4243d il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f12de5c il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ff65eb9 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3225d5a0 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32d8e752 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3313c739 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33f0d0d6 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36ca9b6d il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x373ed12d il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3bce360b il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4611e4f8 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aaa1056 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x502e0ff4 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x503501a0 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52834cb1 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52a52b14 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57a8642f il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58182017 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d077998 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d59fe24 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5deb3409 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5fb45c80 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60f96126 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6181fe44 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63e9d714 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x684aa24d il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a8c85c9 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e7fb928 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71e366f1 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73663a10 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7cc5424f il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80043f79 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86f68cdd il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x884e9217 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e23182b il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x927766f2 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9571200c il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9812c059 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a0cdb9e il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9cf3ce75 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2a4ac76 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4e7e178 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa82d9301 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8be5faf il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8c68af2 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac386bd7 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafca4db3 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7eaf9b8 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba44209a il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba7975cb il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc111556a il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc264c3b2 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc34009ec il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5d47f52 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6a4fcf4 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6c5ef87 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8472374 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca03f702 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca1a115c il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd4cf798 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd677228 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcdbd1a7e il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1d0f493 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd32cf339 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd43a66c8 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc9083a5 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdcb8527c il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1c19bb5 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7a657d8 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeecfc0f3 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf513749d il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7abacd4 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9cd9a0f il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb2dd1a2 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb5acab9 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbe9d724 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbf0db68 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc4ba27c il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd5ec825 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe2063ce il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe231ae5 il_connection_init_rx_config +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 0x0a3a2c5f orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0ec4b6ad __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x14db1859 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x269cabf4 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x283d1787 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6384f973 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x777a084a orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x80e0bbc6 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8b326aab orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa3069944 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb4b46b9c orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe7b77e4b free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf4a73c6f orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf683fe57 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfb0088e5 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfee31dbd orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x86927002 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x069a32f4 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0d47cfa1 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2b1e53bd rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x37ad7e06 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x448205b8 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x489325c1 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5bfe560d rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x60789268 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x614ded76 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62042bfc rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6399fa89 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68f12a49 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x707e7334 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x708a3851 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x712bf955 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x760575b0 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c303999 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8264edd7 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x84960ea6 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x85461770 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x87a5284c rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8c55e864 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8e249cbf rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8ec47f2f rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x90de10dc _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92192d69 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x98131ed6 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa8aa7e83 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb331f6ff rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb38932b7 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbc1dcc88 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbfc89104 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc27a0e7f _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd65ba811 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd8091830 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd847cfe3 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc9b41c6 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe4afe6a0 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe897d03e rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf1c8001e rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfed426ec _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 0x4da666fa rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x4fb7fcef rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x826a4630 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x8b943efb rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x36ef5b6f rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x66fbd0bf rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x83a1cd80 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xc60f5900 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x068be433 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x136ba550 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x14441560 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x19a73e91 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x267e2755 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2d81b362 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x31801ff9 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x37beb068 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x44b19c34 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x460a73f3 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x518913c6 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x56b791d8 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x629b300b rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6bc1068b rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6d5aebb5 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6e4f7c8a rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x734f2fff rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x78604858 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8be21b32 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x902c2901 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9108b6f4 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x95c8a357 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa8eef8e1 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbe1b9849 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcc78328d rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd166fc22 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdebaa27a rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe290fea8 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe4a8bb29 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfd996b93 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5d5247fe wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x87373f68 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x8a1d342c wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb06c1fdd wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6d5790e6 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xbbd9a713 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x15ec73a4 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x949415be nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xabb2e7b6 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xa6e19320 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xba800ee3 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2164b59f st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2aad030c st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa3d2be1f st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xadc62d13 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xbca7921b ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdfc6bc13 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe1d3906f ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf2330274 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xfcc7a80c ndlc_recv +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x07a55ce7 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x095a5e19 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x43ef08f7 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x52a5b78b st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x61c5a2c2 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x639c38c3 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x86f748b7 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8ddd438a st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8f1e0a09 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa007e7b1 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc6bc798d st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcf46b543 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd19c872b st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf863440d st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfbc20d72 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xff26a250 st21nfca_dep_init +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 0x76bc1f55 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x86bd2f2c nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x069b1f32 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x09bfc957 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x11e5c9fb parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x1cfd61ec parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x1e7a192d parport_release +EXPORT_SYMBOL drivers/parport/parport 0x203a25ce parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x23ed2f12 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x25c886e6 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x29b1a9cd parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x3124fb7b parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x39cf3354 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x49abafac parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4de120de parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x50f68a16 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x51644c6f parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x5467f3d1 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5f755daf parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x6bd64b7f parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x7ab5b609 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x7e599217 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x8c9f215c parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x8feafd2c parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x97241885 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xa0448026 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xa07e9a5a parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xa21b8ff2 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xb1083872 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xcc38dbc5 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xcc5af2f4 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xdae629c6 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xe26f6f33 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xfd87216b parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport_pc 0x8baacd99 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xcb4e43d9 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0a44da69 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1e1f2850 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x27565d89 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2dff4931 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x39eacdfd pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x448c28db pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5b4293a3 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x73c3a869 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x880cec94 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x950c1069 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xaae7c010 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb87ac64f __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc07680a8 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc25c1410 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xccd250d0 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd7895a33 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe160eacf pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xed172116 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xedb97398 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x079ec592 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x15e34ade pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x232ee314 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3eeff1d5 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x528fddee pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8c4cf3f9 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x90abcb33 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9206c1f2 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xba9aec0d pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcc55dd3a pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdb01a374 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x33824645 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x6776952e pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x9a2e2d17 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xc547214a pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xcc25f83b pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xe2991042 pps_event +EXPORT_SYMBOL drivers/ptp/ptp 0x45c13d4d ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xa0296a7b ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xb33e809d ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xd8db24ae ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xe17ac34b 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 0x2e7a2c47 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x3f577333 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x5289a49a scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xcfff91dd scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0910d0c5 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3993fab3 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x45f12e38 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x53f76754 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5ce17385 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x71e6c7d4 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x74296d3a fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8747ecc5 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8eb23644 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9d4ac23e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd82a3294 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf5d4161a fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x02f568f0 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x14714d84 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2288e303 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2380cdb4 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25bd5ec9 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2833b37e fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37d2383a fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ac91826 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b3870b5 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c087a9d fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4e01017a fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x50fef6df fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x514ba80d fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5344fba6 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x54df52b8 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5ab25791 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62611d4b fc_lport_iterate +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 0x68eb04f4 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b522a47 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c71538d fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x79ccd654 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81a2ce91 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x893af52f fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9532ed05 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9bcc9e33 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa60df188 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab40df7a fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb7cbd782 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb89ecaa5 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc2c416ad fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc73bf7a9 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcbf10a1d fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf17db00 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd29f1078 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb2e6b40 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5fc3dc7 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe674a8b5 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe751034a fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeb894ddb fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xec303cea fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf44b3cb0 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfab4ca3f fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfeda3050 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0e6e3bd2 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x24a35aa4 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x85fefb9a sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb1c8abe0 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x00f015d4 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 0x006b7b5c osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0d1f489f osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x14d9677f osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x190411c2 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a7b577e osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x21edc50b osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2ff5d18c osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x35c1ac87 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x36af3ec1 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x37bb0d07 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x38b22cad osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4d086655 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x51d1dc3a osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x526cc793 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5f524bf4 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x66cb7a6b osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x75345699 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x753c3ad8 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x78a0c278 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x893816dd osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x94d69f13 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9719317b osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9b71cefe osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaeb91834 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc8a834ee osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcca924aa osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcda8567d osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xce158f28 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd808b4c6 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd92af355 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd9dc7764 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdeaf0754 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe00af45b osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xea482ee6 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeb3b6333 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfa4e3e64 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/osd 0x457dc300 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x714cc0ef osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x78556146 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd9261234 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xdba31b02 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfe409a26 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x150a1b2f qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x206cd75b qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x236063bb qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6f043679 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8621e909 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x93143a05 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x97a84b31 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x993a152c qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb7b82959 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcf0f9669 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd8a092fc qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xeea82ba5 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0e9c8730 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x6a57bf72 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8f74ef6e qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xabb3999a qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc095ee32 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xd73d49de 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 0x5cdf98cf raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x65a45c87 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xd6ef7cdb raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0e85566d fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x39e0af04 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x60afe4a8 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x68d8424e fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6fedd23e fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x70f54e86 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8c480deb fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9582964e fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xad9d5092 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb70faba4 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd9c32e71 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe52b1a2e fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfaa56414 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x036eedc8 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x05a95ab4 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x08b58dae sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0dc55aea sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1b1eeec1 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1e2d5446 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3c41f694 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3eb9328c sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x41723348 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x46bae6c5 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d85018d sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x59133f73 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5c3f2673 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x74795b53 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75954983 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9640bdda sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9b37b361 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa56fbfe1 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xba9c50b6 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbaf645f8 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc2913fe7 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc7cad1f5 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcae51fdd sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xde0329df sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe71cf324 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe926dc90 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xeb3e3c13 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xebea9b54 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0aa7332c spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0be65907 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x25f6e86a spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd907f372 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xef013a91 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x007fd35f srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x013fb9d4 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3b9372e8 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x9eb3c942 srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x273f4130 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3a2462bd ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3e86cb48 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6ae547d8 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x7ff7bc74 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x9a953780 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc3f99509 ufshcd_alloc_host +EXPORT_SYMBOL drivers/ssb/ssb 0x141896bd ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2b392957 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x2ba5d05a ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x2e13636f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x34ec66ff ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x4047b45d ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x70ccb4d9 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x72134161 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x771f8fb4 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x7aa01fd2 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x7e686255 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x80c5890c ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x93acc40a ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xa5780f6f ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xb6a563cc ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc2ede45f __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd09eb177 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd7c4014e ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xd8201e40 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xde6ad6b6 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xe9937cce ssb_bus_powerup +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0a4bd09d fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x154ebb70 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x156d1744 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x190d0c36 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2712f542 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2f368c9b fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x315164a2 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x36b876a3 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3b6f9635 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x44261a20 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x533bfe31 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x790e8433 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7d02e2a5 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7f510c93 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x82162c1c fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9f9d90f8 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb137882e fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb4a0eee4 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc1490c04 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd0df4040 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd3107cf1 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd92b4cfc fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdcaea739 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf413a7e4 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xea3462d8 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xf4db0af3 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x2a868d3b 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 0x09466e45 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0d6ff575 lnet_set_reply_msg_len +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 0x1e4354bf lnet_sock_read +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 0x20eb20c4 lnet_sock_getaddr +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 0x34daccb0 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x37aeb4dc 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 0x43b555ad lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x474564a0 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x503581c4 the_lnet +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 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x81bf2bb4 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x85f34fb6 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9208619c lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x94e15f48 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa4612cf8 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa658bc56 lnet_sock_listen +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 0xb08550c6 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb0d6b7d2 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb3d4f580 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb8ad4108 lnet_sock_write +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 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd9d0d080 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdf58af08 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/lnet/lnet 0xfdf49011 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfe7e0726 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 0x226f3e23 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x35c0648a seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x40669a49 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x4a7a15ea 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 0xcaef3f2b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xcecedbab seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd36b2b9f seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x21111184 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4cb6d655 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x56fc08fa fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x803b0a1b fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x914897a6 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9fb8e418 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xe78fb02c 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 0x14f68783 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x18d55c3f cfs_crypto_hash_update_page +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 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 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 0x7fe2a05d cfs_hash_debug_header +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 0x90df522d cfs_hash_debug_str +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 0xe9034b4a libcfs_kkuc_msg_put +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 0x2c6d4379 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x74aba5b5 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc0a8838c ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xd8943c2a ll_osscapa_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 0x653f115c lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xc8b7c54a lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xebda77f3 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xf127422d 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 0x002a1103 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0144c434 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x014df78b cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01acfc39 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01ce5352 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02a61912 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02c80e79 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03655c7b cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b37a9c lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03d35626 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04b9cb46 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04c49902 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05429c55 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x055a381b cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x059d4183 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05caff83 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06890ad6 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06cf2887 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d82d96 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x070e79ed cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07682fe0 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07a26ada llog_process_or_fork +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 0x088dccc2 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a8c33ad cl_offset +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 0x0c788d98 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ca0879a cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d20c9ca dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e6c35f1 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0eea34b9 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f7cac45 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f7fb8c0 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x110e17e4 ldebugfs_register_stats +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 0x12cc93f7 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14882ee9 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15e6410c cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15f84df7 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x168ba5cb capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16c32584 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16e1eb16 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x170890ff lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x175461a6 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1837472e class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a9e587d class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b197fa3 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b213b4f cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c0e9cba lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c4c0d5a dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ccfa205 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cdbb710 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d30c806 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1da9008e cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ea71c4b cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f578ec7 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f92e5be lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f9d3c68 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2003e694 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2155184e lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21877cd9 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21edb198 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21f5c0bc llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x226c9ac6 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22ee78b7 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x238d4c78 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24353260 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x247c7486 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24c1c671 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24c6586f cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2543fb01 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x255c0525 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2564740d class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25d95936 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25f10f56 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x266987bf class_uuid2obd +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 0x28d616fd cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x293f6fef class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29950d92 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a1185c8 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bfe5393 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 0x2d441ef7 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f995117 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fa053b7 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ffd72fa cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d9b5a capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x321cf046 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x324a1bb1 dt_device_init +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 0x33f6f3bb cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x352d471e lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x363546a6 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x370777f7 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38a2707b llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38c72f8b cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3934fbe4 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a01cd9a dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a49fce5 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3aae9e04 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3adf9c59 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b1ae07b cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c15829a llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c1764ba cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c541e8a dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c5a1c61 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d459c1e cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3db37c3b lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e70dd55 cl_lock_closure_build +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 0x3f60bb6e lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x406edea9 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x418fc195 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x433f2b72 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4357b315 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x436aaf24 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452a78af cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x467963a1 llog_sync +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 0x480c2544 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48384f1e cl_sync_io_wait +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 0x4ab58ccb lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ae45ee9 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b4d7b16 cl_lock_get +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 0x4c838787 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ddc9909 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e4a8af2 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e6e3ab4 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ebc6884 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f359578 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f843cf3 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fadb715 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fd6146f cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50e1e341 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51712703 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x524bc4d8 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x529e58dd cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52de44c2 lustre_common_put_super +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 0x5557a21b lu_env_refill_by_tags +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 0x56a572ae lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56a6a11f ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56ef3d4f class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x571bc753 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x571d9f48 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5730ee00 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582d1aab class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5847930e obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a707b4a lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bf7c35e llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c0fd79b cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5caaf634 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dbb9103 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed9656e cl_lock_release +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 0x60714f3c llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x609fb7ee class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62094e6f cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64526e86 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64adf916 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64d6ae12 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x660427a6 lprocfs_rd_atomic +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 0x67cf3982 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67d327a4 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6889f003 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68a05ef9 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68bd49da lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68de25bf lu_context_key_register_many +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 0x6af2f26e cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bbb6275 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c7f205e dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cd65a0a lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dac05a1 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e467af2 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e9b56b1 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6eb37796 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f60834c cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcb7042 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7092630b lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +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 0x75ab6304 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76cfaba1 cl_page_flush +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 0x7824467c cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78752f40 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78bcdcc4 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x792d5c24 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a3ff69f dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a5cff31 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b62c9ce class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd135f7 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c5e9cc4 cl_page_put +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 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80885ccb lu_object_anon +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 0x81c29512 lprocfs_rd_connect_flags +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 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 0x8580202d lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85898443 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85bd4c3d cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85ecd055 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x873e95d4 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88ee9368 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89f08ca9 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8acc668b cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b4315aa lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b44416e llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5c2003 ldebugfs_remove +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 0x8cce9870 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d3e5a0c cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8df5c467 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e4f2225 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90d52402 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9174e410 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9205109b class_disconnect +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 0x92e60867 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92fbcd7d llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9320d8c9 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9371790c lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x951c940b cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95312504 obd_export_evict_by_nid +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 0x96e8b903 cl_page_cancel +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 0x98a1f9a5 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x995c14a7 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a369887 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9acfb33b cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b739553 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bf3baad cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c204ed7 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ca1171f obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d350220 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d4f0c9f cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d633f93 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dcc27e6 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ee2589c obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa12db240 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa141f86e cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa17818c1 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1a6ade8 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1f650cb lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2a9dc9c cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2d82db1 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3753fda cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3da6bc3 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa44b00df cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4a5d94c cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4cdc5f1 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5e50a35 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa638b939 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa80ad779 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa99cb946 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa51c973 class_new_import +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 0xac3db7c2 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad378e8f cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae26c4fd class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae2a2e3b cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae8e97eb lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaed1b623 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafdfc980 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0886bed cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1fa7209 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2d34117 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb30eae22 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb340b8d0 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4083cea cl_io_slice_add +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 0xb5eaa887 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb60f5882 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6a2ccb4 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6be84a8 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6fa9a9b cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb705b726 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb718e377 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7cb693b class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c62bd0 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8d1a3c5 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8d2198a cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba0192be llog_backup +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 0xbae62145 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb18cd3c lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb59ea95 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbbe1207 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc153b6d cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc6062d9 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd75ab03 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbeec629d class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbefff094 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf93e7a4 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbff9bfee cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc08076c4 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc10a5e52 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1268406 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc14ab98c lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc222d936 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc28296c0 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2f18a18 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3cd1ded lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3e202fb cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc404837c lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4c9d557 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4fec9ef lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc59910e5 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5a6baae lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5cd1e15 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5f527cc cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc673d300 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc84af303 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8da7bfe cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc97e5ebe obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9c2c222 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb25efd5 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb602584 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd4da2b4 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd51466c class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce8e0bb6 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf8cd9fd cl_env_unplant +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 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 0xd20276ff cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd41755ad dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd593f240 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd59db61d lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6b6b514 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7109f19 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd712b4d3 lu_context_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 0xd7c096f1 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8166328 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd83d93e5 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9e4e0cb cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac0e133 class_devices_in_group +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 0xdb2a3677 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb3908e7 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb7564fa cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdccca2f4 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd0c330e cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddb7739d llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde57eee3 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7edfbb cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfb73fad llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdff63784 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdff6b817 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe02c6eb3 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0b6f814 cl_pages_prune +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 0xe19b9859 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2b1f45f llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2dae712 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe34ac98c cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3a57d0b __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3ee7f2f llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe40a6ec7 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4a85911 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe502ac31 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5e39dc1 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7832da1 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d96cf5 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe80aacfc class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe81e0930 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe83d7b52 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8a70fed cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe933d8ed lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9681f8a cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9c0ecdd lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaffcfeb lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed93795d llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedaf40b1 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee2bc418 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee547a27 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee5be560 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee5de971 cl_lock_delete +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 0xef85bc23 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefdd1933 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1e47e40 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf38aa27a lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf47f00e6 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf508a54b cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf55aaafb lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60118b4 lu_env_fini +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 0xf71599e1 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf81ff15b cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8d7cf11 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf917b2b9 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf92ab1dc class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9a03ef6 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9d3653f cl_page_find +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 0xfab87e18 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfba7c4c3 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc78f83c lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfccf13c2 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce84109 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfceb3c99 lu_device_fini +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 0xfe083696 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe1f66b0 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe383b4b cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe8a2477 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfef1571f llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff7f8ca9 obdo_from_iattr +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 0x02056cfd ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x022c8dd4 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0245d05b client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02c4de32 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03160019 ptlrpc_abort_inflight +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 0x05d08e32 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 0x06dd3381 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0732d0ef sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x085d588c sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x091e42b8 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x093085ec req_capsule_extend +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 0x0a36214f ptlrpc_hpreq_handler +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 0x0b83c2ff ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0baa5f74 ptlrpc_register_bulk +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 0x0d5bf2ec sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d82c6a3 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f5f7a8d ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f638ea0 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f9d6775 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f9f7b9b __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fdf7bee sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1065a922 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 0x11ba484a ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13d3f27a client_import_del_conn +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 0x169e28e8 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16b2403b ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x173cb250 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1750da08 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18b66181 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x195364b0 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19ba08a4 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a5028e0 ldlm_cli_cancel_unused +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 0x1ac32a30 req_capsule_server_get +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 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 0x1d6175b3 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d758e7a sptlrpc_cli_unwrap_bulk_write +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 0x1e9eab7b client_obd_cleanup +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 0x1efe7304 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1fa1d529 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x209534db ldlm_pool_setup +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 0x222e5242 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23070c2b req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x237aee1e sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x245e302a ptlrpc_set_add_new_req +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 0x26386166 ldlm_init_export +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 0x2799c304 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x288de75b ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28ecf23a ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29d958e0 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a3d07dd ptlrpc_prep_bulk_imp +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 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2cb3a2df ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d534e54 ptlrpc_req_set_repsize +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 0x2d86f533 ldlm_destroy_export +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 0x2e4d0895 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ef5a36e ldlm_pool_get_limit +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 0x31205d7b ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x316bdf90 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31e526f9 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x326e6f7d ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33ff4b8d ldlm_pool_fini +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 0x35ad5498 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3651c684 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36a3b935 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 0x39c95b1a ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39e46384 ldlm_lock_convert +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 0x3a688bf2 req_capsule_get_size +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 0x3b9b8d88 ldlm_cli_cancel_req +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 0x3eb0670f ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ed10303 sec2target_str +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 0x3f8b6fae ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40f0ad98 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4121aa65 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4247eee5 ldlm_prep_elc_req +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 0x45de54f7 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x460d9386 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4872a3fa __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49f33257 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ce8ae35 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d0b04ff ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d1463e4 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d66a8de 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 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 0x5061da66 ldlm_cli_enqueue_local +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 0x533e73c8 ldlm_namespace_dump +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 0x546a51f4 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54a9565d ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x551eac07 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x568c833a req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5840f6f4 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58d994cd ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58e955e6 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 0x598be731 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59c2adde ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a6e91b6 do_set_info_async +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 0x5c849640 _debug_req +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 0x5ea5f5cd sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5eaf55a3 ldlm_lock_downgrade +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 0x608e3fe3 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60b3becf ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61053386 ptlrpc_resend_req +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 0x6281dd4d target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62a487f8 ptlrpc_prep_req_pool +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 0x63653e68 ldlm_resource_putref +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 0x6656c2e0 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 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 0x69f8b2af ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a9ec2a3 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b8ea68a ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bb4ee7c ptlrpc_pinger_del_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 0x707f8993 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71dfae3d req_capsule_init +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 0x73e151a2 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73f787ab lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x745e7107 req_capsule_set +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 0x76385e44 ldlm_lock_change_resource +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 0x77fc2531 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 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b9f6b30 ptlrpc_nrs_policy_unregister +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 0x7da45fb0 sptlrpc_gc_add_ctx +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 0x7e61181c ldlm_namespace_free +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 0x7fa48f50 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80c89031 ldlm_resource_foreach +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 0x82cbd96f ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83526b19 ptlrpc_request_pack +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 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x865908ff ldlm_extent_shift_kms +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 0x89126aff req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x891b5cdf ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89b0089f ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89bea93a ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89e75583 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89ef6fc7 ldlm_flock_completion_ast +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 0x8b4c6061 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 0x8bd6ff94 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c1c9d66 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c4848f0 llog_initiator_connect +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 0x8e25ea67 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8efa6c9e ldlm_replay_locks +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 0x90e8937d ptlrpc_request_bufs_pack +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 0x91ff1586 sptlrpc_gc_add_sec +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 0x93c2c0c9 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9449658a ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94df0fca req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x950aa272 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x950b07e7 ptlrpc_unregister_bulk +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 0x95fd2abf ptlrpc_lprocfs_brw +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 0x96c226b2 unlock_res_and_lock +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 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d71815c lprocfs_wr_pinger_recov +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 0xa0f9a543 req_capsule_client_get +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 0xa2e3a8b6 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2f4147c sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa33a01bb ptlrpc_unpack_rep_msg +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 0xa5320518 ptlrpc_pinger_add_import +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 0xa5a28c2c ldlm_lock_fail_match_locked +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 0xa9416c3d ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9510714 sptlrpc_cli_ctx_expire +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 0xac3de201 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd07672 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad729e57 ldlm_resource_iterate +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 0xaecfdb09 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaeda521a ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4ba8d1 ptlrpc_queue_wait +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 0xb1395b5c sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb274e826 ldlm_enqueue_pack +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 0xb2d1c7c2 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3f81db8 ldlm_lock_put +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 0xb5f61cbc ptlrpc_unregister_reply +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 0xb85cecb5 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb911d1e8 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9bcb68e client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9d13f4a ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba10f6fe ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb2de55d ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc24d46a req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc73bd93 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbde3973a req_capsule_client_swab_get +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 0xc1925822 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1eb1e7a ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1fa07bc ptlrpc_resend +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 0xc45b6602 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc518d4c6 ptlrpc_nrs_policy_register +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 0xc7e7f15a sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8caec1c ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9457731 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9a7122f ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca6bc2e8 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca84c480 ldlm_lock_fail_match +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 0xcb5414d1 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdde59e4 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce7b35a8 ldlm_resource_unlink_lock +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 0xceed532b lprocfs_wr_evict_client +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 0xd2835897 client_disconnect_export +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 0xd3c31161 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd43d57ba target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5948fff ptlrpc_register_service +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 0xd7ae822f ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd80a402f ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd80d1da6 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8146127 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8820533 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8cf6ac0 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8e99ce6 ptlrpc_send_reply +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 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 0xde3344b3 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde77f628 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdeec2b7e ldlm_resource_get +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 0xe3aa3869 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3f4ad49 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe46015ec llog_client_ops +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 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 0xe7808414 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe8a500e3 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9c469e7 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea7039ef sptlrpc_cli_ctx_put +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 0xebf94b8b ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec2fde4f sptlrpc_import_flush_my_ctx +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 0xed289395 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed58fcb5 ptl_send_rpc +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 0xef560323 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef665e7f ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefcd09e4 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf057057f ptlrpc_req_finished +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 0xf1e62f86 ptlrpc_disconnect_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 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d3f78e lustre_pack_reply_flags +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 0xf62fb135 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6c090f4 ptlrpc_reply +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 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 0xf9ccf805 lock_res_and_lock +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 0xfa8a76c1 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfad320f8 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfcfc6e3f ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd567ecd target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfea0585c ptlrpcd_wake +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 0xa1b54182 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x010081de rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x047e92a3 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x04d5bc63 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x06be45d5 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0fce7738 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1132b492 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x11469a31 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22580f5f rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26c4f8e7 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2af5e550 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b5bd97a rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2d4b215b rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30585464 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ddbbfeb rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42266737 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4f399678 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x53e95236 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5921e745 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6011534a rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66b212db Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6aa6030f rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x80ced18e rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86beefb1 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8b10613a rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8dc34cdf rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x90bcd5de rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x981b1074 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9ae28b33 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa1a4790e HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa24ec149 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa441ba5d rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa45c81c7 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb1119fab rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb58d6813 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf067d55 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4a0dce8 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc6898d67 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcc4ad669 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdd4e5797 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe267a25e rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeaffbc9f rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xedb6fadc rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xef410d02 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf11a0a48 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4310564 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf75bfe78 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf76845dd rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7c43406 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfb1a4d9d alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff215978 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00b91953 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01a29698 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x04efe490 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1400a294 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x18d1fddb ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1ba601b5 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c4ec6b0 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e57d9e9 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x20f18524 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x23a3a193 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x245562d1 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x26381948 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27964ac4 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x297872ed ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c8faa85 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f371620 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x33c29c3c ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x34483ee3 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c9a3d0c ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44adcf64 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b63f6d7 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b140243 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5cb47fd4 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5e7b8eaa IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x665965e6 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x678cf48a ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6baafa57 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x731566ad ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7561b341 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x77341d9b SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8036b47c ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x813c0f60 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e358c88 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x903c9235 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x91d3ba12 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2df04f6 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa413f136 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa5f64ca7 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa8147276 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb65cfc26 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbbc89838 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc86f0b0 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe34f1ea ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc607b332 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc7a08c8d notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc860b163 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xca1f9ada DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd384bf70 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3fb4b50 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5029b42 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7efdbad ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd183700 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf63eb89c ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa07b71a ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/unisys/visorbus/visorbus 0xdc63180e visorbus_get_device_by_id +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x05dcb069 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x09e36815 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1af6d23b iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1d843144 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2321a9db iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2b20b551 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x346148e1 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x37c4ba07 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3a498aeb iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x50a378a2 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5152d72e iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5c34b7cd iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6ef7dc85 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x74fc08e9 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7e2b5fbb iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x85d0d7a7 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x88068b05 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8d836b12 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb1f0a2d4 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb2464b1c iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb4ceb2a9 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbe619d08 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbea0f1e5 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc6cf4665 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcc7dca52 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdb6979d2 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe233dd01 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe4de0ae7 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0731ca52 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ebb10af transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x14ffa21e target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x17e82b53 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x19fbe501 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1c2d7f75 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d57824a transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f3db59c target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x25954325 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2774b4d1 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a62c8cf target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c7e729a target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x33be4e3e target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x3448bd28 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x370317c3 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x37d056b0 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x43752c11 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x4fb4247a transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x524fe32f passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x60747d6c core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x65a8d211 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x66af2cd7 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x6aae182e target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b0f4175 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e210cb6 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x73797c97 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x746e5494 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x762239af passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e34f449 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x805991c2 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x826fff18 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x863a55d1 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x8dfdd8e5 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f05fc1d transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x9227a572 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x926fae20 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x950430c4 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x9705df06 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x9754bab1 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x97a398ce transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ba81bee target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ee5382f transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xa041e0f4 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0e35e50 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xac3388bd core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xac540963 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xae761770 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1c1657b target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbaef41fd transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xbccca460 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xc760c467 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd7dcb0c transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xce40243b spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xd10dcac3 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1ee18dc target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7280d6e core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7a89b3a target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xd89c871c target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xe7e4eb75 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb7c2e92 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7711f91 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xf867f31b target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa28b86b target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa6fe66c target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc84cdd4 core_tpg_check_initiator_node_acl +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 0x276a47d1 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 0xd29ac31f sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2623cc79 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4367d261 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6fbcf9ec usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x98e3f345 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa6147e53 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb1a1f5c7 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb1c7b42f usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb6902a39 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc7ca97ae usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd5282727 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xee0933d8 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf0f963d9 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x01f3081a usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xa3f97b1a 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 0x0f1c0fe4 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x63140801 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x9394e9c3 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x99759653 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x02e4c807 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x15f660d3 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1f1f5829 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6c740d96 svga_tilefill +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 0xc3d3c11e 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 0xe8b3b76a svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf1a62e2b svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x321e0281 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xdcbb2a34 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x208f23b0 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 0xc1b647c9 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xb604447f mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x370b8fde g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xdfaa64b3 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xe119d8bd matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x49e1aca7 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x4a8627f6 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x92cc7f96 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xa153afb4 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xb47dfdbc matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xab4fe2c6 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x6204217f matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x796d28c3 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x8f97b78a matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf9724213 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x190d714a matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xa02f0b54 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x0f8265da matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x7f633b1e matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xad0df76c matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf21c94dd matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf2aa28e3 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x9740b470 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 0x063d3d5d w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x2cd21a09 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x901eb21b w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xc7ad2eb6 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 0x0b366a8e ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x12d9f5ad ore_write +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x30450d9e ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4a8617fe extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x51a02028 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x73a65e08 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x8279de1d ore_read +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc44d8d74 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xd3f6982f ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xd8064b6f ore_check_io +EXPORT_SYMBOL fs/fscache/fscache 0x0b6f3454 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x0de59d3e __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x16fc6a48 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x19922aa3 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x1ff0908e __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x2b3fe2b5 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x34db186e __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x3807408d __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x407eb91a fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x413db501 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x44d04fa9 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x489ccd2d fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x48c1426c __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x515972b5 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x6928cd37 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x741656a8 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x79252f53 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x7926ce8e __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x7e653d95 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x81cd1c94 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x918735a6 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x92b1c026 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x936255a6 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x959a492b __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x95fa3c8a __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xa82d2a74 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xaaba74bd __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xb3eb5e29 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xb6f8e5dd fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xbe3f96ad __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xcb46a687 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xce1b6c68 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd3350397 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xd8740d4f __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xe33d0b5f fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xe4d06548 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xe50157ac fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xeab5d328 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xf14880fc __fscache_invalidate +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 0x8ce83051 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xd083e65e lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x13e78bfd unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x3e68db5b register_8022_client +EXPORT_SYMBOL net/802/p8023 0x6faea35f destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xf721da3e make_8023_client +EXPORT_SYMBOL net/802/psnap 0x99406e16 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xc4dd771e unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0049dce8 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x0a4e1acb v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x0abad4f3 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0cffb12b p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x177d7885 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x17afc5fd p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1c0d6074 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x215465c7 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x237e2298 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x266f8c5e p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x270273f5 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x28169cc7 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x2be4f240 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36b56d6b p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3ccef0db p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4e9f5318 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x5175c987 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x5330ac82 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x5b911a8a p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x6690f4e6 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x6947f0fb p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x7759e12e p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x7a289d43 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x8b8d9d97 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x8df342a6 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x90f66a5c p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x98dbdfd5 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x9928be0f p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x9e55932b p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xa6f88f1a p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa72807f0 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xa84f6a32 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xba72a288 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xbd267605 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc794a644 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xd3c3f324 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd9d28cb0 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xda3661c9 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xdaf59745 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xe26ea6e8 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe6506644 v9fs_get_default_trans +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 0x297b0b16 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x3211ef3e alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x399a153c atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xb13bd1cf atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x01fe2c80 atm_charge +EXPORT_SYMBOL net/atm/atm 0x097714f8 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x1bfbb10f vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x37fbce8b register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x3da6047f atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x47b095fb atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x76a3bcca deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x7a71e943 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x988aae0f 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 0xaf798e08 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xafb97765 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xb454c492 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xc8a9a60f atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xe505a3c2 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x00fefa9e ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x37b55c84 ax25_linkfail_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 0x7064b285 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x90c22bdb ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x9b2ba367 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xa38a4c09 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcdb015c8 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xdfc6a275 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x035ba8ae __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x19a23909 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1a238484 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x21a3a9da hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x23110495 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x24ac5496 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d5ed5e9 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30598699 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x31a243b9 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x379325a4 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a3eae88 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b5e0348 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48feef1b bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x57805427 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x61ba8bda hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x65cafcbf l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7224cce9 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x746cecbc bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x77681a74 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7a824610 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b4c4afb l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8234a7a6 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8f8c2ce0 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x90690d7e hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x912d2ba8 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98a284e5 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b4c7f48 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ef8ecfd bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa1d01f64 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa7ac26cb bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb894a9df __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xba75e98e bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbcc02a5d bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc45a6727 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd441c612 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd64d0ec7 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8086835 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf9efd31c bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xff592636 bt_accept_unlink +EXPORT_SYMBOL net/bridge/bridge 0x3d2cf1bc br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x0bec25d7 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x9f13ca3f ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xaf52e573 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x04de28d5 caif_enroll_dev +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 0x45a9600f caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x6d5e5bb0 get_cfcnfg +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 0xaffeefce caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xdb4d2018 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x19e97e22 can_send +EXPORT_SYMBOL net/can/can 0x5bd4193c can_proto_register +EXPORT_SYMBOL net/can/can 0xbd8f7f36 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xde6c4aab can_rx_unregister +EXPORT_SYMBOL net/can/can 0xe01630e1 can_rx_register +EXPORT_SYMBOL net/can/can 0xe697d90d can_ioctl +EXPORT_SYMBOL net/ceph/libceph 0x0010aab6 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x01c89d6d ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x02981712 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x03ee3e29 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x07f97717 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x146122dc ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x1ac6e702 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x1d1317cd ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x1dc85cea ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x1e00bc40 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x20260ffb osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21073f87 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x239c5bae ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x2401a81b ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x25656955 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x2b5cc906 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2e6c37ff osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x2f5b121d osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x389d6d75 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3f7253c6 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x4082d282 ceph_monc_wait_osdmap +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 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x471b4252 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x483fe9ef ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x49c57c6e ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x4d66b1f9 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x4e6d2ce3 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x5109952b ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x526d585e ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5318e380 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53fa040f ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x56238877 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58535add ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x5ad75168 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5ba5cae4 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x5c17710f __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x61a91033 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x639d95ec ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x63a44a40 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x66ba1379 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x67fe53dd osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x68a0dbe9 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x69da2dcf ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6b588b2f osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x6b880adc osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x79ade6fd osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x7c957fc1 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x7d80af58 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x7e6c424b ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8213b2c5 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x8a17a6de ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x93d18760 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa418e616 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xab244eb4 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0f357ec ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb58453c3 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb58bba1e osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb960bb31 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xbfe35fe4 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xc41ce2ec ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc508153b ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc626acf3 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd0d68dc3 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xd0fdb7de ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd3546149 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xd39f6fe4 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xd4cadb1b ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xd5b84f17 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xd680c559 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xdae5f338 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xdb1090eb ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xdc524a6d ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xe2bb6bd4 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe604d850 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe9397e57 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xeb000f66 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf371b5f3 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf52c7bcb ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xf6668721 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xf6b89dc2 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xf831c218 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xfcfb07d3 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x23125e57 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xc7b7bc7f dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x2c0d7d74 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x49870352 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6fa12339 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcf612433 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdc1cac43 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdd251364 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf63da3d8 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x6c5113fd gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x73c17e56 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x16ddd56e ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1ffbe465 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x388af3b0 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x45c70351 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x47fff5f9 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x68690876 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x16e560e2 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x623fe00e arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x72dfcaa3 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x54000e33 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x7f6be172 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xfb3bb15f ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x6b9019ec xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xe0de69ee xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x2577b225 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xab966d56 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb30c31ff ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcf931db7 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xdaa5c55a ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x33c9af75 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x54f87030 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe92a1cfc ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x7d650926 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xbc39ed5d xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x04b086c4 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x095471a4 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x17e613b1 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x182e77e4 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x77d7ddd1 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb670c16e ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd20f08bb ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd9f99fd7 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xde06775e ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe1a48a75 ircomm_connect_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 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x0b7b8898 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x0d07bfc9 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x0e282bb1 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x0e441534 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x21071752 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x2e367871 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x3347753a 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 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 0x4b9f173c irlap_close +EXPORT_SYMBOL net/irda/irda 0x4bb36615 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6d5e9c0f irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x712bc81b irda_device_set_media_busy +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 0x84b0824f irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x888001a4 iriap_getvaluebyclass_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 0x95d7f828 iriap_close +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x99e341fe irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xa342c740 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xa808d4a7 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +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 0xbd03530d async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc3247e0e iriap_open +EXPORT_SYMBOL net/irda/irda 0xd542d330 irlmp_open_lsap +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 0xdfa5fb57 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xe029c915 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xe0386c18 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xe8240595 irlap_open +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 0xf8e46561 alloc_irdadev +EXPORT_SYMBOL net/l2tp/l2tp_core 0x77c108b9 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0758b914 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x41edcf83 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x6a130c2e lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x91001de8 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xa690231a lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xd608b81f lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xd7a299dd lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xfa400e67 lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x22481498 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x491743ed llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x56823db7 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x5b386608 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x7c388943 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x9e1024e1 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xa2a44a57 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x059b3ffa __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x069cb1e2 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x06a7f721 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x07392ac3 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x07b8dcd9 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x0ae4b084 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x1266b6aa ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x129a5b0b ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x14238f18 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x14ffeb69 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x153ddfe5 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x16ed1c83 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1733fe1a ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x18f8d9b8 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x1a521112 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2887d663 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2b2e0e8c ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x2bd0ef83 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x2f8135b7 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x32c03c82 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x3387de05 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x37f82bb6 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3e7751af ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x4c023d74 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4c69b39d ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x50837fd7 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x558c2992 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5916408b ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x5926f5f9 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5b53a9e3 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x5b895c4b ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x5d911f6a ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x5fc1d428 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x6d2bea4c ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x6e08bca4 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x74c66606 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x75e41adf ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7888689d ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x79b1e489 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x7a8a73e1 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7aae060b ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x7b8eff65 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x81fe448e ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x849aa620 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x8e2cba85 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x8f32e195 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x92ca38a5 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x9614c0f7 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x966d8585 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x990da603 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x99e4b5d6 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9c5fcdcf ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x9d8dd79e ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x9fc6eb60 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xa52ca3e1 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xaeb3e4e3 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xaf4eda09 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xb86d9aa2 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xc3ec43ca ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xc54cb433 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xc685125f wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc77d2d0a ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xc7fb9362 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xc9054078 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xd6876ef9 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd802d0a4 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xd96e7eb9 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdbdfa0bd ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xdd570ce2 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xde67c320 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xe04a485a ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe48ab5b5 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xee344a54 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf2445924 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xf328bf14 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf6255dfd ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xfcd39277 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xfe1a9315 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac802154/mac802154 0x1e5b99da ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2679ee57 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x275c48ff ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x51656b63 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x8d1becef ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xaa064818 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xdc460b11 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xed82ae26 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xf676dbb4 ieee802154_rx +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x10dbcb3a ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x303b0f06 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x33e5a30c ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x63ce56ee ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7141761c register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x796efcd9 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7c895f2f unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x865f5110 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x944ea33a ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x963b503c register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xac60942b register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xacc9482e ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbcf8175e ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc224d95e ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x1618ad3d nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x82cfe1e3 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x8da09d3f __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x01ae4c89 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x28749f0b __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x2dee7d8f nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x4bd89927 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x50b5e426 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xe9217fcf nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x091b78d5 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x11ebd9b3 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x274d5fe3 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x608a5d9c xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x6128589a xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8077d830 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x96ed3137 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xb9ced41c xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd4b3eaa2 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xe185eb3f xt_unregister_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x0b780122 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x0cef6cd1 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x1dc64056 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x2f878b99 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x457d2e40 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x65723d0b nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x721e4ad3 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x95f588f1 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa486b1a0 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xa5fbf7a2 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xac254a43 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xbb6fb5c8 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xd2ac3608 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xd2d14f10 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xd45ad39b nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xd86b8f05 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xdb71ed45 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xe59bec0e nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf415e299 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x12c39285 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x1606c163 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x265b1ca4 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x2ce094bb nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x337cfaf3 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x382519cf nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x60a5c35d nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6797c579 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x7c92aa25 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x7d9a09bb nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x89334783 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x981ec039 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x998c3ee2 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa94cf0b6 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xb57ebac7 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xcc9fdf19 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xd088d5a3 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xe678e661 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xf0c90a34 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nfc 0x13e1224f nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x283fbd2a nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x30be280c nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x4249240c nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x549ce5f1 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x5a172dc2 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x69697877 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x6ab398d0 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x70e3056e nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x7569ce18 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x7824221d nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x7ba8696e nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x838ef61c nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x84967a71 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x873bddeb nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x882b7de2 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x8ed7a972 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xab0ae10c nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xc6e732dc nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xca90c9a2 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xd93a8584 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xde36cb0b nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc_digital 0x1c891685 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x46cd9e24 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x6a6b8e74 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x74998a3c nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x16300a74 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x1a045654 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x28cea7a4 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xa84bc58c phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xef5f5a6c phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xf1f7b5a6 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xf377f469 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xfa99eaea phonet_proto_unregister +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x32884f66 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6c55cf90 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x73ef8081 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7d432e28 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8e0e643f rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9a8685a3 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa42ef000 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xab8de8ab rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbc573526 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc09d275b rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc14aa60b rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc6e78d4b rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd620f849 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe0d9e131 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf027dc53 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0xbd2faf4a sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x24824cc6 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x83b47b79 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa0b2f5d5 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x5f2ca678 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xa25f1d92 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe7d9f1d9 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x56cb5789 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xf02029f3 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x00451f8a cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x007a0fff __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x01f84cfb cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a52d523 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x0d96a51e cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x10917857 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x165c4fa7 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x167e2510 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x182862d7 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1db9e371 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x1f2a887d cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x21e07421 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2df2cdcd cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2f00c687 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x2f3e4a30 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x39f75eaf cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3b39e206 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3ba55f81 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x3cff414a regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3ffa1329 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4bcbf0ea cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x4f63ef22 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5a1e641a cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x5e48bbb3 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x5ee0a07f cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x5fbfdc79 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x684f73e1 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x69cea835 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x6abd2bbe cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x6bf3d844 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x6bfc83a3 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6cab6b89 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6f073f4d cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7297ae5f cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x73356bfd cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x74433590 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x75441933 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f5ebe27 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x80f826a0 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x826b510f wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8955b07d cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8b9bf2d9 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8d6db6dd cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x8dff3371 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x8fdc727b cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x90fb7ce8 cfg80211_del_sta_sinfo +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 0x985ac16f cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x9f20c4e2 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xa0f668ba cfg80211_put_bss +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 0xa1f920a2 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xa53b51be cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xa8b24405 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xacd8db4a cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xadf85d5b cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb0f80f5b ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xb1364ae9 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xb2294ad8 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xb2451fca ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xb3b2c787 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb6b42bcb wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xb97085a9 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xba1d36f2 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xbb6af2cc ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xbd47c064 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xc17d8391 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xc423f4a1 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xc4d8193c cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xc5ecec1e cfg80211_cqm_txe_notify +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 0xce5a7165 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd3bc1d32 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd94f7955 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe0af86da wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xe0c894ff wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xe28db7ea cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe7c2424b cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe8f8eef2 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xea995b1f cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xecbae781 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf56ed6bf cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xfb142b4d cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff8349e6 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/lib80211 0x1ce73b77 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x1d5b3d21 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x7b242a48 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa243e70e lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xafa59b46 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xd4ef997b lib80211_get_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xd952e27b ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xb04acfb0 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 0x37cc54c7 snd_seq_create_kernel_client +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 0x9fbf64fb 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 0xbe2a7d5c snd_seq_kernel_client_write_poll +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 0xfdceb149 snd_seq_kernel_client_enqueue_blocking +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 0x620c932a 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 0x027d9088 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x00bdf86e snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x1074a127 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x147896ac snd_info_register +EXPORT_SYMBOL sound/core/snd 0x18465cec snd_info_create_module_entry +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 0x1e813451 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x202d8a68 snd_device_free +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 0x311d88ea snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x35e09f87 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x4148213f snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x436fad63 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4f4f621c snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x52801d48 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x5753153a snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x5c08ea19 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x63dc0c12 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x6c07f26e snd_cards +EXPORT_SYMBOL sound/core/snd 0x6e8fdc20 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x727c0fe3 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x747668f1 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x79c72cfe snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x7b923922 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x81277cfd snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x887de1d1 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8ca3598a snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x90e8cdec snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x92d5a281 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x9883bfcb snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9ebb3481 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa70d592b snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb3b237ee snd_device_new +EXPORT_SYMBOL sound/core/snd 0xba4ee8ba snd_card_register +EXPORT_SYMBOL sound/core/snd 0xbe8a3663 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xc6a1de74 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xc774f2f2 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xcc533a02 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xd0900163 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xd58a1b0a snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xd6d4ee9f snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xdaa757a9 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xdb0e35e6 snd_card_new +EXPORT_SYMBOL sound/core/snd 0xdcd3f1fb snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xdef9b206 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xe0b7c922 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xe73f8f1a snd_device_register +EXPORT_SYMBOL sound/core/snd 0xe94195d3 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xea110a8d snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xeffa872d snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xfdfa2793 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x0fe5d7ad snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x01f98c5b 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 0x065f80c3 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x08d3227b snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x0bdbd940 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x1384f481 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1ff2c10c snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x243c6b7a snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x2828d516 _snd_pcm_lib_alloc_vmalloc_buffer +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 0x45ed4141 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x49450c53 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x4d26ac04 snd_pcm_new +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 0x5a72f65b snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x5db85c1a snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x60e47289 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x6190e8b5 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x62875349 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x63c4bea0 snd_pcm_hw_constraint_ratdens +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 0x6a376330 snd_pcm_lib_malloc_pages +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 0x817ea5a5 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x832b194d snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x87c2ce64 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0x926d308a snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9d0a8f6b snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x9ea92318 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac20eae9 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xae64775c snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xb3228f97 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xb3d1e128 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xb3dc6faf snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xb7ef637e snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbb91bfbc snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xbbed0667 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xc20eb2be snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xca34c226 snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0xcce058b9 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xcd1126b4 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xcd6eed1f snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xd0684d2c snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xde3499aa snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xdea828ba snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xe35ed8df snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe41269ed snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe630233d snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xe8bf6fe1 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xee051d78 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf4eb6b53 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xf70eeebf snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xff423fc9 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x28aaa0e0 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x46052336 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4dfa5411 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x61eb89ab snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6e20b0ea snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x73df2e55 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x895469a0 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x92228f3c snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x98d2153b snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa7105c74 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd49eab9e snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdd4dbeb8 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdef4e9ec snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe65a4f26 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea03066d snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf171d1be snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf7ecaf3e __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf9cec4c6 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb92fdda snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-timer 0x0176cfba snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x23e35559 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x66f1acec snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x890663ae snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x8ba9ed7d snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x991df7a8 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xae3951b8 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xd8fd016a snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xdf5e7858 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xe3feaf8a snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xedf2194c snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xfad4f0e8 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xfaec8d2f snd_timer_pause +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x7f829389 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 0x098ce382 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3e037ca8 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4c30ed12 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x99f1a7ba snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9af201fd snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbeb7bdad snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdb84392a snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xeb68a6a4 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xee192933 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 0x594c553b snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5d5710c8 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6268acc9 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7339da00 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbd1ff0e4 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc54ce54f snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcffd2ef0 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf0dd28e9 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf90125c4 snd_vx_resume +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x09e4de44 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x12f2cbc9 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1b21b38e cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x272aaf1b fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x280a7913 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x35727f17 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x38cebac5 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3d0d8570 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4e66c412 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4ef25a99 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x51d09c41 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5c4094c0 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63ca6633 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6816787d iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6b95e518 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6d4b0337 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6db866c7 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x71731005 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x75d0be34 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7cc8d694 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x84eba77e fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x89823c17 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa3213d3f amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb4effb22 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc5b1ae97 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xddd4e27e fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xea9ce3e8 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xefea856e avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf032decf fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf4094719 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfb2d8095 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x22a93a68 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xc215c137 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x130d947f snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x24629b56 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2cb9227c snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7363b5d2 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x75ddb7bf snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xab31ab4c snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb59a94f1 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xde836dbd snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x11192879 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x33089b83 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x36beb43c snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x491bac4a snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6063e119 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd85653b3 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x61678350 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6ebecd2e snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xb6e4468a snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf7225751 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x358008d3 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xe4b63aa9 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2ae5b6e9 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2be90558 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x47120972 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6ff557a2 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe00dbd88 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xed9fb72a snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x164db074 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x2d7929a0 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x34799c99 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9f11c5aa snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xda60ecac snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfaff766a snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x10841372 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1ae2c924 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1fcfb5e2 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x636e3108 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9655d310 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9d020bbe snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9ed4a026 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa9c99388 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd3937234 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe9d336cb snd_sbmixer_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0161953f snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0ee8c0a8 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x12100360 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x165b829e snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x50aa9a1f snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x52b45ff9 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x531eb6c6 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5725d5fc snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5bccd97e snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5d59b13d snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x62c139c9 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6d1d016a snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9f82339c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa6543797 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe87fb6d6 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf5ee2b47 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf8a4b640 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0xcc68cd95 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0502f926 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3efb54a5 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x58809757 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6db5fa36 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7495769d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9f338592 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xab18c7fe snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc61a15c4 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xde802b31 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x310d7452 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x4eee9938 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5e7ef0db snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0b00e963 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2b97775b oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2fafc32f oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x338c10a3 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4e82894e oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x71ef7e99 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x74c050ef oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7cf5faf4 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x890e8e1c oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8bc21602 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x97842142 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa455051b oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa71a8d80 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb3688059 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb7cc1617 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbcf7ccda oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc2f07fe3 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd33147df oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdbf1a211 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf4b2ae5b oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfb57cc00 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x66ed0ce2 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x897d1401 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x9cd642b5 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbb07a1b4 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe0531143 snd_trident_start_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x56a3fca7 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xde7b0273 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0x3fcb5f18 sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0xedfd00ab snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x16930efe register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x23994805 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x447992d3 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x6fa2285f register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x8784f915 sound_class +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xeca6f828 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3941dabf snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x5670d91c 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 0x666de1bb snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6a3fed16 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x87e4332d snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa741b0f7 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x05b23714 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x08ba19e7 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2020392c __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x40fa01ca snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7c56f376 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8cd7cc78 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf167b91f __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfb53a594 snd_util_memhdr_new +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x292ed4c6 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 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 0x00126b4a input_flush_device +EXPORT_SYMBOL vmlinux 0x001a98fd udp_add_offload +EXPORT_SYMBOL vmlinux 0x002fa5b6 get_task_io_context +EXPORT_SYMBOL vmlinux 0x00568dcf nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x00572a30 lease_modify +EXPORT_SYMBOL vmlinux 0x005a8201 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x005bad17 agp_bridge +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0111b93c bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x0137b080 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x014efd7f fsync_bdev +EXPORT_SYMBOL vmlinux 0x01536fc8 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x016606be bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x01695a45 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x0169d893 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0177daff noop_qdisc +EXPORT_SYMBOL vmlinux 0x01b45fe7 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x01d366b4 tty_mutex +EXPORT_SYMBOL vmlinux 0x01f1a6f1 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x01f25e93 ht_create_irq +EXPORT_SYMBOL vmlinux 0x01f77635 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x01faa615 down_read +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0235a0a9 blk_rq_init +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x02599d2b jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x025f15b4 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027a5868 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x028306b0 down_write +EXPORT_SYMBOL vmlinux 0x028f4ccf fput +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02967897 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x02a18a3a netif_carrier_on +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a7a69f d_tmpfile +EXPORT_SYMBOL vmlinux 0x02bcbd3a blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x02c39b13 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ed29ab param_set_int +EXPORT_SYMBOL vmlinux 0x02f17590 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x02f95d8a flow_cache_fini +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03498156 cpu_rmap_update +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 0x0395371c i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x03a7f3ba set_pages_uc +EXPORT_SYMBOL vmlinux 0x03ca4929 __bforget +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f63aa0 qdisc_tree_decrease_qlen +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 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04674a07 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x049e01f9 send_sig_info +EXPORT_SYMBOL vmlinux 0x049fb577 kthread_bind +EXPORT_SYMBOL vmlinux 0x04b157d4 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x04b568bf save_mount_options +EXPORT_SYMBOL vmlinux 0x04c62fd7 __memset +EXPORT_SYMBOL vmlinux 0x04d04144 dump_align +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04e599bd pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f08b67 prepare_creds +EXPORT_SYMBOL vmlinux 0x04fdb156 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x0513d31a ppp_channel_index +EXPORT_SYMBOL vmlinux 0x0513df97 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x052234d8 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052b58a9 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x055b22cf __page_symlink +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05a2cff8 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x05ad9aaf dcb_getapp +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05ef364b sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x05f85d1e param_array_ops +EXPORT_SYMBOL vmlinux 0x05fe2a9f dquot_enable +EXPORT_SYMBOL vmlinux 0x06052f8d __memmove +EXPORT_SYMBOL vmlinux 0x06096729 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x0631de70 nf_reinject +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0635c35f xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x06460caa find_vma +EXPORT_SYMBOL vmlinux 0x06469234 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x066bb556 write_cache_pages +EXPORT_SYMBOL vmlinux 0x06763562 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x069fc890 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x06a89842 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06c7305b blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x06c8b202 serio_open +EXPORT_SYMBOL vmlinux 0x06d5e132 lookup_bdev +EXPORT_SYMBOL vmlinux 0x06e90cb9 vme_bus_type +EXPORT_SYMBOL vmlinux 0x06e98741 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x06fd7350 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff73a9 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x070b1d46 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x070b9536 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x07136ba3 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073297f0 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x073afc16 pci_select_bars +EXPORT_SYMBOL vmlinux 0x073c5c32 tty_port_put +EXPORT_SYMBOL vmlinux 0x074612fe input_set_keycode +EXPORT_SYMBOL vmlinux 0x075a85fd mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x075abd2e skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x075b8f24 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x0765fe86 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x076efca4 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x07770a7f kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b2e56f vme_dma_request +EXPORT_SYMBOL vmlinux 0x07b53933 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x07c30e77 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d669fe generic_file_fsync +EXPORT_SYMBOL vmlinux 0x07e139a1 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x07e5b929 mpage_writepage +EXPORT_SYMBOL vmlinux 0x07fc0163 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x08235bee jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083b9705 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x083df76d generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08583b72 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x086effa9 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x08787684 alloc_file +EXPORT_SYMBOL vmlinux 0x089215dc bdevname +EXPORT_SYMBOL vmlinux 0x0895d6c6 nf_log_packet +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x089d50cf tty_name +EXPORT_SYMBOL vmlinux 0x08a486f8 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x08bb76a1 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x08d900c6 ps2_drain +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x09053268 i2c_release_client +EXPORT_SYMBOL vmlinux 0x09088a61 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x090c3428 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x09150687 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x09246c7d d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x0947f694 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x09696626 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x096dd4a3 blk_peek_request +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098f81ad security_d_instantiate +EXPORT_SYMBOL vmlinux 0x0992360b mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x09975917 cdev_alloc +EXPORT_SYMBOL vmlinux 0x09b3b95c pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d8d585 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x09e2ec84 blk_complete_request +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x0a1e1e99 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3c8725 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x0a4bc77e __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5bc82a gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x0a61b3a7 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a7795c8 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x0a8a7adc __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x0a9bc5ad init_buffer +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa35064 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x0aa72908 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x0abd62f9 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae00a13 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x0b0d5231 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b139ec9 read_cache_pages +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b29190b __vfs_read +EXPORT_SYMBOL vmlinux 0x0b524e8d i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x0b5f8774 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7dccf7 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x0b8c8a06 module_put +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b989edb netlink_capable +EXPORT_SYMBOL vmlinux 0x0bb70a97 inc_nlink +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd02cf4 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x0be18ccc __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x0be29ec7 register_quota_format +EXPORT_SYMBOL vmlinux 0x0c05c44d dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c262cd3 set_device_ro +EXPORT_SYMBOL vmlinux 0x0c3284c9 vfs_write +EXPORT_SYMBOL vmlinux 0x0c32b404 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x0c3ca10c set_anon_super +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c4e6764 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x0c50875f tcp_check_req +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5dfc4f freezing_slow_path +EXPORT_SYMBOL vmlinux 0x0c64df2c set_page_dirty +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c8599c6 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca75539 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb27b76 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x0cbf10fe serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0d2ee6f2 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x0d30b535 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x0d3775e9 tso_build_data +EXPORT_SYMBOL vmlinux 0x0d3bf789 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d58e512 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6a46ff ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x0d6d3476 dqput +EXPORT_SYMBOL vmlinux 0x0d6f2f7b iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x0d7207ee request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x0d80efb5 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x0d836a1b vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da13be3 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x0dcc98bd __dst_free +EXPORT_SYMBOL vmlinux 0x0dd599df __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0dda1270 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x0ddf3c4e vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x0ddfa72b arp_tbl +EXPORT_SYMBOL vmlinux 0x0de39866 sg_miter_start +EXPORT_SYMBOL vmlinux 0x0dfae8e1 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x0e43d9cf peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x0e5afac0 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7ffd17 key_link +EXPORT_SYMBOL vmlinux 0x0e87b391 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x0ebd5f1b pm8606_osc_disable +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 0x0f19ff31 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x0f4c4469 netif_device_attach +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4d0d6e sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x0f542121 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x0f54f7d1 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x0f60577a tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f73b1d9 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x0f7f80bb scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x0f8643d6 dquot_disable +EXPORT_SYMBOL vmlinux 0x0f99fbd8 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x0fa263f4 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x0fa57fd2 md_done_sync +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb7b605 __sb_end_write +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fd6254a pci_request_regions +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x100d42b5 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x10455460 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x1051df94 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x105862cb param_ops_ushort +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107539e8 bdi_destroy +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10a02fe9 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x10bc3ee2 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x10c2f187 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x10d6bdd4 __break_lease +EXPORT_SYMBOL vmlinux 0x10e1787c pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x10ed250f locks_init_lock +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f54532 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x10f56a4f simple_lookup +EXPORT_SYMBOL vmlinux 0x110747ac blk_register_region +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11241463 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x1126c2f2 iput +EXPORT_SYMBOL vmlinux 0x114abc7b filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x1152264b __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x115db3e4 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116c17f4 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11828a67 file_remove_privs +EXPORT_SYMBOL vmlinux 0x11838d90 elv_rb_find +EXPORT_SYMBOL vmlinux 0x1189519b scsi_ioctl +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x118fba65 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x119a4b7f d_walk +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b25742 path_put +EXPORT_SYMBOL vmlinux 0x11b5f6b7 fget_raw +EXPORT_SYMBOL vmlinux 0x11c3cd92 clear_inode +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11ff2ebf kdb_current_task +EXPORT_SYMBOL vmlinux 0x1205984c generic_setlease +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 0x1239e57e cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x12481242 fd_install +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x125e2766 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x125e4183 __register_binfmt +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e2f27b nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x12f525f8 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x12fc6cd8 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x133046ba register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x134877e6 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x136d9f60 __sock_create +EXPORT_SYMBOL vmlinux 0x13b49a97 iterate_mounts +EXPORT_SYMBOL vmlinux 0x13bc775a xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13feac2a cdev_init +EXPORT_SYMBOL vmlinux 0x1428a82f twl6040_power +EXPORT_SYMBOL vmlinux 0x143d6e84 should_remove_suid +EXPORT_SYMBOL vmlinux 0x143db96c pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x14618415 param_set_short +EXPORT_SYMBOL vmlinux 0x14e0f8bc truncate_pagecache +EXPORT_SYMBOL vmlinux 0x14ec68fd padata_stop +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x15159623 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x1525f89d blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x1547bfd6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155c5d8e abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x156395c0 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x1565ac30 param_ops_string +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x157248b1 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x158bdb07 kill_anon_super +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bb1743 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x15bdf664 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x15ed806d nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x161c6baf generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x166bc2e9 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x1677c394 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x16793c0b elv_add_request +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x168ecf66 param_ops_bool +EXPORT_SYMBOL vmlinux 0x169485f7 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16f509b7 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x171c0366 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x1721d1bb put_cmsg +EXPORT_SYMBOL vmlinux 0x173f6029 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x1747726b pcim_enable_device +EXPORT_SYMBOL vmlinux 0x174c45e0 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x176248cc kmem_cache_create +EXPORT_SYMBOL vmlinux 0x178fc438 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17c43ec2 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x17e17779 netdev_crit +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x1830723c netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1856776e eth_change_mtu +EXPORT_SYMBOL vmlinux 0x18577563 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x186872a7 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x1884547e dquot_commit +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a28cb0 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18bdf960 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x18ca6192 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x18da8807 seq_release_private +EXPORT_SYMBOL vmlinux 0x19024933 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x19160bad i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x194fe2ed __register_nls +EXPORT_SYMBOL vmlinux 0x195dfb6d _dev_info +EXPORT_SYMBOL vmlinux 0x1969aad8 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x19973ad7 import_iovec +EXPORT_SYMBOL vmlinux 0x199df22d pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19af232d tcf_hash_search +EXPORT_SYMBOL vmlinux 0x19b1531a fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19ed7500 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x19f8084d locks_free_lock +EXPORT_SYMBOL vmlinux 0x1a05bac3 module_refcount +EXPORT_SYMBOL vmlinux 0x1a1cba5c netif_napi_add +EXPORT_SYMBOL vmlinux 0x1a22b816 sync_blockdev +EXPORT_SYMBOL vmlinux 0x1a2cd6f0 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a5d71f4 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a7edde3 drop_nlink +EXPORT_SYMBOL vmlinux 0x1a9355cc default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1ac3625d set_pages_x +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ad7466f bio_unmap_user +EXPORT_SYMBOL vmlinux 0x1ae4863f noop_llseek +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 0x1b080b30 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x1b19aa55 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b3b08a5 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x1b4eb7b6 blk_put_queue +EXPORT_SYMBOL vmlinux 0x1b5232c2 update_devfreq +EXPORT_SYMBOL vmlinux 0x1b525db7 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b7227df input_grab_device +EXPORT_SYMBOL vmlinux 0x1b73a542 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x1b7d2d8b mmc_put_card +EXPORT_SYMBOL vmlinux 0x1b7e6baa mpage_readpage +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b88fd66 inet_getname +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b95d8a8 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb369be elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x1bb3e123 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x1bd1e16d __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x1bd6f9a0 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1be61aeb kern_path_create +EXPORT_SYMBOL vmlinux 0x1be70308 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x1c198b1c copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x1c25286e udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x1c32ee89 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x1c41ffac pci_match_id +EXPORT_SYMBOL vmlinux 0x1c5681f1 blk_end_request +EXPORT_SYMBOL vmlinux 0x1c80e7d3 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x1c88312b skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c8ec115 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x1c912bf4 inode_init_owner +EXPORT_SYMBOL vmlinux 0x1caed89c xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x1cb2fc70 vfs_llseek +EXPORT_SYMBOL vmlinux 0x1cc97d7a do_splice_direct +EXPORT_SYMBOL vmlinux 0x1cd583c4 generic_perform_write +EXPORT_SYMBOL vmlinux 0x1cdf5287 param_set_ushort +EXPORT_SYMBOL vmlinux 0x1cfdc756 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d2effc1 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x1d449cea max8925_reg_read +EXPORT_SYMBOL vmlinux 0x1d4f308a get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x1d752705 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x1d985dc1 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x1da818f9 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc012f6 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc639af inode_dio_wait +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd5b248 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x1de5b0c6 rwsem_down_read_failed +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 0x1e04e0fb neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e25e5a1 dup_iter +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2c911d agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x1e2eedb9 sock_wake_async +EXPORT_SYMBOL vmlinux 0x1e4c70aa tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x1e50c302 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x1e642d45 vfs_getattr +EXPORT_SYMBOL vmlinux 0x1e649b7a kern_path +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e743fba vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea2be3a ppp_dev_name +EXPORT_SYMBOL vmlinux 0x1ea316b2 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ec04173 skb_clone +EXPORT_SYMBOL vmlinux 0x1ec399e1 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x1ec7d0e0 udp_seq_open +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1ee673c6 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x1efa2b33 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x1f10f558 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x1f1ae1f5 register_gifconf +EXPORT_SYMBOL vmlinux 0x1f1ddf53 con_is_bound +EXPORT_SYMBOL vmlinux 0x1f2f5a00 mutex_lock +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f6e21d7 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x1f8e3e54 done_path_create +EXPORT_SYMBOL vmlinux 0x1fa14177 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x1fb696f7 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fbd9597 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe5cc35 pci_release_region +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 0x1ff75165 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x1ff8d490 pm860x_set_bits +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 0x2020a784 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x2021ab5d iter_file_splice_write +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 0x20537382 bio_init +EXPORT_SYMBOL vmlinux 0x2059a447 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x20688226 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2079bc4d tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x207b19a7 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20b62b0b blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c826b8 udp_disconnect +EXPORT_SYMBOL vmlinux 0x20cca1c2 seq_pad +EXPORT_SYMBOL vmlinux 0x20cd75bc md_unregister_thread +EXPORT_SYMBOL vmlinux 0x20ddc65d __devm_release_region +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x21050d15 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x21523ebb brioctl_set +EXPORT_SYMBOL vmlinux 0x215781a2 ata_port_printk +EXPORT_SYMBOL vmlinux 0x218f10eb simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x219e4f74 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21cb2fbb generic_file_mmap +EXPORT_SYMBOL vmlinux 0x21cb7640 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x21d19383 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x21db0089 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e79908 start_tty +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x2223aeb8 d_alloc +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x223bf196 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x2249026d blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x224fdbee dm_register_target +EXPORT_SYMBOL vmlinux 0x225bf467 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x22734dcf elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x228ac413 bio_map_kern +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x2305935c tc_classify +EXPORT_SYMBOL vmlinux 0x230da8b6 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x23124bff phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x2315ae0c __frontswap_load +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x233d5ba2 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x236e69c3 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x2375eb90 I_BDEV +EXPORT_SYMBOL vmlinux 0x238e2976 invalidate_partition +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 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23e36d5b jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x23e554c1 do_truncate +EXPORT_SYMBOL vmlinux 0x23fa1591 cad_pid +EXPORT_SYMBOL vmlinux 0x23fce402 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24076b52 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x243c03ee phy_connect +EXPORT_SYMBOL vmlinux 0x243e9c77 pci_bus_type +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24484f54 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245cb7f8 vc_resize +EXPORT_SYMBOL vmlinux 0x245ee0d2 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x246eea28 padata_start +EXPORT_SYMBOL vmlinux 0x247c20d1 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24880f4e inet_bind +EXPORT_SYMBOL vmlinux 0x24a788d9 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x24afc8e4 keyring_clear +EXPORT_SYMBOL vmlinux 0x24bbb4f2 d_path +EXPORT_SYMBOL vmlinux 0x24c91e27 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x24ced917 current_task +EXPORT_SYMBOL vmlinux 0x24cf9980 inet_select_addr +EXPORT_SYMBOL vmlinux 0x24d73597 input_register_device +EXPORT_SYMBOL vmlinux 0x24e50865 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250a6443 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x2515ca8f ilookup +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25288077 udp_set_csum +EXPORT_SYMBOL vmlinux 0x254d6185 block_commit_write +EXPORT_SYMBOL vmlinux 0x254f581c console_start +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2579431a sock_sendmsg +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25957442 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x259d9d5b input_set_capability +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25afae65 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x25b58254 vfs_readv +EXPORT_SYMBOL vmlinux 0x25babe38 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x25c14627 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x25c1e1f4 vfs_rename +EXPORT_SYMBOL vmlinux 0x25ca2a4f xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f90817 generic_file_open +EXPORT_SYMBOL vmlinux 0x25f9673f pci_iounmap +EXPORT_SYMBOL vmlinux 0x261a5fe0 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x261b1b3e fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263ee783 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x268315c0 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x26a17910 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x26c70363 irq_to_desc +EXPORT_SYMBOL vmlinux 0x26c942ca __getblk_slow +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26cbb9eb kernel_param_lock +EXPORT_SYMBOL vmlinux 0x26cc689a mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x26d41bdf nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x26d97c74 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x27068e61 mount_bdev +EXPORT_SYMBOL vmlinux 0x2718cc93 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272a205c free_user_ns +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2753f911 fsnotify_add_mark +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 0x279fd4a8 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x27abe6a3 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b6f7c6 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x27b9e4e2 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2dea9 dm_get_device +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27d05f63 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x27d37659 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e66ca4 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x28491648 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x28770582 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x287ca030 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x28838e76 override_creds +EXPORT_SYMBOL vmlinux 0x2896b702 filemap_flush +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a474df cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x28a5133c md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28b93aa8 tty_write_room +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x29017500 skb_find_text +EXPORT_SYMBOL vmlinux 0x291583e4 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x291c0a6c t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x292460f8 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x2940ce0a blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295ef306 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x297bdb0f input_unregister_handle +EXPORT_SYMBOL vmlinux 0x29a205fa blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x29bfe24d zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x29c2b6cf scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x29cd3999 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x29ed7945 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x29f0dcf2 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x29f3eb5e ip_defrag +EXPORT_SYMBOL vmlinux 0x2a067645 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x2a16a6ba blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x2a28f247 pci_find_bus +EXPORT_SYMBOL vmlinux 0x2a2cbdb0 inet_sendpage +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a5af641 mdiobus_register +EXPORT_SYMBOL vmlinux 0x2a804b6b __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x2a82a78f __scm_send +EXPORT_SYMBOL vmlinux 0x2a8ad693 fget +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2abf7c97 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2ac9ec29 __netif_schedule +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ada9529 tcp_req_err +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b1a8b75 unlock_page +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b598771 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x2b72d1f7 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x2b755195 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x2b8f11f7 commit_creds +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 0x2bbbe66c sock_edemux +EXPORT_SYMBOL vmlinux 0x2bd359aa agp_copy_info +EXPORT_SYMBOL vmlinux 0x2bd8b2e4 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c0dd453 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x2c0e455f tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x2c0fe13b pnp_start_dev +EXPORT_SYMBOL vmlinux 0x2c1161ca uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x2c16c8f6 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x2c1915f4 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x2c1d6dfb pci_restore_state +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2dd385 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x2c39d3d9 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x2c44c6eb cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca110f8 put_page +EXPORT_SYMBOL vmlinux 0x2ca14a6a vfs_link +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d630293 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x2d675224 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x2d8e1893 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x2d9382b0 acl_by_type +EXPORT_SYMBOL vmlinux 0x2da1205d simple_fill_super +EXPORT_SYMBOL vmlinux 0x2dacea69 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd1be33 tcf_register_action +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 0x2df34d87 ppp_unit_number +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 0x2e2faf9f dma_ops +EXPORT_SYMBOL vmlinux 0x2e43af8b __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x2e45fbeb dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x2e5202f6 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0x2e59833f unregister_qdisc +EXPORT_SYMBOL vmlinux 0x2e90992d max8998_update_reg +EXPORT_SYMBOL vmlinux 0x2e9f73a9 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x2ea8c028 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x2ea90af5 lock_rename +EXPORT_SYMBOL vmlinux 0x2eaa8350 vme_slot_num +EXPORT_SYMBOL vmlinux 0x2ebe4766 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x2edb90ce nobh_writepage +EXPORT_SYMBOL vmlinux 0x2edda024 pci_release_selected_regions +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 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5772ac mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x2f65a1a5 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x2f667c69 registered_fb +EXPORT_SYMBOL vmlinux 0x2f88f68c pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x2f90f293 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x2f916665 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x2f99a793 gen_pool_create +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc3b6ec uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x2fcb13a6 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x300760e5 dev_deactivate +EXPORT_SYMBOL vmlinux 0x30193530 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302e3157 mount_nodev +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3037d70b kernel_listen +EXPORT_SYMBOL vmlinux 0x30454ed9 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x3045ca01 fb_class +EXPORT_SYMBOL vmlinux 0x304895bc proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x305d085e i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30b91713 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x30bdf4a8 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x30e6e8c3 empty_aops +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3109d77a jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x310b4cdf __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x310badd7 downgrade_write +EXPORT_SYMBOL vmlinux 0x3128fe00 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x313beae7 dcache_readdir +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315cc340 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x316489c3 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x316c1202 km_state_notify +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317faa62 phy_start +EXPORT_SYMBOL vmlinux 0x31985bff make_kprojid +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31a071e8 uart_match_port +EXPORT_SYMBOL vmlinux 0x31aeb622 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31c8ff79 skb_store_bits +EXPORT_SYMBOL vmlinux 0x31d9d740 dquot_alloc +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31ed2844 follow_down +EXPORT_SYMBOL vmlinux 0x31efc6e3 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x32061a69 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x3210efbd create_empty_buffers +EXPORT_SYMBOL vmlinux 0x32217aa9 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x32306ebc inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x323ed417 path_get +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x326e950f dst_destroy +EXPORT_SYMBOL vmlinux 0x32903fd9 dev_addr_del +EXPORT_SYMBOL vmlinux 0x32bcb6bb clk_add_alias +EXPORT_SYMBOL vmlinux 0x32d168b6 mmc_add_host +EXPORT_SYMBOL vmlinux 0x32d54f84 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32fa852e mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x33029adc mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x331c709c xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x33275acd md_cluster_mod +EXPORT_SYMBOL vmlinux 0x3337f9a8 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33456348 sock_register +EXPORT_SYMBOL vmlinux 0x3356b90b cpu_tss +EXPORT_SYMBOL vmlinux 0x335cc1c8 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x3380067c genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x339edbcc dev_set_mtu +EXPORT_SYMBOL vmlinux 0x33ad5415 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33ba55eb tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33cd6e51 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x33dd7a76 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f5e965 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x33f6b987 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x33f9ba4d scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34052f21 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x3409462a __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x340c035b ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x3418ed5d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x3434da16 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x346114a0 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x34672765 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3489835a security_path_mkdir +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b00892 replace_mount_options +EXPORT_SYMBOL vmlinux 0x34e1b4e8 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x34eecc62 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3512b17d fifo_set_limit +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3536b8b5 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x357c37e8 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x3587481f inet_offloads +EXPORT_SYMBOL vmlinux 0x358d54bc simple_write_begin +EXPORT_SYMBOL vmlinux 0x358e55d6 kernel_accept +EXPORT_SYMBOL vmlinux 0x35a7c458 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35bc7b05 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x35c1d981 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x35df78cb mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x35ed9ee5 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x36199480 set_binfmt +EXPORT_SYMBOL vmlinux 0x3619b486 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x363bb943 inet_release +EXPORT_SYMBOL vmlinux 0x364c7824 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36eefe35 finish_open +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x370e3be1 prepare_binprm +EXPORT_SYMBOL vmlinux 0x37194e0a padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x371cdb46 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x3725e1e0 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3759bd7e module_layout +EXPORT_SYMBOL vmlinux 0x37a2ef88 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c07bec dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x37d1f506 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37e1b0ee vga_tryget +EXPORT_SYMBOL vmlinux 0x37e1c8f8 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x37e8a8c9 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x37f9fc43 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382e2753 scsi_host_get +EXPORT_SYMBOL vmlinux 0x38352fd3 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x383c1035 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x38570cfd pci_bus_put +EXPORT_SYMBOL vmlinux 0x38648cc5 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x38660c3e scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x387151ce eth_header_parse +EXPORT_SYMBOL vmlinux 0x387f2728 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x38864ccf inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x3889b59a dump_page +EXPORT_SYMBOL vmlinux 0x389f9bc3 netdev_info +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 0x38cedac2 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x38d321c0 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x38ded41c blk_delay_queue +EXPORT_SYMBOL vmlinux 0x38e2f1c3 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x38ea4b42 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +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 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x3970f481 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x39729465 sync_inode +EXPORT_SYMBOL vmlinux 0x3974df6d dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x3992aa9e blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x3993bf95 agp_alloc_page_array +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 0x39aaeb95 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x39b501aa register_key_type +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39b7610f write_inode_now +EXPORT_SYMBOL vmlinux 0x39b9e70b neigh_direct_output +EXPORT_SYMBOL vmlinux 0x39bff7ae unregister_cdrom +EXPORT_SYMBOL vmlinux 0x39c236c1 kthread_stop +EXPORT_SYMBOL vmlinux 0x39db2e18 mutex_unlock +EXPORT_SYMBOL vmlinux 0x39db55d2 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x39df3d53 truncate_setsize +EXPORT_SYMBOL vmlinux 0x39e0557a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x39e263a3 netlink_unicast +EXPORT_SYMBOL vmlinux 0x39e509e3 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x39ea1ab1 new_inode +EXPORT_SYMBOL vmlinux 0x39f1926c reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a2c31d1 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3c11d5 __sb_start_write +EXPORT_SYMBOL vmlinux 0x3a4f3c2e ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x3a60082d fb_find_mode +EXPORT_SYMBOL vmlinux 0x3a68964f blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x3a76d084 tty_port_close +EXPORT_SYMBOL vmlinux 0x3a8490b2 update_region +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab8587b security_task_getsecid +EXPORT_SYMBOL vmlinux 0x3ad3ed8f unlock_buffer +EXPORT_SYMBOL vmlinux 0x3ae41206 skb_append +EXPORT_SYMBOL vmlinux 0x3ae69531 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x3aef60a8 pci_clear_master +EXPORT_SYMBOL vmlinux 0x3af8d046 netdev_printk +EXPORT_SYMBOL vmlinux 0x3af9f263 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x3b1e0df4 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x3b294c94 simple_open +EXPORT_SYMBOL vmlinux 0x3b344965 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x3b640ea9 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b699e28 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b81ac27 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x3b83bc9b devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x3ba3f1c0 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x3ba61f08 __find_get_block +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bb6e91a pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x3bcc81b7 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x3bcf9c19 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x3c0300df sock_create_lite +EXPORT_SYMBOL vmlinux 0x3c15b05c mmc_start_req +EXPORT_SYMBOL vmlinux 0x3c208b10 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x3c253f21 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x3c2a3e1a pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c4ebbd8 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c833fe1 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x3cdfea76 touch_buffer +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ceb266a inet_add_protocol +EXPORT_SYMBOL vmlinux 0x3d02a53c tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x3d18019a compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x3d2654a5 udp_ioctl +EXPORT_SYMBOL vmlinux 0x3d2c071b sg_miter_stop +EXPORT_SYMBOL vmlinux 0x3d48e631 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x3d4939f1 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x3d555811 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d85224b input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x3d8859ac jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x3d904a7f phy_detach +EXPORT_SYMBOL vmlinux 0x3d969916 vfs_read +EXPORT_SYMBOL vmlinux 0x3d99abde param_set_byte +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 0x3dcf971e fb_get_mode +EXPORT_SYMBOL vmlinux 0x3dd51139 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x3dd7715d __napi_complete +EXPORT_SYMBOL vmlinux 0x3dde5f24 read_code +EXPORT_SYMBOL vmlinux 0x3de5c8fc bdi_register +EXPORT_SYMBOL vmlinux 0x3de8bcb9 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x3deb7ae6 make_kuid +EXPORT_SYMBOL vmlinux 0x3dfaf3c9 flush_signals +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e005313 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x3e1160b0 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x3e1bb3d0 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x3e1cff57 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x3e1e0514 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e423d0c jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x3e5b8e0f generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x3e662084 current_fs_time +EXPORT_SYMBOL vmlinux 0x3e70a212 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x3e7654ec scsi_report_opcode +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 0x3ec12265 vm_insert_page +EXPORT_SYMBOL vmlinux 0x3ed93710 nf_log_unset +EXPORT_SYMBOL vmlinux 0x3eec6e0b tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x3efe7dc9 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0d9f32 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x3f195dbb devm_request_resource +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f223e5a find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x3f42da5d _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f54bd4e xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x3f5e06bb napi_get_frags +EXPORT_SYMBOL vmlinux 0x3f64822c mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x3f9533ea dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x3fa69fcc param_set_uint +EXPORT_SYMBOL vmlinux 0x3fbcdfcf open_exec +EXPORT_SYMBOL vmlinux 0x3fc30c40 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x3fcb9a10 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff4d1a2 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402cddfa sk_free +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4039a6cd complete_request_key +EXPORT_SYMBOL vmlinux 0x404b2b5b tc_classify_compat +EXPORT_SYMBOL vmlinux 0x404d0214 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x404e2f6e bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406b6940 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x406d3f3e page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x4072581d blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x40830a1e sock_init_data +EXPORT_SYMBOL vmlinux 0x408c34f1 padata_do_serial +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 0x40bd0492 inode_permission +EXPORT_SYMBOL vmlinux 0x40befa58 touch_atime +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 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dbadb2 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x411d1889 elevator_change +EXPORT_SYMBOL vmlinux 0x4120e1a2 mpage_readpages +EXPORT_SYMBOL vmlinux 0x41353a63 freeze_super +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41731062 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0x41845206 input_register_handler +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a3bc41 skb_push +EXPORT_SYMBOL vmlinux 0x41cf7b62 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x41f5c99e compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x420a83e3 request_key_async +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4216608d tty_port_close_end +EXPORT_SYMBOL vmlinux 0x42234679 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x422fb382 dev_get_flags +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x423eb5a6 md_integrity_register +EXPORT_SYMBOL vmlinux 0x42460b7c xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42a10933 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42c8bb49 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42e151f5 bdev_read_only +EXPORT_SYMBOL vmlinux 0x42e926bc mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x42eaaca1 audit_log +EXPORT_SYMBOL vmlinux 0x42f78fb3 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43110308 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x431f8d1a inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x43746555 search_binary_handler +EXPORT_SYMBOL vmlinux 0x4379a957 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438d5640 user_revoke +EXPORT_SYMBOL vmlinux 0x439fdad7 ether_setup +EXPORT_SYMBOL vmlinux 0x43a5ff44 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x43ae0ace __lock_page +EXPORT_SYMBOL vmlinux 0x43aea7bc dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x43b0c9c3 preempt_schedule +EXPORT_SYMBOL vmlinux 0x43ca453c dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x43cfe6cb lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x43f0fade dquot_initialize +EXPORT_SYMBOL vmlinux 0x43f137fd tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f9c11c vfs_writef +EXPORT_SYMBOL vmlinux 0x43fbbf78 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4414b79b padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x44236570 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x44268f2f blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x443b45c9 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x44414837 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x4465eb69 proc_set_user +EXPORT_SYMBOL vmlinux 0x4489da02 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x4491a7fb mmc_can_discard +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 0x44d225c6 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x44d41fa3 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x44e42a55 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f69964 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x44ff993d param_get_short +EXPORT_SYMBOL vmlinux 0x4507b071 fb_pan_display +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x451daba3 netdev_notice +EXPORT_SYMBOL vmlinux 0x452618c0 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x4531844f dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x4533e05c sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454f8ff1 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x4557e575 bdi_init +EXPORT_SYMBOL vmlinux 0x456c417f register_md_personality +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x458281b2 blk_queue_dma_alignment +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 0x45b7962d vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x45cfacba unload_nls +EXPORT_SYMBOL vmlinux 0x45d7bb9f proc_create_data +EXPORT_SYMBOL vmlinux 0x45ee74d1 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x4604a43a mem_section +EXPORT_SYMBOL vmlinux 0x4611f98f __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x46175475 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461bfc8b blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x46392663 dm_unregister_target +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 0x46ac26c2 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x46b9fc97 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d0610c eth_type_trans +EXPORT_SYMBOL vmlinux 0x46e5d27d sk_wait_data +EXPORT_SYMBOL vmlinux 0x46f6ad27 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47053d27 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x471e9cc9 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4759eef0 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x475f7f7d netdev_change_features +EXPORT_SYMBOL vmlinux 0x47732214 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x4775e9c3 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x477d8773 compat_ipv6_setsockopt +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 0x47dccff4 dst_release +EXPORT_SYMBOL vmlinux 0x47f3e464 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x47fc30b2 single_open_size +EXPORT_SYMBOL vmlinux 0x48063453 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x480b8f5f ip6_frag_match +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 0x483f9700 udplite_prot +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4862b59a ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x48650476 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x486c5423 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x4888f6ff proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x488f9ed9 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x48b6dd10 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c591f0 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x48c7900c sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48d85132 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x48e379a6 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x48f29bb0 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x48f854d8 icmp_send +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x495d08a1 generic_getxattr +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49824611 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x49884edb generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x499365df i2c_master_send +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49ba1f03 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x49bb7338 ps2_end_command +EXPORT_SYMBOL vmlinux 0x49bdadc3 unregister_netdev +EXPORT_SYMBOL vmlinux 0x49eb6610 mount_subtree +EXPORT_SYMBOL vmlinux 0x49f63bd9 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49feea29 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x49ff23a7 vfs_statfs +EXPORT_SYMBOL vmlinux 0x4a1773e2 page_put_link +EXPORT_SYMBOL vmlinux 0x4a18a735 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x4a5d53b3 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x4a856204 km_state_expired +EXPORT_SYMBOL vmlinux 0x4a8e2d94 inet_add_offload +EXPORT_SYMBOL vmlinux 0x4a9a3943 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x4aad4498 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afb754e pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b294bdd uart_resume_port +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b63a54a security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b76483b neigh_table_init +EXPORT_SYMBOL vmlinux 0x4b7a69ab mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x4b88c2fb param_ops_long +EXPORT_SYMBOL vmlinux 0x4b89c7fb pci_dev_put +EXPORT_SYMBOL vmlinux 0x4b8b6368 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4baf364b blk_get_queue +EXPORT_SYMBOL vmlinux 0x4bb43dc9 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x4bbbbba0 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x4bcc9eda kmalloc_caches +EXPORT_SYMBOL vmlinux 0x4c0f16b4 iunique +EXPORT_SYMBOL vmlinux 0x4c1d5ea7 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x4c22943b d_obtain_root +EXPORT_SYMBOL vmlinux 0x4c2ab357 passthru_features_check +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c4761af set_trace_device +EXPORT_SYMBOL vmlinux 0x4c4f1833 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x4c74a45f security_path_rename +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 0x4c8fe17b netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x4c93bcba sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cd5778d xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x4cd87359 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf8684d xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x4d206982 __destroy_inode +EXPORT_SYMBOL vmlinux 0x4d5a6594 param_get_int +EXPORT_SYMBOL vmlinux 0x4d69de73 pci_bus_get +EXPORT_SYMBOL vmlinux 0x4d783be1 udp_push_pending_frames +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 0x4dc27b4b posix_test_lock +EXPORT_SYMBOL vmlinux 0x4dd278b2 pci_iomap +EXPORT_SYMBOL vmlinux 0x4dd72a56 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x4dde53c6 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df45ded scsi_remove_host +EXPORT_SYMBOL vmlinux 0x4e01ab63 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x4e16eb45 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x4e2e0bf5 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e5a747f lock_sock_nested +EXPORT_SYMBOL vmlinux 0x4e5cab7e tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e879f03 ps2_command +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ec4ca2d key_validate +EXPORT_SYMBOL vmlinux 0x4ec915c5 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x4ed307e5 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4f0d4141 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f386d44 file_open_root +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f5cbeb4 ilookup5 +EXPORT_SYMBOL vmlinux 0x4f636f9c xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x4f6845f9 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f77f0fa proto_register +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fade580 sk_filter +EXPORT_SYMBOL vmlinux 0x4fb18981 dma_pool_create +EXPORT_SYMBOL vmlinux 0x4fd95c9d poll_initwait +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x5007789f agp_free_memory +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500b0dd7 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x50231fe5 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x5027f3ee generic_setxattr +EXPORT_SYMBOL vmlinux 0x503c041b xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x50462c72 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5096ec33 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a8b7dc pci_set_master +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e583bc dev_alert +EXPORT_SYMBOL vmlinux 0x50ef6968 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x510692fe compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5137feb3 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x5141c61e generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x5177c09f mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x519b580e inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x51a77778 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x51c91204 datagram_poll +EXPORT_SYMBOL vmlinux 0x51c9e865 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51f39b74 phy_init_hw +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 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52293de2 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x5234bd4c have_submounts +EXPORT_SYMBOL vmlinux 0x523e5bc0 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52493be5 serio_reconnect +EXPORT_SYMBOL vmlinux 0x524959fc ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x5254f22e xfrm_register_km +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x5264b67e xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x526c09f4 uart_register_driver +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52aae711 poll_freewait +EXPORT_SYMBOL vmlinux 0x52c0defc gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x52ce77f2 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x52ed85ef mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x52f02822 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x53071ca4 force_sig +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53151da1 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x532ebe7a init_net +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x535c55a7 __vfs_write +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x537356bf __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538d3dec blk_finish_request +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a47a3b is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x53c3ed24 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x53dc590c t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x53dd1c02 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x53e19884 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x53ea8975 read_cache_page +EXPORT_SYMBOL vmlinux 0x54059a2a amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x54105541 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x5436fea4 bio_integrity_endio +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 0x546b7341 input_open_device +EXPORT_SYMBOL vmlinux 0x5474807c inet6_bind +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aaf22b __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54de8f76 __genl_register_family +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x555f6938 lockref_get +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556bfe98 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x558fc335 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x5599a4c5 vme_irq_request +EXPORT_SYMBOL vmlinux 0x55ab2c22 blkdev_get +EXPORT_SYMBOL vmlinux 0x55b276da pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x55cb0142 mdiobus_free +EXPORT_SYMBOL vmlinux 0x55d21c18 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55e874bc scsi_scan_target +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x5613b863 led_blink_set +EXPORT_SYMBOL vmlinux 0x5621112f tty_throttle +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x564431bf account_page_dirtied +EXPORT_SYMBOL vmlinux 0x5656b1b0 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x56675e3b vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x566e61ab generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x56720c33 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x567ede63 km_query +EXPORT_SYMBOL vmlinux 0x56969c0f km_policy_expired +EXPORT_SYMBOL vmlinux 0x56b71c7e pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x56c4929e default_llseek +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d0ade5 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x570f7e11 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x57136fdd vme_slave_request +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5732f34d ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x5749c865 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574cf991 do_SAK +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5778a76b tcp_init_sock +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x577ec74e blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x57803f30 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57a2bdda kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57ca92fa kern_unmount +EXPORT_SYMBOL vmlinux 0x57d19896 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x57e477fb t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x57f4215a processors +EXPORT_SYMBOL vmlinux 0x58028d1d __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x5813396b nf_setsockopt +EXPORT_SYMBOL vmlinux 0x58179379 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x5817ba78 dev_close +EXPORT_SYMBOL vmlinux 0x581ede9f km_policy_notify +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x583761e3 block_read_full_page +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583b0147 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x584f6fa2 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585c309c scsi_init_io +EXPORT_SYMBOL vmlinux 0x585fc600 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x588bf7dc dev_set_group +EXPORT_SYMBOL vmlinux 0x589469a5 no_llseek +EXPORT_SYMBOL vmlinux 0x58966314 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x5896b47a pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x58ae06bb netif_napi_del +EXPORT_SYMBOL vmlinux 0x58b3fa99 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d306d5 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58f3618a dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x590c5622 dquot_operations +EXPORT_SYMBOL vmlinux 0x590cac75 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x593eaaff from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x59742b3c vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x597b901e abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x598322dc locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x5996421e blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59e04e1c kill_litter_super +EXPORT_SYMBOL vmlinux 0x59ffec97 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a2dc00f security_path_chown +EXPORT_SYMBOL vmlinux 0x5a328171 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x5a436a2a ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a64a8e9 generic_fillattr +EXPORT_SYMBOL vmlinux 0x5a78accd release_firmware +EXPORT_SYMBOL vmlinux 0x5a812ea2 skb_trim +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5aa5f59e submit_bh +EXPORT_SYMBOL vmlinux 0x5aac9e46 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b18a724 mutex_trylock +EXPORT_SYMBOL vmlinux 0x5b4ff0f5 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x5b566725 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b97d405 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x5b9d07fe locks_copy_lock +EXPORT_SYMBOL vmlinux 0x5bbc112d register_filesystem +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 0x5bfc3b23 vga_con +EXPORT_SYMBOL vmlinux 0x5bfe2fc5 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c0e0c48 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x5c1cfc97 security_path_chmod +EXPORT_SYMBOL vmlinux 0x5c378d51 elevator_exit +EXPORT_SYMBOL vmlinux 0x5c4bbf40 dev_change_flags +EXPORT_SYMBOL vmlinux 0x5c5062e0 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x5c5e9bd2 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x5c66e3b1 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x5c9b026a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x5cb2eb5c cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x5cc6a894 ns_capable +EXPORT_SYMBOL vmlinux 0x5cc6de2f netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x5ce3743a genlmsg_put +EXPORT_SYMBOL vmlinux 0x5cf19448 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0161ec proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x5d10f86f iov_iter_npages +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d9b5912 seq_read +EXPORT_SYMBOL vmlinux 0x5d9f6140 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x5e239ffe pci_pme_active +EXPORT_SYMBOL vmlinux 0x5e63a650 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec011ca neigh_ifdown +EXPORT_SYMBOL vmlinux 0x5ec49184 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5eda7e95 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x5eec7cc6 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f413ca1 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x5f5fb85f lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x5f6705bf keyring_alloc +EXPORT_SYMBOL vmlinux 0x5f67a370 kill_fasync +EXPORT_SYMBOL vmlinux 0x5f7dcc3a pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x5f9dade5 km_is_alive +EXPORT_SYMBOL vmlinux 0x5faaf5a3 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5fab8f30 ata_print_version +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fbe7754 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe9bc05 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x5fea0a9a request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6006ea2e igrab +EXPORT_SYMBOL vmlinux 0x6007bc16 get_super +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60341c26 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x60344a04 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6035dbb7 param_set_invbool +EXPORT_SYMBOL vmlinux 0x604257a2 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607c4bf1 migrate_page +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60c0103e jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x60cf85d2 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x60cffa3d genphy_config_init +EXPORT_SYMBOL vmlinux 0x60d5ec36 seq_write +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f17c9e tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x61008542 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x6102047c nf_log_trace +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x611a5599 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x611fa63a check_disk_change +EXPORT_SYMBOL vmlinux 0x61273160 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x61535b56 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x616c63a2 copy_to_iter +EXPORT_SYMBOL vmlinux 0x6170a26d lock_sock_fast +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a9bacd component_match_add +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c9b019 security_path_unlink +EXPORT_SYMBOL vmlinux 0x61d9f21e tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x61daf5ba fb_set_var +EXPORT_SYMBOL vmlinux 0x61fb248a node_states +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621986f2 do_splice_from +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226396b dquot_destroy +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 0x624d470f end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x626348af blk_queue_physical_block_size +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 0x6286cc31 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x628d71b5 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x62b6ba29 seq_putc +EXPORT_SYMBOL vmlinux 0x62c02691 kernel_read +EXPORT_SYMBOL vmlinux 0x62d21f41 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x62d72362 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x62e51cfb may_umount +EXPORT_SYMBOL vmlinux 0x62f60d80 mdiobus_write +EXPORT_SYMBOL vmlinux 0x62f801ed tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x62fc2946 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6314bb41 bdget +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6349a194 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x636a2d0e mmc_start_bkops +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 0x63a52cbd dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c13e70 _raw_write_unlock +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63ccf2fc ps2_handle_response +EXPORT_SYMBOL vmlinux 0x63cd1861 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x63ea9fc0 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fb9b0a address_space_init_once +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 0x6413b292 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x642a053b tcp_make_synack +EXPORT_SYMBOL vmlinux 0x642c6bdb security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x64329151 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x64459ceb dmam_pool_create +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x644dbadd generic_write_checks +EXPORT_SYMBOL vmlinux 0x64528ca5 udp_prot +EXPORT_SYMBOL vmlinux 0x645930fb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x647619cf md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x6488d2ce simple_link +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c60438 kobject_init +EXPORT_SYMBOL vmlinux 0x64d500b6 iget5_locked +EXPORT_SYMBOL vmlinux 0x64ddd61e bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x6535625d dev_uc_del +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x6575d948 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x6576777f proc_set_size +EXPORT_SYMBOL vmlinux 0x65937331 audit_log_start +EXPORT_SYMBOL vmlinux 0x65977640 lookup_one_len +EXPORT_SYMBOL vmlinux 0x65aba00b locks_remove_posix +EXPORT_SYMBOL vmlinux 0x65be90b0 __register_chrdev +EXPORT_SYMBOL vmlinux 0x65c16acf tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x65d2ecef __frontswap_test +EXPORT_SYMBOL vmlinux 0x65d5037e tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x65d58fdf tty_wait_until_sent +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 0x65f10e7f bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f80672 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x660af190 get_agp_version +EXPORT_SYMBOL vmlinux 0x660b4b73 pci_clear_mwi +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 0x666a877a inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x666eb69f i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x668bbf82 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x66ac7872 input_release_device +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66e0f708 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x66e79306 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x6722f3bc _raw_write_lock +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x674052a5 generic_make_request +EXPORT_SYMBOL vmlinux 0x675156d1 tty_check_change +EXPORT_SYMBOL vmlinux 0x67672c9f abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x67686e67 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67a42830 sock_no_poll +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b41305 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c7d863 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x67ed0987 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x67f0bc9b udp_del_offload +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x680fc3bc del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x6811d433 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x683f5114 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x6843eb56 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x6843f92f simple_release_fs +EXPORT_SYMBOL vmlinux 0x685b43e5 bdgrab +EXPORT_SYMBOL vmlinux 0x6865ae49 vga_get +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687fefad qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x689ca876 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c20707 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x68c2d481 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x68f17852 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6920ff27 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x6967f5de gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x696df1c1 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69728013 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x697b880a d_rehash +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x699ff80f mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a1ac60 kmem_cache_size +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 0x69b2399d alloc_disk_node +EXPORT_SYMBOL vmlinux 0x69bbb2b2 dquot_drop +EXPORT_SYMBOL vmlinux 0x69e0797a amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0x69efb147 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a089810 find_lock_entry +EXPORT_SYMBOL vmlinux 0x6a168aaf mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x6a32e87d cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x6a519528 page_waitqueue +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 0x6a8c94e2 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x6a9189c3 __kfree_skb +EXPORT_SYMBOL vmlinux 0x6a95ad91 inet6_protos +EXPORT_SYMBOL vmlinux 0x6a9ac23c mmc_can_reset +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6acf2244 fddi_type_trans +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 0x6b0c7e60 netdev_emerg +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b2ef24f generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x6b3354de call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x6b3a66bc inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x6b58faa3 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x6b600c97 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b679e63 generic_readlink +EXPORT_SYMBOL vmlinux 0x6b6bb4cd security_inode_init_security +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b9fbb87 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc863a8 set_security_override +EXPORT_SYMBOL vmlinux 0x6bcadd80 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x6bcc0b05 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x6bcc490e gen_pool_free +EXPORT_SYMBOL vmlinux 0x6bd5cd67 d_find_alias +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6bf5e970 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x6c02cf84 redraw_screen +EXPORT_SYMBOL vmlinux 0x6c08134e ps2_begin_command +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0bec79 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x6c1606e7 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x6c44bc15 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c56dbbd xfrm_state_add +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7038d2 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x6c79dcc3 dev_mc_del +EXPORT_SYMBOL vmlinux 0x6ca6bb3b blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x6cb233b8 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x6cc42aee proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x6cc4add1 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x6cc71f14 nf_log_register +EXPORT_SYMBOL vmlinux 0x6cd158a6 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x6cd9b62a tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x6ce69b39 scsi_host_put +EXPORT_SYMBOL vmlinux 0x6ce6c130 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x6cf6ac7c xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x6cfa7a6c agp_enable +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x6d24e7dc pm860x_bulk_read +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 0x6d36b336 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x6d8c6a79 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x6d8cd246 notify_change +EXPORT_SYMBOL vmlinux 0x6d93e88c tcf_hash_create +EXPORT_SYMBOL vmlinux 0x6dbbff59 set_pages_wb +EXPORT_SYMBOL vmlinux 0x6dbc2760 backlight_device_register +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc23356 simple_empty +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6dd28b23 vfs_fsync +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e0e9f51 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x6e17c91a dquot_quota_off +EXPORT_SYMBOL vmlinux 0x6e1fb4cc serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x6e337640 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x6e3937f2 eth_header_cache +EXPORT_SYMBOL vmlinux 0x6e409ecd scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x6e40d84b arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x6e421349 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x6e598ae1 unregister_key_type +EXPORT_SYMBOL vmlinux 0x6e626d68 udp_lib_get_port +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 0x6eaff328 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x6ec23313 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x6ee95b9f napi_gro_receive +EXPORT_SYMBOL vmlinux 0x6eead804 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x6ef31968 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x6ef4d631 __f_setown +EXPORT_SYMBOL vmlinux 0x6f10dc20 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x6f1ad835 request_firmware +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f3bcee3 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x6f52ea7e blk_init_queue +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f72995b task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fb6a837 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc3c78a tty_port_init +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fdb5854 tty_hangup +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x70176469 security_file_permission +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x70259fcb neigh_seq_start +EXPORT_SYMBOL vmlinux 0x7026a581 simple_write_end +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x70427b99 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x7043a19c pci_disable_msix +EXPORT_SYMBOL vmlinux 0x7047faed tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x704b8ec7 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x704f6f79 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x70532108 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705d2411 md_error +EXPORT_SYMBOL vmlinux 0x7063479b inet_frags_init +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707c8d6e tty_vhangup +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x70914606 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x70b3eef4 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x70bb7bba vga_client_register +EXPORT_SYMBOL vmlinux 0x70bd97b5 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x70ce8633 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x70d10550 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70e6519b fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x70e9b6eb sock_from_file +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x71102fa8 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x71235ca4 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7158981a key_task_permission +EXPORT_SYMBOL vmlinux 0x715c0244 mntput +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71828a66 proc_dostring +EXPORT_SYMBOL vmlinux 0x718b6d31 phy_device_register +EXPORT_SYMBOL vmlinux 0x71a1a390 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71ac1e37 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x71b28040 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x71cfc483 release_sock +EXPORT_SYMBOL vmlinux 0x71d7a3fc neigh_connected_output +EXPORT_SYMBOL vmlinux 0x71eec184 dump_trace +EXPORT_SYMBOL vmlinux 0x71f50178 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x72189960 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x7235e927 seq_puts +EXPORT_SYMBOL vmlinux 0x723c11d4 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x724d2392 dentry_unhash +EXPORT_SYMBOL vmlinux 0x7250a0e6 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x7260e249 ___preempt_schedule_notrace +EXPORT_SYMBOL vmlinux 0x7272389d netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x727f7850 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x728e2070 vme_irq_free +EXPORT_SYMBOL vmlinux 0x729674c3 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bdc355 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72fca093 block_write_end +EXPORT_SYMBOL vmlinux 0x73013e07 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x7309208f devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731607d6 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x73762b9f pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x7376fb2b amd_northbridges +EXPORT_SYMBOL vmlinux 0x7386ad37 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x73b0a5c5 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x73cb5782 inet_del_offload +EXPORT_SYMBOL vmlinux 0x73cd923c dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e2350f input_free_device +EXPORT_SYMBOL vmlinux 0x73e6a3ac jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x73f0c0a6 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x73f347d4 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x73fc0ff1 mmc_free_host +EXPORT_SYMBOL vmlinux 0x740904da fb_set_suspend +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741d7e1d kfree_skb +EXPORT_SYMBOL vmlinux 0x7437b215 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x745b75aa vfs_unlink +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 0x74a978ca truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x74b0959d try_to_writeback_inodes_sb_nr +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 0x74fdf55e vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x75021f10 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x7522869e xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x75658b9d param_get_invbool +EXPORT_SYMBOL vmlinux 0x75692533 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x7591f4dd d_instantiate +EXPORT_SYMBOL vmlinux 0x7593f9ff ipv4_specific +EXPORT_SYMBOL vmlinux 0x75ae1eee vfs_iter_write +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 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x766f5a02 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x76722ef7 input_close_device +EXPORT_SYMBOL vmlinux 0x767ab6a5 ___pskb_trim +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 0x768e7a40 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x76933578 arp_create +EXPORT_SYMBOL vmlinux 0x769dd3ba inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x76a9b806 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x76ab7a98 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x76cf887f sdev_disable_disk_events +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 0x76de2dc7 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x7710b1d2 scsi_print_result +EXPORT_SYMBOL vmlinux 0x771b8ec4 queue_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772ed311 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x773c918a pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x775b7579 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x776e8365 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x777d13f8 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779dfdf1 udp_poll +EXPORT_SYMBOL vmlinux 0x77a90cc7 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c1fa14 submit_bio +EXPORT_SYMBOL vmlinux 0x77ca8a42 nf_afinfo +EXPORT_SYMBOL vmlinux 0x77d3206c __quota_error +EXPORT_SYMBOL vmlinux 0x77eb19dd skb_dequeue_tail +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 0x7826a1ba genphy_resume +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 0x78471daf blk_execute_rq +EXPORT_SYMBOL vmlinux 0x785b1ad6 devm_release_resource +EXPORT_SYMBOL vmlinux 0x78636905 free_page_put_link +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 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78c12c66 fasync_helper +EXPORT_SYMBOL vmlinux 0x78dde9e6 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78ff750d key_reject_and_link +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x790e6723 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x792b8d85 misc_deregister +EXPORT_SYMBOL vmlinux 0x795bd5d3 dm_put_device +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797e01f3 pipe_lock +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x798fd8fc to_ndd +EXPORT_SYMBOL vmlinux 0x7993034e netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x79946a4d bio_endio +EXPORT_SYMBOL vmlinux 0x7995cdd6 d_invalidate +EXPORT_SYMBOL vmlinux 0x79a3171c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c7648a scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x79dccdfa cdrom_release +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 0x7a57de36 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x7a5b03dd __block_write_begin +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a8bc7cf __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9c5f1b __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa3bca6 param_set_bool +EXPORT_SYMBOL vmlinux 0x7ab73007 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac4eaa9 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7ad036af bdi_register_dev +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad26ce7 flow_cache_init +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af18453 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x7af3aabc unlock_rename +EXPORT_SYMBOL vmlinux 0x7b017c9d set_wb_congested +EXPORT_SYMBOL vmlinux 0x7b107632 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b39c826 generic_read_dir +EXPORT_SYMBOL vmlinux 0x7b479285 tty_unlock +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b8483de tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x7b888681 __get_user_pages +EXPORT_SYMBOL vmlinux 0x7b9b372e netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bb91cd7 pci_disable_device +EXPORT_SYMBOL vmlinux 0x7bb9a39a setup_new_exec +EXPORT_SYMBOL vmlinux 0x7bc3c7a1 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x7bc5895c napi_disable +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7be86d17 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x7bf1aab5 pci_find_capability +EXPORT_SYMBOL vmlinux 0x7bf20994 wireless_send_event +EXPORT_SYMBOL vmlinux 0x7c007f64 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x7c1200ac xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c2829eb sock_efree +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c3c0fd5 simple_rename +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c516f65 mmc_request_done +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c911374 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca09c4d netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x7cac907a freeze_bdev +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cce3569 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cef38eb dev_disable_lro +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf6630f remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x7d0b194a pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d258b45 generic_listxattr +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 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dbe18cd i2c_clients_command +EXPORT_SYMBOL vmlinux 0x7dd276f8 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7de5f3dc skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x7de65b26 __d_drop +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df70168 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x7e1e7485 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x7e3061d8 dev_notice +EXPORT_SYMBOL vmlinux 0x7e323073 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x7e461c4a ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x7e54086f textsearch_destroy +EXPORT_SYMBOL vmlinux 0x7e64d937 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e92459e blk_get_request +EXPORT_SYMBOL vmlinux 0x7e97595a phy_stop +EXPORT_SYMBOL vmlinux 0x7ead30c8 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ebf3e9c register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x7eca3ae4 vga_put +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ef8943d skb_dequeue +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f04a063 skb_pad +EXPORT_SYMBOL vmlinux 0x7f058ea0 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x7f136437 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x7f1b0652 scsi_device_put +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f33f1f4 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x7f4d1811 netif_rx +EXPORT_SYMBOL vmlinux 0x7f5d76ba twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f85eea0 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fc23e64 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x7fcc5359 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x800475a5 d_splice_alias +EXPORT_SYMBOL vmlinux 0x800e1f39 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x8014fa00 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x802daa3d x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x803aef00 elevator_init +EXPORT_SYMBOL vmlinux 0x804d249d pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x8077d0ca tcf_action_exec +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x807ebc9d kset_register +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x80ba1ee1 scsi_execute +EXPORT_SYMBOL vmlinux 0x80c2236e d_make_root +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x810ccd2b pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x813e64bb tty_insert_flip_string_flags +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 0x8174144e __alloc_skb +EXPORT_SYMBOL vmlinux 0x81a78af7 generic_writepages +EXPORT_SYMBOL vmlinux 0x81c64168 __init_rwsem +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e3a70c pci_release_regions +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820decd6 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x821e34ee drop_super +EXPORT_SYMBOL vmlinux 0x82395500 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x824298ad blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8247298d netdev_state_change +EXPORT_SYMBOL vmlinux 0x824d049c kernel_bind +EXPORT_SYMBOL vmlinux 0x8251c79c sg_miter_next +EXPORT_SYMBOL vmlinux 0x82602bab skb_make_writable +EXPORT_SYMBOL vmlinux 0x8263bd74 f_setown +EXPORT_SYMBOL vmlinux 0x826507f6 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x8268916e set_pages_nx +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +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 0x82de7664 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x831c61a8 dcb_setapp +EXPORT_SYMBOL vmlinux 0x832f7034 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x833a9fbc swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x8357ee15 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x83650d34 led_update_brightness +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 0x83989372 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d01c21 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x83d7498d phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x83f39707 dev_addr_init +EXPORT_SYMBOL vmlinux 0x83f69f47 __elv_add_request +EXPORT_SYMBOL vmlinux 0x83fc81ea vme_master_request +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x8408aea6 pci_map_rom +EXPORT_SYMBOL vmlinux 0x84090b0d ab3100_event_register +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8465c572 generic_show_options +EXPORT_SYMBOL vmlinux 0x846ba570 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x84c60248 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8501ab4a netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x8507c383 proc_dointvec +EXPORT_SYMBOL vmlinux 0x85107e51 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x853c5b4e simple_statfs +EXPORT_SYMBOL vmlinux 0x85496328 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x85562250 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x85817411 dma_supported +EXPORT_SYMBOL vmlinux 0x8595b537 sock_create +EXPORT_SYMBOL vmlinux 0x8598b7e4 unregister_console +EXPORT_SYMBOL vmlinux 0x85a44355 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x85b56a0d padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85cb67bb sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e5953d xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x85e5d67c sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x860e496f cdrom_open +EXPORT_SYMBOL vmlinux 0x861a09e2 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x864aaf21 dquot_transfer +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86588053 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x865ef9cc swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x866134a2 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866db8d5 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x867342be __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869c3f88 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x869dc386 iget_locked +EXPORT_SYMBOL vmlinux 0x86aa9bed __nd_driver_register +EXPORT_SYMBOL vmlinux 0x86b2481c skb_tx_error +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x871ac992 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x871af510 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872958e4 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x873f7f61 down_read_trylock +EXPORT_SYMBOL vmlinux 0x874ad789 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x876225ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x87671784 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x876edc22 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x878f63aa __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87bb0fa5 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +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 0x880cf501 bio_reset +EXPORT_SYMBOL vmlinux 0x881dd1be nd_integrity_init +EXPORT_SYMBOL vmlinux 0x88201ee6 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x8832331b build_skb +EXPORT_SYMBOL vmlinux 0x884b6f90 deactivate_super +EXPORT_SYMBOL vmlinux 0x884d6044 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8881b8f6 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x88844170 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x88a54288 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x88dd4c85 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x88dde17f elv_rb_add +EXPORT_SYMBOL vmlinux 0x88e824d9 phy_suspend +EXPORT_SYMBOL vmlinux 0x88eaf85e udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x8902824a is_bad_inode +EXPORT_SYMBOL vmlinux 0x8906f684 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x890cb37b agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x89309f79 netdev_warn +EXPORT_SYMBOL vmlinux 0x896d8b08 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x8970dfe1 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x8979095a netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x898448fc bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x898dc4eb dev_change_carrier +EXPORT_SYMBOL vmlinux 0x89a27b8e blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x89a4ecb9 blk_init_tags +EXPORT_SYMBOL vmlinux 0x89a67c78 kernel_connect +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b51897 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x89ce0422 qdisc_reset +EXPORT_SYMBOL vmlinux 0x89d2df9b sock_no_bind +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89de6683 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x89e0538a dev_err +EXPORT_SYMBOL vmlinux 0x89f2c0ec inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a3564e7 set_nlink +EXPORT_SYMBOL vmlinux 0x8a46048e dma_set_mask +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a609172 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +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 0x8a9a4cef simple_readpage +EXPORT_SYMBOL vmlinux 0x8aa02d9b netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8aa0571d acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x8aa8ccdb kfree_put_link +EXPORT_SYMBOL vmlinux 0x8abde1d3 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x8acdc234 lock_fb_info +EXPORT_SYMBOL vmlinux 0x8ad7004f qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x8b12b634 inet_shutdown +EXPORT_SYMBOL vmlinux 0x8b165904 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x8b218914 neigh_for_each +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b426565 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b439ca7 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x8b540e2f nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x8b5922d5 skb_put +EXPORT_SYMBOL vmlinux 0x8b5da7c3 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8fe696 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8bcf8b4e n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x8bd3245f max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x8bf22ac2 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1c4dda from_kuid +EXPORT_SYMBOL vmlinux 0x8c540420 tcp_poll +EXPORT_SYMBOL vmlinux 0x8c632e38 revalidate_disk +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6aaf7a agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x8c6b5e08 security_path_mknod +EXPORT_SYMBOL vmlinux 0x8c74e6f7 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x8c77a8a3 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x8ca0dc5b pagecache_write_end +EXPORT_SYMBOL vmlinux 0x8ca2bb64 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd6a765 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cecea64 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x8cf25294 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x8d2c76b1 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x8d37de0c skb_copy_bits +EXPORT_SYMBOL vmlinux 0x8d392037 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x8d448878 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x8d4506f2 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d61c3f1 vme_unregister_bridge +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 0x8dadb0db __frontswap_store +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dde0587 get_acl +EXPORT_SYMBOL vmlinux 0x8de59419 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x8de9653a skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8dfb19a9 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e082688 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8e0b92b4 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e30d1c7 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x8e4eb40c pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x8e500c6b nf_log_unregister +EXPORT_SYMBOL vmlinux 0x8e5851bf netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x8e641f37 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x8e754341 sock_no_getname +EXPORT_SYMBOL vmlinux 0x8e7cac79 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x8e7fb2e3 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ee40e89 md_update_sb +EXPORT_SYMBOL vmlinux 0x8ef2b321 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x8ef9ddb6 bdget_disk +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f3a203f cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x8f41b31c from_kuid_munged +EXPORT_SYMBOL vmlinux 0x8f4216ca __neigh_create +EXPORT_SYMBOL vmlinux 0x8f4a8590 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x8f507124 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x8f65fde7 pci_request_region +EXPORT_SYMBOL vmlinux 0x8f68bc1d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8f755041 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x8f8d9892 simple_rmdir +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8f9cf98e disk_stack_limits +EXPORT_SYMBOL vmlinux 0x8fa6fc8c i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x8fc248ee dev_remove_offload +EXPORT_SYMBOL vmlinux 0x8fcfea7f mmc_erase +EXPORT_SYMBOL vmlinux 0x8fe87414 bdput +EXPORT_SYMBOL vmlinux 0x8fecadbd sk_stream_error +EXPORT_SYMBOL vmlinux 0x900a7c84 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x9021aa8f __getblk_gfp +EXPORT_SYMBOL vmlinux 0x903f877b dqget +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904c277e xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x904f72ac __get_page_tail +EXPORT_SYMBOL vmlinux 0x905ce70d i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x907517de send_sig +EXPORT_SYMBOL vmlinux 0x907dd8f5 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x90882cf1 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x90a3108d blk_requeue_request +EXPORT_SYMBOL vmlinux 0x90a92485 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x90d9f308 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x90f3106e pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x911545da ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x91273293 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x912ab8b7 tty_lock +EXPORT_SYMBOL vmlinux 0x912cac33 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x91402bfd release_pages +EXPORT_SYMBOL vmlinux 0x91457384 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91526ae1 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9170881e bio_phys_segments +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9189a65d md_flush_request +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x9222ea0e i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x92309187 simple_setattr +EXPORT_SYMBOL vmlinux 0x92382b7e generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x92386c3d swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92616df4 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x92679b94 dev_get_stats +EXPORT_SYMBOL vmlinux 0x926c0659 stop_tty +EXPORT_SYMBOL vmlinux 0x9277ed1f pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x927a152f input_reset_device +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a3570e lro_flush_all +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92e205f1 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x92e2528b tso_start +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +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 0x9309c276 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x931df476 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x932f15be devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934a1dfc vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x934e7058 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x9355406a generic_write_end +EXPORT_SYMBOL vmlinux 0x936adbe0 get_empty_filp +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937d281d bio_split +EXPORT_SYMBOL vmlinux 0x93aa3aa5 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bb3b9b x86_hyper +EXPORT_SYMBOL vmlinux 0x93d01c96 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x93d2d786 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x93d39c4d __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x93d4e01c security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x93f0a956 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93ff951b neigh_xmit +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x9409b6ca netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x941d8662 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x9439776c mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x944720fa vmap +EXPORT_SYMBOL vmlinux 0x944ff1c7 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94aba519 end_page_writeback +EXPORT_SYMBOL vmlinux 0x94df1c00 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x94e0eb94 __check_sticky +EXPORT_SYMBOL vmlinux 0x950fc2d5 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x9515ccda scsi_dma_map +EXPORT_SYMBOL vmlinux 0x951702dd vfs_create +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955a832f ___preempt_schedule +EXPORT_SYMBOL vmlinux 0x95af681d inet6_ioctl +EXPORT_SYMBOL vmlinux 0x95b1cd5c register_console +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95cb8cd8 tcp_connect +EXPORT_SYMBOL vmlinux 0x95d52247 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x95e20e06 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x95f9f9d1 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x96010c5f blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x960210ab scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x961085e8 dump_skip +EXPORT_SYMBOL vmlinux 0x96220c2b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x964bcb84 dev_open +EXPORT_SYMBOL vmlinux 0x96528a50 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x967461dc __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x969c0f35 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x96a0764f register_qdisc +EXPORT_SYMBOL vmlinux 0x96aba385 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96bb7d2b iov_iter_zero +EXPORT_SYMBOL vmlinux 0x96bc02e3 vfs_symlink +EXPORT_SYMBOL vmlinux 0x96cd1f8a skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x96cd284f ip_options_compile +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e7ccd1 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x96f793a1 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x971b472e devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x974e8782 __lock_buffer +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97791083 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x97849f38 netif_skb_features +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 0x97d23a54 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x97d5394b mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97eea3a9 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x97f644e9 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x98126907 mount_single +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x98571ac4 param_get_uint +EXPORT_SYMBOL vmlinux 0x985b5e75 console_stop +EXPORT_SYMBOL vmlinux 0x986a2f61 blk_make_request +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9875f024 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98a2aa3e ppp_input_error +EXPORT_SYMBOL vmlinux 0x98b2b9d0 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cd7094 put_io_context +EXPORT_SYMBOL vmlinux 0x98d3e905 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x9905eee0 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x990926e3 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x992b5ea2 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x992f8b7d bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993e1f54 noop_fsync +EXPORT_SYMBOL vmlinux 0x9946d243 down_write_trylock +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9968c296 dput +EXPORT_SYMBOL vmlinux 0x9979a1fc agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99af0220 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x99c3ebb7 agp3_generic_tlbflush +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 0x99db7ce4 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x99e3b62b dev_alloc_name +EXPORT_SYMBOL vmlinux 0x99efd936 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x9a023cf9 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x9a052af4 kill_block_super +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a2b10de simple_unlink +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a462898 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a8094fb netlink_net_capable +EXPORT_SYMBOL vmlinux 0x9a898904 __dax_fault +EXPORT_SYMBOL vmlinux 0x9a8aa09b dma_common_mmap +EXPORT_SYMBOL vmlinux 0x9a9c9241 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x9ab154aa napi_complete_done +EXPORT_SYMBOL vmlinux 0x9ab59db7 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x9acadc30 set_cached_acl +EXPORT_SYMBOL vmlinux 0x9ace5fd1 led_set_brightness +EXPORT_SYMBOL vmlinux 0x9ad94502 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afa039e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x9b1388af __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x9b2fea67 kill_pgrp +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b8d2ed2 unlock_new_inode +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 0x9ba96b4d inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc59c9a blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x9bd1741b cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x9bd27f7d tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x9be37bdc ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9c2bd1d5 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x9c32bee8 d_genocide +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c6fc188 setattr_copy +EXPORT_SYMBOL vmlinux 0x9c92f6ad skb_queue_purge +EXPORT_SYMBOL vmlinux 0x9c986445 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb90e34 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x9ceff8a5 i2c_use_client +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d19a6e9 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x9d1f11c8 inode_set_flags +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 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d466c4e tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x9d4dd490 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x9d5a5ffc nf_hook_slow +EXPORT_SYMBOL vmlinux 0x9d640531 from_kprojid +EXPORT_SYMBOL vmlinux 0x9d8f23f4 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x9d96689b agp_put_bridge +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dab4188 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x9dacbd9b nf_log_set +EXPORT_SYMBOL vmlinux 0x9db109b9 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x9db27f8f skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x9dbc1c35 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x9dda5653 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x9ddd2cdc bio_add_page +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e27e7be copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e365b80 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x9e3ee69f blk_put_request +EXPORT_SYMBOL vmlinux 0x9e4a12d2 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e520d54 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e6b885c gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x9e6ed9ae seq_open_private +EXPORT_SYMBOL vmlinux 0x9e7457cb fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e90ce78 elv_register_queue +EXPORT_SYMBOL vmlinux 0x9e9a63fc scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x9e9db23f cont_write_begin +EXPORT_SYMBOL vmlinux 0x9ea8fa6f blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x9eaf5796 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ebea5e2 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x9ec35221 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x9ee22e71 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x9ee78252 scsi_add_device +EXPORT_SYMBOL vmlinux 0x9eeffbb9 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x9ef93981 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x9f0e77ed buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x9f2a8d08 tty_port_open +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f54a7f7 security_mmap_file +EXPORT_SYMBOL vmlinux 0x9f60dd96 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f7c6a82 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x9f940e70 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x9f9469ed twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa4ed61 arp_send +EXPORT_SYMBOL vmlinux 0x9fbdfb28 genl_notify +EXPORT_SYMBOL vmlinux 0x9fc1e7fe serio_rescan +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe2f59e follow_down_one +EXPORT_SYMBOL vmlinux 0x9fe7e861 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00405d8 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa00dc57a tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xa0342824 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xa035ff16 clk_get +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa068ebcf bh_submit_read +EXPORT_SYMBOL vmlinux 0xa06c0ebd sk_mc_loop +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 0xa08df009 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xa0a3d3cc frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b442cc jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xa0b8ca09 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xa0c1454a bd_set_size +EXPORT_SYMBOL vmlinux 0xa0c573b2 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xa0d9f791 __dec_zone_page_state +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 0xa0fcb241 set_blocksize +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10f5601 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xa116a6ac devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa146d5dd pci_remove_bus +EXPORT_SYMBOL vmlinux 0xa1496beb pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14ed51a __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa15c2c55 phy_attach +EXPORT_SYMBOL vmlinux 0xa183dae5 dquot_release +EXPORT_SYMBOL vmlinux 0xa184992d alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xa1883f07 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa18b2679 backlight_force_update +EXPORT_SYMBOL vmlinux 0xa197974c mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xa19c0e99 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa1ad2ecd dst_discard_sk +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1df7a64 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xa1e62e30 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20a8289 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xa22167a4 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xa237e719 cdev_del +EXPORT_SYMBOL vmlinux 0xa246d4a7 input_unregister_device +EXPORT_SYMBOL vmlinux 0xa24d30fd param_ops_byte +EXPORT_SYMBOL vmlinux 0xa26193ed dev_base_lock +EXPORT_SYMBOL vmlinux 0xa283b588 dev_activate +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa29a0494 inode_change_ok +EXPORT_SYMBOL vmlinux 0xa2a0a75b blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2c1bf6d get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xa2d388b0 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xa2d46830 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xa2dfcdde fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xa2e56d1f bmap +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa32117a3 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xa321922c dma_free_attrs +EXPORT_SYMBOL vmlinux 0xa336a1be audit_log_task_info +EXPORT_SYMBOL vmlinux 0xa342f889 scsi_print_command +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa35f05a8 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xa36ee617 proc_mkdir +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa3939f23 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xa3d2a32e skb_queue_head +EXPORT_SYMBOL vmlinux 0xa3eddc88 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa40ba1a0 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xa40ea3f2 kobject_add +EXPORT_SYMBOL vmlinux 0xa4192abf pnp_is_active +EXPORT_SYMBOL vmlinux 0xa41b0301 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xa42026ef blk_end_request_all +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa458ada0 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4783ab8 nonseekable_open +EXPORT_SYMBOL vmlinux 0xa4aaf63d scsi_unregister +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4ec3e31 netdev_err +EXPORT_SYMBOL vmlinux 0xa4fb1be0 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xa53f4fbf install_exec_creds +EXPORT_SYMBOL vmlinux 0xa53fe102 bioset_free +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a333bb write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b2878d __nlmsg_put +EXPORT_SYMBOL vmlinux 0xa5b598fa input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xa5be4481 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0xa5ee61d5 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xa5f8e8ce jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xa5fffac9 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xa6051fb5 __scm_destroy +EXPORT_SYMBOL vmlinux 0xa618136d __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xa62ac87e acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xa62b3442 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa656a2b9 ps2_init +EXPORT_SYMBOL vmlinux 0xa674e1bc jbd2_journal_load +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 0xa6addb06 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6bfd260 blk_start_queue +EXPORT_SYMBOL vmlinux 0xa6cf2183 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xa6d6fbb3 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xa6e64c93 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa716e047 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xa7234328 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74f729c __invalidate_device +EXPORT_SYMBOL vmlinux 0xa7577ede padata_alloc +EXPORT_SYMBOL vmlinux 0xa7664de4 elevator_alloc +EXPORT_SYMBOL vmlinux 0xa7685a1e sk_alloc +EXPORT_SYMBOL vmlinux 0xa777ca4b cfb_imageblit +EXPORT_SYMBOL vmlinux 0xa77ccd11 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa78a7ff7 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xa7c15e41 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xa7f47c29 seq_release +EXPORT_SYMBOL vmlinux 0xa80e3045 key_revoke +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa837c578 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xa83eb4e5 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8615b09 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xa864c0b8 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xa86a184e bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8777542 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xa87c902c fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xa892972b scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xa892df9e sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xa8be2edc add_disk +EXPORT_SYMBOL vmlinux 0xa8e99433 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xa8f3b569 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90ffae2 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91e8e86 block_truncate_page +EXPORT_SYMBOL vmlinux 0xa943d95a param_set_ullong +EXPORT_SYMBOL vmlinux 0xa95d13bf nlmsg_notify +EXPORT_SYMBOL vmlinux 0xa9630472 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xa96a6fd2 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9776719 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xa977d12e pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xa98b823b skb_insert +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9a4439f tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9aceaf6 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xa9ae66f6 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9c8efe8 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa00c7c6 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xaa00ea4a tcp_release_cb +EXPORT_SYMBOL vmlinux 0xaa26e41f _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xaa340dfa fb_show_logo +EXPORT_SYMBOL vmlinux 0xaa3a37b9 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa5f6ed4 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa732503 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xaa856b9f iov_iter_advance +EXPORT_SYMBOL vmlinux 0xaa949deb thaw_super +EXPORT_SYMBOL vmlinux 0xaaa2c252 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xaaba7c78 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xaabd8e1a inet_accept +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad5a7f7 may_umount_tree +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae6c98d __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab122fea ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xab1289b9 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xab4f2704 make_kgid +EXPORT_SYMBOL vmlinux 0xab531430 tcf_unregister_action +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 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab72892a bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab808133 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xab97866b kernel_getsockname +EXPORT_SYMBOL vmlinux 0xabb2ed2b seq_lseek +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabea41f3 tcp_child_process +EXPORT_SYMBOL vmlinux 0xabedff40 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xabfbd262 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac188252 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1b6a7b jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xac312b5d security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac3ec84c nobh_write_begin +EXPORT_SYMBOL vmlinux 0xac3ed99f would_dump +EXPORT_SYMBOL vmlinux 0xac42af32 simple_dname +EXPORT_SYMBOL vmlinux 0xac54f544 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xaca032f1 netpoll_cleanup +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 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdb3619 register_cdrom +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad084ed3 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xad089adc dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad2aaa88 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xad3fa64a param_get_charp +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad7e6452 genphy_read_status +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadb51733 icmpv6_send +EXPORT_SYMBOL vmlinux 0xadbd8e9a fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xadca2b8a mpage_writepages +EXPORT_SYMBOL vmlinux 0xade2ca0f rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xade994c4 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xadf05790 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xadf92630 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae10f246 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xae1f05ea ip6_xmit +EXPORT_SYMBOL vmlinux 0xae2a2f1a ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xae3a215f ata_link_printk +EXPORT_SYMBOL vmlinux 0xae3cdd40 dev_printk +EXPORT_SYMBOL vmlinux 0xae6c7139 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xae723915 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae83f276 vfs_writev +EXPORT_SYMBOL vmlinux 0xae962a92 inet_addr_type +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaec3c87b always_delete_dentry +EXPORT_SYMBOL vmlinux 0xaedc9186 dentry_open +EXPORT_SYMBOL vmlinux 0xaf0c9654 posix_lock_file +EXPORT_SYMBOL vmlinux 0xaf1663a7 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xaf24cf16 key_type_keyring +EXPORT_SYMBOL vmlinux 0xaf2904f2 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf475de4 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf98a425 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xafaab56c tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafd97623 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xaff05042 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xb0049b46 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xb00a90c1 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb03c62d4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xb04920a6 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xb05bad90 dev_emerg +EXPORT_SYMBOL vmlinux 0xb05df36c blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06074fe netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xb07e4773 __kernel_write +EXPORT_SYMBOL vmlinux 0xb07f6c71 md_write_start +EXPORT_SYMBOL vmlinux 0xb0881f97 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0c84222 textsearch_register +EXPORT_SYMBOL vmlinux 0xb0d5ff2b alloc_disk +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0e76043 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb116219e ppp_input +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb14326e4 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xb14f9fdb blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16db742 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb1956bcb ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xb195ae95 netif_device_detach +EXPORT_SYMBOL vmlinux 0xb1a0f8aa alloc_fcdev +EXPORT_SYMBOL vmlinux 0xb1a99e3b filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xb1b35de5 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xb1bf71be vm_mmap +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1ce8a2c sdev_prefix_printk +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 0xb1e9d65b abort_creds +EXPORT_SYMBOL vmlinux 0xb1f5f681 da903x_query_status +EXPORT_SYMBOL vmlinux 0xb20be3b3 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xb20c1371 put_filp +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb2124abb devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xb218a435 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb232c470 ll_rw_block +EXPORT_SYMBOL vmlinux 0xb23f20c3 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xb24f724b dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xb252c5c3 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2772002 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xb27d0ff6 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2df2701 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xb2f70989 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fa46e9 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb30c4050 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xb3169da7 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +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 0xb3bd8942 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xb3bdbedd skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e948fc seq_open +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42419ee tcp_conn_request +EXPORT_SYMBOL vmlinux 0xb4521f21 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xb45acfa7 skb_copy +EXPORT_SYMBOL vmlinux 0xb45caac3 d_lookup +EXPORT_SYMBOL vmlinux 0xb460570b put_disk +EXPORT_SYMBOL vmlinux 0xb46181ea scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb477c984 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xb4783f9c xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xb4bf37d0 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xb4e1804c mdiobus_read +EXPORT_SYMBOL vmlinux 0xb4e59250 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xb4e67d51 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xb4f79a56 sg_miter_skip +EXPORT_SYMBOL vmlinux 0xb501b3f7 skb_pull +EXPORT_SYMBOL vmlinux 0xb51a84f0 inode_init_always +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb56c8719 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb586b566 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xb59823e1 seq_dentry +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5aeb22e generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xb5b0fa66 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xb5c7ecad fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9dcc9 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb5e7b31e dev_mc_add +EXPORT_SYMBOL vmlinux 0xb5ed3f98 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xb61157b1 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb62f9f9e fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xb64fecd0 kmem_cache_alloc +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 0xb69ad6c4 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6d1e304 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xb6d8cd43 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xb716391c xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xb71d90d3 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xb72869e4 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74a3a32 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xb7529df2 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xb7557db4 neigh_lookup +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb758f901 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xb76cb5c6 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb77a99dc alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xb78b536a kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb794b0d5 __put_cred +EXPORT_SYMBOL vmlinux 0xb79a7319 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7f881f1 request_key +EXPORT_SYMBOL vmlinux 0xb7fbceff node_data +EXPORT_SYMBOL vmlinux 0xb801fff0 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xb8050860 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xb806a935 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xb8308822 proto_unregister +EXPORT_SYMBOL vmlinux 0xb84fcbe7 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xb864d839 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xb867d9ce bio_copy_data +EXPORT_SYMBOL vmlinux 0xb871278f mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8781c91 follow_up +EXPORT_SYMBOL vmlinux 0xb882d29c seq_escape +EXPORT_SYMBOL vmlinux 0xb88d817d mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xb8941312 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xb8b1d11b nvdimm_namespace_capacity +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 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb95be8ae jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xb9659ca4 input_get_keycode +EXPORT_SYMBOL vmlinux 0xb96b69a9 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xb9ad0ece thaw_bdev +EXPORT_SYMBOL vmlinux 0xb9c51377 sock_wfree +EXPORT_SYMBOL vmlinux 0xb9d6d85f dst_alloc +EXPORT_SYMBOL vmlinux 0xb9e6d5a6 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xb9e740ee dev_addr_add +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba2685d1 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xba2a62c9 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba34fd1f bio_put +EXPORT_SYMBOL vmlinux 0xba3f2260 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xba41e3fb dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba76c7d0 km_new_mapping +EXPORT_SYMBOL vmlinux 0xba7779d2 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xbab09c85 path_nosuid +EXPORT_SYMBOL vmlinux 0xbab14fc9 softnet_data +EXPORT_SYMBOL vmlinux 0xbac6b57b nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xbad76c19 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xbaf325a2 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb062b8e inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xbb063f85 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xbb265b10 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xbb2de4fe xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xbb2e6af4 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xbb31cbf1 skb_seq_read +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb52d1cf devm_gpio_request +EXPORT_SYMBOL vmlinux 0xbb5866a4 pci_get_device +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb5ec14c input_event +EXPORT_SYMBOL vmlinux 0xbb5f05c7 seq_put_decimal_ll +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 0xbbb8776a scsi_remove_device +EXPORT_SYMBOL vmlinux 0xbbbb451a _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbbe4176 set_groups +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbbf62846 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc29b7b0 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xbc59bd40 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xbc5e6d2c tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xbc6ffe3d iterate_dir +EXPORT_SYMBOL vmlinux 0xbc7b99f9 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xbc7f6fc9 get_super_thawed +EXPORT_SYMBOL vmlinux 0xbc86e705 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xbcab0d80 dev_uc_add +EXPORT_SYMBOL vmlinux 0xbcb97357 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd2259db iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4dcb5c fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xbd67cbe7 agp_create_memory +EXPORT_SYMBOL vmlinux 0xbd75eeed blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xbd878481 param_set_ulong +EXPORT_SYMBOL vmlinux 0xbd8c13f4 get_user_pages +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd915ff7 find_get_entry +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdb54e1d mmc_can_erase +EXPORT_SYMBOL vmlinux 0xbdbd1239 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xbdc30d43 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe061ab8 sync_filesystem +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1f2f18 tty_kref_put +EXPORT_SYMBOL vmlinux 0xbe428bb0 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xbe4664e3 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xbe9460d3 __brelse +EXPORT_SYMBOL vmlinux 0xbe96c486 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xbe96dc55 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xbe98f5dc __bread_gfp +EXPORT_SYMBOL vmlinux 0xbe9f7f1c sock_no_listen +EXPORT_SYMBOL vmlinux 0xbeac4367 md_write_end +EXPORT_SYMBOL vmlinux 0xbeb36e91 udp_proc_register +EXPORT_SYMBOL vmlinux 0xbeb439d0 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbec8e293 blk_run_queue +EXPORT_SYMBOL vmlinux 0xbecda505 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xbed00206 sock_i_ino +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf130575 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xbf1dc4c8 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xbf2122a1 __napi_schedule +EXPORT_SYMBOL vmlinux 0xbf28824a get_phy_device +EXPORT_SYMBOL vmlinux 0xbf480b15 mntget +EXPORT_SYMBOL vmlinux 0xbf5ce501 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xbf621753 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xbf68eb31 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf936456 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xbf96fe5c xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfcac777 path_is_under +EXPORT_SYMBOL vmlinux 0xbfde2caf copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xbfe6f427 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0xbfe9eee9 vfs_mknod +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff4467f netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xc00a285e pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xc00abcf0 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xc0284bee compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc097f309 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xc0a04198 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a4ba8c jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xc0abd6f7 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xc0b6bba3 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xc0b6dbfe sk_dst_check +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0eda98d rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xc0f0db50 seq_path +EXPORT_SYMBOL vmlinux 0xc1067ac7 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xc1330627 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc162a7cb scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xc165a6f0 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xc17a8533 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xc18195b2 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xc182fa41 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc18b3bde is_nd_btt +EXPORT_SYMBOL vmlinux 0xc1961ee2 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc1a759ea fs_bio_set +EXPORT_SYMBOL vmlinux 0xc1be2777 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xc1be9afd register_netdev +EXPORT_SYMBOL vmlinux 0xc1d2954f eth_gro_complete +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1e6e52c __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xc1e8f4d3 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xc1f75853 dm_io +EXPORT_SYMBOL vmlinux 0xc1fee384 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xc20ad940 nd_device_register +EXPORT_SYMBOL vmlinux 0xc212141d inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xc21a67b8 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xc21c014a pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc281cf82 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xc28a6f2c ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2b1a1f9 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xc2b6b3ef blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xc2b97573 write_one_page +EXPORT_SYMBOL vmlinux 0xc2d1af4d pipe_unlock +EXPORT_SYMBOL vmlinux 0xc2d7bea5 serio_close +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc31dbbab pci_enable_device +EXPORT_SYMBOL vmlinux 0xc35c0eca mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xc35f7381 agp_backend_release +EXPORT_SYMBOL vmlinux 0xc372c284 follow_pfn +EXPORT_SYMBOL vmlinux 0xc37fbd63 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3ae48f3 file_ns_capable +EXPORT_SYMBOL vmlinux 0xc3b27d78 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xc3b7ae6d posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xc3c2a286 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d051c4 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xc3ff617e tty_register_driver +EXPORT_SYMBOL vmlinux 0xc4553422 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xc461b3a3 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc484b13a vlan_vid_del +EXPORT_SYMBOL vmlinux 0xc48d048d mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xc498b959 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4c4f480 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xc4e36fd6 filp_open +EXPORT_SYMBOL vmlinux 0xc4f704ae padata_free +EXPORT_SYMBOL vmlinux 0xc4f79f03 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0xc5061384 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc53a1476 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc58eb54e redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xc591ddb7 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a429ea blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e91af9 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc61161d2 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63a0829 dquot_acquire +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc6b15032 kernel_write +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6bdf32a sock_rfree +EXPORT_SYMBOL vmlinux 0xc6c1c316 netlink_set_err +EXPORT_SYMBOL vmlinux 0xc6c468da dev_driver_string +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d03fa4 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xc6ecbcd1 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xc6f026d3 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7227f19 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc736ae1a unregister_filesystem +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc76ffe7a ip_do_fragment +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 0xc7d62ae1 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xc7f585fd __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc8001f2e xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xc82df8d3 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xc82f0169 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83cc8dd rt6_lookup +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc868c654 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xc8703871 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc891aa0b ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a1cbf3 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8aa3e19 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bfa443 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xc8d7a034 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc912b772 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xc91a44c9 vme_bus_num +EXPORT_SYMBOL vmlinux 0xc91e1398 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xc92b10d2 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xc952c9c6 kill_pid +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96c635d neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xc96e4774 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xc974dee7 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xc9762aa0 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc9877ce0 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xc9998636 give_up_console +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f550f skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9b4b147 md_register_thread +EXPORT_SYMBOL vmlinux 0xc9cb53d0 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xc9d15d0a sk_receive_skb +EXPORT_SYMBOL vmlinux 0xc9ed03b3 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc9f8278a dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0324a4 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca10655c amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0xca2ca323 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xca3dd395 vme_lm_request +EXPORT_SYMBOL vmlinux 0xca3fc39a dev_warn +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca7d430b agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaab493d clone_cred +EXPORT_SYMBOL vmlinux 0xcab19102 proc_symlink +EXPORT_SYMBOL vmlinux 0xcab33a00 sock_i_uid +EXPORT_SYMBOL vmlinux 0xcad88b9a agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xcaef99a8 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb145350 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xcb281ac9 iget_failed +EXPORT_SYMBOL vmlinux 0xcb4e1f53 blkdev_put +EXPORT_SYMBOL vmlinux 0xcb67f489 get_disk +EXPORT_SYMBOL vmlinux 0xcb6fc331 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb758be7 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xcb7ccaa3 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xcb8fe52b ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb95009a __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb29ace blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbbf6195 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xcbc57547 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbddc8ec mount_pseudo +EXPORT_SYMBOL vmlinux 0xcbfd6438 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xcc08ff17 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc526443 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xcc5ad931 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xcc648fde twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xcc7064cd sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xcc717df3 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xcc727622 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xcc72ba61 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc7deab8 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc8a2ed2 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xcc8c4a7f do_splice_to +EXPORT_SYMBOL vmlinux 0xcc9222bf block_write_begin +EXPORT_SYMBOL vmlinux 0xcc925352 bio_advance +EXPORT_SYMBOL vmlinux 0xcc9aa2a6 register_sysctl +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc3e330 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xccdd7a07 xfrm_input +EXPORT_SYMBOL vmlinux 0xccff42fa xfrm_register_type +EXPORT_SYMBOL vmlinux 0xcd11c24e nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd242f1f tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3845b4 dev_crit +EXPORT_SYMBOL vmlinux 0xcd4e583e vfs_whiteout +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd5db5b1 scmd_printk +EXPORT_SYMBOL vmlinux 0xcd7d5f66 input_register_handle +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd9511a8 __serio_register_port +EXPORT_SYMBOL vmlinux 0xcd9db4b3 bio_chain +EXPORT_SYMBOL vmlinux 0xcdac7160 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xcdafe853 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xcdbbf0d5 load_nls +EXPORT_SYMBOL vmlinux 0xcdc1c02b generic_update_time +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd1e5b8 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xcddbbcd4 inode_init_once +EXPORT_SYMBOL vmlinux 0xcdf6be82 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xcdf85cf0 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xce0dfaa6 flush_old_exec +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce3beac3 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce57f6dd clear_wb_congested +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5e68fc eth_gro_receive +EXPORT_SYMBOL vmlinux 0xce69137e inode_add_bytes +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce9272ba generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xce94aa88 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb7b150 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xceb840c8 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xcebdb97b blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xcebfbfec rtnl_notify +EXPORT_SYMBOL vmlinux 0xcec25ecf misc_register +EXPORT_SYMBOL vmlinux 0xcec7c5a8 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xced2f87a clear_nlink +EXPORT_SYMBOL vmlinux 0xceeb27ff generic_removexattr +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf09b4f8 get_io_context +EXPORT_SYMBOL vmlinux 0xcf25e1e4 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xcf31def5 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xcf40b480 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xcf4fa41a dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0xcf6bc653 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf6f6cfb mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xcf77654e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xcf8d591d blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xcfad040f nd_device_unregister +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfc4856b netlink_ack +EXPORT_SYMBOL vmlinux 0xcff16cbd d_move +EXPORT_SYMBOL vmlinux 0xcfff0e0a genphy_suspend +EXPORT_SYMBOL vmlinux 0xd004c20b blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xd0466c82 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xd04c6d85 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xd0552c1c pcim_iomap +EXPORT_SYMBOL vmlinux 0xd0682cbf bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0807458 xfrm_prepare_input +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 0xd0b21891 sk_capable +EXPORT_SYMBOL vmlinux 0xd0b8efe8 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xd0c03b94 pid_task +EXPORT_SYMBOL vmlinux 0xd0cc7da1 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd0e14ca9 simple_follow_link +EXPORT_SYMBOL vmlinux 0xd0ebaecd pci_try_set_mwi +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 0xd1334493 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xd140cb1a dev_get_by_name +EXPORT_SYMBOL vmlinux 0xd15cc854 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1764ff5 inet6_release +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1a76922 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xd1d3fff5 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1dd8e56 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1f8fc63 fb_blank +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +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 0xd2650f49 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27dbdd8 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xd283593c xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xd293f8bc netpoll_setup +EXPORT_SYMBOL vmlinux 0xd296aa2e ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xd29fd815 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2be36fe irq_set_chip +EXPORT_SYMBOL vmlinux 0xd2d2f998 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xd2d401ee mmc_release_host +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e56921 sk_common_release +EXPORT_SYMBOL vmlinux 0xd2eb69a1 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd2faf3f1 free_netdev +EXPORT_SYMBOL vmlinux 0xd31a0d1b devm_ioremap +EXPORT_SYMBOL vmlinux 0xd32dfff2 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xd3582044 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3719d59 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0xd3a0cbd1 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xd3b3771a sk_net_capable +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3d16107 vm_map_ram +EXPORT_SYMBOL vmlinux 0xd3e3759c blk_integrity_register +EXPORT_SYMBOL vmlinux 0xd3e736e8 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xd40dba61 sget +EXPORT_SYMBOL vmlinux 0xd430fd6a __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xd45bafee dev_add_pack +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd48ea120 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xd48fe195 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xd497b749 dev_uc_init +EXPORT_SYMBOL vmlinux 0xd4b36674 dma_find_channel +EXPORT_SYMBOL vmlinux 0xd4c9479c dev_uc_flush +EXPORT_SYMBOL vmlinux 0xd4d01381 free_task +EXPORT_SYMBOL vmlinux 0xd4d3f31c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd5178be6 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd57d4757 skb_unlink +EXPORT_SYMBOL vmlinux 0xd57e68fc register_framebuffer +EXPORT_SYMBOL vmlinux 0xd5935d69 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xd5b0863f pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xd5bb7f8d rtnl_unicast +EXPORT_SYMBOL vmlinux 0xd5fb282d simple_transaction_get +EXPORT_SYMBOL vmlinux 0xd5fc7f1f tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xd6116179 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62178d4 key_unlink +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd633cc53 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xd64005cc bioset_create +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd667f442 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xd681ba6a mmc_get_card +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6970549 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xd69eb64c blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c1eb45 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xd6d39f56 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xd6d8507b pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xd6dc2e7d __skb_get_hash +EXPORT_SYMBOL vmlinux 0xd6ed84db filp_close +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f2816f tty_devnum +EXPORT_SYMBOL vmlinux 0xd6f292f9 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd72d5cd8 user_path_create +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd7373f67 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xd746664e serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd74f6033 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xd7579f29 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd76df70d jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xd77d88a0 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd815f221 dget_parent +EXPORT_SYMBOL vmlinux 0xd86707cd dquot_scan_active +EXPORT_SYMBOL vmlinux 0xd88b0502 __pagevec_release +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a4c4d8 iov_iter_init +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8c2af5b skb_clone_sk +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd90e5a75 md_check_recovery +EXPORT_SYMBOL vmlinux 0xd9114a68 pci_get_slot +EXPORT_SYMBOL vmlinux 0xd92badd1 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd93903ec tty_set_operations +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd9491610 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xd9604724 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd96d4085 mb_cache_entry_find_next +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 0xd99c569f security_path_symlink +EXPORT_SYMBOL vmlinux 0xd9b52569 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xd9bb8d2f blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xd9c621d9 page_symlink +EXPORT_SYMBOL vmlinux 0xd9cd4c3e pci_dev_get +EXPORT_SYMBOL vmlinux 0xd9d3a244 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9eddf2c cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xda16b754 blk_free_tags +EXPORT_SYMBOL vmlinux 0xda2aebc8 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda43e81a pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda83f665 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9428e2 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xdaa720a3 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xdaa90a40 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xdab453a8 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xdabe92b3 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xdac402bc dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdae80100 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb0251d2 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xdb1aa527 set_create_files_as +EXPORT_SYMBOL vmlinux 0xdb202a2b __module_get +EXPORT_SYMBOL vmlinux 0xdb2a407b pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xdb3bcb85 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb4d03c5 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xdb4f0813 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xdb5d48d9 dev_mc_init +EXPORT_SYMBOL vmlinux 0xdb5f59d3 framebuffer_release +EXPORT_SYMBOL vmlinux 0xdb6157db consume_skb +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb9487d1 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xdb9b1124 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xdbc62168 inet6_getname +EXPORT_SYMBOL vmlinux 0xdbe33ab1 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc11bd31 block_write_full_page +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2346bc mmc_register_driver +EXPORT_SYMBOL vmlinux 0xdc238ee5 tso_count_descs +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 0xdc5f5da8 lockref_put_return +EXPORT_SYMBOL vmlinux 0xdca6fe45 md_reload_sb +EXPORT_SYMBOL vmlinux 0xdcaa0cc9 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdceb15e1 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xdd0c1220 single_open +EXPORT_SYMBOL vmlinux 0xdd4bebcd genphy_update_link +EXPORT_SYMBOL vmlinux 0xdd57ec62 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xdd74cf09 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xdd9099ee seq_printf +EXPORT_SYMBOL vmlinux 0xdd930096 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xdd93315f phy_device_create +EXPORT_SYMBOL vmlinux 0xdd9ba828 phy_device_free +EXPORT_SYMBOL vmlinux 0xddbca684 phy_init_eee +EXPORT_SYMBOL vmlinux 0xddc30d54 phy_resume +EXPORT_SYMBOL vmlinux 0xddd4b5c9 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xdde83545 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xde1101c0 put_tty_driver +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde2035b5 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xde34aa98 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xde395091 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xde39d765 mount_ns +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde674b79 scsi_register +EXPORT_SYMBOL vmlinux 0xde8e9668 inet_ioctl +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xded5576c sock_release +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf11a33c pagevec_lookup +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf1b00fa blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a07dc blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xdf4728ae account_page_redirty +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf7016b2 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xdf81603e wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xdf89f9c0 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcbbd69 km_report +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfda3e23 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xdfe20938 tcp_prot +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe000c5d8 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xe01232b9 __blk_end_request +EXPORT_SYMBOL vmlinux 0xe01ed833 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xe0271a45 param_set_copystring +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05ea8a4 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06e4199 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe079b96d tcp_proc_register +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0a878cc inode_set_bytes +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0d3d258 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xe0ed854a devm_clk_put +EXPORT_SYMBOL vmlinux 0xe0f3cb2c pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xe10aea39 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11a9dca dump_emit +EXPORT_SYMBOL vmlinux 0xe136d8c4 nobh_write_end +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 0xe15c61a6 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xe16e6364 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xe1703604 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe181cc91 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xe190da11 dev_add_offload +EXPORT_SYMBOL vmlinux 0xe1bbb7c5 d_set_d_op +EXPORT_SYMBOL vmlinux 0xe1f33027 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe2282c2a try_to_release_page +EXPORT_SYMBOL vmlinux 0xe22fc257 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2424a01 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe25f7f13 load_nls_default +EXPORT_SYMBOL vmlinux 0xe26d336e blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xe295b54c security_path_truncate +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 0xe2b88419 vc_cons +EXPORT_SYMBOL vmlinux 0xe2c52e61 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e1e16a jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe326ce3f prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe33f438a dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xe373efb3 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3c143ca get_gendisk +EXPORT_SYMBOL vmlinux 0xe3c2578c scm_detach_fds +EXPORT_SYMBOL vmlinux 0xe3cf2640 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d91798 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xe3fe0796 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xe3fff22e loop_backing_file +EXPORT_SYMBOL vmlinux 0xe4100697 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xe41a3b71 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xe41dc8fb netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe459d85a pnp_device_attach +EXPORT_SYMBOL vmlinux 0xe4772e0a blk_sync_queue +EXPORT_SYMBOL vmlinux 0xe4791d9d jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4c22fe2 file_update_time +EXPORT_SYMBOL vmlinux 0xe4ee6b16 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe4f157a2 skb_checksum +EXPORT_SYMBOL vmlinux 0xe4f7ce72 __ps2_command +EXPORT_SYMBOL vmlinux 0xe51007a5 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xe513bd64 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe549015e acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xe5526a94 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xe5576f76 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xe566d70d jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe595c80a tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xe597f4c7 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xe5be2790 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f4d2e4 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xe6127c64 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe617b6ec agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xe6325a0f mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xe63a7855 key_alloc +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe68439aa init_special_inode +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a14bd1 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xe6ba0c7a inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xe6d574af inet_recvmsg +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 0xe7255cc2 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xe72e9756 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xe73d084e tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xe7498b31 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xe75731f5 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe7584704 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xe78b8686 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7bc187f tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xe7cdd596 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e3842b key_invalidate +EXPORT_SYMBOL vmlinux 0xe7e426db skb_split +EXPORT_SYMBOL vmlinux 0xe7e5f2bc qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xe7e97300 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xe7f9a179 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8317599 to_nd_btt +EXPORT_SYMBOL vmlinux 0xe832a763 cpu_core_map +EXPORT_SYMBOL vmlinux 0xe84f3acf __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xe86be436 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b606a PDE_DATA +EXPORT_SYMBOL vmlinux 0xe890eac6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe89b1318 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c46cf2 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xe90e8278 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xe9119cb1 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xe91376a7 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe93df54e swiotlb_map_sg +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 0xe96eabfd dm_kobject_release +EXPORT_SYMBOL vmlinux 0xe9756ba0 __free_pages +EXPORT_SYMBOL vmlinux 0xe977f931 __inode_permission +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe999445b fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xe99d79ba iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xe9a54291 proc_remove +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9c19c7b max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xe9c73b1c dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe9d22bde swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xe9dff7b4 phy_print_status +EXPORT_SYMBOL vmlinux 0xe9e2561e ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fc4d80 single_release +EXPORT_SYMBOL vmlinux 0xe9fed26c compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea220f8e d_alloc_name +EXPORT_SYMBOL vmlinux 0xea26dd00 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xea3b8e2a alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xea563a23 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xea6ac089 get_tz_trend +EXPORT_SYMBOL vmlinux 0xea6e8b23 __ht_create_irq +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea7d44d7 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xea80cb9d pci_iomap_range +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9c1275 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xeaa1615a inode_get_bytes +EXPORT_SYMBOL vmlinux 0xeaa41407 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xead75607 file_path +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeb158a20 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xeb18a20e vme_irq_handler +EXPORT_SYMBOL vmlinux 0xeb241feb mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb39b029 serio_interrupt +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb6979c4 netdev_update_features +EXPORT_SYMBOL vmlinux 0xeb79258e kmem_cache_free +EXPORT_SYMBOL vmlinux 0xeb7e37e5 i2c_transfer +EXPORT_SYMBOL vmlinux 0xeb85842f dquot_get_state +EXPORT_SYMBOL vmlinux 0xebac0c40 iterate_fd +EXPORT_SYMBOL vmlinux 0xebb75c8c mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xebe31932 netdev_features_change +EXPORT_SYMBOL vmlinux 0xebe44bc6 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xebfa03e8 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec0af144 vme_register_driver +EXPORT_SYMBOL vmlinux 0xec119c78 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xec1eee75 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xec20852a invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xec46095a tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xec466426 scsi_device_get +EXPORT_SYMBOL vmlinux 0xec4c0ce5 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec6d0f54 dev_trans_start +EXPORT_SYMBOL vmlinux 0xec70b382 vfs_setpos +EXPORT_SYMBOL vmlinux 0xec79382d page_follow_link_light +EXPORT_SYMBOL vmlinux 0xeca16eb6 tty_free_termios +EXPORT_SYMBOL vmlinux 0xecaa425b tty_register_device +EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy +EXPORT_SYMBOL vmlinux 0xecc049a8 kset_unregister +EXPORT_SYMBOL vmlinux 0xeccd3ace jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd58daf buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece90b12 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xecffc9a6 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xed00f9fc xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xed398b6e security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xed4718d4 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda0bbe8 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xedac47eb devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedd8640c tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xeddea57e amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0xeddf5289 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xedf43be0 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xedf578ce param_ops_int +EXPORT_SYMBOL vmlinux 0xee0048bd d_delete +EXPORT_SYMBOL vmlinux 0xee09bc1b fb_set_cmap +EXPORT_SYMBOL vmlinux 0xee10c23b jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xee196543 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xee22c25b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee67f86c nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee843123 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee94860e vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeecab214 ihold +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef427cb lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xeefd1242 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xef0b65a3 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xef4e8a7e tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xef52a802 vfs_readf +EXPORT_SYMBOL vmlinux 0xef55caba neigh_update +EXPORT_SYMBOL vmlinux 0xef602b1d blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xef72f751 register_netdevice +EXPORT_SYMBOL vmlinux 0xef833b98 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xef95b2d2 devm_free_irq +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefa6c527 init_task +EXPORT_SYMBOL vmlinux 0xefc2bb78 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xefc6282c skb_checksum_help +EXPORT_SYMBOL vmlinux 0xefcef626 __blk_end_request_all +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 0xeff7e5f0 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xeffd54d5 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0145a68 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf02b1296 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xf02f315f vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xf03c5033 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xf0427661 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xf04bb259 sock_create_kern +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0634989 filemap_fault +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf0737d60 set_bh_page +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 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0adef22 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf0b36c2a param_get_bool +EXPORT_SYMBOL vmlinux 0xf0d538aa dev_load +EXPORT_SYMBOL vmlinux 0xf0d99f83 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xf0e0b170 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xf0e14c97 blk_start_request +EXPORT_SYMBOL vmlinux 0xf0e4e5b7 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f07e7b scsi_register_driver +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf107d4d7 page_readlink +EXPORT_SYMBOL vmlinux 0xf10c8267 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf113b700 set_disk_ro +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf121c34a phy_driver_register +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 0xf15efac4 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xf16831f6 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xf17f1b8b __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1b91484 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xf1c30ff4 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f118d6 input_inject_event +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2112ebf tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xf225cf66 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf29a04d5 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a0f560 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2b55afe blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xf2c20a66 simple_getattr +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2cb0a5e iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xf2cd003e pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xf30be504 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xf312574e __devm_request_region +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +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 0xf392af36 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3974064 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf398ec84 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xf3ac6d4e udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xf3ca4554 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xf3e2c5a1 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f4d9ff first_ec +EXPORT_SYMBOL vmlinux 0xf402dfa0 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xf409d141 cdev_add +EXPORT_SYMBOL vmlinux 0xf41a386c __inet_hash +EXPORT_SYMBOL vmlinux 0xf425f739 tty_do_resize +EXPORT_SYMBOL vmlinux 0xf42926f0 pci_save_state +EXPORT_SYMBOL vmlinux 0xf42f2e91 generic_permission +EXPORT_SYMBOL vmlinux 0xf4379bf0 finish_no_open +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf454251d pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xf47359cb __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf48a9971 soft_cursor +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4bf81ac copy_from_iter +EXPORT_SYMBOL vmlinux 0xf4ca61de debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xf4cf6552 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xf4d05212 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xf4d93434 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f97432 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53eb5a4 __mutex_init +EXPORT_SYMBOL vmlinux 0xf5528717 ping_prot +EXPORT_SYMBOL vmlinux 0xf56bddba devm_clk_get +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 0xf5d65147 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0xf5ddb7dc inet_listen +EXPORT_SYMBOL vmlinux 0xf5ea0e38 inet6_offloads +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ed30b8 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xf5ee0f39 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf600070c mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xf621bb7d queue_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf645d125 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xf651e875 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xf65920a6 arp_xmit +EXPORT_SYMBOL vmlinux 0xf670a393 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67cfd2d atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf683b9fd key_put +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 0xf6a88464 up_write +EXPORT_SYMBOL vmlinux 0xf6b007ea __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c05a7a del_gendisk +EXPORT_SYMBOL vmlinux 0xf6c4f879 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xf6db9ff0 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f07dab dquot_file_open +EXPORT_SYMBOL vmlinux 0xf6f87e4b rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fffb02 d_add_ci +EXPORT_SYMBOL vmlinux 0xf7144f98 free_buffer_head +EXPORT_SYMBOL vmlinux 0xf717740d inet_frag_find +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf72e30dc fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xf74e8e83 pci_platform_rom +EXPORT_SYMBOL vmlinux 0xf74f8310 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xf7560605 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf76da4b8 tcp_close +EXPORT_SYMBOL vmlinux 0xf78aa83d __seq_open_private +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7a1e691 security_inode_permission +EXPORT_SYMBOL vmlinux 0xf7abccd8 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7b1033b tty_unthrottle +EXPORT_SYMBOL vmlinux 0xf7bdcdd5 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xf7d21ad4 mapping_tagged +EXPORT_SYMBOL vmlinux 0xf7d65bb0 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xf7fa6d55 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xf802f625 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf81e528c get_fs_type +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf82f7edd pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xf84daec7 nf_register_hook +EXPORT_SYMBOL vmlinux 0xf879d3f3 netdev_alert +EXPORT_SYMBOL vmlinux 0xf87f5fe8 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xf88795f2 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf88f48e6 read_dev_sector +EXPORT_SYMBOL vmlinux 0xf890ceda jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xf8aa4378 revert_creds +EXPORT_SYMBOL vmlinux 0xf8b8a1bb d_find_any_alias +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8f99408 input_allocate_device +EXPORT_SYMBOL vmlinux 0xf8fe7523 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xf90da6c7 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xf923a4c0 secpath_dup +EXPORT_SYMBOL vmlinux 0xf941c14d set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xf9432cca mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xf949112b mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xf9564cf6 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xf95afdb1 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xf95b9e99 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xf998829b d_drop +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c07436 wake_up_process +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9d07434 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xfa1826db tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xfa1e3221 keyring_search +EXPORT_SYMBOL vmlinux 0xfa213aaa from_kgid +EXPORT_SYMBOL vmlinux 0xfa29fd13 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xfa570742 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa6d32f4 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xfa741160 input_mt_destroy_slots +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 0xfacf4568 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfafab9d7 security_path_link +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb2659c5 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xfb524d3f mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xfb53e368 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb5d35fc blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xfb5d7011 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xfb636305 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xfb641b20 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xfb650a5d d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xfb68a67e tcp_parse_options +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6d63fa dquot_resume +EXPORT_SYMBOL vmlinux 0xfb7fe230 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbaf842e set_user_nice +EXPORT_SYMBOL vmlinux 0xfbbc62f5 tcf_em_register +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbcefff0 sock_no_accept +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc418a7a in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xfc7523f5 __skb_checksum +EXPORT_SYMBOL vmlinux 0xfc8212cf devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc932516 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbc2d57 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf2ee0c kill_bdev +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd2ae651 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xfd2f4d43 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xfd3034b4 get_cached_acl +EXPORT_SYMBOL vmlinux 0xfd5d653a ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xfd674adb netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xfd6ce643 phy_disconnect +EXPORT_SYMBOL vmlinux 0xfd7229e4 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0xfd78b502 sock_no_connect +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda13200 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xfdb23cb8 pci_choose_state +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +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 0xfe04bbb7 tcp_syn_ack_timeout +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 0xfe540fe1 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe607f1c xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xfe79da30 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7edba8 rwsem_wake +EXPORT_SYMBOL vmlinux 0xfe80de3d phy_find_first +EXPORT_SYMBOL vmlinux 0xfe866dc4 inet6_add_protocol +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 0xfeb41720 inet_put_port +EXPORT_SYMBOL vmlinux 0xfec30af3 elv_rb_del +EXPORT_SYMBOL vmlinux 0xfecd2303 up_read +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfef4cc60 __breadahead +EXPORT_SYMBOL vmlinux 0xfef9bda2 kobject_del +EXPORT_SYMBOL vmlinux 0xff0635a3 eth_header +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff24918c __neigh_event_send +EXPORT_SYMBOL vmlinux 0xff58df49 try_module_get +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6e9ee3 param_ops_short +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9d9df7 neigh_destroy +EXPORT_SYMBOL vmlinux 0xffa355d1 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xffbccd42 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xffc311a4 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xffc7e3b1 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +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 0x2941df51 lrw_camellia_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x31bbe42b camellia_crypt_ctr_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x4e069ad4 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 0xf4521fda camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xfcde37fc lrw_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x14a17489 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x50c5668f 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 0x93c62680 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xc622c541 glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xf46e9376 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 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 0x5c13ce28 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 0xa480a981 lrw_serpent_exit_tfm +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 0xc566a4d0 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 0x34dbca22 xts_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x517dca9b lrw_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 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 0xab83ab66 lrw_twofish_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xf2e80e9c __twofish_enc_blk_3way +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0630f3ef kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0650e776 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x076e7954 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0930b733 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x09805fb8 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0cd03cf8 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x13d3f66e kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1573bd3c reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1836ec07 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18a9f524 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18c48215 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1abe96cf kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1af5ce8b kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e39a8ea kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f7af249 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20e6809c kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x212a0a25 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21c69565 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x259661d6 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x25f0a528 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28190b67 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x29915200 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2ae280b2 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2afac127 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b870fd4 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b87ad82 kvm_debugfs_dir +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 0x2eaaf761 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x31a1db73 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x323d5de5 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x398fd27c kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b5dd35e __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d3371ad kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4055df99 kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41ab9e2f kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42c2d2dc kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43a782e4 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45da2437 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x46523428 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a14ea10 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b96f62b kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c51f664 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a2a3f7 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5846d3f8 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ec3576d kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5fe725f5 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x60111bec kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x604f03a9 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a00cf5 kvm_mmu_reset_context +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 0x66af27dd kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a25764c kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a2ec326 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6becadf3 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6cd832d3 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f6142d3 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x700632ac kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x731a317b kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x736339ec cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74c253e3 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76649161 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7990abf9 kvm_mmu_get_spte_hierarchy +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 0x7c7e84ac kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7d495ff6 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e2e51e0 kvm_release_page_dirty +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 0x84f35166 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8512cc97 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86bd9fed kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8802348b kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8846195e kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88c87a54 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a26f7b0 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a7608b5 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a79b4c5 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8c5868d4 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8d02bc64 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8d919670 kvm_vcpu_read_guest_page +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 0x8f748c22 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x903b4a6a x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92c75cd7 kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x93e8614d kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x947e7e00 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94cfa91d kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x97029e7a kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9864b3f1 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b0b90da kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b587f8c kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9bec1d18 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c5f91bd gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e389d08 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ee59155 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9fca3ad6 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa12cd280 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa18bb283 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa4c6d11e kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa508e36b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa66bd551 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa99202bc kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa79cab5 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab5578b4 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab7f2284 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xad7fc2c3 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xadd00125 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf275715 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0065cd5 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0fa6e78 kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb480169f kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb48f2c0b kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb60f96f3 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb84c6a4e kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb91ba874 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba872acb kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba8b13ec kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbaa88746 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc0771ac kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc65cecb kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbcb90359 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbd10b471 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbda1b5e8 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf45f74c kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc222e57a kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc29c4fef kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc4ae6cd6 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7c2449f kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcd0d2e8b kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcef3fec5 __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcffb2b38 gfn_to_pfn_prot +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 0xd0eedf6f kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd44a9e59 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd4cbf635 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd66886f2 kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd85994f7 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd885f3e9 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdbaaa084 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdeb9e564 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe4454494 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe4712e1f kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe4a0e1e6 kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe53400ed kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe688e698 kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8c5f742 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe98daf9c kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeecf1ab6 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2c8c333 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf6bc7230 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfc4f1519 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd7b83e3 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfdaf3c96 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe0d1d48 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x01c1745a ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x0a320a06 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x3413d3a3 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x4a290b44 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xc57052f6 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe2649c51 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xfd9e5498 ablk_init_common +EXPORT_SYMBOL_GPL crypto/af_alg 0x0182bf0a af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x2417dc49 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x2e04562f af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x40247533 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x49401060 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x60eb1f60 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x77972794 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x925c0b3a af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xf28f5e15 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xfdb4b672 af_alg_free_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 0x8d60b76d async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xa8258773 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xfa48c6d6 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x1295f1d4 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa305678c 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 0xdcd0153e 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 0x7100eff8 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 0xb667291c 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 0x1fa2a9b6 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x276f9f78 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x338bef4b cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x3b0fdea5 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x8142f4c5 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x90b341c0 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x90e09325 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xda21e04a cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xefc53242 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xf7a4b977 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x24256ba2 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 0x447dd508 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x0b2c8863 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x0b5d8988 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x4f3cd13e shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x717a8319 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x958c3d10 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbd212174 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc7c5d46c shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xeb4ffa8f 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 0xd0c50451 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x9daf34b8 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x6928f164 xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x63fd12cc acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xc3e380be acpi_nfit_attribute_groups +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 0x001247e4 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x07935421 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1390b4e1 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x283b8841 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2edd1c67 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x37f19587 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3fa33212 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x49bb7992 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6919f164 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7ad26a8e ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7cc7011f ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x85bd055c ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x86604de6 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x94f7d1c0 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9a0ce50a ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa9d1337d ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd4628e9b ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd90e6ec2 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe17b62f0 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe4a21575 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe9ef325e ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf8e61449 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x048fef45 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0fd50536 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x1d68f5a7 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x58c6eeb8 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6532286e ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x69d8b035 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x75a41540 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb30542ca ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcf4eccfd ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe884b1a6 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf8e04226 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xfb24fbd6 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xff1f8e55 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x0d64b343 __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 0x873f763a btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x89849418 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8e9d3fc0 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xb5907b73 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd540f833 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe2a8223a btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4ee09083 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf83f1a81 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x02d826aa btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x07e1d3bd btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1cecb2e2 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4173769d btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5963ad84 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7d79c311 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb0ebfdf2 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc7498be3 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc95e7b3f btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd1344c0a btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf124a323 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x98a503cf 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 0xad083e93 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 0x226bf2c9 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x00ca1cc6 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0a9cfc9d edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x13e4e66c edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x14f3fb01 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x15f5585f edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x21573acf edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2ccf5a0b edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x31bd57aa edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x466af146 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x59a0e744 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x616abf30 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6b0f000c edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7e50efff edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8196ef2a edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x83ccf23b edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x876d4056 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa9408234 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb1cc1d9f edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xba880717 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbea664cb find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd8b5de0e edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe566fbd7 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe893a553 edac_pci_del_device +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 0x4d8cfd0e drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa2afbd0e drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa82a2c09 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 0x30f0cf8d 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 0xa1441bad ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xd2302176 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x202e69f8 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2348d0ee hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x250a61a6 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x28e71552 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x29a4fb3f hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2f6cda2a hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3baa041e hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4226c736 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47717794 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x493d6ac2 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d57e430 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5ff6d018 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6826f643 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x68bbd4c4 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6cfe0550 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6da31f1c hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7904cc9a hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8410dbb5 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8fc41a53 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95ea0c38 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d894fa3 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa0c825dc hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad3af721 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xae89256b hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb89fa2f3 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc15e99af hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xce313c4c __hid_request +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 0xe5867365 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeb76a32c hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xefedb16c hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf034f8b9 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf5273c14 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf7c1945f hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf98fffc7 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x37e15765 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1860b395 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x4bbc5cd0 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xab6e972d roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc701b00d roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd36bd409 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf6505ece roccat_common2_sysfs_write +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 0xbfc1980d 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 0x083168a8 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x0c260a55 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x166e1e18 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1f84c7a1 vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x39c88e66 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46fcf531 vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4722f88e vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x48b892f1 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6126d52b vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9591e645 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x961bae61 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xb3654bf6 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc7d1d37d __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe9ebe858 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xedf233ff vmbus_sendpacket_pagebuffer +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 0x0420e07a pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x27025ce4 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x28527792 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x319d50ef pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x31b1375e pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3de06441 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x734d23dd pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x748e0e70 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x989308b4 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xacc65f8e pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb31a5002 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb5957639 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb9c4327f pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbfdb6871 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd2cdc1b7 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1555cdc7 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1cf96d44 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x41e07a38 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 0xa7404244 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb9f91fb5 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcea0bf3d i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe75231c7 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xfaf06190 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xfd3f41f7 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x009bd85c nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x3bfe6f1f i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x8db41324 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x3097fbff i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x3db39026 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x20e80988 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x51fdf98f ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x62891781 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa9e8cb9e ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb8e2e0b8 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc5065bc8 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf23b79e1 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf8fd9633 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfdaa0531 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 0x05c1ea02 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2971ad01 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2a654952 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x43655119 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x47a80a08 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x65afe957 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x69df30d6 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x97863c33 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa7c24fc5 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe85a3ac2 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xef12d355 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf0148848 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x166cc754 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x181d4ea5 iio_push_to_buffers +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 0x282d7eb0 iio_enum_read +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 0x42977a7a devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4b532d68 iio_buffer_get +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 0x751cc7a2 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7ccd7b7c iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84fde2c6 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8992e896 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x92f63037 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x94ab48e4 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9a459bcb iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9b1a2fa2 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9c25175e iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaddb4d8a devm_iio_device_alloc +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 0xc5c11c40 devm_iio_device_unregister +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 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 0x0d193f9b cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7b2af935 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7efb384c cyttsp4_probe +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 0x4db5908b cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xabdb1a74 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x23226d91 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x287f27f1 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4236ccd3 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x46205db9 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x50ecaf5e wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x578a0eee wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5b9e40e3 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6fdc67e5 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x841d7325 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9734407d wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa92e5350 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd3ee1458 wm97xx_reg_write +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 0x0db7ccc5 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0e5a329e gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2dcd5933 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2eb446ef gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4b43e429 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4c851a36 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x65c3e33c gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x670d56a6 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x677bace3 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7023da12 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x943319d6 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb65f976e gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xba09fd7a gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd8a9d2eb gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe63dbd59 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe7b84264 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe8f29d8c gigaset_skb_sent +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 0x0bbefda2 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2be0538c 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 0x306fdf41 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x32a73b9f dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x37ecdef5 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x56084996 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 0x773f9584 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7a8fc534 dm_cell_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 0xfc872999 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x100229d4 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 0x06258559 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x29a52c80 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9a3d3f52 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9ad19a47 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc5977eef dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe59cd8ec dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe87abcb1 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x23871be7 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xf76d8efa 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 0x09df4e51 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2c862e8f dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2da42e06 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 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 0x9bb22eee dm_rh_mark_nosync +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 0xe7b3c1ba dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf2e276b1 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 0x42d1207a dm_btree_lookup_next +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 0xa0c2edd3 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 0x0f494c75 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6dd4ce37 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7ce020ce saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x866b01dc saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9905d12d saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xae90910d saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc8df3578 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc9494935 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xebe2280f saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf612eab3 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3230c756 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3dd08458 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x87a711d4 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x9f704272 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb75d405c saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xbf9ce382 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xce82a022 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x08f3084a sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x178a66ae smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1fb59935 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x208a8965 sms_board_lna_control +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 0x5f0aa181 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5fad3283 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x62469b63 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6275620d smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x675b7cb9 smscore_get_board_id +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 0x8992db08 smscore_register_hotplug +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 0xa0f3a0a6 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa399c5ba smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa519a5b8 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa9c38428 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbb72d127 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc8605db9 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd14a5b4a smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x797b9682 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x8e307710 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x90d20194 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0e069fb6 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x0fa69fda media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x2d7035dc media_device_unregister_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 0x32ffbfe8 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x37852ed7 media_device_register_entity +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 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 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 0xff2610f3 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x05035d97 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x08f9d70e mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x18178f3a mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1d1f132a mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2cac7313 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3636b4fe mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x44ec4af9 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5c608fec mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5c9ae9b6 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x69280e48 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x77fd31a6 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x86b5d9f3 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9ed7ef4e mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa66a1f8b mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa9579689 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xca4eb7ac mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdfa87388 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xea25f302 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf9c2d2be mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x04697e69 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0512ad62 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x10ac57eb saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x18a50a85 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x31d47fbf saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x387308a0 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x631763c5 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x855dd161 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9884cf6c saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa066c61d saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa48298c2 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaa2c7f8b saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xab1d8016 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xade99a83 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb493c04e saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xce7d113b saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd1ff0596 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe5f3ff33 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xef57c717 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x004d939e ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x093c8530 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x85dc8213 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x89241e3b ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9a046896 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa7ac40bb ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbf287b37 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xb06dad1a radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xe661fcdd radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x23ce0132 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 0x37a817fd ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3b8621b9 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3e5a2386 ir_raw_event_store +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 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 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 0xcdc77fdc ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf27c1ca7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x5ad7b30a mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x704809ad microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xc52373e8 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xd7fd307e r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x610073bf tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x69fa5960 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x6b54351e tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xb49ec9ec tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xf0bd8c8d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc5c8a867 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf558e091 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x2c460239 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x7cfeae99 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xda128910 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x05f05050 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1d0f4e01 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x302d9b6f cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x32847bf3 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x52774b7f cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6b58e8ce cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x896caaab cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9305c753 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9d70849f cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa80f1f9d cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb3672fa6 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb375c2dd cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbbfa2830 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbc833802 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc877c5b7 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd322b89a cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdce08d84 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe68b4dc8 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfafcdf12 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfd461d9f cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x187dafe1 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xd4b08aa5 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x156deca8 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2342e29b em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x331feed7 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x40b87802 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x456a1168 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x45e2efa8 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x532e2446 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x55df84bb em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x60668979 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6a71661d em28xx_write_ac97 +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 0xaf34744b em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb6cce4d4 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb8be0459 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xca8a5e4b em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcc50baf4 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcecee0fb em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe9c091c6 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfaf6ab25 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3f052b9a tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x588cb574 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x9c9796b8 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc85bfa98 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 0x2ea400a4 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x526a10a1 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7185d34b 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 0xae748bfe v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc9b54847 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 0xfa89f8b7 v4l2_i2c_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 0xa867880c v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xaa964acf v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x000ba0f8 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0132bddf v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0b3097a5 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x13e52df6 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 0x24bba03f v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2f3f1619 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3d5bf6ae v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3f4d44ee v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x55f72b80 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x59bfe10c v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5d4b5dd4 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x63b5fe85 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x83d32c57 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x85b72e7a v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8cfa6526 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8eaedb36 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8f103425 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa0d530e0 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaa26e917 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xabb9fb66 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xae2d24c4 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb204095d v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbf8a5e3e 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 0xc940b816 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe62e972d v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeba8373d v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfa0422a8 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1102a114 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x147849c3 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x19b7c4dd videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x39b02160 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x573bdf70 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x61fbc51b videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x62392002 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7b2eec99 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7d423041 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7e340a35 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x93885a45 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9975171f __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb395ea3d videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb4a5d06d videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb8c9847f videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbab5d53f videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc16aceec videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc2443813 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd398bba6 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xda58bdb4 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xecb9af0d videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf130f858 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf8121b89 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfd5387ee videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x263a6b3a videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4fa59fe8 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 0xbafe6d08 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe854b64d videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x3e029157 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x8596d48d videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe888e5d1 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x039988be vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x048db181 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0b4dcd3b vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0ec89a51 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1e6d584d vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x24d715e9 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x28e6f713 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2b62c1fe _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2b8e7a16 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x31fb56aa vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x335c9dc1 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x360618e8 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3b44c735 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3f651c9d vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x41c92166 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x46537b79 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4f248cab vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4f71a4d6 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4fec4c93 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x58a749e3 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x58cbae5d vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5bbfbc73 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x60068cb0 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d4c2206 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x72bc0409 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8314a31d vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x85da9d59 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x86a62790 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x90d09087 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x912af7ed vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x95dc49f2 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x985fbbea vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xacc3198d vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xae49ab79 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb685356d vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb686f136 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbcbd6c48 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc7908c2a vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfa094523 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x33f0c216 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xd017f93a 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 0x27d5966e 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 0xdfc17973 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x1f49874f vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x4a6c0769 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x6b3f0023 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x961ecd5e vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xb00e9bc2 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0c877e54 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0dcf1703 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x151d522a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27aa0e6f v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c44fa35 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x49c6f97b v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x54adfbeb v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x56e3afe4 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5e918ad4 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6102efbd v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6692e3e1 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6b7daf42 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6d4c366e v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9622ff2d v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa2e6ec0d v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb277d680 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb289c72f v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb4cfd4e9 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb9a4d1d5 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc324a147 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc9d9451 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd99aa75a v4l2_device_unregister +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 0xed68cf4a v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf089c360 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf1d739f3 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1de744b2 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x211aee35 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xa22d7e41 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x46748180 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x827a7b92 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8aa0fe5f da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd5589a15 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd6c70cc6 da9150_bulk_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 0x2be5285d lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3e603708 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xd8b97b89 lm3533_write +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 0x479c1a2a lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x737703dd lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xb686dc2d 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 0x0368a752 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x19613e51 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x238ae171 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x73ed24ad pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x89e6d060 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8ef6f464 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9dc3020f pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb8f61596 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbefba3c3 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd55098b5 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xea6d1ca5 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x4ff247de pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x5b861ba0 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x10c9ee68 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x2a18f831 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x3e18873f pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc854039a pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xff09b3c5 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 0x07531be3 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1bca0a84 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1cd4f2b3 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x320ec76e rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4f43f2e6 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x529aaa51 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5b40eed9 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x60e3d70c rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6398c651 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7911ddfb rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x82d44930 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x88df9991 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x88ef2778 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x908b2f2f rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb69623e5 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb8750163 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbbe6a3f7 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc1894c63 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcefbaaf8 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd2ab660a rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd93ca5cb rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdcd500c9 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe41321c7 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfe754804 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3275c6b1 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x56a3d648 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x64beb964 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xae73f5b2 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbf6a0ebc rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc10910db rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc2b74127 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc6d6c23d rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc764445e rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc8238173 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdf545fca rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe63e84ea rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf7e04bd1 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x05e0e7e0 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0783a137 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0a325435 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1c4d71d4 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x32171757 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x37c36a70 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3805946e si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x42d86204 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x48ea3bb1 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4b94316d si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x544f7cd4 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x58b6eb2e si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5a86ac29 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6ebe2a6a si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6f80c82a si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x73e52f53 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x77c20f9c si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7a0baded si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7ebbdf50 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x856b2d3a si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x86fba417 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x898d8cfb si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa318d3e2 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa9fe5eb0 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xacc80ea5 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbad92176 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbc3748f0 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc6f35db4 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd8268f05 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd90018b4 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xde3ba48c si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe1a1507d si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xec16ff18 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfab1a3eb si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x736f38a5 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9485e032 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc9eaaccd sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xebb56cef sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfbc0cc6d sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x1ee4543a am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x7d7d5d89 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb242a5fa am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xefc0b287 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x48357a5d tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x6c4abe45 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x742659a9 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xf104a1c5 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x16d7da1b tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x2fc2f7b1 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x46e1a55d tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x8e756ae1 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x3cac79ca ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x1bcb60cf cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x80ca829e cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa35f746f cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd418b7e2 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 0x10918119 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x13a2eb47 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3aced66c enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7f2745b4 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7f8fc0d0 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x81e81b6b enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x83a3b8a4 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa3fcb2e1 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0c045d32 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x191bd3b3 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9d002ea6 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa373329c lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa7526f37 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc0b78805 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc17bde8c lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd4a62b2e lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x04237d28 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x153e45f0 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2abad121 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2ff7bd62 mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4230cdab mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5ed023ec mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6611ed9e mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6aae1688 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6b3d3985 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x75762b41 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7c902c65 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x97e69c44 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x99dbda9c mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa15bf878 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa624b436 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xab15d1be mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb067fab1 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb160fe9c mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb2495e12 __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb307eff0 mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc6d4e6c9 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcb02f2a3 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe524a551 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe8dd0278 mei_fw_status2str +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 0x284d22a0 scif_send +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x31f517c5 scif_get_node_ids +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x6aa64644 scif_recv +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x797632b9 scif_close +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x8825e094 scif_connect +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xc6d37e26 scif_accept +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xd9a04da9 scif_open +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xe933389f scif_bind +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xfc44327e 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 0x43ec75b5 vmci_qpair_enquev +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 0x78c9ccc1 vmci_qpair_peekv +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 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 0xd8bd8448 vmci_qpair_dequev +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 0x141e4295 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2f718184 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x399a1844 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3febf081 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6aefeb72 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6f737e56 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7f9f8f4d sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x88d5135b sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8a13e525 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8ed2d7a5 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x91aad1fb sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x920648b0 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb440ab64 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbbe17496 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x11774deb sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x34ad95ea sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x59994e61 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8eb61a41 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x957e0b5a sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa2c47232 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdeae215e sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xeb9788fc sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfca08334 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x46ca7e52 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x79e35bba cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xbbd45bc4 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x4a10f39a cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xb9e93c1c cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xc7bb77cc cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xc8998a21 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0c4ad4e5 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x2f789d72 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdac37c30 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01c60bc7 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0e51529d get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1e4ca976 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2739c34e mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c35ca64 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3ce6506d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3ec407fe register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40db6071 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x414a8adb mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4b64f121 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4bfa6ebb mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4d4f7627 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4dfa33c7 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5279344c mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5fb65536 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63aaa89c register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6b325013 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70d990cd mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7539bc8a mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x76a9b582 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x770be087 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c7781d3 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e9dc93d mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8436b00e put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x84721cfa mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8476e05e mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x863442f6 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa19db400 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab7f9457 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb8111853 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb91d564e mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1daf0a4 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc637ecac mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb7b2ca9 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9c3fb34 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0591b10 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe12c9e17 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xec9db5bf mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xef083740 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf9ff7744 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfae65499 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc749551 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0121c7d0 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1baca14f deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8b5fa16d register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8c930ddf del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xeb9fe874 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x71665ca4 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xd7780a8b nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xf83ea70c sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xc44dac26 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xefa90050 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x268a9d7e spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x14711dc2 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 0x535f8d26 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5e375962 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6dbf4157 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6e2fd9fd ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x72d4e0ad ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x967f6a09 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc93dd985 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc95a5fed ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xebd7bd91 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf36ba3d6 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf3ebe34d ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfa7a94a4 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfbdbc280 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0feb6568 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x720d002a free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8c268b75 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb2a33c2e c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbe391610 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xee432f7c c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2332743d can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x29a82121 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5952bfa4 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6bd7c521 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6f9f9385 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x73000584 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7e2812df safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7f23d992 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8b2e2667 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x98628a94 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbbd33e6a register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbeb84afa can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc8dd4d8c close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd0a662b6 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd10a933b alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe6e289c8 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfbd17615 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfc76da0d unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x54773d87 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x57b62a5b alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x6fa92e2f unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xfebc26bd free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x1ed6134d unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x537ae2f2 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb3faea35 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfcb65fac register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0123a63d mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x084a1cfa mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09eaabd7 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ae2240f mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x125bc460 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12f7fb9f mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x169dc42a mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18426a60 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19761e49 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d3aa69a mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1db57ba8 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20898ffb mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20e8330a mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2175facb __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21f20d61 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22c3c50e mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x235c663d mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2947b650 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2aa81a27 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b01933c mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ea9d161 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fc2bac8 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fd579f8 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32f661ec mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x331db084 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x364ac4c7 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3691a6b5 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37176193 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c479d7d mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c60477e mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ddbf366 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e2ddefe mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e7d3a8e mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4094f9b6 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4224c9b9 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43548bc4 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4742a229 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4797c26f mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48258589 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x491021ac mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e359ec4 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e9591c3 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4efbce28 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x509115b8 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53eb0147 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54675db9 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a704c31 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b8cf4b8 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5cde1a1d mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d1bbc40 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60c00049 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6261108d mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6538983f __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6775d9e6 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b5b5ace mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f8dd341 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72fb20c7 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73c0f295 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x778cd5e0 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a9a51e3 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d1caddd __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fef166d mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x801adbca mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8323d793 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83ba417a mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87747807 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87a00451 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87f5656f mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x885fe05e mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88fb1ba8 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a1f25b1 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b447e2c mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e6aa501 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91d36449 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93fc6bb1 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x974d6857 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1b06866 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa59c2ffc mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa64d8303 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa90e2a2 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab12f40a mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafe2974e mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4c6f41b mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbeee0468 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc044f2e4 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0a305b3 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc123fc41 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1e74cb5 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1ed72df mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc26f8232 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2acff48 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3470312 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc421fb7e mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb072290 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb654a98 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc1340c5 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd75dd6c mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0994bed mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd60761df mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd91ed29b mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdadf7e17 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdaeeeeb2 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc3f6865 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xded5e6ee mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3821e4d mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe408d897 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4fa97bc mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe701d0bb mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe73aa93f mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9636b76 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed4b744f mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedd2e326 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee8a52c3 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf22592ec mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2f4679e mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf37f2302 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf40fa61c mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf41901f3 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4f8704f mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6f2dd5e mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9b1237a mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfca658ba mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe251435 mlx4_get_active_ports +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 0x0a1bd9b8 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1139433c mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14a2d751 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x186f05d1 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1baed878 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d079df9 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1fe22b5c mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26dcb733 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27f5d9ea mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x321ee877 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c39eeb6 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3cd51ff8 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f2a27fe mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a55e27a mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x511569a5 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5282e2e9 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58860711 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x616508fb mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67615de6 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75777334 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b8bc87b mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d89c01e mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dfe2a3c mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x824c567e mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82679dbf mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84a1f2a9 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8865fb0b mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9018ec8f mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaaee5926 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xada55377 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd69aafb mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca1654cb mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4ee3492 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6075bd3 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb420135 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x1a26637f stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x2d7f2c9f stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xc7c1aae2 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xce1484e9 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x289adec6 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xc976edc2 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xcf507ae8 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2a648d94 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x34c4c32a cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x519b2301 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x51d3d147 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6c83789f cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x77c97ff5 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x788db542 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8e6dfc22 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x90f94bcd cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xaf146319 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc32904c7 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xcef1ce82 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xcf8d64eb cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe33fa578 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf3326b9e cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x42a25651 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa650fef2 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa90fd8bc macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbd141b02 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xbd596a00 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x901f8eae usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x98d2722a usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xccd9321c usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf4dfb34f usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x16a7162e cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x44e2b51f cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x576ad654 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5c596fac cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x65777a12 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x69892c5c cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdc3b885e cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdfd6ef83 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe65ce3dd cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x05cb3dae rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2b6054a7 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x33c8371e generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb9d8ad69 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbaa03459 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc780abc3 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0126764f usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0e910969 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x171b201a usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a8b3b70 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x30e50cef usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x391bf484 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3b1a889a usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3bc019d4 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x48ce41a1 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x533a0841 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5cc7529d usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5d3f8198 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x68543e1f usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x691489a5 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6d22fc4f usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7905020a usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x851e000a usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x858e0a1c usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8912c2f8 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x94fc0edd usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9e3689a5 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9e600141 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xaccc491a usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xace5616e usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe0c722a usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc483df3c usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc93b300d usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xecbc902f usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf0f2bfad usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf1c0538f usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf52bb142 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfe612b19 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x489cc0ad vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x55c57181 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x583c7f43 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8cd75b0e vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1961d6f2 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x467f79ca i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6a35ec14 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x70c0612d i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x70d9258c i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9104a578 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x98920ca4 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9d71a06f i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa3cbcc96 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa5461e50 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb2672661 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb605f56d i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd51c3e2c i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xedb328f8 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xef2ed551 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf6097431 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x401573ee cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x4b286afa cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x6ab74014 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8f1ceae5 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xa3ac8c9f libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1f8ada65 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3606a629 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x46c7c59c il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9c80d56d il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb8ddb08f il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x10f6e321 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2405a90c iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2d245fee iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x31eaad92 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x39570395 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x41b29870 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46f9cefd iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4e3b72b4 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5186f65f __iwl_info +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 0x63895c34 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6541f5f4 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6fe0ecbb iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x77897591 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7f97f7ae iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8257c079 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x89985a82 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8a6d87e5 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x91ab5488 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x994cd3c8 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x99eca3cd __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8e3fa2 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xab4a9c3f iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xae72dd6a iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbc75384e __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xca1ceefa iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdd12260d iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x06a3e04c lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x10ac4e8d lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x31ca8703 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3a620008 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3e8132df lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3f84b9d4 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4c91f440 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x611be555 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x652aa99c lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x782a07db lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x894a4080 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x99f06117 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9cd11bf6 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb94dd204 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd10565a2 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe60463fc lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x06394ff4 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x09dc4c84 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x287c2329 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2b6de889 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4e09b6c4 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 0xd26637f1 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe6950ec7 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xeca92e03 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0a3a418b mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x15a47484 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2f7b4848 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 0x4162f935 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5d3c843c mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x61b759f6 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x68949d08 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa97ad649 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb3054fe9 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc4730acb mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc5b3030a mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xca2e736c mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdb7475f9 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf1505d0e mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf9c54a21 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfdc69abf mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfe843eb0 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x10d7be72 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3c8845b7 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5cd0a481 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6b2f9e5b p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7b746c5b p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9d936607 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xad0ead4f p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc6c78000 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xddee43cc p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x052b8831 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x98ae9277 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xbff910b3 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 0xdc97055f rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0317600c rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2999c7a8 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2e5f4442 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x39e13b40 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x468ca7b7 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x471b65b1 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4b87da76 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4dc564dc rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x56a8fae3 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5a12eb66 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5c2a4338 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x679fc178 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ec8e08b rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8033c202 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x89fa4690 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8a16294e rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8de5bcbc rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8f0d9efb rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90d13d3f rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90e8b119 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x951d2ec5 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x97f0bdc4 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x98adcea4 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9d0b02f5 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa51696a1 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa7e5bdd0 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8200a82 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb5ce418d rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb8238de0 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb840d4c7 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc61977d0 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc81853f4 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcf426aa2 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcfdafd89 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd4a3f23b rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb82028d rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdfb886bc rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe044a409 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x217b4ecc rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x32681cd6 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x73b3a508 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x84cc5d22 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8934f651 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9e706ae0 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa154aa2b rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa72b2592 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xba33a8e8 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbab2a31d rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc0c5c399 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc3de8b14 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xca7bef56 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x083d3469 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x238e3ff0 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2969701c rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2afdc48e rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2b3bb512 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f0cf6fb rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x337a6d7a rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36e2e443 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3c70bc35 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x402ca310 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4f781bcd rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x52d7696d rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5342139a rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x57459067 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b2f02a8 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5d3ca4bf rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x638214ce rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x63e7908e rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x659df14e rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a8d6990 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x77f31ddb rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7946b418 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7cdd442d rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7d160d24 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7e47c211 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8de44d9a rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x90792dde rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a0cb106 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a29bcf7 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa02ea637 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6f41948 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaa1a3a66 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf2c5f35 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb35a3ac6 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb1e5838 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbfb9420a rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd16b72d8 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1be486c rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd60d1c82 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xda2e986b rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc0aca59 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe1d2149a rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeea0ee1c rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf1cbec66 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf48416a5 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa371927 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x30e15cac rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x4f70f656 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x52794093 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x64b1dd21 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x89e59f32 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6dcb8fd0 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x794399cf rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8921600a rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xff583f44 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0bd9f8b8 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1b2c7e89 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1c424ace rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3c5e6b57 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x428aed35 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x68a0f1f0 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7722bf18 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7d6bc3a5 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8c634726 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9f253390 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcad89503 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdc36c18e rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe4fb09f1 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xea04ca18 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xeca23a45 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf9ed81ce rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x51ba3601 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f5fea98 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86b0ba16 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe325c549 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x081e9c4b rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x16ef3e49 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x43782b38 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5518ed95 rtl8723_phy_set_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 0x7770e963 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7c7bf28a rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8247d2a3 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x89353c12 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x90b1854b rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9c757fdf rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa4215282 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa4388ab1 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa6b0c9e7 rtl8723_phy_rf_serial_write +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 0xb793b913 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb865ec1d rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb8967ded rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbc0b8f75 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc3915d5d rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc76b4496 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc95f0416 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd80fc971 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd96edfe9 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xde112727 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe72524df rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeb9b6bca rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf29b78db rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xffdc46a0 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x00251a41 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x278908aa rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x27f0b1aa rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x306d220b rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3084be83 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x308c5142 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x372da481 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5dc35700 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6db3dbf7 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x72271fe1 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7615fa38 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x78c96988 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb5f5460e rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc0ff9d7d rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc3d8b0df rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdb2b8de3 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe7d19cd7 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x3d011b9c wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x741016f3 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xefde825c wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x03a5d8b3 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0ab7214c wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x10e13179 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x12d5fc1a wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x198769a2 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2691941e wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x29aea9f5 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2a8f2fbe wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c18e5b8 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x43247ff4 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4552d547 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4c0da3e7 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4fba7fb7 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x506f3411 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x539c8c8a wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x54da8855 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x57a95136 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x58d058a2 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x66ade94e wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x680d955b wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6f4afde8 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7141cbfc wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7420b837 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7684cffd wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7a577a3f wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x81701e32 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8465ae80 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x857d0979 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91e12620 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x92f172bc wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa01bc69e wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa0f1a456 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa5ce5d24 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb664a63e wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc77372f7 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd12b9afa wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd4ef11f4 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe553121a wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xec61957f wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf32d38db wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf859b70a wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfc15e2be wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xff6bd016 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x6b667357 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8d08f20f mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xcac6766a nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x1b9e3301 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x1c605726 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x3c674a11 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xfb802cf3 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0a2e637d st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0d255210 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1adcd413 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x297467d9 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x47ef300a st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x782f4de2 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbbc78d6e st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xc2e21ba0 st_nci_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x2d352d84 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 0x32d07c77 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 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x84448122 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/pinctrl/intel/pinctrl-intel 0x223c065e intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x77eb8f07 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xd1795a79 intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xe2f6df6e intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x233aa4a4 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x8cd9130b 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 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 0x24ecb3e7 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa7d93473 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe951ecd7 pcf50633_mbc_get_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 0x1e12ca0f mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x8802cb69 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb805430a mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x49959f01 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x59399a32 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7ab2e860 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa5a8cfd8 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf572ae92 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf86d62ca wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x862370da wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x00301627 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0eb50064 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2604364b cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c1a41f6 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2deb04c9 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3219dec6 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34500ecd cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3c9e8a0f cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3df80e64 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3dfc47d9 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4602f104 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x47eb5aee cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x548775ab cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5568897a cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5740efba cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x59e9fc29 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5accf436 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5d913863 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6e861dc7 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f109574 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f1886bd cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7818abef cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b5dffdc cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7c968a36 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x847ce87d cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x882dae28 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8b9e52a3 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x97244ab3 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d582a8e cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f4ef3e5 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa3c90e13 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb315e541 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb62e4c0d cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc59e7992 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc6a91374 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcb16f68a cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xce7e0609 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd54e37b0 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe1d594eb cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xec29180e cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xedacc926 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xefd30f7b cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf6003022 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf913fe2b cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfa4246cf cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfeecfe9a cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x11d1a273 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 0x5977e0f0 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x818f5e2e scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8595c402 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8852dc36 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8c9b4a88 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xfa7265c7 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x05317103 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0e6738f4 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x14c9ba09 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x22836baf fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3ad29ab6 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x479da95b fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7e39ba6d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc6e72880 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc7ca0db6 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xce0940ed __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xddaf7bd6 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe1e2d35e fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xee3c8f74 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf18b8094 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf667f629 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf88f8330 fcoe_clean_pending_queue +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 0x054e7b65 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1325f14f iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x28878bc0 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2cf9b0ad iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x385655c8 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c2c3923 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x40254726 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42251113 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x46ed43fa iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4d3ea9a1 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50175af8 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5037901c iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d4e414a iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68422485 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f9c7b89 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78678f8a iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x793bed31 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8484bb55 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x93236198 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x978cf1f4 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98b5bc43 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa120d47a iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3facc4b iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa5688737 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa82f1ff0 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa9726a6c __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab42fb43 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xad88eab9 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1c4b04e iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb2077ed1 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb965effc iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd2e7025 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca9fa461 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcd5107c0 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd452b43b iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5b2bc21 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda941adf iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe0854e21 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xea985fb3 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee3a4e25 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf4ca0190 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf4f6796d iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0c837bf0 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3f75caec iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5a0c3dcd iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5f6c77d5 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8105a3f1 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8d8e28ac iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x90812591 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9a1e9bf3 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb4ddbc7d iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb89436a3 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc190e695 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc9073577 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcf0c4c74 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xde779314 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe384a049 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe959f9ea iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf32ce001 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x093ad56b sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0ac3f64d sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x13577e4c sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1f17852e sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x235e5768 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3686be39 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3fab3209 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x400fbd34 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4124099e sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42afb2e5 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x50ac3a30 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x53af7de5 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x55737602 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x580582ca sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5de065de sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8636383b sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa1d8d646 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3da18e0 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc1816877 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc4744b61 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdd2504da sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf4b0766 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xebec7b07 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xff27e52b sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13dbcda7 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1e8ad718 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x234f55b5 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x31bae6a3 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x338746d4 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3cb7c4d6 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45f97926 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47d7ab7e iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48f2c3c4 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50f804f5 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x56588e98 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5bb0d8e0 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64aa0d2e iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64ab67bf iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x693a1616 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c3c6b99 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6ff249bb iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x70125260 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7229843c iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x771f0563 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8031b6d8 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 0x8d864217 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x936d4ea3 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x94c7a4e5 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9624e0e2 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x99186a7f iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9e565ad8 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa473273a 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 0xbc4fb14a iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe56b19e iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc45cbeda iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc4d9c02e iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc7c25075 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe058adb2 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3e6e5c6 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4b396f1 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeecad8bb iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf2a457a3 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf2c84b9a iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf42ed0d4 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x0010e683 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2f7fa225 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa7851c99 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xccfa69d3 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 0x1de57956 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 0x162e9a59 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x83ee8a2f srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xab8178d2 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xcce6db39 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd017ec6d srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd78e1352 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x26c57db0 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x4a33ff13 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x69fd994f ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6b4148bc ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x040101a1 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x55409a36 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x959f224c spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa6c59a1e spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc1a2f2b4 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1bb042d6 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x43e8faf5 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x99a71a35 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfe98105b 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 0x03791f2c comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x03acc397 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x11b94f0a comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15ebb7dd comedi_alloc_spriv +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 0x2e1113a3 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x42926c7a __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x45708674 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5aceaad8 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x63873d92 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x639a5795 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6c458eba comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6d0f0225 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7327aeb7 comedi_dev_put +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 0x9e2a1197 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa50028f4 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa98c9630 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaf46e123 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb140f9df comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb18778e7 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb2493045 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb5805aac comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbad0c7d6 comedi_alloc_devpriv +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 0xbed3fc5d comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbff66932 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc4ba4b42 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc503959e comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcf7d0736 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd893a453 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdd2b73e4 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdec58367 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe5956f22 comedi_nsamples_left +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 0x0e4c42cf comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x1ea47a90 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x1ec23471 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x3fe397ff comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x52ef69f3 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x5ac55b52 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xedd16cb9 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3e13ba27 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7a4d2d70 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xb411de53 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe139974c comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xeb05f8a5 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xeca23f15 comedi_usb_driver_unregister +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 0x04e478fb comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2fbb058b comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x694b9f47 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb8d7e0f0 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb9d7745a comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd16957d9 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd316b9ff comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xc8c3295a adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x1eafc71f lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x237d5c7d debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x9466e9ec lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf06a882 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7623e59 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 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 0x58cca4e9 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x593a3deb synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x71162001 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7140c8fe spk_do_catch_up +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 0x947f7b23 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa18753b1 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa9c3ba52 spk_synth_is_alive_nop +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 0xbd96a5fd spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcac9e5c5 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xdfece4cb spk_serial_synth_probe +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/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 0xf0c9bcfb 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 0xd56b089c int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0xf9d4a399 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x30a888c1 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x3166cfc5 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x5c881243 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x7c6d5287 intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x40c6a75d __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x5faf6ac9 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfd85c2d6 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x051709ed usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa441588a usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x91500b74 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xb2c9b1d5 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x08856819 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc36e197f ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xd36dce5b ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xdb86f18a ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe378f2f1 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf69aa392 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0a6a3854 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0fca1632 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2ab51797 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x355cbbaa gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x42f815f3 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x74ba3ee4 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x94743725 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9ff1f2f0 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcf0f2650 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdc0641d6 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xeacc4e61 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf1ce4325 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf43d80c4 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf723c40d gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf7ed7421 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x2df5521a 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 0x8ed5f8bb gserial_connect +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 0x254c6d12 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xb2c0f7f5 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xe7a1a23c ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x00036575 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x04df0a10 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 0x0c8425af 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 0x237cf686 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x280c0d7d fsg_store_removable +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 0x2dedbe39 fsg_show_nofua +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 0x428f5e6d fsg_show_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 0x59138b9c fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x697e7070 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 0x6e6cdc19 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x75950e61 fsg_lun_fsync_sub +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 0x805e3e13 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 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 0xc5858ee5 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd17c2a73 fsg_common_remove_lun +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 0xeda40c11 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0292624c rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0c2b9101 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0d6edec6 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2657da07 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2af54a18 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x495df5a3 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5031ff91 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5903a4f9 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x640c87bf rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8c3e48d2 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x98624e94 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9dc5b112 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc2cb21b3 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf0238bfc rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfb70cfaa rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x04fd2e8e usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x07d36e54 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0b322529 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x164f8854 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x199920f1 usb_get_function_instance +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 0x3fdd346b usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x41e2f012 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4c076e48 config_ep_by_speed +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 0x5a77282d usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68fb731f usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x87c355a1 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x88743431 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8b39a3d2 usb_add_function +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 0xb0247fa1 usb_get_function +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 0xc9e9200d usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2a24ec0 usb_add_config +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 0xed2d4a85 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf2270e8c usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf7d00f67 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfb669620 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2efe507c 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 0x39d29169 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6552ee9e usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6863bbdb usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7b0705ad usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x94a5314b usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa94f77ad usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xad3c8761 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbbabc7d0 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd29c99d7 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe3d148b9 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x40365955 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x6142f541 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x04f9f2a1 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x23f10707 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3a017b6a usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4eab9216 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x67afdd7c usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8985afbe usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8e9c5ebb usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9d1e2a46 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd4b66c4e ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x2a34cc4e 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 0x13451931 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x14706330 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0aef6f28 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0c19d6eb usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x12c59027 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x14401aa5 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x401f977b usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x420f7214 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5530bd0b usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5a553e53 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x620fdf35 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x690269fd usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x697ee2b5 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x77a15fd6 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7f463f04 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x87f86069 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8b76062b usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xadf197ed usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc1be4723 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdf00e0da usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe40e8973 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xec57430a usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xee9763f5 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x13ac3847 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x207c2a19 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x27ad3ba2 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35e3501b usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3629428d usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3f4d44ca usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x41156bcd usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4bfd481c usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x50e6718f usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x577f5792 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5f7b967a usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x61c34288 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6bf82a8e usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6fa89463 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa76fc3ee usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa94750eb usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb1369cf2 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xce237ab9 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd380ac14 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd952824a usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdc10dd3c usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe02f03c0 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe377d8c2 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf71fb403 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0532db52 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0ae1d5bb usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1e22b8cd dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7c52b403 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x87235d7b usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x99749228 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9ebe2436 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd870b2a9 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd96231f7 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdb187228 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf1047591 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xfdaf09d2 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0574497a __wa_destroy +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 0x1931e40b rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x548a97db rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x85aed41c wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x869f7421 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe0b30606 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf3c049ab wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1c3b9657 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2236cc49 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3a666bbf wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3ad43923 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4a4f57cd __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5a9353e3 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7b642ba3 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa8040c89 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xad6c1a8f wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb8d8bdd5 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc62f6e61 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcb37f06d wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe885d123 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf1595550 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 0x2dbe6fa0 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8210887f i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8e79f74b 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 0x0160b866 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x039697dd uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x084036c4 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a463705 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d5ce50c uwb_pal_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 0x13702899 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1ab9087b uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1b77d47b uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2b9603a3 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2cd5b13b uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x309889d8 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3471ae60 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x369c675f __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x40f124ed uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4b47882e uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4cdf8464 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e698816 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x53fa9fc9 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5b1e25e8 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6290ec72 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6a0b39b5 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6b7eb598 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6c90b223 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x74af1fe8 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7d2ef8ff uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7d44ea26 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x806b9d06 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8c02e879 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e8ea28b uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8fa0ef9b uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x905b6557 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa25ff5b1 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb1fccb70 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbbb401fa uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd3035406 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf48897f7 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfb652dc1 uwb_rc_vcmd +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 0x806f8c49 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x88a33465 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 0x9b447001 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa0c3ab8b vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xbb1acfd7 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1caca60 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_virqfd 0x046c48e0 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x538c5135 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0e4877c6 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1444826d vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1889ca4c vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x23b0c927 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2a2f63ff vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x30e73f0d vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x38bb47fe vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3bf06916 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5e0359c7 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x60d5a5a0 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x67f72d1d vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x681bbb39 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6990bc78 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6d66c213 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x717ca91c vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7728c503 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8c3b6b0a vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x940893f2 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9d27c29b vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa6d521d1 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa753ba60 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb1dd842b vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb9258b57 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbd8fbed4 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc46334e9 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc5965979 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeb26e56d vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeba8aa9a vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf51814d2 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 0x209ca32e ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x591aeff2 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9223e987 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x93266ded ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x979b623d ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa828714d ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdf9229e8 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x090ce392 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0f4c287d auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x30acb9d7 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x422e1af9 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5e8289d2 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x8b9d35d8 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9c576fd5 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbb00680a auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf813f293 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf81f7ed2 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x93e43a50 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x75b0d11c fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x83317953 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x54810ff0 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x97be410f 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 0xacdd0c55 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 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 0x0086f8ee xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x65d960a7 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xaae9ead1 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xbaa01206 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 0x0382d225 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x643ec1ea nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x68f695d8 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9f859dd4 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe03e1b66 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe7dc6c69 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf088a938 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04103cca nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08a9da2f nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08c330c9 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08f13f8a nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a752ab7 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c225f65 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ca88167 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e38cdf4 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1408e308 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x147a0a18 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16bafb84 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20a6e1cc nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21758ed5 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x235dbf8a nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x251fc60e nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29056b5a nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c286ea1 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c422c19 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f05cd11 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3182659e nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x352d957b get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x356df946 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x373093e6 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3803419f nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a78769c nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d5fdced nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f12fd44 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40b402e2 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41b73c3f nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4287a53b nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4541d277 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x457199be nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4579aaad nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x479d5f4c nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47fb5d0b nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49d02cce nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4abca37d nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fb99d9a nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x524f04ce nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52686541 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5318101d nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54498f7b nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54a5246d nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58d93610 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a32bbbb nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b577b43 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bd47b9f nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e66ffd4 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60150022 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60ca3ee3 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60d0b31f nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60d96e96 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61e44f77 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62091a9c nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63239e32 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63b4720f nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65199e87 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x679bd3d8 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x698ace35 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a0a19cc nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a306002 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70e1839d nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7216a279 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77772479 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77b4f8cf nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77c3bbb8 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78e72e23 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79edc81d nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c7cd9ef put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f07012f nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x805afba9 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x864b73a5 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86963626 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89a7ee17 nfs_statfs +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 0x91eeafa0 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92af946d nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96d9ce84 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96f88f61 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e0dda1e nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3c264a5 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa69794ca nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7a4b723 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa85209cf nfs_get_lock_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 0xabf5b0e9 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad418cb9 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad73c6ed nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae10abe3 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafc51f19 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb166fcaa nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1a2b3b7 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2977811 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5091903 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8c8a074 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf1e6b95 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc081bd37 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0ab91db nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4192b66 nfs_pgheader_init +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 0xcb891d19 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc632b38 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce2e5883 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce56bb12 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcef6590f nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1097a35 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4cafb78 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd506ab10 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda7d3d21 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0493ce2 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0fecbb2 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3508dec nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe67ecf65 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6d5685b nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe752eb60 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe829cc6d nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xecc17d9a nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee21c9a8 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee7ccc91 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee9e3238 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeee50c86 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef4617ba nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf675a55b nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7441b4b nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7484a30 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf97a7721 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb1efce5 nfs_get_client +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 0x1d229993 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0802e2b1 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0829068a nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ea3928e nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x133af2b3 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1b2b4f2c nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ff1a93b pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23b32d38 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2855d501 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a1db99a nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a92e1b6 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b809c65 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2db8a722 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e1c765a pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f5cb41e nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3435b6dd pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36f04da4 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3b83d711 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3bb9de78 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ddb4957 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4056cdd9 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4752fca8 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49455c43 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5fa90cff pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x674602b6 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6af543aa pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6d14f6c0 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6d677601 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6eee3086 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7d0c2fb2 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9199aed0 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x94d3f503 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99cf5b48 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9b9430c7 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d701197 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa4521824 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa511b653 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf1ad007 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0e9be3f pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbda7c6ff pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4a83458 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4dc8967 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc88380ff pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb5b73f9 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb75f898 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0be51d7 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd1f89acd pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd3f598f2 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd95c2367 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda46384e nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb2a85d6 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd517370 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe042d6ec nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe43a5930 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe779bf58 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5a8418e pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7c0bd64 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd80dec5 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x13826f36 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x4e184254 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 0x2e1bbfd9 o2nm_node_get +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 0x5cc672b9 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5ce8e938 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x66ca3f69 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 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 0xd2533243 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 0xe46a16e8 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xecab907d 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/dlm/ocfs2_dlm 0x11fd65d9 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x79d06f51 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x86550c67 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb44b5aba 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 0xdc6f2b08 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf02fe1ed dlm_print_one_lock +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 0x126d24eb _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 0x31ed7c6b 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 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 0xfefc33bf _torture_stop_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 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 0x547cb0dd lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xe43d5490 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x2195780d garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x2aaa81df garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x5b10e3d7 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x7790c3a3 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8c2abe6c garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xeda92c6c garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xa0dd662c mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xa2ae7ae7 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xb0b85a00 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xda647a12 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xf3be4a65 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xfb494664 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0xb59b7e85 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xd877dd12 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x963e6e0b p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xce94f2e6 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 0x6cd7a4f0 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 0x01d5dbd9 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x12a4ac52 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x60876c8b bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x61cacb59 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8ef41730 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xdb9bc63e l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe04620a9 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xfa5961d5 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1c5d5ffd br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1ea24b96 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x26330e8c br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x421458cb br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5eb171bb br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7fc1986e br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9b298bf6 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xaf6bf7c5 br_deliver +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x2c4882e0 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xe0a0ca6b nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x04e9ee82 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0660d2a3 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0cee9e33 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0d608437 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x220fe45c dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b1d8573 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2fc12d85 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x363791f7 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x40f79beb dccp_parse_options +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 0x51f86a43 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x55960493 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x563d89a2 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x58ca1dab dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6568b5e9 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74be3f1b dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x783b1a81 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7d88b157 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7ee26021 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8166436b dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x89c6409c dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8fd13126 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97508871 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9f41279b dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xad368f9c dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb15e6211 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb7b49fea dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc50629fd dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xca7b7523 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd04769e8 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd05e8dfa dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd1789d53 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd4f88c04 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe8ea5c2b dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x302aa97d dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6232b768 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8e91571e dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc7da252c dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd6696415 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf6988944 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x049c92a5 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x0b043ae0 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x58126a9d ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x8e783091 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x1b5b89c6 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xabbae1e1 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xb36ef90b geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x30399526 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x98c6ba59 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa6affe28 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb454e8b8 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd3ecc918 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x64cab859 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x682825ec inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x79c66b71 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x86be8264 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb8d4abde inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd17718e8 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0d1c61aa ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x148b1ce8 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2cd46738 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5727d0c8 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6edbdf07 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7d2ae085 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x866f799f ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x87e81d41 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x907ced9e ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9bad924a ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc063ec1d ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xda4ae1b3 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdd860d6e ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe0adf55d ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xa2a4ff90 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x70be1d28 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 0x35ee2d21 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x80552f02 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa4bf5e58 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe30c5bef nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xf526d4ba nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x112a7c3c 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 0x33a30d74 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x5f6110ec nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x6e9feea1 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc9940c1a nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe4c74fa5 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x1a8f3417 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x53b3d5f6 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9ea5e5de tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc4c2e11b tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe20ece68 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xfc7bf3fc tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x7e733964 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x81e436ad udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb47bc4bd udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x13083100 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x1e4f2eae ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x20d54073 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7b93e001 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x95db682f ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x58324030 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x8ae65255 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x7485f936 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 0x2299ffaf nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x80c4b9a2 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x988c0ac2 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xdc8f0bc8 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xe568d1d8 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x087b2e35 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 0x039ce361 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x238f8f7b nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x51bcebdd nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x54b40013 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe220e9b1 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xf3d17576 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0ef075ea __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1f66df77 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2f15a31d l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x381e9cc0 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3fe7368d l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4c24f51f l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4f1fabea l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6804823e l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x93556d78 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9a55ecfa l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc23a9cd5 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc7bfd4b4 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xce146ad6 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdee2c208 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe599f958 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf78c28c5 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xcff4bff9 l2tp_nl_register_ops +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 0x3470185a ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x47dc21d8 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5597240a ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5bdca92d ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x60250232 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6a0c88d5 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8048ad6a ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x80cca96f ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9998a4ea ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xab74f0eb ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xacad6a63 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad241be4 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbddda17a ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xca63a9a5 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdc6fe737 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe295c07d ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x000b4d13 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x067fa7be ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x115ee083 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x20d20869 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x211db0e8 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3e9d6b9a ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x55cb5ca4 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5d765283 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x71ce168c 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 0x8cab3ee4 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x90f334c7 ip_set_add +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 0xaa2369c4 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc82d29cb ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd6a80a81 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf702cfdc ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfbb3324b ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x381612ca ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6782ca40 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9c58056f ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf2f6660b unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06460ac2 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0aec71af nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f7dc8d1 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x10433591 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x12b92a0b nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x12ebae43 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x134ecb9b nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15b71162 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x164de28b nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16fc040d nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19021aec nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1eb2393f nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1faab375 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x270d1e2f nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289fbba0 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2af69b5e nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c3c7c28 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36f84bdc nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b05e0c8 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b866556 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x406becef nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x473535b8 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x508a73bc __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50ed82bd nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51119440 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52a03915 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x554c327d __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x578bd4a8 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5cae00c3 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e226ff4 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5edd4c5f nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f59eab2 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 0x63b4b4ca nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66db55de nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6850ec83 nf_conntrack_free +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 0x6d4069c0 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d6f8830 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x736e4870 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77467df7 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ee4736f __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8475c23a nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85a82222 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87f63440 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b913419 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d6e52ea nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ecc49c4 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f5e3477 nf_ct_helper_expectfn_find_by_symbol +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 0x9161faad nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x96eb2001 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x983b08bb __nf_conntrack_confirm +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 0xb32682ad nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc701dca nf_conntrack_in +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 0xc4ec1c05 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc5693796 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7754828 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc880f6f2 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb7656c0 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd1526ed __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1693a39 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd172b53d nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1d515ba seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1e7e195 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd21f5e89 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6148ef6 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6f2caa2 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda5c496e nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda94cf21 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbb8137a nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbf12001 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdca36e48 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde6505ff nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe9c74283 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedee2f4c nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf858b031 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc5498e6 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc55ac3c nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xdcfc584d nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xa3af1827 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x653f9359 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x003035e8 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x026028e2 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x10fe4a45 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x404d9ae1 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x478b4b85 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6733a02d set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7d560ea2 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x889f7c57 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x93a1bc1a nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbf05689c set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xf7c9da81 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x08105566 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x4e4addb5 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8bf73160 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb98613f8 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xcc6243e7 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xe4566eda nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0be434b5 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x30dfe569 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3fbc1898 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4370ca28 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9d65d514 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc423665a nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdabead76 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x91e6e5b6 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xe43e3436 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x125a71e4 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x2ed86f84 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xa687ad9a nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xd798a42e 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 0x10fd5070 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1ef36533 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2aee2279 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2e39f079 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x851663e5 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x90072f24 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xaf29fdee nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xcb49f41d nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xefac0011 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x9059bd2d nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xcc211dd3 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 0x255a586f synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x3f5c89ee 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 0x08ff5c90 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x172ba58c nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x416d5a2f nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x481c1999 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4eb19d9b nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4f5614a5 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5563b1c9 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6698d7bd nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6bec8861 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x894dedb1 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8cd789c7 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xafb323c7 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc5ef6085 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcc57a5ca nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcdb82333 nft_register_set +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/nf_tables 0xf2ba197b nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xffc01683 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2dae8abf nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x396c1f26 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x496fbad3 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6b1962e9 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7ff27f55 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd9cfe488 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xebc60f59 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x5b1ba51a nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x63611599 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x9ffb9de5 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x0bd56cad nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xa47a145d nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xf531fb50 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x12d3457c nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x3880b7df nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd362f502 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd6b2a7a7 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf72d35b9 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf78b4ceb nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x26b2665f nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x641bcdef nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc3a57f50 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x38681d72 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x921a411e 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 0x08d2814b xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0d03a9fc xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x16bfa350 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1b8b938d xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2e336e08 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x30d40762 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4182e9ad xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4c2d7fa0 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x532b90ce xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x555ad6d9 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f0c1d00 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x67af2f43 xt_compat_target_to_user +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 0x8b7e7fd0 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8f3cb97a xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaf710a97 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb10d75e1 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb7ca050 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe32ddd0f xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe68b1ad3 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +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 0x5da1a027 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xcaf526ce nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xfbf329d7 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x4c7a50c3 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x5a4dea35 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xa5289af1 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3f5c03d1 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x799ac862 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x88194345 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x96d410a3 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa35e91b7 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa915eee9 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc1508f9b 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 0x16b485a5 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x253a800f rds_connect_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 0x32fe738a rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4f42208a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x531ecac4 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x56ef1b6f rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x6fb995ac rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x72b50c76 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x77ac7cb2 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7dbc9c14 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x80750f0e rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x9325a597 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x937c8261 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x9cfc4755 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xa2dae316 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb7415632 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xba3cfcd6 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xbdbb3950 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xbf6fe3f3 rds_conn_connect_if_down +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 0xe39e533e rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xe8ea8d72 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xf4583810 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xf9d0e3f0 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xfc6b6a20 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 0x0db0efba gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x50d83fbd 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 0xa359c2aa 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/sunrpc 0x0171ade7 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x020a9454 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02918ad1 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02a988b4 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04f0514d cache_unregister_net +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 0x06ab42c9 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07513a51 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09f46f3c sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d172923 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d38e3f9 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d9fdf40 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e72cb7c rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10b44fa2 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12a0471b svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x163b96d4 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16a43e12 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17776b3d rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x188b6fa8 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18b34ca4 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bd8622d rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1becac87 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1df5ba93 svc_close_xprt +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 0x1f9cc8bc sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21d59e5e unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22278a69 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2243d156 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23e51828 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25ad6ee2 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2997f27f xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b16136c xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e40aec6 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f0b43c6 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f0e4dd6 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x320abf8c rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32a0e5c3 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34796788 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36ae40be svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36e47705 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38c031d8 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39fe7759 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bec8a3a rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d296200 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fa40a91 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x405445af xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40b8d732 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x428d3449 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42e7059b rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x446f8e78 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45eca9d6 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d312787 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e50f3f7 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8e8e3c rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52ec451b svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52fc9fed rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x533d63fe xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x538be3f7 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5456eff6 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x549784d9 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558a4adf auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59f7b121 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c99965b xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d219815 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d4baff3 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5eeafc42 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60829b4b rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60b35206 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61e4ee82 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62ded048 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6476ef96 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6759d276 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68a0e973 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68c74265 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6aebcae3 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b0ab6f8 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x708df5ab xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71dc6319 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fb2709 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72b511bf sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x746ed246 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7526b746 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75a3f818 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7757c813 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x779d2e6c svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a93b1af xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bec36ed rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d3d5e0b rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ef45718 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ef941d3 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f4c45e4 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fda9b7f svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ffd173e svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x802a18ab svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8301883e rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84cbef4d svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x855f63cd rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86f4bf2f rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x875b388b xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88832dca gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x896dae08 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89f0403c rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a911ffb write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b02b036 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d3166a4 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e605b30 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91128834 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x912bc239 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9346e913 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94f3994b rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9683a9f7 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96addace rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96cb8f83 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99fdd03d rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a81d78b rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b293709 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c1479cb xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ceae0f9 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d5eb17b rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e4062d0 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa02c8f15 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0538414 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0774b2b xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa56a510d rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6c1260f svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa704b7ad xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad559bf3 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae19ff2b xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae6937a0 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0410512 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb081c465 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0df0a6c rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb23ada58 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5ab47bd xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6e0166e svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8f296ec sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9198ab2 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbabfa12d xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca7dec2 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd544eee rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe689ebd rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0bfdae2 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1187ca5 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc18a1b39 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc25adc49 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc33381e2 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4fa4ed9 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc530ab62 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6e42313 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9a033c3 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca2551fd xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcaa8d8a2 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf1ef1cb xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd097ed50 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd115934e rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd21096f4 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd512ce66 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd64e5ee7 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda682edb xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda9f82b8 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdac22be8 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbf3d844 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd36caa1 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf8dabac svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfdffd9a svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdff98670 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe09b7ae1 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1d70687 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1e336fc xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe34441f3 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4130e5a xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe51b09de csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe589a19a _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5fd5056 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe616c093 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebc83f00 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec2acd28 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed08cf0b put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeea863ff xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf12bc54b rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf474ccd5 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4795f54 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5c5e63a rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7b79047 xdr_read_pages +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 0xfbe18c53 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc419fff svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd06d3a9 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff32edab svc_max_payload +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0cb94821 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1277ddb5 vsock_remove_bound +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 0x45b6adcc __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x48f28cdc vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x67691b64 __vsock_core_init +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 0x8b092edc vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x921e8dce vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa2726790 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa7305201 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc3e9a2d1 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xce6d0429 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcf70111d vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe64e681a vsock_add_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x09807e79 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1d7df314 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2116eb55 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x25f44608 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x25fe941c wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x42a1d042 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x68dde2e9 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7804a05c wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x862e347c wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa6150a2f wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xabd011c8 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbb26d562 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf939ef42 wimax_dev_add +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1ed50354 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x27584fb7 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7b918f45 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7c051d35 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8b63e11a cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x90e5a2e0 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9b23146a cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaa322330 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe0fce0e2 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xef036a82 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf470aeda cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf8beee6a cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfa346c30 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 0x4a734244 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5364f735 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x69bd0d97 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8a3228fd ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x7c768f04 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x9cbb93de snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x357b941d snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x4224404f snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x46a725d9 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x8baa63d2 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x9dd786fe snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xaec852f5 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xf4f9259e snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x44dbcaa7 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x4a459fa0 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x800d63b6 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 0x2a9e79be snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x3e119f2e snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4c2a78e0 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4e3c09f2 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6e93f010 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa3b97134 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc0fbdd88 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc2e0c112 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xead96a44 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x079aceff snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x083ff84e snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x30a8fbc4 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x57f689c1 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x64b54319 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x676913a4 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x77c60f01 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa7300f05 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbabf351c snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc8a0792e snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe8909446 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x008d20f4 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x01110066 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d52bc62 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0e8234af snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0eb8134d snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13b4969c snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13e56c20 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x166810ad snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1a3d3e3d snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1ade34b0 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1c5418f4 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f885ae4 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1ff5d324 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2048a0d2 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2c08058c snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x318da73d snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3894b859 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4fd1a8ed snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x57d119c9 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59652e0a snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x597a47cd snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ffe80b7 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x694f9b09 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x69ae785c snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6b113fbf snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x70887861 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x73946524 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x73f76bc8 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7a92c234 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7db66ccd snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f1df75f hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x82bd1c3e snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x851d75b1 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x88e0b761 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9213c5aa snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x948daf2f snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9592bfa3 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x993897c2 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x99a5117a snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9dd7cb14 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e9e3e27 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f074729 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f734e35 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa5323559 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xac2c78e7 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb08d6158 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba31537c snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe3079c0 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe63c5b9 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc08388de snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc69cd51e snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc84d2fcd snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcb79e8db snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd0f68d13 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd3884f5e snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd6fe6d7b snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe631a331 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6badb70 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe8c134b1 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea82e3de snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xebe69860 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf0323d3f snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf2af5f52 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3076b52 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf46b228e snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4f2677b snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf9807170 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfad2ab4c snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfce689bd snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x063ec35d snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0946ce00 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1dd71b8b snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x279ba599 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3e509bf0 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb9185292 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0114f0a7 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x01f074ca snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02591923 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02f96a3d snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0506a712 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05301032 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x059ae73b snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x066f7149 snd_hda_jack_tbl_get +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 0x07349943 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09bd5311 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ba478b6 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d4d538f snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e1d2873 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f81483a snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1121ee45 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13e7d02e snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1506edc8 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x162cb8b2 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19930eec snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19c56f3b snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b75a7c1 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c89aa51 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1de8abc7 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2016c121 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2491d21b snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24cb61a7 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x250857e6 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2991c50a snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a424de1 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b6e039b snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ed2da00 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ff11445 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33e5188a snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x369cd220 snd_hda_apply_fixup +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 0x3a89b4e5 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b76a427 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3de275e5 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f262d3b azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40d85c99 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4189c243 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42370561 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x430b0c2c snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43c014f3 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44c63f85 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47fa954c snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ee2b829 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50316294 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51d0126e snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x530a219f snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55825080 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x602e8bb4 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61a2f7e7 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x630d0e80 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6325422e snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x634009c1 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65c29e14 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x668cc084 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6911fcba snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6920e283 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6cd939e3 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dc5732e azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70398c41 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70f8f76a snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7181a03c snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75c7bd6f azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f1ddd41 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82428e85 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x827be5b8 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86d33828 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87e2ece2 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x885db26b snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x893b73a0 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89d54de0 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fc70a29 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x906a6fc2 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95f166aa __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98a104a2 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98f15032 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8a0686 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c8c8d04 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e6195de __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e73e7b8 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e7a4c73 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9eb97e5a snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f1a5bda __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0263b8b snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa333e4f4 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa68cc20c snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa88ed021 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabcc7226 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabdd0f81 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1b4e712 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb73dcab9 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc8609b8 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe545fe8 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbec81fc1 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf45a2bc hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0e2e413 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc44f25bb snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6cdebd4 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca47eeee snd_hda_pick_pin_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 0xcb513975 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd863c3b azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce90e8f3 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd23932fd azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5358909 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5fd5b09 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd81f1062 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd82778b2 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdba31f00 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc57b9d7 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0bf8c02 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe43ec620 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4555415 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe671b682 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeaf2e37a snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec343fd4 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed33a204 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed4f2e8a snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf02b050c snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf092140e snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf391ad29 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf43adbdf snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf770e677 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfadb3ab9 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0bc6ac09 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0bd0aa90 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0e40e292 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x11ec15f5 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x126199bc snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2e0fbb62 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x383d9105 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5b255170 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x63fb6ba3 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6979539f snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x738c567b snd_hda_get_nid_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 0x83da7c4b 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 0x8bf847a5 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x96e69377 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9a1cd0ca snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa3318dea snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa7b86c96 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb51c1411 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcadbe862 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd76f960e snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfc003a4d snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x93d378f2 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xd3e1f71b 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 0x5946d8c2 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x73a4da99 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 0xb6aa4546 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xc6932f1c cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xd65de30f cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x0392b609 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x542a825f es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x65a80a4c max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x12eb767f pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4016a911 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb3abfb88 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf249a9e5 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 0x6f1b072c rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x0720c119 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x05e5cbf2 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x98e90866 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x018c2c4e rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x04d33dab rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x7d096dbb rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x86c6bbcf rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x42322304 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x47c2be20 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x7268bf7c sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x96d1f142 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xc5fc6b39 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x86410568 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xa4488cd5 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xde9a1b6f ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x9a5350f4 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xa8e27289 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xc523c0b5 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x215bc7c9 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x531b2034 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xdb4575bb wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xfa6c6967 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xf3eb2201 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xdf2727ed wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x2d67ba64 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xacbfeed8 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 0x511087c0 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xa5f2267f sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x234f48f7 sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x75b9bc5c sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x9df150da 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 0xc6f474c1 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xf2b21f87 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x3ae074e4 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x9fcf72db sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xa3bed686 sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xc8feb80a sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xd0b4f1dc sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x060d8a85 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0e345b62 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x17ca7507 sst_dsp_ipc_msg_rx +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 0x1f6abff0 sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x20057f28 sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2115b57a sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x26ba4fba sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x27aadd76 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x27ce6aed sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x29f58b64 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2b9bbec2 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3047814d sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x34d72b8c sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3582ad7d sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x371eb575 sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x384dcfec sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3b6497ac sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3c4dc5cd sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3ca78a5d sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x40ad8c10 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x41900f42 sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x48215a3f 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 0x4d4bf1e1 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4f97e4a1 sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x523b9209 sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5a2ae14b sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6253e92f sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x643e7116 sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6ae1fed0 sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x74ff5189 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x781463a3 sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7a5caba1 sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7e64480d sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7e754ea0 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7eca5647 sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8323a153 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x879790ac sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x88084995 sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8dc901f3 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x91b0b115 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x971d03ac sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x98a84141 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9bdc90b4 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9c92398c sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa0750d44 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa35715bc sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa540bb64 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa8c254ad sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xac6fc921 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbbc11a5e sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbc4119a8 sst_dsp_shim_read64_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 0xd3d9cb77 sst_module_get_from_id +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 0xdd2616aa sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf3300b50 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf4213e85 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf78216b4 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfca88380 sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x30efce89 sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x48b2ebfc sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x5f796117 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x7f4f544b sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x9f3326a7 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xadf42425 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xe8e40575 sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x08148185 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x8e87b4e6 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/snd-soc-core 0x0122a142 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0122ed81 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01cfebdf snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0287caa3 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0791df03 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09354815 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0943ffc0 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09d4f5a2 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b2f0bb9 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0cea63ef snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d0beb34 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d5a4343 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10113acf snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x121ec6ac snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16e0e04a snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19e456dc snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b03fa0f snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b8dac4f snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e7960ca dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1efe174f dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f57697b snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2065c558 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x215be439 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x220eab67 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24c44a8e snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b4354d4 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bdef9b5 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2df4ff00 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e9544f8 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fdb5f19 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31a5061f snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32eef8b8 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34bb65be snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3855a962 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b6f9beb snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3cad68f2 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f1b4466 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4109a473 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x430398e6 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x451e3596 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ac43787 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bea7ff7 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c444867 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f66bef8 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51fa5428 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51ff9a63 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x521cdbf9 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52c3e7b6 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53f9e12f snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54b16ddd snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54c9f6bd snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x551ec61d snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x575521e3 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a1ab7ee snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c0e5b20 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ca6ac4b snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f45f342 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63c42de5 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6925e17d snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69557927 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6afa6cd5 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70a8e243 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71eb6cd5 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7499cabe snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77308a1f snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x775f1b84 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x789ce731 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a10baa9 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ca5c666 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d0bac77 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80cc3682 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x814604fc snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8716d0c4 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87a6aadc snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b40fa48 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c1e859e snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c8a7f4a snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d368c71 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ee23d19 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x907a9246 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92209be5 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9358a320 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b24d56f snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b963e06 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d32404f snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e7535b7 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0efa221 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1b5ad4e snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4f87cce snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8c7e462 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9f03f7d snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac225555 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac9cb491 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaca3353f snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae68f8d6 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf17b9d1 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafc67c6d snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafcdd55e snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafd52d51 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1d3d877 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2097e67 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb220699b dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb315d493 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb46d162c snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4d4d554 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb50f4178 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb55d5560 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6eb1d0d dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7fe4502 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8aef2df snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8d7c8c9 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9330a04 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9efaddc snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba052151 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba28bec7 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc844576 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc058f262 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0ddba3c snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc84eca5f snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9dc8bbc snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb77fbaa snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbd0f996 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf20b588 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1ee6796 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2c68655 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd3985590 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd60ccecf snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd71bc118 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdddb145e snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde7b3148 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdecd7527 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe06771c4 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2d83b9d snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5747ae8 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6a3ccfe snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe70b51e4 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe915666d snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe96ac522 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebb171d3 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec78953a snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedd374c6 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf455a70b snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5788afa snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5c72a3b snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf95319ef snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd2d946c snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1426af46 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1e7ae463 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 0x2b6760d6 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x372b7c1e line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4183b176 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x459c2c4e line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x49768796 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x619364a1 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x870481dc 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 0xa59fe317 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa80d3d5c line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd4eadf6e line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe457665b line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf1a3130e line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf569e368 line6_alloc_sysex_buffer +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 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 0x004b4253 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x004f8b72 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x00591a4d cpuidle_unregister +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 0x009f450a input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ebcef6 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x00ecb58d mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x00ffec3d clk_register_fractional_divider +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 0x01227736 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x0145b4ad adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x015a644e devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x01720679 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f77955 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x02092586 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0245d2fc dev_pm_qos_remove_notifier +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 0x02791874 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x029084c7 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x02acdad5 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x02f0f861 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x02f1ebb0 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x02fc7c0b skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x02fe15f1 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0308c8ed fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x0313497a wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x0319fcbb pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x0328ea7b exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x035bc872 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03b69e58 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x03bf3299 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x03c5ed2d fpu__save +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04114470 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x043a8405 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x045df45e anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0471bf2a sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x04802a02 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x0484bc74 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x0489f460 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04986571 fixed_phy_set_link_update +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 0x04c865cf debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04e22ac7 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x04ebf4d6 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x04f3039a regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x051876cc component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x051e4afd regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x05341783 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x0549c39c pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05b22985 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x05c2ee3e crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x05d43d35 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x05ddff63 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x05f0d52f devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0655585e usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x06625872 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x06628730 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x06796ae4 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x0690dd5a xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x06984624 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x06b80417 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x06d1fec4 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06d6ee01 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x06d7dd2e sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x06e61f55 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x074b30d9 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x075e7fa6 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07636c1c usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x076bc149 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x079da673 wakeup_source_create +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 0x07cde3e9 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x07e017d5 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x0811bbf4 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x084f2299 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x0861c7a3 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x08644ef3 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08b19833 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x08b32160 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08ce7b01 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x08d53502 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x08e5a3f9 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x08ec29b0 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09294fff crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x09767199 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x09830c51 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x09bde386 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x09c81e93 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x09d60422 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x09e50f72 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x09ffa134 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0a19cf21 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a648361 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x0a6ff694 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x0add5dc5 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b09a1ff pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x0b18b83b nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b1f1104 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x0b2b8124 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x0b3a13cc pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x0b3fa3e6 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x0b416fa4 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0b41dadc platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b53ca9b regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x0b72f502 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x0b8615b8 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0b8a5e37 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x0b8dc6e9 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0b8f76dd led_classdev_unregister +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 0x0c108be0 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x0c173be0 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0c1f989f devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c42fd79 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x0c50ad19 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x0c781b66 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0cacd6fd regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cfd62ce regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x0d240814 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d7509fd pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d884fb5 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x0d896b27 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x0da4710e skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x0dc03c9f gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x0dd18f09 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0dd38679 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x0dd9c763 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0dfe0747 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x0e00767f digsig_verify +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 0x0e2a4a17 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x0e4632ae usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x0e4d818e reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0e601420 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ea7d613 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0edb07eb class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x0edfd1b5 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x0ef37510 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x0f0603a6 dma_buf_vunmap +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 0x0f553204 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x0f602c62 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8a6d7d ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x0f8d6655 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x0f9164bf devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0f922f91 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0f9fb919 dma_request_slave_channel +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 0x0fe38e29 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x10114c45 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1017ba01 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x1047c871 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x105d02af hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x106380c3 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x10647cab pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x1089dd81 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x108c2d2a blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x10996134 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x109ec6ec usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x10a757b1 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x10b5a75e register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x10bc648f pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x10c33f84 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x10dc40ae unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f45c69 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x10f78d1c ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x112e0910 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1141549b blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x11586566 __gpiod_get_index +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 0x11b0412b pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x11bed199 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x11ce5bfa devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x11d2301e skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x11e00a6c crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x11ec1bda exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +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 0x128d9549 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x1294d80a get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x129e3b83 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x12a4404e shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12c634b6 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x12ca034a pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x12cb291d ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x12d5401b posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x12da186c spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x12e8685c map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x12f0eb86 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x12f965e2 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x1307a27a crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x130de01d trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x131053bd rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132192a6 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x1345d65c devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x134729bf do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x134daadc usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1386593b ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x139f5513 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b7e976 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13b93ed9 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x13cb902f kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d08f7a skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x13e45239 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x13f300e6 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x13fad06f rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x140eafbb pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x14258b85 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x14310dfd fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x14376a4e sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x146c4bbb usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x14b4b4be xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x14f80049 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x14feac84 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x1503cb92 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x15164fdd single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x15230d85 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1523b667 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x152783d2 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x15421d7a __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x1543498d gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x15843842 simple_attr_open +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 0x15ccad17 acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x15cdbf4f bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15dacc14 sync_page_io +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 0x161c338a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x163f8301 device_register +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166959eb usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x166ed68c sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x16c25aab thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16c27818 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x16cd4bed tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x171121be tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x17483841 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x174ccba4 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x17515996 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x1756358c blk_end_request_err +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 0x17c63e37 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x17eb45ce __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x18124f99 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x1818dc10 sysfs_create_groups +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 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x185d3345 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x18698b3f ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187bdfd2 device_move +EXPORT_SYMBOL_GPL vmlinux 0x1896ba6f pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x18a86bf4 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x18a95015 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x18e8cc4a crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x18fc49c1 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x192fe96c xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194db2fe regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x198558f0 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x1991738c rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ab806d power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19e38fab tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x19e79db3 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x1a0a05dc i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x1a0d4d7f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1a38dcad fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x1a8a37f1 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa7bdcc blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x1aa7cab8 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x1aac6ced devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x1ab55619 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1abf9665 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae2dc38 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x1b0a11cb dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1b0a55d2 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x1b0cbcd4 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x1b151838 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x1b152a8a pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b714a04 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1b7a728b ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x1b7e8341 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x1b829c60 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x1b83e441 nf_ipv6_ops +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 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bc6ef07 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x1bcce17b __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x1be4276c pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x1c257c60 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x1c2b5c75 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x1c34bbc2 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1c383850 thermal_zone_get_zone_by_name +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 0x1c6325c4 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c6c1021 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1c7e745d tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c82b915 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8c1c0f ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1d3d9475 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d689652 wakeup_source_drop +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 0x1dab05d0 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x1dade819 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x1db502cc regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x1db91328 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1df329a4 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e10fb63 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x1e1ea46c trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x1e2534d8 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x1e2f2c86 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x1e38ba2b fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x1e3b59d3 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x1e3d4cb4 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x1e4a551f blk_mq_freeze_queue +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 0x1e7692d9 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebe79e8 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ed41a4b cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x1ed44a42 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ede364f xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x1f0ff4a6 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f2f9451 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x1f50e057 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x1f5ad322 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x1f5d122e acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1f69cfe8 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x1f71ccb4 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f869e71 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x1f898dd7 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa52690 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x1fa736d3 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x1fad8982 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x1fb6f9dc regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x1fcf68a0 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x1fd99830 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x1ff3eef1 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x201991df page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x203e4186 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x205c5a1b __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2060ae46 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x207f2ede hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20a21dde blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20aa956b extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x20b2f3d1 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x20c4f7ca wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x20dfad2d device_attach +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x2119c6af acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x2123b36d swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x2125a0dc usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x2139047c tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x217828e5 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x21917964 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x219365c4 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x21983ff6 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21bb72f4 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x21bc4c9f driver_remove_file +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 0x21ce0ac8 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x21d60ec4 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x21f10ab3 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x2219c520 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x22378885 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x223ac050 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x224e7867 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x22795e59 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x227e45f2 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x22932d8f __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x229ebba9 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x22a496f0 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x22e82736 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2303d72f mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x23064590 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x230aa8d1 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x23179e5c skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x2335ce8b user_describe +EXPORT_SYMBOL_GPL vmlinux 0x2340c49b __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x2352ddd2 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2354b684 clockevents_register_device +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 0x23a9c015 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x23b1df98 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x23d3d246 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x23fe0771 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2416e096 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x2445170e virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x245f4877 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +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 0x24b6ab47 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x24c205c4 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +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 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x25697b1e skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x256f5ddd rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x25823fdc gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x258a1df8 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x25922471 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x2598ccd3 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x25ecfdc2 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x25ee06d2 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f2929d pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x260e2a4d blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2633c736 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x2634a833 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x26477843 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26662f7e crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x266fba16 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x26720864 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x267dabec dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26ab885e skb_gso_transport_seglen +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 0x271322ca dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x27313097 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x27741ac9 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x277ed08f crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27b18d75 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d41a54 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x27d92167 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x27ec3333 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fa7e32 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x280527fd wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x2871c124 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x28748bdc xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x28b46f68 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x28bece5d __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x28e03e3b usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28fb7039 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x28fef433 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x29640b2c inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x296d0631 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x29717876 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x298d0a27 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x29a4929e ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x29ad3899 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x29c0f4f3 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x29dc7105 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x29dfef99 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x2a2de1d3 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x2a50a636 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x2a5514c9 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a8b309d usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x2aa5cba2 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x2ab32eb4 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x2ad6a019 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x2ad7ce6d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b02b095 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b069ab2 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x2b0ff99b usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x2b497fcc xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x2b61295f mmput +EXPORT_SYMBOL_GPL vmlinux 0x2b70fadf sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x2b8c5809 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bb6e220 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x2bbd3718 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2bfadf37 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x2c1ded50 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c4d552e devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2c7389a3 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c89e71f usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x2cc08340 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2cd78224 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d056b9b input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2d0f1c46 regmap_raw_read +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 0x2d301513 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4cdeda ata_sff_softreset +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 0x2d967899 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2db2fe12 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x2dc00e4f __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x2dce48e8 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x2df9dc30 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e1ed7eb pci_find_ext_capability +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 0x2ea70b56 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x2eb80ef6 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x2eba1d88 serial8250_do_shutdown +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 0x2ef7cd03 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f264adb __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f55d92c tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x2f594b28 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f64ec59 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x2f766c59 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x2fa0c7a9 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x2fbd5875 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2fc452a7 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2fce9d28 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff9eb8b hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30147780 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x303b4b29 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x303edeb9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x304d6d96 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x309471b6 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x309d9924 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x309e694f pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x309f0f2f sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x30b151d0 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30e420d2 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x311d0d7f wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3126e550 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x3127667b acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x31685123 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x316f470f ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x317c4abd evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x318666a8 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x31916874 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x31b7e44e usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31efa439 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x3208f147 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x320d3601 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x320de7a5 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3288fca8 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x329f1e25 power_supply_changed +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 0x32ddd5b6 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x32ebc1c0 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x33026fec blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x331df5aa regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x331efcc1 spi_write_then_read +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 0x33780ecf find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x33839b36 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x3393761e tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x33b64bb0 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33f5d08b __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3406e622 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x340b46fa transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x342a7225 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x3436c3d5 scsi_flush_work +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 0x3487f86d xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x34a4f63d irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x34c440a3 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x34cdc0bf usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x34e9c06b rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x34f10645 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x351826b2 crypto_unregister_algs +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 0x35791f2e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x35990967 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35d625f1 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x35e0d614 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35fd2a08 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x36050ec8 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360e2c5f cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3626b81c spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x363b44a4 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x36853179 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x3696c2f8 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36de6ac0 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x37055d4f tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x37061d78 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x370d6dc6 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x370d9f7d __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3731d522 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x374055c4 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x37772eb3 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x37be31ff key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x37c73772 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x37d25e72 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x37da5e30 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x37f18c8c inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x384c72ca bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x385efb40 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x386c1963 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x38b99d4b __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x38c1d848 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x391e07b8 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x39358a63 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x393d4a42 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x39a2d5ce ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x39bf4ae4 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x39c5721a xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e048d5 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a1eaf83 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a3d2d6a bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x3a466d61 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a5196e9 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a904993 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x3a949978 crypto_register_alg +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 0x3afa11ca percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x3b171945 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x3b202569 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x3b5324de ip6_local_out +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 0x3b83aa98 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x3ba9224e print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x3bb04af2 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x3bbf9ec7 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x3bdf66a2 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x3be9de74 acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x3beaa8c9 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3bef0a59 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x3c32ac59 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3c59f694 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x3c5df699 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3ca4dc0d crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x3cbdacd3 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ceda25c dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x3d2b73c8 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d8ebe76 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x3da0d53b device_remove_file +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 0x3dcca70e tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x3dd287c8 ipv4_redirect +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 0x3e3a7f7a dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e5b8aed uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x3e5bdd49 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e6d5854 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e8b380d regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eab5b6f irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x3ebeef20 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3eca3609 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x3ed1cd86 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x3ed70104 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f17cfe6 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f3328a3 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x3f453cbe phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x3f4a5dc9 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f854f28 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x3f863a4c cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3f918c0d unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fa9a3d6 crypto_alg_mod_lookup +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 0x3fd3ba88 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x3feae2a1 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x3feb39c3 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x3ff66812 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x405eab37 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x408212ba hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x40956073 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x40adc5b9 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d02e4a dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40ef1e5c scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40fd7bdc crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x41142f27 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x41144065 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x4119a18c regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x412dbf61 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x4132b156 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x41377d39 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x413add64 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x413d12f2 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x4149e82f max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x41742338 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4182bb45 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x41948fa7 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x419a0c03 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x419bd823 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41d145ea ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x41e77d14 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x41f3c273 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x42069b10 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x42241d5e fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x4227baaa device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x422a6a05 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x42371278 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x42389f55 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x423a0434 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x4278ee56 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x427d5c68 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42a32ca6 to_nd_region +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 0x42d12b4f __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x42d5e52e cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x42d81ac4 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x42e2ec86 rtnl_af_unregister +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 0x432fe624 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x4363e800 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x4366b7e7 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x43688584 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x4386699f set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43ace929 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4405606e inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4412ab9f ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x4430b5fc init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x4450d760 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x44615680 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44902846 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44d2c9e2 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x44d89c06 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x44d8f1ac irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x4508e361 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x450d3f51 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +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 0x4556f735 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458a5bfb trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x459e85ab i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x45ac7bac find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x45aded9b device_dma_is_coherent +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 0x46002ef2 crypto_default_rng +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 0x4615a81e debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x461d635d class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x46243829 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x462ce4ff pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46434934 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x4672af3d regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4672d756 scsi_target_block +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 0x469c5d17 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x46b1c097 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x46bf41f5 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x46e0e615 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x46ec6074 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4724b170 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x4727b370 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x4748c649 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x47597300 rdev_get_drvdata +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 0x47b155cd crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x47b72923 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x47bfa9da of_css +EXPORT_SYMBOL_GPL vmlinux 0x47c34751 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47db0124 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47f478b3 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x47f4f13c pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4820fa03 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x483a9d4e i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x48488445 ip6_redirect +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 0x48d2c4d5 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x48d4c96e devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x48d969de acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x48e527ca extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x492ecd31 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x4969b8e1 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x4973048d bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x4983663a inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49c45b86 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x49d0d6f2 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x49e4045e phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x49e4eb33 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49ebcb89 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x49ee83d6 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x4a2abfab put_pid +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a416120 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a7096ad pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4a81e33d __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ada3c29 device_add +EXPORT_SYMBOL_GPL vmlinux 0x4ae06b7c kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x4ae9922d of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x4aeef5f5 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x4aff0fff virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x4b06c3dc thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4b4536c0 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4b641799 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4b7f6097 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x4bbcc203 bio_associate_blkcg +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 0x4c3253b0 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x4c4978a7 platform_device_register +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 0x4c7d1fc1 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x4c86b855 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4c8cb8e5 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x4ca4a028 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d37f40b pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d640c08 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x4da66532 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x4dc4b2e3 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4dcd77d9 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x4dd6b591 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df5b7a4 xen_xlate_remap_gfn_array +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 0x4e4998ed regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e5e7a68 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e7fa931 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4e97ae6a md_run +EXPORT_SYMBOL_GPL vmlinux 0x4ebedeba usb_deregister +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 0x4f10cb0e regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x4f1a1baf ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x4f2ebacf serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f59c1ac simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f8dc0ab regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x4f909b5c devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4fa1fd7a dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x4fad68f9 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x4fb39833 cpufreq_generic_init +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 0x5004b62a ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x5026f7dc crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x502ab052 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x503c5092 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x5048ad63 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x505c3ca0 bsg_request_fn +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 0x50c4129d usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50e3523f pm_runtime_force_resume +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 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 0x518efd56 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x519a2209 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x51b01444 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x51e1b91c hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x51f9a027 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52181819 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x522b1f71 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x52393ace ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x52675dd4 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x526f3a6f ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5276f1a2 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x52890dcf fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52c7a52c pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52da6e18 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x52fcee47 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x52ffc480 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x5325caf7 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x533f41b0 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5343e6b3 acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53610106 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536bff57 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x53815b50 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53b7c0b1 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x53cf0af0 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x53d5d073 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x53eba65e blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x543f85d4 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x5454966f sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x54608d4f ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x547248a3 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x54903a12 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x54905d3e phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x549192f7 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549fab89 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x54a12c8d skb_to_sgvec +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 0x55092b64 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x553b3422 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553f7528 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554d7308 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x5550969d tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55564753 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5559ba28 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557a6e01 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x557fb531 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x558eae8e debugfs_create_regset32 +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 0x55db96b4 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f17768 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x5602cbb6 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x561a3150 usb_for_each_dev +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 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 0x56856a60 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569e81a9 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x56aba7ab ata_pci_sff_prepare_host +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 0x56ec413c usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x57016a65 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x570f9989 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x5715a122 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x575bd851 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x577ccf06 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579a2ddb pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a90311 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x57bf3db2 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c5b3ed handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x57d03370 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x57d05a40 pskb_put +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 0x580afad6 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x5811f5c4 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5826521d spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x583ab0c7 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x583f109e ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x58488004 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x585eeb36 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x587bd46f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x588a0f11 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x588dfdd5 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b44283 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x58bf3f8a ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x58e4b29d cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x58f05b64 regulator_unregister_notifier +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 0x5922d07f ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x592fce56 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x59361e81 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x593731b0 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x5947380e tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x594ac16a usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x596180e8 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x597c1879 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x59990013 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x5999943e usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x59a7bad4 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x59a9f0af device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x59ad0b97 smpboot_register_percpu_thread +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 0x59e5681e crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a0c4a54 sock_diag_unregister +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 0x5a39a41a pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a4b37a1 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x5a72adb7 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5ae43100 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x5ae6a3a7 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x5aec5077 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af301fc rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b5157ff bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5b84666d device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x5bb5ace9 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x5bc23015 sock_diag_check_cookie +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 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bdc1437 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5bf50e7d cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x5c160838 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x5c1bd423 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x5c219fc8 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x5c260ff9 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5c42e61d irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x5c443e09 dm_accept_partial_bio +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 0x5c5ed31c inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c89379f irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5c8bf36f xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x5c9802df wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb97afe cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x5cc25ad3 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5ccd79c9 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x5ce620ef platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x5ce8014c sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x5cf41699 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d409106 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x5d5ca512 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5d61a9f0 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x5d63a9bb regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5d9b9eb0 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x5d9be4a1 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5dba2314 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dcd7160 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x5deb3004 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5defdeee crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x5e1b2a18 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x5e4bcdd1 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5d1d61 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x5e65c984 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x5e69edf3 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x5e93458d pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x5e9aa6b4 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x5ee45631 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x5ef9fb9c xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5f0b4344 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f44b1ea da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x5f45acba kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x5f63fbad ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x5f68bbc4 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x5f6e3ad5 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x5f7622b9 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f8f8a50 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x5f99c47b rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5f9b47b3 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x5f9cd27a dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x5fc0b107 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +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 0x5ff3683c blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x60329c91 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x60476f8d crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x604b77e0 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x605f84ba inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x60655208 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x60730775 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x607b871e usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x609786d1 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60ba6af0 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x612eae83 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x616994c3 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x617ab484 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x619702f3 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x61c107e0 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61dd05b8 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x61de0c50 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x61f9a351 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x6210d1a9 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x621db6eb debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x62222701 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x623e5b9d user_update +EXPORT_SYMBOL_GPL vmlinux 0x625727d5 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x6261d6bb xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x626dfac9 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x626ef996 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62c7ab5b blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x62cfe668 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x62d6d767 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x62e743eb rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62ffbd85 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6311f5e9 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6322d9b4 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x63408013 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x634ff57e sdio_writesb +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 0x63b4f179 vfs_listxattr +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 0x63eb9df3 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x63f15c46 acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0x63fc3686 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6405ad02 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x644fa97a scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x64785827 klp_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x647ec8b4 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6485dbd4 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x648ff7d4 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64a5555e usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64bc42f4 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x64ceb499 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x64d23d16 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x64f5ea37 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x64f6c120 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x6507ada2 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x65120550 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x65286903 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x653fa44a blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x6540b747 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x6545c7d4 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x6551e873 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x657899ac wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x6591670f rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x65a9845e debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x65acedea ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662253f1 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x6630c746 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663c46bc sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x664474b4 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x666c0b39 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x666f0a76 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x667f4b91 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66b1860d swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x66bd92c4 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e88f7e usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x67222aee nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x672c42fe device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6730435d __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6753e71d ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67ab3b2f fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x67ceaf49 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x67cec054 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x67dac150 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x67e7433a gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x67f2f7ba acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x680583ea shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x68099d7d i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x680bed5f rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x683dfd68 nd_mapping_attribute_group +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 0x68668850 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x686a68a2 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6881c7a1 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x68b5fb03 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x68c518d0 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x68e49113 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x6908c737 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x69221e37 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x6923aaa5 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69251cf7 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x693038c0 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x69331fd6 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x69540f64 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x69579ec7 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x696b712c tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6985e7c9 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698d00c1 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x69ac387d dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x69bd430f pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x69be5c5d acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x69c4fa29 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x6a0387cb of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x6a10d1d2 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5b6f19 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6761df component_add +EXPORT_SYMBOL_GPL vmlinux 0x6a6914e8 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x6a6b300e arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a6d61d7 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a97e591 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6ac37fbb dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ae6b45e nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x6affa53f pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b222d6f ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b347b3e acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6b5fc6da device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6bb591ad gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x6bd58a59 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6bd8b89f shash_ahash_digest +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 0x6c2c2abb ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6c2dfde9 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5ce5af xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c91588b hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x6c9bcbcb relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x6ca1d029 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca702aa rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdfda26 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x6cfb84d2 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x6d22c247 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d543e43 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x6d93b359 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x6da2e9b4 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x6dad4842 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6dff1234 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x6e03c747 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e335388 dev_pm_qos_hide_latency_limit +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 0x6e970ac8 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6ec1cec8 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x6eeed0c0 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x6ef18d79 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f298373 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f7d4484 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x6f838367 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x6fb5c368 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6fb8f5aa ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x6fd17372 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70037837 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7005f272 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x7015b36d driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x701cc1e7 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x70330b77 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7035ddf0 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x703a2696 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7065493d led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x707c5876 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70930bb2 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x709b0278 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x70ad10ac set_foreign_p2m_mapping +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 0x71047d92 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7111eae7 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x7116df98 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71270332 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x712deb0f pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x712fc5fc event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71784fa6 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a81dc3 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x71aea1b9 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x71b296ee ata_bmdma_setup +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 0x7215f46e crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x7217927c __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x721dee7a devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x72258e80 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x7231144a dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x729cea1b xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x72a13bb5 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x72ceb8f6 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72dd3fe3 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x72e2a5ef dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x730a12f9 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x730aa859 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x733138db relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x73437b1a iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x73535ed5 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73afb372 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x73b3df71 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d3b6dc key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x73d62916 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73df518a ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x73e4dfad pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x73f18410 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x74021c04 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x74032ca4 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x7416b70e regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x7417a4a8 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743a672a fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x743f6b89 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7446663a blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x744c8bdb setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x74530df4 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x74541e24 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +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 0x74b9f79b hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bf1ced pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74c0d201 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x74ccbb01 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74e500e5 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x75151274 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75315fa4 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x753609bd kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x757a0ffa gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x757eeb47 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759aadb3 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x75d48bed wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x75d6476d wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x760f037f phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x762be19a irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x7630ffb6 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x76437689 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x769b57ae device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x769b91de transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x76c95770 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x76d94bc2 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76f900f8 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x76fb3758 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x7708f256 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7724c785 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x7726d86e device_for_each_child_reverse +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 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 0x775d38a8 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x7773a87e regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x778ef5db da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x778f18d2 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7799b733 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x779a6492 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x77a68be7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x781ed227 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x7829d9ee pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x783d0b8f rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x7855120a tcp_cong_avoid_ai +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 0x78b5019b inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x78d30c09 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78e195f6 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x78edc572 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x79215f3f get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x7938ed05 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x7940979f fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x7956dc3c crypto_unregister_instance +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 0x79c181f3 device_store_ulong +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 0x79eede2f regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a0d6330 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x7a14d742 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a6e99f2 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7a8d5cdd dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a99fbf4 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x7a9b4782 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x7aa75c6b hrtimer_init_sleeper +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 0x7af88e58 scsi_mode_select +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 0x7b3445dc seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x7b3f3b80 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x7b683848 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b742a58 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x7b89505f devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7baddfe8 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x7c0343a3 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x7c336abd clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c3979a5 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x7c48f947 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x7c64f047 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x7c6b6c46 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x7c71b6cd wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x7c875848 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9e515c usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7caa0622 devm_regmap_init +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 0x7d20f681 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5b76ac rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7d8a526e ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x7d9c2402 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x7d9ef798 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7da9a7df inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dd3f57d __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de2dab5 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7dedbd35 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x7defdc3d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x7e02ee6a regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7e10f5ca acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7e1f52f8 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7e2cdffc gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x7e374ef7 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x7e46adad crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x7e4e283f usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x7e62be33 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e89b83c dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x7e99257f gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ecfb70b acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x7ed29f88 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x7ed4710e ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x7edc75a5 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x7ee56f14 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x7f095bc8 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f4c4465 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x7f4e68f8 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x7f5c80d4 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x7f8a116a subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x7f974106 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x7f9b15f0 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7fa9a695 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7fbd89df ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x7fc9684e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x7fdc1a23 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x7fe5cb0a ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x7fe8bf5a acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x7feabbc2 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x80156244 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x80236b54 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x8028f83e acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80909e93 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x80993249 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x8099d068 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x809aa618 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x80a34f77 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x80abe535 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d3571f unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80df222a pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8119ea51 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812fc309 inet_csk_listen_start +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 0x8186fc76 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x818e1bf8 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x81b5d9f4 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x81b768d4 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x8251b5c1 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x82574320 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x825886d7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x8260510c usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x82729f23 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x827da9cf fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x82991748 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x829cd069 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x82a116a6 klp_unregister_patch +EXPORT_SYMBOL_GPL vmlinux 0x82b11343 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x82b98da9 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e0ec01 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x82e275f3 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x82fecf48 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x83035370 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x83115b0b crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83549015 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x8359d3c2 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x836666ce alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83ba5fbb hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x83c932d6 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x83d8a3bd spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x83f8687a alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x840fc70d devres_find +EXPORT_SYMBOL_GPL vmlinux 0x842621bb apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x842c1b2a blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x843567a2 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84496e89 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x844c8ea6 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x846f5b53 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x84857c2e pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x848b0b30 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x84b88796 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x84c278f2 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x85042400 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x850ec79e dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x851e69a8 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x856152a7 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x858941b1 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x8597fa4b blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x8599510b crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x859fc02e vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x85c67f5f inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85cfd453 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x8605eb9d acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x8623630a input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x863c91ae devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x8647c24a crypto_alg_sem +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 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86dc80f9 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x86e01036 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x86e02dff efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x86e300c9 ata_cable_40wire +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 0x8704fede crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x873ef35d blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87516518 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8757cda1 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x878aba71 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x879305e0 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x8794b5fc skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x87989165 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x879dfdb5 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x87b86860 blk_mq_freeze_queue_start +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 0x882127d9 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8851c986 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x889cb51f usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88bc0d73 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x88d6b372 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x8900a2f1 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x8907c220 regulator_list_hardware_vsel +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 0x892cdb5e device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x893467a9 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x8959a04c tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x896663d7 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x8992cb6d virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x89975310 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x899f157d clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x89a9c757 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x89acd219 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89cf22d3 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x89d183a5 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x8a14c9cb pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x8a1c858f scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x8a2811a2 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x8a2e480f swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x8a37a1e1 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x8a4b8066 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a6372dc usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a7e417f irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x8a81dc28 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad531b7 cpufreq_show_cpus +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 0x8b19b4ed power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8b272e02 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x8b2b4b36 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x8b2d594e irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x8b301bd6 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x8b4c7d7c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x8b76037c usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x8b86b5a7 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8b9694e7 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x8b99783f securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x8bb8b0a6 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x8bd0a97b class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8bd49e18 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x8bdd05a7 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x8bedb800 mddev_unlock +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 0x8c389495 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8c3a9ab3 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8c5c0696 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c6e7d58 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c745859 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x8c770c50 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c858ba9 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8c990321 acpi_dma_request_slave_chan_by_name +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 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8cf95dd2 platform_get_irq +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 0x8d26f357 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x8d386f4f cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d5344d3 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8d9763f5 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x8d9f5f16 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8db3e75d tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x8db49aed to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x8dbc8721 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8dc5b879 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x8de56aea gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x8deddf74 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x8e02b1ea register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8e0b3242 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x8e15d3c6 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x8e214b2f __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x8e6a4c48 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x8e98d6bb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x8eb45054 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x8eba82a5 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x8ec60e41 system_trusted_keyring +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 0x8ee0e558 skcipher_geniv_free +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 0x8f08fcd2 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x8f1a89a7 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8f27618f irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x8f43041b efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x8f59d553 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x8f5dc0a1 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f95907f clk_register +EXPORT_SYMBOL_GPL vmlinux 0x8f98ce68 user_read +EXPORT_SYMBOL_GPL vmlinux 0x8fcf6f4c put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8febe229 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x8ff24ff4 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +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 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90be643d device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90dc5dc3 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90debb8c kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x90ebd70d crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x910326f8 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x91052b1b __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x913667ec device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x91503888 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x91540ff8 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x9183868c rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x9188bf15 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91970bfd save_stack_trace_tsk +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 0x920bcb20 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +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 0x9251bd82 device_del +EXPORT_SYMBOL_GPL vmlinux 0x9251f5fc i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9265d0d9 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x926ef079 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9295e6fa da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x929878fe xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x92a03677 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x92a5c3fe devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x92b6965c acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e1f3d8 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x92e990c2 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x92ea0352 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x92f0eeab rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x92fb24e1 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x93077586 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931997c7 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9341533c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x93418c62 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x93631c4e power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x93a5ab52 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x93cb105e fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x940ad626 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9410f6e6 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9435c915 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x94706f3f vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9503c230 usb_autopm_put_interface_no_suspend +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 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x958dced5 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958e7768 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x95900bc9 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x959eb407 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x95a0c079 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95ccc71c regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x95d33429 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x95dd4e29 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x95ecf8bf pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x961c00db devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x961d9084 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96365a45 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x96368fd2 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x96431646 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x964985d7 raw_seq_start +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 0x965c46b2 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x967f489b acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9689d698 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x96ba55d6 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x96c13a40 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96e438ce rt_mutex_lock_interruptible +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 0x9757d412 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x976222c6 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97b07636 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97f006fd init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x97fc9dc2 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x982fc4e1 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9847accc rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x984a5a60 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9857fb70 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x9861abd5 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x9871819f ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98813530 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x988bb21e platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x98b3f3e4 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x99048b2f crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9943c6dd acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x9956e8e4 to_nd_desc +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 0x99c61b52 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99e34ec1 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x99ebcbab unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9a078e63 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x9a0f1c5d crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a41e3b2 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x9a51bbbe ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x9a6ab0eb tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aae19fa relay_open +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af89b1d pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x9b1ea3a4 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x9b4b4953 gen_pool_size +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 0x9bb209d3 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x9bc7567b sb800_prefetch +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 0x9bf6f4fa crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c4445a8 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c48c810 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x9c68d045 anon_inode_getfd +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 0x9cf05864 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x9cf0e13d input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d07e60a tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x9d2d237d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d93b539 class_interface_unregister +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 0x9dd5ba58 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x9dff7524 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x9e05499a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9e0d74c4 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9e1e9210 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9e35fae2 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9e3777d4 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e486197 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x9e530b99 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x9e675c6f ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x9e6b808d xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x9e8f6e7c wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9eaf62bb wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9ece7f7f device_reset +EXPORT_SYMBOL_GPL vmlinux 0x9ecf0a5a acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x9ecf2266 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed8e31a regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x9eee5699 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x9f00e728 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x9f0232ed ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f0e802c blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x9f420b08 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x9f7841e8 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f7de461 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x9f80ac1f ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x9fa605b6 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x9faaae62 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa020d07b regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xa023523d get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa02ac574 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xa043f394 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xa0664272 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xa080a67b phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa08549a0 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa094202e kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xa0c70e25 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0d2557c sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xa0d9f464 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xa0dc7e77 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xa0fa2455 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xa10321d3 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xa1086803 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xa108a1c2 pci_pasid_features +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 0xa11fc768 find_module +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15ea82b pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa17517fc register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xa175684b blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa19db194 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xa1d6f157 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f5d3df wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1fa714f __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xa23fafc9 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xa24d5751 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xa268a573 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2822d04 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa2944cef max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2b3346f usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c24a8b ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xa2ea83a3 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xa2eb7cb4 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xa32d7c13 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xa33b6305 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +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 0xa3909e41 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xa390f701 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3dcb2fd net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xa3e13d2a xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xa3e6898f sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa40604b9 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa409c135 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa42338c5 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xa43e17d9 nf_register_afinfo +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 0xa46d67ae dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa490648e rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa490ad1f xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xa49d1e0f relay_close +EXPORT_SYMBOL_GPL vmlinux 0xa4acc7c0 tty_buffer_request_room +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 0xa507cbf8 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xa5291656 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa55b7168 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xa55cfe75 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa576b054 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa5861673 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xa5bc4546 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xa5bc8710 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xa5c0693a udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5e71968 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5fbcff6 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa61c85f7 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa62d75ef usb_poison_urb +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 0xa66ce1a7 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa66fe092 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xa6980a93 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xa69ec4c5 ata_sas_port_resume +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 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa7088496 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xa71330fd device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xa72a1925 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa73e1ae2 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa744721f ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75336b4 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7fae3cb alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa7fc2ec5 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa80b1dc8 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa8117709 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa82029e5 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa86f3cca blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xa894ac76 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa8b32693 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bebafb pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xa8c733ed kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xa8c9bc39 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xa8e70703 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9000315 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa9196fbe i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa92fcca0 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93b301b nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xa946f71a __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xa94896b8 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xa95e8791 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9847b84 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa9a08973 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9c1cb0f sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0xa9c75e07 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xa9d06ba0 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9f30932 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa08a5f9 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xaa35a133 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xaa5278bb agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xaa98f25c irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xaa9bbeb4 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xaaa04036 find_symbol +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 0xab09f8e1 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xab0a60be spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xab0db8ba usb_remove_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 0xab9b552b br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcabeda serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xabcb17d2 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xac079e51 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xac1b7584 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xac48524a gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xac7487b8 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xac81fbd7 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xac918eed inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xaccce2c3 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xace58045 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad01d764 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xad032474 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xad05c250 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xad1b54ae __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0xad3a6a56 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xad47effd ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xad48df4e devres_add +EXPORT_SYMBOL_GPL vmlinux 0xad5be673 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xad6c0139 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad9f4c57 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xadea1a7e ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf6d4fc pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xadf7c64f rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xae2ee9c7 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xae35be1a transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xae4eb172 pci_find_next_ht_capability +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 0xae9bc4e1 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xaead74dd rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xaec50bb3 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xaed2126a security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xaed816b5 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xaeef45e3 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xaf1e2d19 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xaf66dc9c cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xaf92666b syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xaf995366 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xaf9cbd05 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xafa27ccc pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xafb22fb5 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xafb53f4f kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xafb6c45a task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xafbd8968 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xafc4c3c8 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xafd2cfee x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xafe0fe25 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xaff801ca ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb002010f irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xb008ba72 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xb014420f md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xb019dd0c __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xb0261179 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb03daae5 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04e4ced led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xb071ed9e __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c98568 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb0cc7475 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xb0ce11f7 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xb0cf8d91 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d388e9 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xb0dbff37 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xb10e7d26 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb111734e device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xb13679e8 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1454715 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xb16aac0e debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xb16d1c16 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1899a72 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xb18ac10b serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xb19fb208 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xb1a5ab40 __dma_request_channel +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 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e2f4cc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xb1fecfd0 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb20f1a7c blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb24a687f inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb268c1f4 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb2868b9d noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xb295ec53 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xb298b6cd proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xb29de8bc sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xb2ab692e wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb2b58d0f __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xb2bc71a4 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb2d170a1 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb30b0590 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb32af9f7 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb355c4eb dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xb36a709e adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb37d67c6 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xb3b08959 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xb3bf6ae5 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xb3d89ff0 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb4156971 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xb41e87c1 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xb43895c5 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb45f5c27 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xb468bf1a rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xb4759adc stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xb49a7fcf ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +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 0xb4f3d703 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xb4f6d88e thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53e4d31 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58d5b31 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b0bf33 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5bb58c0 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xb5c25bbf rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb5e16f5e inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb602fe64 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6255ff1 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63ecff8 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb650132a usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb66491a9 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xb6704e02 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xb6795720 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb6846fce inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6f528f2 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xb6f55a6c __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xb707add8 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb71aa3ab netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xb71b43a6 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb7521980 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xb757088e invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xb7725f94 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xb773aefc securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xb77da411 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xb78091e2 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xb79c0845 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xb7a89f04 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xb7bf4b67 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7dd1d20 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb7e41ecd arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xb7f6e2fd subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80270cb register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xb80b4354 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xb81b89a8 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xb822189d scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb85cb2a5 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb85de0d2 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xb878cfdd __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xb8b29919 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8c7cbf9 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8e73e09 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xb8ec3706 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb942d431 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xb94f7e19 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xb963378e ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb96c5501 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xb98b937c bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b26b48 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xb9b71e90 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c9a9f0 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9ebfb0b devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xb9f6b7c7 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xba140dcb crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3549a1 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xba59f648 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xba5ca094 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xba5d0501 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xba7588e3 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xba797fe0 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xba91b090 __online_page_free +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 0xbad3adc8 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xbaffec33 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xbb016f70 srcu_init_notifier_head +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 0xbb45c87d crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xbb576616 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xbb5aedd0 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbc9c9dd pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xbbd2d81b crypto_givcipher_type +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 0xbc1530be ata_sas_scsi_ioctl +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 0xbc6f7f7d iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xbc754175 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xbc8a3529 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb3fa52 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbcb6b3f3 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcc0e0e6 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd7418f mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd43c06c power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xbd5b6081 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd6feeb3 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd8cd7ba bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbdb4e261 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xbdbc47d4 crypto_ahash_finup +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 0xbdf0ede1 klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0xbdfa64a5 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xbe07effb gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1fdbcc do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe26f308 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xbe3163b2 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xbe370cad srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbe5d0996 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb41622 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbec8c6d3 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xbecf1ca0 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xbed15e17 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xbed6299e ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf03a9ca blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1e97a4 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xbf64127c xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xbf70c548 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbfae2ddd pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfb35824 klp_disable_patch +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfdab83c ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xbfe25e18 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff88e13 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc0175eab usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc0190b0c rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08ca68a acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +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 0xc0e410f4 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xc0e79dda key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xc112eccf pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc115a8db irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc13c0bcb ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc16d0f02 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc1710029 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1a25680 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xc1c0058e blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xc1ce6c79 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xc1d05379 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xc1dbafd5 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xc2033781 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xc213d027 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xc228ca4c perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc259dae3 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc267d2c6 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xc26b1031 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xc26e3a87 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc28715d0 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc2916f4d ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc29ab78e proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xc2d97f20 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc2e1d7c9 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xc2e8561d spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc2eed3d3 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xc2f1be92 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xc2fe4f24 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xc300b698 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xc300fe34 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc33b0aaa ata_ehi_push_desc +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 0xc369e616 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37f1547 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc3f1ca13 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xc3f41cfd dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xc4103d06 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xc422ce72 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc4232e6c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43763ff max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xc447dd93 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45af273 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc481a9f4 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xc485183b find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4bb353c da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc4da3c30 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xc4dd0c3e devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc4ecec37 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xc4f0a4d7 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xc503b144 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xc50dd920 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xc51089d1 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +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 0xc56d1aeb xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xc573f17c pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5830ec4 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xc586ec58 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5b49ec4 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xc5c65031 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xc5c8e708 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xc5d5f9f2 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xc5ded463 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xc5e735cb sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc6301eb6 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xc632b296 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc6648a85 device_create +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc691de67 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a8cd33 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xc6b7f9ca blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6c99c7a pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xc6d03315 xfrm_output_resume +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 0xc70463ff platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73f99ec nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xc74bfbf4 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xc7625ffc device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc780bec0 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc79b6a76 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e93b7e usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc7f42dc5 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xc7f64eb7 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xc80868f7 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xc80c0b20 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xc813ee2f acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0xc869bc6a crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc88e52d2 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xc89ba8ed gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8d66671 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc90d2d39 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xc90fbd91 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9207764 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc930b4ca usb_driver_release_interface +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 0xc974dfc2 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xc97fc8e6 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xc9818bf8 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc9953f7f sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xc9af13e8 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xc9b8df5c aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9e1ddb3 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc9ea8da3 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9fb5688 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xca04bb67 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xca34ff8a inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xca48eb66 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xca513423 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xca62c9e3 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xca76e5f6 nvdimm_name +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 0xca93c0a9 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xca9b4eaa shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac4681d __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb43022c xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb51b8f7 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xcb586903 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xcb665a3c kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xcb7537d1 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb925401 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xcba22da1 acpi_dev_gpio_irq_get +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 0xcbfe1f91 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xcc20434a hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcc383162 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcc497a60 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0xcc527ebf crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xcc64b087 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xcc70509b acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccb56592 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xccbbff76 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xccc16a24 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccf6c310 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xcd16b2cf tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xcd1ba9df usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcd21d3d4 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcd38d46d rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xcd45d656 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd7e7d1a clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xcd870490 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xcd8f9433 md_kick_rdev_from_array +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 0xcdd44be8 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcdf99570 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce1dfe28 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xce3b1a76 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xce4d0293 input_class +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xceb02566 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcec3db75 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xcecc4e91 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xced90d96 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xcedb16ec mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xcedf1099 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceee4cb8 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf0d5f46 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xcf26e0e5 crypto_register_shash +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 0xcf82af3b blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xcf9b04bf i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfa3f06a get_task_pid +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 0xcfed525f pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xcff14448 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xcff8c226 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd0127ea4 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd01a423d tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +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 0xd0b452f2 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xd0b7db1c mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0ca07a9 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xd0cb9677 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xd0ccc0fc crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd0d200bb __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd0e66d9d virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xd0ec1742 netlink_has_listeners +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 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1553b3b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd161cf8e sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17ff1d0 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xd1bcd808 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd1cd2a80 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xd1e325f7 inet_ctl_sock_create +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 0xd2297f48 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd23babef wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd299f673 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd29fa390 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xd2c28a4e blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2d1927b hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2ee1ca8 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xd2f97770 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xd2fa32b3 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xd2ff575c pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xd3339c89 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xd348d0b5 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd35e9e9b put_device +EXPORT_SYMBOL_GPL vmlinux 0xd36d96ae relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xd3801ee3 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xd3b38af7 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd3bedcbc pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xd3d07b19 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd3e4a2a5 i2c_bus_type +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 0xd409df6c usb_hcd_link_urb_to_ep +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 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd450857e ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xd455da95 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd4591b2b xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xd45ea32f hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xd482601f fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c3a8cf blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xd4e4f8fc blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xd4f9b3cc crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xd50c7f57 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd514fce9 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xd53a6903 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd5430ecb task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xd547d906 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xd550ac21 inet_csk_addr2sockaddr +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 0xd57a115a rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd58b2236 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xd592b0d2 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5cd0bf4 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd5e614c5 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xd5ef2d16 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd6146dce regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xd61e807e regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xd631323a class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd63437a1 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd63b829f __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xd64d6749 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67f6d81 led_trigger_event +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 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 0xd73bc092 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd73d8fb7 xen_remap_domain_mfn_array +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 0xd77c6b09 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xd78c0857 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xd7926262 crypto_aead_type +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 0xd806b499 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xd81a13ec device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd821782a usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xd8507e12 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xd85c2c5f driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xd8621a9f page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88570b9 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xd8a1bf4f bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xd8ac3c30 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xd8ca03ab pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xd8f1be15 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xd8f7a36c usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94e3629 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xd94fa823 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xd9537947 get_device +EXPORT_SYMBOL_GPL vmlinux 0xd960449f __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xd96b72b9 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9753c69 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xd9781471 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd97ec323 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd9af8769 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd9c75fe0 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xd9c83fc7 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xd9c8f9c8 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0e9018 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xda76f444 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda8d25d3 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdaa9dd3d ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xdab2ca80 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xdabcd763 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xdacb680c perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xdad14d1a usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb00dc8a ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xdb07e9a4 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xdb1ed41c inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xdb32a7c9 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb64d1bc restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb916fd0 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdbb4910c pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xdbd1e8eb locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xdbd9dc43 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xdbdd06fa rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xdbde496a ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xdbe09876 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xdbe44ebf tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xdbe6bca3 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfab7af ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xdc0625db rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xdc0676a7 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc222712 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xdc2c31a0 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xdc4a2771 blkcipher_walk_virt_block +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 0xdc6ee52f crypto_register_rng +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 0xdce67fc6 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xdcf86c17 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1e14d5 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xdd1f216f sata_link_hardreset +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 0xdd5482e2 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd7e64ae tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xdd89ad45 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xdd97a3f7 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xddb18e00 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddea5af4 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xde02adf3 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde0f7e64 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xde12c4df blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xde19431b debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xde56bece device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xde56c9b9 xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xde8dc2c6 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde8dd875 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xdeb05020 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xdedc847b ping_rcv +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 0xdf2d4c5d set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdf564c34 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xdf5c5d50 ata_scsi_change_queue_depth +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 0xdf7649d8 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xdf773cd2 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xdf876f9e posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xdfa01d6f rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xdfb2c33e blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe2392f iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xdfe92718 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xdfec6bef vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xdfed0e88 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xe00573c2 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00de15e spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xe01ad9e7 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe0205f56 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe04e3c99 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe04fe84d dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xe053c3f7 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xe0746dac rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe0805811 devm_mdiobus_alloc_size +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 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0c811b0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xe0ed471f relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xe10c00be transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe15ccf44 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xe1627000 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xe163b177 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe16b0d30 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xe16b79ed skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xe1704fa7 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1784ff6 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xe18e180d class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe19684f0 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xe19c9784 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1db77d9 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xe1f186ce i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xe1f27512 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe1f46f95 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe23402a3 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xe23ee2d7 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xe2401ab8 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xe2441649 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xe252ba1e invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xe2565bbd irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xe261e19c serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xe266bf19 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xe280728b usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2a48b9c ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe2b3a01c __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xe2bb0bbe nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xe2cae8a1 __sock_recv_wifi_status +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 0xe3162d3b gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe3191e22 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xe3221785 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xe32aa1a4 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xe337b1ab blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xe33fe1c2 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xe3417e6c register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38711a1 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe394be42 spi_async +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 0xe3ef87ca __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe3febc45 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xe402f839 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe418fde4 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe421eddd class_dev_iter_exit +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 0xe4978162 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xe4b74087 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xe4b8910a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe4d7eccd ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0xe4e0ed6d crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe52db470 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xe5427e5c devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe56ae390 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe58836e3 ping_close +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 0xe5c3e993 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xe5c905f0 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xe5d55337 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xe5f2839b raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe5fefe80 register_mce_write_callback +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 0xe66bfd8e usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe673579b __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe676e663 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xe6804360 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xe6807a36 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xe6befbd7 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c9bbe0 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f4bf66 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xe6f4d3ee scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6fa109f gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe72904ea crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xe73f9bc0 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76a3fa0 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xe76f79f1 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xe770be2a pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe7785434 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xe77d67b1 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe783add8 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xe792b2f9 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xe799751e dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xe7a31fd0 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xe7b8a774 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7da1eca regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xe7ed2297 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8184e9a dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81c377f blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xe82ae977 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8510e33 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe872f909 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xe8765f15 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xe88395a2 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8bbe7a3 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xe8e66adb regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xe8e7e97e ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xe9022dcf rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe922ea2e sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xe9298d11 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xe9316619 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe9374132 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe950d0d3 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xe987344a blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xe998681e extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9a03728 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9daf3d2 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xe9ed3fd0 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xea04510b blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xea06c207 device_show_bool +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 0xea694074 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xea71e4a8 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xea91634b fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xea99e442 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xea9d36f5 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeaa8239e get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xeaeab79e vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xeaec5e42 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xeb03235b unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xeb147ea3 ata_sas_port_start +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 0xeb309a8c crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb3a13d2 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xeb772956 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeba9ea65 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xebafd1b6 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xebbfaa35 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebec8b55 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xec1454e3 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec22ee7d __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec26779c ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xec2b82db xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec62ca04 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec65848c single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xec8b78c4 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xec965a65 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xeca8363b nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xecad3b34 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xecb7d9ec device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xecc90964 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xecc90a90 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xecf0f3cc crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xecf6e128 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xecff0d12 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xed25fe1b usb_string +EXPORT_SYMBOL_GPL vmlinux 0xed2caea8 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xed2ef756 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xed48d573 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xed55eb02 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xed8c7a95 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xeda576ac ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedc01d0b generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xedca6149 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xedcdffd4 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xededa150 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee2a9ebe usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xee2c8795 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xee3966b0 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xee3b97e6 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xee56fc3a cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee7ed525 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xeeb4d26e pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xeefbe52f ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xef0628ff cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef329cb0 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xef51b01b mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xef64d3a0 ata_dummy_port_ops +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 0xefd50c86 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xefdce276 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf009f356 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xf01066eb dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0412a7f pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xf0572474 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0782dac skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xf0844c8b tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xf088e4c2 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xf0a73a9d ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xf0b734ef dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xf0c4cfa3 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xf0dc6b04 pci_hp_deregister +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 0xf11ac7af sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xf11c5652 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xf11eb7f4 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf12033b6 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf1625399 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf17c05cf cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18b037a mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xf1a43d81 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf1a50e69 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xf1ac9b2b dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1f5657c __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xf1f5d77d devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf1fe9b05 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22267f9 split_page +EXPORT_SYMBOL_GPL vmlinux 0xf25e107b bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xf263a3aa devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf291252d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xf2a54bbb ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xf2a57493 usb_create_shared_hcd +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 0xf2f51d3e regulator_unregister +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 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34c5b25 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xf35b1430 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xf35b6275 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xf364f7da dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xf36f6d13 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38e5995 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xf39a5152 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xf3a929ff i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xf3aa7aec task_cgroup_path +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 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf42f7042 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xf43c0b03 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xf47192db tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xf475454d pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf4770489 bio_clone_mddev +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 0xf4aefea6 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xf4d102dd hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xf4ed385e rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xf4f991a0 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4ffbea2 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xf50ef8a3 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xf52a8ffa call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf54967e8 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +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 0xf5c5fd0f iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xf602ec1a bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xf608ac06 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xf60faba6 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xf619b104 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xf63ba54d ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xf6531d72 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xf6681725 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xf6796ea2 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xf686cc77 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf6935352 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xf6a9556a btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xf6c08bb7 serial8250_rx_chars +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 0xf6d3b301 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6eeafae __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf70b9837 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xf70c055d gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xf70e4a4d preempt_schedule_notrace +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf73a8a7b init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf7b6fbdd sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xf7bd2f2e nl_table +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7cfd6f1 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf7e52485 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf7ec2ed5 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xf7fbb0bf sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xf80c4915 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xf82f0189 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83525ce crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xf8628b0f get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xf86f3d30 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf87d5b40 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf89afa0d uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8d2df8a wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xf8d604a0 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xf8d9cbeb ip_tunnel_get_stats64 +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 0xf91dc83a shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf92927f6 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf94080cd phy_pm_runtime_put +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 0xf9775392 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xf985693d regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xf98753db skb_scrub_packet +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 0xf9c5fa5b need_load_eval +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 0xf9e50c83 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf9ea5c1c usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xf9ebf72b extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf9f7cb3a dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa2205e1 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa3d48ad pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xfa49b94d vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xfa6531ff regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xfa802e7d acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa915e05 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa45fa8 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xfae10211 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xfaf860b1 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb0d1179 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb38811a blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfb38cb98 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb81d4c7 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xfb974527 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xfba1c75f virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xfbb4380d crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +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 0xfc287917 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfc2cec74 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc5554d7 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfc5675c2 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xfc8b9bfe ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfc9274cf ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcefc977 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xfcf1df7d __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xfd0e2df2 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xfd15b579 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xfd365619 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xfd4c1169 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd5ee55f lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd8a9168 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xfd8ea967 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xfd95d906 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xfdb9cd18 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xfdc7ee5d zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xfde57272 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xfded13ff skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xfdeee6b1 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xfdf437ce rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xfe28890e tpmm_chip_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 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 0xfebfea3a devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee02f24 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xfee05c9b ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefbcece pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xfefe9069 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff078289 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xff1a7ce2 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xff1c7029 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xff27643e debugfs_remove_recursive +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 0xffacdfc5 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xffc7219d ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xffe5841d inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xffff40b7 ata_dev_pair --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/amd64/lowlatency.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/amd64/lowlatency.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/arm64/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/arm64/generic @@ -0,0 +1,18372 @@ +EXPORT_SYMBOL arch/arm64/crypto/aes-ce-cipher 0x1595805d ce_aes_setkey +EXPORT_SYMBOL arch/arm64/crypto/aes-ce-cipher 0xa2125399 ce_aes_expandkey +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 0x14292c1b suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x15e15dee bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xaa51fa4f 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 0x2d676242 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 0x5291f63e ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5554a2ba ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5cd2300c ipmi_register_smi +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 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd38008c3 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xdf0730c8 ipmi_smi_watcher_unregister +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 0x22004186 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x3f3c7e2d st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x6d5b573a st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x8579b92c st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xb8c2cfb1 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xbf277ca1 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xd335c1d6 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1df5fc56 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x87c656a6 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x89209917 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xaae40a06 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xad98bec7 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xe7316d90 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/pl330 0x244c9e84 pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0x657f61b1 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x054a8a70 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0581531d fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x08454dd8 fw_iso_buffer_init +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 0x217cde1c fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3168301d fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x36822df8 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x41712ed6 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4a83d99e fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5ec1cbaf fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5f7a6c12 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x638d2474 fw_fill_response +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 0x6e1b542b fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x72e332c8 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8e321048 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90b481e3 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9ad620c1 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9cad6fd3 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb1777c4f fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb51a05fd fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb6120692 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb8453a80 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc18a0165 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd3a876ca fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd5dd04c4 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe1bd8945 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xff97a2ed fw_core_handle_request +EXPORT_SYMBOL drivers/fmc/fmc 0x2a07f408 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x2f1b9648 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x5d04a261 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x8488380d fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xa2886ec9 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xa547634e fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xa7ee217e fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xbacb0940 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xbfa4a58a fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xd410a5b8 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xef5e9cf0 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03cd2ef7 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x055048ab drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x085ea645 drm_prime_pages_to_sg +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 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a81266b drm_gem_handle_delete +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 0x0cdf7482 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dca2a63 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ec44306 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11cef0de drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x128e5229 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12ac51d4 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12cd4d3e drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1317c55d drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x131fefa4 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14e5c808 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15abe8a2 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16932b13 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17218c2a drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17a30ea4 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x191cd1fb drm_reinit_primary_mode_group +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 0x1ba69239 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f7844f2 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x213047bb drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2182b5dd drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2204585b drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22a716e1 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a354ae drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a515e9 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23ad9ed2 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23edfedf drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x249f3f6f drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25167f91 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2574ce85 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25c92bd3 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26a2bf78 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27d0e63c drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29090ed9 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a85c6f8 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cead2ed drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2de735f9 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e98f907 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2edcf542 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f64212d drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30108a39 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3065044f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x313478b3 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x315d5583 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31ad1ae7 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31d340f0 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x332173bc drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3385f013 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33e62158 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34319b6c drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34dbfe2e drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3572c221 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35d9f6d9 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36284626 drm_property_reference_blob +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 0x39120e25 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3925b681 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x395e1832 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aca13d6 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b0221cd drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b0f2005 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bce9cf9 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bec4cc9 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d9a87e0 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f370e5f drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fe21298 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x409bad95 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41ab29cb drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x421eb41f drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43ad3b7d drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x447629ce drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x463a89f9 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48344460 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48b85ca3 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a24baad drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a9ed91f drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b04caef drm_connector_cleanup +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 0x4f0efd3a drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f589c1f drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x502e8728 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50951268 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52521db3 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52616e7b drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x529a4f00 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53c9e57f drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55af8e49 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x561f6f30 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56b7aea2 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57897779 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x580ce278 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58122ec6 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59a4d8a9 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ad25d7b drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ade493e drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ae7db98 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b324455 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c8a8375 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5de70144 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eeae433 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f09371a drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f63a24d drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7bd2ba drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ff12d1a drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60e1c90f drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x612ea115 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62f088fa drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65b21789 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65eadf0b drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65fe6af7 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6723012a drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6727929a drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x675349e9 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x681a6f37 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ce1461f drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d2556b1 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d3e5b14 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e6e463f drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ef093ae drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f828e39 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fa9997e drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x701a4e39 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x753673e0 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77fbe909 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78dd23a3 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79cba9a0 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a092376 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bfd3d89 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c81caf4 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e920ea9 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f269d01 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fcfd8cb drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80230c66 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x811e4ce9 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81b79fe2 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85832ee7 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8680cb22 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8990ef7e drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ae0611d drm_gem_mmap_obj +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 0x915e1d08 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91606270 drm_legacy_ioremap +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 0x936b2695 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x943a940a drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94adea63 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95c0836d drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96ad1843 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x978ccbeb drm_legacy_getsarea +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 0x997b77d9 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a7ef82a drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a90520b drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b1f8abf drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bf736dd drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bf9feaa drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c2623fd drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c926acd drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cb1c315 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e0a90e2 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f57007e drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fb84a66 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa00b8e0c drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0610869 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0ba8667 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1283158 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1d1a3d8 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa34d7e6c drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4f325a4 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa655112a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6c08f32 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa713f24c drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8f51560 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9d46d1e drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaad1e74f drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaadcde30 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab892c3a drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac9afe25 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacccd5e0 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae09c1a1 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae7bad03 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf8b1f01 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0a42cc2 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb12d50ca drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb157ba6f drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1b94656 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3941696 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb39b4d8f drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb39c6386 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb475157a drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb621610a drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6e6a0e2 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7667db2 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8c51f0c drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb904daef drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9461675 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb97bef05 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba37ebb2 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbac4eb44 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb57259e drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc31d465 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd93ee4e drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbddc65c4 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdf0e7ff drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe0d9db8 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0291472 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4050fa0 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6d7f5ad drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8782303 drm_of_find_possible_crtcs +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 0xcb4c6f2d drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbc6744c drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc792eaa drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce0f85ec drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce2401c4 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf47a2ca drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf8d4ac0 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd06211d8 drm_modeset_legacy_acquire_ctx +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 0xd2590d79 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd388d923 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd493f6d7 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4f2edb7 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd57932f4 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5ddacb4 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5ff640b drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd66a6fbf drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6dc5438 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd76dc93c drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7b3af0f drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda10c66b drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb23f204 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb7b32ee drm_gem_create_mmap_offset +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 0xdeaf905b drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xded10692 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe12848ec drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe13d3ff5 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe16d8947 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3c67db1 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3dffda8 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe45e8f77 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6c78b11 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe778a469 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7fd4a3e drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe839f74e drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe85fb2cc drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe86c92c0 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe94d25dd drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb83e462 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebe142ae drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebff6767 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedcb334f drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee6418f2 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeddf59e drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0253006 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf02f6575 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf03f3abf drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf054f302 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf07a9ead drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c7a5f0 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3a36958 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf62ae9ce drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6c992ee drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7aa3592 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf89205bc drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf94f1e4f drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb40d352 drm_vblank_post_modeset +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 0xfe02c395 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff72f04b drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff7a2e22 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffb174c1 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0079a88b drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03df524a drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04bd0a8f drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x054ce5d7 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x064990ab __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06ba05ab drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x091f034c drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0be56d02 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f906c89 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x128416e5 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x133eabe5 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15487fee drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1afc5f52 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f4b3cbc drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26f506e2 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29b7796a drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f5076e9 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30f92427 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37430663 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x382644a1 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x389a507c drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3be6e673 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ce30062 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e46cc34 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fcbe46f drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42572e40 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4279a636 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42c22ee7 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x443bf108 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44c2d27e drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x479b6330 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48be168c drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x497feb1c drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c9b3b88 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x514ec183 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5457cf27 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x558230e4 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55a2574a drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x585af0f5 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5abc608d drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5caec7a4 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d7ba557 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x606e7ac2 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61884128 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69094b3b drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b4c3722 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x702d80e5 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7402685c drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x763616d4 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x783d68cd drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79934f00 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79c54510 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79fbc7c2 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a969e6c drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7af0a734 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b1c059b drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b34a2d4 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ce8d525 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f1723ea drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x808bc2e3 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8194d355 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8207e147 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84bf61f5 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91188c5c drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9176b3de drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93d68b83 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c36758b __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa63ed89c 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 0xa8059178 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa3ba0e8 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac911360 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae9cf561 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaeddc6d2 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb18ec464 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5a854fc drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7992d1f drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb99aacad drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd950525 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdc6e33e drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc367682f drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6771122 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7129687 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc841ce4e drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc961aef4 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca62be87 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb81f453 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd446fe1 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfec8380 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0275fc2 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5a3de72 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd84cc05c drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8b1ebb8 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd98c9e8f drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdeff55e3 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe307497e drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3d602da drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe67d9bf8 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6be0edf drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe92e960e drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee63f53c drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef9cae52 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1f69c1d drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf24fceee drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4bb1502 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7bdfb82 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9d2adeb drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9eacc38 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb5c5ad2 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd999b87 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02d2f0e1 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x031446e3 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0320c87c ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0377367b ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x117e0930 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1382252b ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16c5a11a ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16cbca3e ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16e08b85 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x186ca4b2 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1a193b56 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1a6700ac ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1db15842 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x216be558 ttm_tt_bind +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 0x2c1fc621 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3592b996 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d1c271f ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f05f879 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x454c76ee ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x464bdb19 ttm_bo_move_accel_cleanup +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 0x5434d02d ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5570c7f7 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5577b253 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x591d7b41 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x593798e5 ttm_bo_synccpu_write_grab +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 0x61563bb1 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x68c36574 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6d6480ec ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6eb44e05 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6fa23711 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7e3bf407 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x81eba3aa ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +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 0x97429309 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x97ebe421 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x99ca0d30 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c5603ef ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9cf6854b ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d25c120 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0e1f89b ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa9fbb46f ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xabf21699 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae87b61d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xafa6b913 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb2eabee9 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb943e82f ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc0972a2c ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcbc9e210 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 0xd3480089 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd68dadf0 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc459c28 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc6214b6 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe32f61b5 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6ec87f5 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec7cbe48 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xecd79f3a ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef811cd9 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef92d89b ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7955cfe ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf9cedd00 ttm_bo_mmap +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/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/hwmon/sch56xx-common 0xffc65b89 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x3cb7536e i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7633e579 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xac071207 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xa8273ed7 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf003a5d8 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xaedea34f amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1e7249c0 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x27b76729 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x32a985c9 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3d45f71e mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3f2c67b2 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x81e4e067 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9ed60cc6 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb3f3ab00 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbdf83d3b mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc104883f mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc701b200 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd0484117 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd66da223 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd6d38966 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe0b80ee1 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe9b2c1df mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x0f0a2f8e st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x836469cc st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x06d63b52 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x25a65170 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3e5f7896 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa71be6bc 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 0xd3c81349 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd95d7740 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x386866d6 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x4d702094 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xbf4d9203 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xfafd3078 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x336c8deb ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xa7093586 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xc5acea51 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf15e13bf ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf706ec96 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x07082286 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x4ccd2bd1 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xd90835a9 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 0x0f9d25cb st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x19994264 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3b5bbd41 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3eaec210 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6d9f1f52 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x722afeed st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7822ac1a st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x893c40bf st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa2b8c209 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xae093401 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb060b7bb st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb2236728 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbcb91ee8 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe1a58403 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfd051da7 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x3b6dd7ec st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xe3e2ec47 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x5552ee5e st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x046597c0 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x3d566d81 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x7f174267 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xa609f1ba adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x0ed186ae iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3775ed9d iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x425f1e41 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x6778a517 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x6fe796b4 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x75ddf2aa iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x80d05bb8 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x9ba2281f iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xacbf90cf iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xb6ffb82e iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xb761dd31 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xbd7a45d6 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xc3aa64ed iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xc8e77007 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xd7bfda1c iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xdde4d844 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe1615500 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x0a71ff01 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x1dc16970 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x68815226 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xaa71e209 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xc82e4a94 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xcab3d00c devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x444400d9 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xcab06bc9 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xae066bea ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x0576e249 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xce537e5e 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 0x4c33e170 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x4d2751b9 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x4fa3893d rdma_resolve_ip +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 0x2607905b ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x567a4bcb ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6026f8b8 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x625fb319 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x62a3164f ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x70479b31 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7ef3ca85 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8039d505 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8c9cd569 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x90358ae7 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x92d2235a cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb868ac95 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb923232e ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcddc3344 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd95a2757 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdef53610 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe7124055 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0531434c ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x05621251 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0720e60a ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08df5a54 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a2c22a4 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12e60938 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x148059e4 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14920567 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d4d793d ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f0af972 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f796313 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24227b7b ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x248448f3 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26c5a853 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a007355 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a3a761c ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b2f9ead ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x347a2357 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35929e68 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36b2bcd2 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x372b529d ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38a7a3fd ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d35694f ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47a2fafb ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49501c13 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b4fcdd3 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4cce8f9d ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d64bdfe ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ecc32b9 ib_get_cached_gid +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 0x576beecf rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c11320b ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x616bf1cf ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6393df06 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x651b4a6f ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6595dac5 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x673113f2 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a4cfc3b ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a80cd04 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6dd2e127 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77f69d24 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d89c7d2 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b05cca3 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a021eb6 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a18a87a ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9bfc33f8 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c60c3c7 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e26ee8b ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa56afab6 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5c3fccc ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaaf94af1 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad1f7157 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadbc2e1b ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaef8446d ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2ac9931 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3a1c35e ib_modify_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 0xbaf7e766 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc5a0ff8 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcc8b2eb ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2186e08 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2edc2e4 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc58eccdc ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc73853e3 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc87ac4db ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce7be374 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa78f25 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd54d6f95 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd63a8ff3 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9479747 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe03510c2 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4172f46 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5176b20 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7d3fa64 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe871780a ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe92b6314 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefc20cff ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf00d40bc ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1a788cf ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2a85b0f ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf62fec45 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8e5cffa ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfac93022 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb89cf40 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd3013ec ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe3ac7e1 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2653c88c ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2c99cd4f ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2da5610d ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x30fd6f46 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3565d4f2 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4a7a44b5 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x59535d8f ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6440e443 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6c364111 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 0x849e7f46 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8898badb ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x95c77973 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa5dcec99 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x034f435d ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2904a4ad ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x51fd7601 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x62c926d2 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6f7e97ab ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8ed9af46 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xac4295be ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb72230bf ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbd6585a0 ib_sa_path_rec_get +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 0x0fcf7ed8 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1e667cff iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3bd1e25a iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3d45c144 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4e2e18df iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x51688411 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5f2223f4 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x696a6cfb iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x79bc295a iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7cd9de27 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8a00bafe iwpm_register_pid_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 0x91b2a2ff iw_destroy_cm_id +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 0xa40354e8 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xac980e1b iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcea5558b 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/rdma_cm 0x1ff31178 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2c8cd23e rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2fe4cdf3 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3b7acc56 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x67ebaf0e rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x68ea7e67 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6c9cc79d rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x723763e4 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7ddcb9c1 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9160ed1b rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x92c88479 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x972d86db rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa14eb54e rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xab56921a rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaf1e8c98 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbb7f2f4c rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd0274965 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd453d636 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe1510c72 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe4e6e6e9 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xed163c41 rdma_listen +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2d50752e gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4c33fe9e __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x800b605f gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9936b7ac gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa4edd082 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa5c4d514 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xccb6360a gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe5c32a9c __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf17c1c6f gameport_open +EXPORT_SYMBOL drivers/input/input-polldev 0x8fc5f715 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xcbca8358 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xda289b73 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf3c04aee input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf53c63d8 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x91b8ac0e matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x5010b6a2 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x5e7bd736 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xdb246211 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xdce1f6ed ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x7f54e48f 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 0x15cbfc45 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x524f2c78 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5aad3770 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6a19925f sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x928dbfeb sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xabeae8e0 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2f2ef17f ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x7f4cb511 ad7879_probe +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 0x08559065 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1ba246cb detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2583dfc3 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 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 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x782726d1 capi_ctr_handle_message +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 0x9effff82 capi20_put_message +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 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbdf4ec52 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc2e3f982 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcda7fd04 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdca8397b capi_ctr_suspend_output +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 0xffa6954d capi_ctr_down +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x13691e1b b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2549be0f b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x455cb1d8 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x59be9d15 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x68d39332 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6d28672c b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9b2ffe02 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb0638dca b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb8af6ed5 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb9c4d44f b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbb6e62ef b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbe05dd2b avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd41c0697 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdc434f5c b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xeef3b5b7 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x35fd0229 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3dadf3fc b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4c9ad39a b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5b73e22c t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6faa5754 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7bef4ab3 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa1ac70cf b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf4a2e651 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf802129b 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 0x6c3ff3f7 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x707a245d mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xac0ab961 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xf6771265 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x5a9147b5 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xeebe2321 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 0x71714876 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 0x260fc52f isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x382c620a isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8a3bc1c2 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa6cf27ea isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xea333ae9 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x23879139 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x6690dab6 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xecf94c5d 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 0x0d520521 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0ee4faae dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x16c3c21a mISDN_freebchannel +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 0x2420f04c mISDNDevName4ch +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 0x3b5df12b mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x41665e8c mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x460fc931 mISDN_unregister_device +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 0x6af64b07 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x97de92fb mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9a572593 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa80219f1 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaafc984a bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc2ec2d15 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc405a023 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xca4c4020 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcfcf4d93 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 0xe371f31f recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5a10939 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5c066ae recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5fc7aa4 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf611b019 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfe8d1af5 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xff97cf67 mISDN_unregister_Bprotocol +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 0x242628ad 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 0x601e7537 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6d7dda0f bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6dcb2bbb closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7a86e923 closure_put +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 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 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 0xa3f2b8da dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xbc574a6a dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xd2a47575 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xe4d006f9 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x28400032 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3de9a5bd dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x66895c05 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x764171fb dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x96ca7bbf dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd45c8386 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x622ab299 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0650677d flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1be444e6 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2eebbd7a flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5640b32f flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6bbedeba flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6c79c904 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7b1fbb9c flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x99d0adb3 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa950d66f flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd37f05fe flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe78bf7a3 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xea5131ef flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf905b4ee flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1e8c95bf 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 0x44bee308 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x4af06ecc 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 0xe2922699 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x83bf314a cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0xae532711 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xc9231011 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x10ae107a dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x13515865 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x149fa32b dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x14b19ed7 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1eeccb84 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2975b9bd dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x318be675 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x34953d0f dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x45814b68 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5ab4496e dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5b528e4f dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5e4f3f57 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x63aa9ac6 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7092ba42 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7caa224e dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ed57caa dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80bbac2a dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8861e2f2 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9510a851 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x98b95c5a dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa10e976c dvb_ringbuffer_flush_spinlock_wakeup +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 0xc3c77f8d dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc5b7213d dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xca379f23 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcaf49699 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd6f09332 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd9bb42b3 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe311f657 dvb_frontend_reinitialise +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 0xe865421b dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xea91a9b2 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeb06da56 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf23a08e3 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf417483d dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf7f59797 dvb_net_release +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 0xf828ffef dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb5f0e9f dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x0d3dba5a a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x3a096499 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x10632f80 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x333742d7 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x424b5d06 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x84a68337 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbd852c74 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbfc97961 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc6fde41e au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe42c8c85 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfa2829d3 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfb650922 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x34b5a032 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xba73275b bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x2ce21aa5 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x5dbb63ba cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xe37bd679 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x7eaeee30 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xf6b0c439 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x7d8dd008 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x3a9870da cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5cd4e730 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xe8d17cd8 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x662254af cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x040123f1 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x1cacbdea dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2751ee78 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa0370008 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xec9034e8 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0fdf6334 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x16cf95c8 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x39185c42 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5de78eab dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6fe5e8c1 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x785b2e60 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7b0ac153 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x88ab0ab5 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8f65dd26 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x934ce02b dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xae60d28b dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcbb2aab2 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd6ac11aa dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd796e9de dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf1b83f46 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xbefb861b dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2ba23c35 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5da6c5c0 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x9379459d dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x93fd6c4d dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x9c41a14b dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x9e54479b dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0f24c605 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa19a431f dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa2ba6233 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xaade73cc dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x5772ec10 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xba36668d dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x5547b56c dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x570e4fc2 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x65f6de96 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x94b1e379 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd334adc9 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x922b71e9 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x9f579e18 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xc8d31e50 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x6759bb00 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xcfbb36a8 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x55f81d00 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xeb244877 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x209bf72b isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xdb643d2c isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xa3ff88a8 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x336e0f6b ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x3118f281 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x66d90724 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x6f546b6a lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xf833c52b lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xecfd9749 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x6b405b4a lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x5de14306 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xe2128e17 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x53574a6e lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x14802159 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x7932e9c3 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x67cf3c48 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x987b8c20 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xb3c2091b mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x6bcbdad6 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x70fc887c mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x8948a26a nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x007fe3bf nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x3296525f or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xbda81b9a or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x82652a8b s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x227fd78a s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x1a85e505 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xf3928c74 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x4bbdf9ba s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x623e9620 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xe2ec0165 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x74a1da50 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x27141891 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x23ceb4cb stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xa486ab8e stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xb4559230 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x80ea91f5 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x208fa0d4 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xee7b03df stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xf8c86c98 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xfb915482 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x5fc68853 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xabe5e223 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xb65a8bfe stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x41a098c7 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x35bec0d3 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x4daf1bcf tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x7b4da3f5 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x1a879384 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x2e923bec tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xd8f9ea6c tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xbd8e65f8 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xd7f94759 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x41581af9 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xb32aa4e2 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x27c349d5 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xcb284a13 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x6f4c364f tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x5a79d0dd ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xb23bc9ec ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x15fc0aa1 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x7cfe67cb zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xec7128c8 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x04450149 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x3f845e38 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4327bc13 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x445ea082 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x87e5fb90 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc2ac3a52 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc7527640 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x13800413 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x757eccf3 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x8d4f7cac bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe438390c bt878_device_control +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 0xb1a77176 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xcb6e395f bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xde91cce7 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3f11b528 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x44b578a1 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5a9a3f78 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6e48407b rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x725f3402 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc2ad2f6b dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xdadeea7b read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe6d7cf7a dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf6601587 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x51b093f4 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x6e69486b cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7971695b cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa99ea38e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb058cb5c cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xcc2df877 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9552dc06 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 0x17536f97 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1f38c7fc cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9869e343 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xbbdc46a9 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc225699f cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd0c9af43 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd99b1c63 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x1b39c09a vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x7cad2916 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x40ec7192 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x4557ad1d cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x547f9010 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x903d9064 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x0de0022f cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x749bb26d cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7510227f cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc0a3f31a cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd570dda6 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdfe8a4c5 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf7f69d04 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x070f2806 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1b2bcb91 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1f7fcaf1 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x20ebbcd7 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2cd31652 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3059b4eb cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x309ad5f7 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x38159b23 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x39239a3e cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3f783e4c cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x50f7bcfb cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x65a8cd4e cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6ee165a5 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8c6efdc6 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8f47eec9 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x98b12bcd cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa2e6edf5 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb204db36 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbb284e45 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcbc1f6a2 cx88_reset +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1885e424 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x35aa0ee0 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x49c7966a ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4fdd4dae ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5aab6ce2 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5d4223f1 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5d773afb ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x81c9760c ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x90a1aa00 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9b5116a4 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9d230a9b ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa5e495f5 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa9e846b7 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb1e48539 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb3c5f5b9 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xee1bec26 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfd95a392 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x024c0402 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0b0c18b7 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x30dff960 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6817f2b2 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6d38217f saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7aac8e39 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x88dbf55f saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8c2039b7 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8ef97c76 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa408cec8 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xab043b31 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf8d6227d saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xcab8e72b ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3bc565fb soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8369f428 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb34f2820 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc4f507e9 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe9353492 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xee5546d0 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf5083f98 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 0x165ed041 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x1f16dfa2 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6e87a5d2 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x758b5722 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x90d65926 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc9a22880 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf23b5d4a snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1b3c2854 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2465b971 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3c099f9c lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x41fd556c lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4615b7df lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9bbee0d6 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xacb49724 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaf3888f8 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x5e14d662 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x72f685c3 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x9754503d fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x496f47c5 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x070d5ec2 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x0d8a9e0c fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x22126173 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xdd34b4a0 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xc4cc4488 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x7f53ccee mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x471b7bcb mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x88c14a71 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xfb2ea7f8 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xf16e495b qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x277f9367 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 0xb38a7207 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x1ec589a4 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xb2633fdc xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x1ead198a cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x9a6aad18 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3253790b dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5d521229 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6d055a4c dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x90017454 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc57ff89e dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xcf5cd1d8 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd081e11a dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdf6b8dcf dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe8906465 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x20906558 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3b3ca7d3 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7b801667 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x84b1e1af usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x88b43b8d dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8a9692c7 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb6d7fd8b 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 0x30b3a929 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 0x0bc895d1 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x173ad1d8 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3800342a dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3b9f4a41 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x47470510 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x54d9a050 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x73d549aa dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x97de2b37 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xabe00309 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb1b12a0d 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 0xf61c6baf dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x69cb7f0e em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x7caaabc7 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0b7b9e05 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x25e7fa5d go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x58c576b0 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x72afe707 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa4520e9f go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbfeeb6f7 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc0784b41 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xee74fbff go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf8ec737a go7007_update_board +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x346381d2 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5789ab21 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6001fdfc gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x641d5e2c gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x73ecaf89 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x77b657bd gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9a4cc75f gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb54a6b6b gspca_suspend +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x2b90d63d tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf1eeac2a tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf628d353 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x1b310a5c ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x30f60b96 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x29d14456 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 0x60eca7ef v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x76ee6f7a v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0b166e77 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x251116fa videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x3e3f8ee9 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x732631c6 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa3e5ceba videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xacb5faec videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x2fcf1dcb vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x10eef666 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x33775d62 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x829833d8 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xaafeaa3e vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xabbfd646 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xbfdcc0b5 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x03f70b5e __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x05d3ba04 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x068eaf38 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0a32c2fb v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e0b5b5a v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e0f923b v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12956eda v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a523507 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x204e8822 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x221f7825 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x224c9f32 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x24b137c8 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b1683db v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x316c5e23 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x33e9f276 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x340e2dbc v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3557b353 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x39f34442 video_usercopy +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 0x3dadfa65 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x424ba441 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x439ac95b video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x456f3624 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x474c92d0 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x497c28fb v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b0d1169 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d3962e3 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e09f8c9 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f42b2dd v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x52b0d10d v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5a0e2d7b v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5cd1e660 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64f2372b v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6b5118e0 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x705a11b5 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x70727933 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71aba268 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7449670c __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7bda2281 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d78da8b v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7da30548 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83fa56c1 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84f7b0b2 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x85c78e99 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x887b6d5f v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89163a3b v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e5469cf v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f0ee0d6 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f26cf99 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92c7647a v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x93cdcf9d v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e9cf43c v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f760a30 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0a71f9d v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa127c175 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1848ae8 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa30bd73f v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac091d4e v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbb505789 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbd4cd1c0 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc23f92c5 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc33e600e v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca26ba39 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcadde59c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdb3979d4 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe042bf72 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2e14abe v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3651eb8 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe849d22f v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea5e5454 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef8aab53 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf03cbc12 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf73a857c v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf953ca8b video_device_release +EXPORT_SYMBOL drivers/memstick/core/memstick 0x05362005 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0b0bcd50 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x20f1dbce memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x316e9fe4 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x350d398b memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x548c553c memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8d8e33b4 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9a2c8f78 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9a97280b memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb3b0297c memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb4963067 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xde1b73a7 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x05111794 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x09e5e042 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0dc3f19a mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1452aa1c mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1c6a3d8d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x28db2869 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3e9e1c3d 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 0x55a30ba5 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x58839116 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x68e91aa4 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7770a221 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7eb0b4ff mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x852d2beb mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8667f476 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x87340dd1 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8cb5018d mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8d0c40d8 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8dc89318 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9166b04d mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x91e5dcb8 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9aa2e96e mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb286fdb2 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbbe7ef0e mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbc0638dc mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc467076b mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd4744968 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd8841dbc mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd51bd36 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf4797459 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x165c972f mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x18da6a0c mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1dcb32f7 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x27f0b987 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2cfbadf6 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2d71ea2c mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x312bb99c mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b2eac17 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x52c31c5f mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x57268f0e mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x57385fda mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x62f017dc mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a2e66b4 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7a51497c mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x80cdea6b mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x82c9b56d mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x86f91e7e mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa1047bc6 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa3aeeabd mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xac0b7be8 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc462e3f6 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc726d39d mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xce098e2f mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcf061a2e mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdfc22a8d mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf0b6422a mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf520a433 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/mfd/cros_ec 0x1e9f118b cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x5fc722b6 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x7e81ae00 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xa65b0b8c cros_ec_register +EXPORT_SYMBOL drivers/mfd/dln2 0x23f56219 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x8e6723c5 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xa6189d20 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x3b2481b1 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x72a713a6 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1bd04462 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2a24317b mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x471004fd mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x593fa341 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x661d8a81 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x66bfbbc0 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x676517c6 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x87079f2e mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa1398815 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xac1d4383 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbd80491b mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0x295fb567 qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x37cd5e5c tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x54965c6c tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x6f721fb2 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 0x23a186ff wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x4d6cac30 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x20fecfe0 wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x8da67654 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xb6c2f51f wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xbf9ccdcd wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x23c2a663 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x4024e2c1 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x0616d479 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x4b38b523 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x7005dea0 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x54822547 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xc08e2525 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0296a7bf tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x3b5b695a tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x41f556f2 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x4dc523d0 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x5ad3f6fd tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x8e5685e2 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa3dcb197 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8bd3864 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xb25a3ba5 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc5a059ed tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xd688ee23 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xdfa025c0 tifm_eject +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x5e8f08d4 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x6932dea7 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x7d2a5874 dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xa06febc8 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x76b58bf6 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xd1c6cfaa mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2a96848f cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9e796fca cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa50bba4f cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa9c0dd51 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xaca92b58 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc5ab1d9d cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd4071288 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1b589c8b do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3fd5db8a register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb492c06b unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xebe9de52 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xf2b98b78 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x53a9bffc lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x00ed402d simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x7a902926 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0x9c2432fb mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x291805ac denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x7024c64c denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x5513adf8 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x56225ff4 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8691cdf9 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xbe122ea6 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc12d5dc2 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd9bdf61d nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3af42bdf nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x516cc7b3 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xa4acea74 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xae692426 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xfd0171c5 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 0x5f1516a8 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb810b233 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd42c8878 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xeae73fb8 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x32847fb5 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x38a64cb2 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x54879857 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5560cfee arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa65546c1 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc5375948 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xca749148 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd6ca7390 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe0a2e766 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf3d8a0a1 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x0ba4b63e com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x80585948 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x9a4dcd0e com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2354b43a ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2f02d532 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x354ceed0 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3614104c NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3e858ddb ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8f6c38b1 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9aa68708 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9b4ad4eb __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbb819bec ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf9a93cc4 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xd8b6fa11 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x050d4a08 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 0x0508504f t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0590210a cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x09550ac7 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1940e40a t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x381eaf24 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3b21d0b3 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x553efaef cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6db328bc dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x81cab720 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x94e0993f cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x99d92bb5 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa62fcb42 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xab11a8fe cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcfc8de08 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd05aba76 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xee354380 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16eac327 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x28324f76 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2fd2457a cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3048cd18 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e492533 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f880bb8 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x417d2d6a cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x507815d5 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x60da90d8 cxgb4_create_server6 +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 0x7dc22dd7 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7fb909ef cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x834481fa cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8907e70c cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8c991c7c cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9ac19857 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9d703d53 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0408eb2 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0788029 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3bb3f22 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa64ded1b cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa79ad354 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa903af4e cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa94de2b2 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb0c82d07 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb28edf3d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb41fe56e cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc9f8bf72 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd11532eb cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdf805051 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xee13d7bf cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf5c114a3 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfd8dd9fe cxgb4_l2t_get +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 0x577e6205 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x96a9be13 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xcfb05b0c enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x36a8c438 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4c74da4c 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 0x044d91ca set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f3d2fd5 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19455dd0 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20173efe mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b32cb0c mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x327040d0 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35de9894 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c1768c8 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f427127 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x580472be mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ca5fb84 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x653b9560 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e8cf991 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f01cdf5 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76fa30b3 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a5ef67a mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x854666af mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8763cf9f mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8931b56c mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9009ba91 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9153def8 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x966c0fba mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa85234fc mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa99d2822 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac700aa3 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb652aad2 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc72f9972 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8487c16 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc890d45a mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8ef0044 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf82a7ab mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd09323b9 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf088c6e7 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf28548ec mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfad8170e mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff2d5032 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0214a18b mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05400604 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07ca8e29 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 0x0a90800f mlx5_query_nic_vport_mac_address +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 0x19331a23 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ee2846a mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20dc4803 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x226ca050 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x264c2056 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28af01e1 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3770ab7d mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x378141ad mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38ceced7 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f60b3f2 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x44b3b39d mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4eaba9b2 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b9d5da4 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6001c158 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b3477b4 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6cefcf30 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x704691b9 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7602dda2 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8568b738 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8bfb4bd0 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e5bea7c mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a358c72 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b70f86f mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa22854b2 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaeb84f79 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5b0040e mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb81c3db1 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca8ca630 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb757027 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf349ac5 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd9b19908 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf2bf385 mlx5_core_create_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 0xfa4696a9 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 0x280c69fc hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2f66468d hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x753685d1 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x78cbb99f hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9f2ff232 hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2a4d0251 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2aeb34d2 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4b8fd409 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x503bafe5 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa139976b sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa4bd0b31 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb1eb25bb sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb4874660 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb98223c4 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbd462f08 sirdev_get_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/phy/mdio-bitbang 0x5a5926a3 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xd19f433d free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xd4b4d411 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2e64036e pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x50cb711e register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x7f5e2449 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xca58962a sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x373acb45 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x44d2dfe7 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x46418f09 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x5f0b8734 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x75ec0626 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xa48fdcb9 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xe319d3de team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xea8f81bb team_mode_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x0ac04f80 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xa0cc5364 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xfa74c809 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x06619afe unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x37ed690f detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4b86a312 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x55770725 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5c5f0b6e hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x660ba5dc attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7eaeeb8c alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb91e9436 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc92b6c69 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdafd90d6 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe86358f9 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x70b3ceef i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x07fb9b11 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1f5383e7 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2717fbe9 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x52e50f10 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x86b81d2d ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa389b36d ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xab4ff57a ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbe140361 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe9ffd147 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf247b804 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf46fba2e ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfcc6ba6c ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0550beac ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x15c103ce ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x25aeaf07 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3298b2f9 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x38c81b03 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4aba058a ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7cc692b9 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x899efba8 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x96fa7ccf ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd002b0e3 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xec3d9bfa ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0423b330 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x562e63bf ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x69fb165a ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7403218e ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7e4d5b48 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8eccbccc 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 0x9b6b709e ath6kl_core_init +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 0xdcf92497 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xec3a2269 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfe3dab28 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x01883a13 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x08ccba39 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0d7498d0 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1b531666 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2bb5d785 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 0x3182843d ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4efd134f ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x52c86b66 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5e2b734e ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6b2c8255 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x757cd357 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x77179621 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x899846e0 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8e5ba038 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x97ac20a9 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9b442fbb ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa22f9e6b ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xac859d9b ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xadb5d41a ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbad6152e ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd374afdd ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd7512207 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xff6a4e4f ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02094836 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03f1b9ec ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x051f91e9 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0738d592 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bda0b60 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cd2f9cb ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0faf813e ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12b40fdf ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12d8f2e3 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13830996 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16dcd6f3 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x180f0d36 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x197c4ac5 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a1612ff ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21025343 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2145d76f ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x221f26b2 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24fa03e8 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26899fcd ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27ef2525 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x281c4515 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b9a51f3 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d183847 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x304b883f ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3331a9e7 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3614b187 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a0c76e9 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e37e3e2 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42a418d9 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x446a22aa ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4614096e ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x461ffdde ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46c16485 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x472368f9 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x484d14ca ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4acdee1b ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b626a25 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4db76539 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4dd05f63 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5418152b ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55e2abed ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57139005 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c792ece ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e1cad69 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5eefbd63 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6007f579 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64252703 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67485161 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x689f206d ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x692f5eaf ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a31b1e5 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ad5b8a5 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73c19fd3 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x768489e5 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7783936d ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77927e14 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x798d6433 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79c7f29d ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b236552 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x826b50c2 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8600f45a ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x880469da ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b9e3f5b ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f53b89c ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fe3e6e8 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94aeb49c ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0375e38 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa067ced2 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0f35bc7 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8f8d0eb ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaac32216 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaaf3fdda ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad2d5a7e ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad6684b5 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2d5adc5 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb314efc9 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb38f04d3 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7735363 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb99c5a24 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9e9736e ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbacfe8fc ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbcf43657 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdc4381b ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfb397cb ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4d5eca5 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9b1ce8d ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca0cdbcf ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca35a8af ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4edec84 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7a7215a ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd86432d4 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd885fef2 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbeaa50e ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe28f4c47 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe560dc7b ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe584e4a8 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe75b9670 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9401ba4 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xedb1eecd ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf189703c ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf48d781d ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6c22298 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf88f924e ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffa04926 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 0x6af831ba atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x78f2d7b5 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xb017b101 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0488b84a brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0eff3369 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2fdb91df brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4e8e11c4 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x520adbed brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x68e97d39 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7a22d7e3 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb21594f6 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb28c13a6 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb9516a79 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc7977d13 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdfe1357e brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xff2fec2b brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x10136648 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x168a9fab hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x17da2917 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1e2042db hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2310fbc5 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x28b37279 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x32917d3f hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3336b50e hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e023c72 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4c53e01f hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x840f0ddd prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x867e7d13 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb1b98fed hostap_set_word +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 0xb6e39932 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb9111056 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbd114f75 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbd8ce9a7 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc15369a6 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc1a937d9 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc45cf3a6 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe5316cf1 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe74ae04d hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xed63f38d hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf46e6a14 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfa7a5ec5 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x04e02cf3 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x20c86b47 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x21ee5e5b libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x34a2181f libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3baca51c libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x47fee995 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x54339fc7 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7e1457a3 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x86fc32b2 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x93063bdd libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x95543e05 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xabb196e5 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb03817d2 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb281d9e2 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb45f72e6 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb4dadfc2 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb6b65f2b libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd141c2ff libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe38b2bd5 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf621e9b6 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfef62cd2 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x065ae3fe il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a0aea57 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0aa57b24 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b726161 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0dc8b5e4 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x153f7865 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1dd982bc il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ee2f034 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ee55364 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f849bcb il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2182df52 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x228a9ffb il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x279e647c il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29ad369c il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29ff3898 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b49fda7 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c911d51 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2dc070fe il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30a885d3 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32203098 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x353857ff il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d5f4573 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f3b2a29 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x443a77b7 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e29e15a il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ea3ef64 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x510e4634 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5281130b il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52cf6aa6 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55103320 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55486f91 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x561dd0d5 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x56f80cdd il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5798e574 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58934b1c il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58e8abec il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5bc41c46 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c60a3d1 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d53d40a il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f693a2d il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x611056a9 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x616a9251 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62b90394 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x634f0b34 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63963d77 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64d02845 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66a2a9c0 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68b116e3 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a4507e9 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70c6689c il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70c6fbdc il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7397d703 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73ec6613 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c0583ce il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e9cec0e il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8149f66a il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82c19492 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x841f5385 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8441e5e3 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86fefbc3 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e6c0795 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e862afb il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x942b8082 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95e0961c il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x97c4f9fd il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99b7fb10 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99f74578 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa01c05d5 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa0ce7038 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1696629 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa67b32fa il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6f4da79 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa701f964 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa72de765 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae9f3401 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb42c17ec il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb467c8b1 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc6363c7 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe5e07fa il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf05212c il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf84ec51 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1993d3e il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5cedcd1 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc713a178 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7ca8137 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc516227 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd1b403b il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd10ab403 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdabbd462 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdcb36cd9 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdeba37a7 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2a627fc il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2b7c746 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4f4f7ca il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe96c807e _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef54ed26 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff3873a7 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xffca9e57 il_set_tx_power +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 0x0a300fdd __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x210379d8 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3b5198a1 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3d20f8ac __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x48f66129 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6258998e alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6722f4de orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x743e76e6 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x822517dd orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8fc8c3c9 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa26f25c5 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa38c0195 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd63225b5 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe9aba7d1 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeab68ebf free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xef64033b hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfc7e994d orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xb31ae4d6 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e2db0a5 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1102d52a rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x127d9b41 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x151628bd _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x196b0881 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1ef3c8a5 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x23e47d08 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x251513f9 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2de3cc91 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x33258aa6 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x353f517d rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x469c38e4 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4c1a6600 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x54d86663 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5765f538 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e1186cc _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x612f6fd9 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62a34915 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x651d3318 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6b304429 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7100abbd rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x71c36d12 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f6d8d16 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8168189d _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x83d1a49d rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86786caf rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8ae13104 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b559de1 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9bd15f07 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9cc225d1 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa45ccf26 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb698fa01 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc018bfa5 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc17bdef2 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc59281b3 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcf4b8071 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd61f9571 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb023bdc rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf0c3a046 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf5aaab52 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfc5ad3d3 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x1a4673d8 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x6b74ab8e rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x7fb556be rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x8f638d0c rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x4bcb3c51 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x6d0d4f57 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x73dde05b rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xbc71439b rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x051254ce rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1f6818b7 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2083144c rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x23bf73b9 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x247b7140 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x31aa0892 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3c1af98b rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5d4abb82 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5f40e4a8 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x66d0925f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6e5468fd efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7318a367 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x83cd130b efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x91df6ac5 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa40b8472 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa5475be5 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa7a3d752 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xaae47f45 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xacf4cdf8 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb62350bd rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbc8494ce rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc2af23a1 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc9171982 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcbbfad4e rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd7e2e37e rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe7dbd1e1 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeea6e1fc rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeef2b72d rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf9ddce6c rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xffaf65bd rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x69a42c56 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc1cb261c wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe73140b5 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf624f6ad wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0x1930ee07 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x29d8b8fb microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x46a073be nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xabbe146b nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xbb05a037 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x587d4c67 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xae7f6b39 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x01d3b8bd ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0f5533e3 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2b96caca st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3db270e5 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x744d535a st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8093d79c ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb1929c0d ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf74b2ff9 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf9408a57 ndlc_close +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x036dfb37 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x24341640 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3d2cdee0 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4ea1ce16 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x59212411 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6bf521d2 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6f046fbb st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x837881c7 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x98fc9872 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa1b5b912 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa6d51eab st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb9e7e535 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd8c52953 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdfc19593 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf6447b4d st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfa41ee29 st21nfca_hci_remove +EXPORT_SYMBOL drivers/ntb/ntb 0x039a64b8 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x12f542b4 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x139f17bd ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x3b9ce597 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x6abaa62a ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x6fdc231d ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xf62ca9c6 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xfc5648db ntb_unregister_device +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x7d9f623f nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xf5869bfd nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x03bb9943 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x0509cff4 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x0c93bf5a parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x13dfbb41 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x21a33d87 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x22276384 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x30f84219 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x312fdd4d parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x338c6ecd parport_release +EXPORT_SYMBOL drivers/parport/parport 0x43c17262 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x507e47be parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x54b23ca9 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x5ba38a88 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x64912125 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x6c64bffe parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x76c0c825 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x7a429e84 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x7f60a913 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x8cd87be8 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x8ebb1bd9 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xa3200a24 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xb10dc3e3 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xb17bbefc parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xb88f0229 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xc5807f0f parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xc695eecc parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xcb84d04e parport_read +EXPORT_SYMBOL drivers/parport/parport 0xd23a4286 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xda2b1766 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xdec569b4 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xe5ea6842 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xf6c47117 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/pps/pps_core 0x2ced66d4 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x71178ab7 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xbe88cf27 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xcf7743c8 pps_event +EXPORT_SYMBOL drivers/ptp/ptp 0x120fb265 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x6c5cc519 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x85959f49 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xd2dd829a ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xeb1c706d ptp_clock_register +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5ea4f0b2 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7062242a rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x707d56f8 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x77331a06 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x85a022cc rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x953a9d85 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa5c713a7 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc03b1ccd rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd5224e6e rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe839f1ee rproc_vq_interrupt +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x1eea286c ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x8eb2967e scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x97ca6ce2 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xbfe349bb scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xee4d22cb scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x245418b5 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x25dabd63 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x32e47eb2 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3dd13090 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x46ff74f4 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4b7b7706 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6a498ad2 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x92a7d5af fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x93d054df fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb35f6b72 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xccbcc03e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdd841e35 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x015a4b7a fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0468092f fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x059671ed fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x082d8acb fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09988239 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b5700cd fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x125d2c15 fc_lport_bsg_request +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 0x31635012 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3190bd0d 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 0x4249ab91 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x48a44807 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4df91962 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x56c1a2d6 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6277a19c fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62fabce5 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x63703d86 fc_exch_recv +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 0x671e3095 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a7d6fa1 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d27ab9f fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x704804f9 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76a8ecd3 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7de180b0 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7e22b908 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7e9194cd fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ed93e14 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80a26051 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x830d51fc fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x89945643 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9424e5fa fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9497036c fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98129ac8 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa098ab7e fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa9845639 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaa98292c fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaae4f17e fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb11c4ed9 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd655003b fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb78a568 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe0fac679 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1154834 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe142d0c1 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7bbf572 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf781363c fc_exch_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3de2afeb sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5201b96b sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x836ded33 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe1cf4540 sas_wait_eh +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 0x71255f7d mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x09a529e4 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ddd5e54 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x155998c4 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a31fe0f osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b5da4e0 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x26aa8962 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x26d8c608 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x396757d3 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3a33d1ad osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3dc5fe9b osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b41e29f osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x597d2a5c osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x63674277 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6518cbbd osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x719b474c osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x734158a1 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x73c21709 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7d7637b9 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x803fea82 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86774e5d osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8d7b530d osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9789ec6e osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9fe40c7f osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc04f5ef2 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc6000db8 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xccee01c2 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcf146f39 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd3ac4824 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe122d3c9 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe5e3a52a osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe8055b6d osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe9aeaa93 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xed421ed9 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf0f59a24 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfa01dd45 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfb9c6025 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/osd 0x1631fe93 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x68302510 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8fdddacf osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9d54ad01 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xaeaf56bf osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc62a7d52 osduld_put_device +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2faddafd qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3a401f6e qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4593a4aa qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4664e8f9 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x90ed078b qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9d56b85f qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa46c13ce qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb6831f0a qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc22b6ee2 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc55df10b qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcbc6ace6 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd842abc1 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/raid_class 0x070bb0fe raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x33d86551 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x7db9a313 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x02a96f6a fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x04b283dd fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x107a53ed fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1e89b068 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4775ef14 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x806e01cd fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9800a431 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xaab8f527 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xaae02564 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb27ca21b fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xca29a43f fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfa98fe8f scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xff543dd7 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x015c3ed6 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x03ea3a69 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x118ef927 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1371a003 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1b2673a8 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1fbd5822 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2f368153 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3556f65b sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x39933a57 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x442defdc sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5046040c sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d52781c sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x62e361c9 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x72e452c6 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x773da5ce sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8a1e17f3 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8e51d8ff sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9d1936cd sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xad6889b4 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb80075bb sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb9cc0957 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbe8c0954 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc2f5e447 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc8855795 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca478f06 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd4a1e55e sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd861353e sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdebb5982 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x021acdd3 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x04cb0aff spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x67271df7 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb1115413 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xedabfbc6 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6790516d srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x84ce27b3 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xa5c262f6 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xe9015e6f srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x07c15b4b ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3ce020e8 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6b31915f ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6ce05d63 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc814d6f7 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xda9fa371 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe204c53c ufshcd_system_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x09264a26 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x37bcc910 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x395c4e34 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x46b0724e ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x4a76311e ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x5267e4ee ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5d1247fe ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x65e1096b ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x824cad80 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x902fe4e4 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x9187ac8c ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xb4a374b8 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xbcf12758 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xbd9f72fa ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc86a2dcc ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xc8d894c2 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd4e7cfcc ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd60af82a ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xddb9e471 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xef880827 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xfd5f2572 ssb_bus_unregister +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x09645691 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1ae2f1c4 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x28b76e50 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3283945b fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x34fa61df fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x382d3924 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x570b16e6 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5ddb3e1a fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6e019b44 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6e91e36b fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7479d3ac fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x762d3054 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7688d4d7 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x82d71a22 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x89d6e38e fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9fbc8b12 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xab5e2924 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xace0acbe fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb72ec9c4 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb9385fb2 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xca59e9ba fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd37e9013 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdaac1a76 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe2111227 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x1ea326da dpbp_open +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x2ba9f1bc dpbp_close +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x2fe5b8e6 dprc_open +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x3b99c2fa dprc_get_obj_region +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x46053ccd dprc_get_res_count +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x49763f9e dprc_get_obj_count +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x5d61172d dprc_get_portal_paddr +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x703b44e5 dprc_get_res_ids +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x88c96a10 dprc_close +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x9f58b819 dprc_get_obj +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xad75b34c dpbp_get_attributes +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xd2e1ee08 dpbp_disable +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xe69a005b mc_send_command +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xeba0619b dpbp_enable +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x902e5bc7 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xc811be07 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x5a2b021f adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x2a3bff06 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x31288104 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x81779a1c hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xa01698b3 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x311e5418 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa596140d ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0d4215f3 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x16e2b2b1 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1a4d7a10 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b24324b lnet_sock_accept +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 0x23411e08 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2657d682 lnet_kiov_nob +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 0x3265e444 lnet_sock_getaddr +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 0x3df2c625 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x42e15d7c lnet_extract_kiov +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 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5c556011 lnet_finalize +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 0x6631b11b lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x672d5b4c lnet_copy_iov2kiov +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 0x79f7d3f8 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7f8d5bca lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x86001cac lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x977f27eb lnet_net2ni +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 0xae03ae88 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xafbc24e8 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb63983eb lnet_parse +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 0xbae335ae lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdec6c292 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 0xf59a47b9 lnet_sock_connect +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 0xfe6d2148 lnet_sock_listen +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 0x5328e8b4 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x5dce0673 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x61435703 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x94a11f11 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xb9105e7d seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdbbad193 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdc8cf89c seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x30a2aedc fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x36a9e084 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3ad98d9f fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3b16514f fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x6c5c8d59 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x79c667a5 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x99b5bbe0 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 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 0x4856fbc6 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a8c3eaf cfs_hash_debug_header +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 0x53e4f7b8 libcfs_kkuc_group_add +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 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 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 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 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 0xc4ca4ac5 cfs_hash_debug_str +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 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 0xf6d74430 libcfs_kkuc_msg_put +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 0x0ce70df0 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x4f102a1d ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x92650fa6 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xf8c794fe ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x3c2f92cb lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x42e55f2e lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x519c68f0 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x5decbbef lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x6493083c lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x6e99e4c1 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 0x00845cdd obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x009d8deb cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01f7c69f cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02d4d104 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0312e95e cl_page_delete +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 0x043f9617 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04ba50b3 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x052473e3 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05b27dd6 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0615b67d dt_store_resolve +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 0x082efd24 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08bf841d lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0940ab16 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09ed6c91 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a224e89 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aef7759 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b9964a8 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c118846 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d3cc6cd cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d45e941 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0daea8ca llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dc6a1c4 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ddce8f8 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e89ca56 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0eae1f64 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fa57bb4 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x100e1531 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x109e757a llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11506237 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1230a854 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15437f76 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16204522 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1658f854 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16657f64 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x175c7898 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x189c3fcb cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19b48dd8 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a32714b class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1aa5745f cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae83c8a cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b082a47 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c77c619 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e0c7b95 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ea4cf3e obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f5e438e cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20439b7d cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20e24e98 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21aaf20c llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21cca16d cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23b43944 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2473e0a9 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26227025 llog_cat_init_and_process +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 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x299cfc1b lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2aa990c0 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b0e0b6d cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bfc667e cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cc40493 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cd0a5fd cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2dae2fb4 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e0f2a10 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fd295bf llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30057069 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x303538e5 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x308a5bd7 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30daae66 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d5083 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31ee0d97 cl_unuse +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 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x341650bc cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34dbf893 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3547a754 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x375a675a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37e5d397 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38cd5947 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3928c1a8 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3957b84b ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a0422c1 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a32ec49 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a3d4f2a class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3df4a07a llog_cat_process +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 0x3fcabc4d cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4026c7b6 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x409dcbb6 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41d93aee dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41e805dc cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x430a389f class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4504aead cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4674258d llog_sync +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 0x487fd8d1 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4894660e lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48dcba5b llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48fad098 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49572957 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x495fd572 lu_object_put +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 0x4b1de030 class_export_get +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 0x4c68a604 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cd71cf7 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ce1e834 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4deb775e cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e21a129 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e3e5274 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4eb47265 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5042ae3b dt_device_fini +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 0x51c04e40 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51c8f790 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52a39fdc lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52c697cc lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5375b44a cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53dc2c1f llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5421ca6c cl_use_try +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 0x5525b230 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5559a3c6 capa_lookup +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 0x568ca7ef lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5697f604 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x569fa22e cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56bd0bb8 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56d6e3bc lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5792b00e class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582fa5ee cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58564c04 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x596ae9f5 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x598e43ca cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ad5dc03 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b4572bf cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5baacad7 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c4ccf3a cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d19bfce cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d45ab74 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d7e9583 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fba2062 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fc7c75c cl_object_top +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 0x6034e8d4 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6047eeb5 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60ccf3ed cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61184c54 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6177f656 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61f112e9 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6282ac01 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x632c2d4d class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x637b6be3 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63b8da1d lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6441b125 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64c20b61 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x655aac7d lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x669f7645 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67434c18 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675244fa dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6884d36d llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x696c6884 cl_page_discard +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 0x6a0a8e74 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b46ddc9 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c9e2d33 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cbd0ebe llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d3b0f80 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d6a2eb2 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d86b7ec cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e3e36e9 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ebda890 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ec79686 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f13acce lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f27524c cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fd5305a cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70d7b778 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71a4183a lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x723364d4 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x732479a6 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7330d43a dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73c8df19 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742c6640 cl_page_find +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 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77e1815e cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7868b7aa obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x794a89f8 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79a7f4fc cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79eda663 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a14b008 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7abb387c cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7aeaa514 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b75c430 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd88de1 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bf8490f cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c84639b ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d685acc cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f108b8f ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f2829d6 class_new_import +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 0x802ce228 cl_lock_modify +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 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82d89aaf class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x841919a3 lprocfs_rd_state +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 0x85758cab cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x862d89a9 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86441c74 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x882d8219 cl_lock_disclosure +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 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e80676f cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e9115bb obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fbaa12e llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fe47b45 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9031dc48 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c490b3 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90fab953 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92a4ac07 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92d66a61 lu_object_anon +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 0x93cb3a9c cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x941fc299 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9449c12f dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9523c0f1 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9529be74 lu_object_assign_fid +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 0x95b07f7e cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95b78c46 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96148cfb class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96362b66 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9645ab9a lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9671a7d0 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x975cd698 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9770d53c cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99727f0c lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9995cc63 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a81e7da cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ac39f2c class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9af0b6d6 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9aff54c4 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b78c0f1 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c79e46f lprocfs_wr_atomic +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 0x9e25c1ed capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f562c5e lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0d122d8 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0df6598 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0e8b65e cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1eceb50 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2ad71e7 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3d7782c cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa42f3992 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4cea11c lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4f47b0c lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa54a496d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa592f32a cl_io_read_page +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 0xa677e507 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6acd55f class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa740d809 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8462e31 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa852f920 lu_device_put +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 0xaae26575 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab17bd44 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab3dc5a4 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabab95e4 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabccbb2c class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabcd481e dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac144ccd cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xada1f3a2 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae34a53c class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaecf7550 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaee28709 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaef8d030 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf59faa2 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf614b76 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf938c5d cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0714155 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb09bc00c cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb120ce59 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb15b43cd cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3046b48 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3226db4 cl_page_put +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 0xb4bad2f3 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb51fd509 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5e6574b class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5e70129 cl_lock_release +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 0xb723d284 class_import_put +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 0xb7ddde9f class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb86848c2 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba2f6b92 cl_page_disown +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 0xbb070c97 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb5b8199 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc348ae3 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbce2acb6 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc00522ef class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc03ec39e dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0b917e7 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0d932d2 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc145b44f lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc26947bb cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc26baf9d cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2c6b0a4 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc36f6b32 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc480858f cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4cc04d4 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc500d131 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc58815ad lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5ef73fc dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc635c731 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7599da0 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7ae9756 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7d70032 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8579068 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc87d9ffa cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8a9f57e lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8ef10a6 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9929272 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca1be6ff dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca79831e cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca8e6f8a cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcae75bcf obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0366c1 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccaca3a0 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce3be564 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce975c45 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcedf1cb5 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf5ea643 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf9ba001 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcff36098 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0ed4fee llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1d94e91 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f8863a obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd218e129 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd26ae9a7 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd280bfd8 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd35c0f8d class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3e9aff0 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4467c1a cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5ce9cba cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5e16d9a cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6366bd0 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd65f76c9 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7a92ae3 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7aeb55f cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7b67f7a cl_env_peek +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 0xd7f0dfd4 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd801b269 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd95a7660 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda2a0599 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda6f0f4d llog_exist +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 0xdb62530c cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd50b87a lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddb82a5a cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0040df8 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe048628d obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe04a5d1a class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe068d08b cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe077f1da cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe119aab0 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1aa0b3f cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe217b584 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe235886e lu_context_enter +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 0xe3bf7ede obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3d00cef cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5e4b703 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5fdf679 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6f6511e lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe749d161 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7e4d862 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe86e8435 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8cc7aa2 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9608e5b lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9b1ac3b lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea50dd17 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeab0dc47 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeabe411b md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeac1d4d6 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec45612b cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec54a71e lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec57c0b2 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed461005 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed96ec70 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeddf7c72 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeed63b3d llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef055947 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef50be6e lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef5b2945 dt_txn_callback_add +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 0xf133b712 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf144a187 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf186248b dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf19b7392 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3afb792 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3ec7997 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf43c83e2 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4b37fd1 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf555d19d lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf55b7a31 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf69c8d6d cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf80ec787 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf92716d4 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf96f2c7d cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf98d4149 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb020aeb class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc569d5c cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce95aaf cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd668346 dt_txn_hook_commit +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 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 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x022cc2ad req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d08bed ldlm_pool_add +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 0x064f414e ldlm_lock_put +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 0x072f78c8 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07dec76d ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07e6e302 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08032ec7 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08ec6e20 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09d72d56 client_obd_cleanup +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 0x0bb3cdf6 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bbc4077 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bd6c075 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c80683c ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ccbb500 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cfde9b8 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d7bf697 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0eb4c067 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0eee36cc req_capsule_server_grow +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 0x11f4750e req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x126750fe target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x145019dc ldlm_enqueue_pack +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 0x155b2db1 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1575eccb ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15b6b062 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15d69aff ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16f80758 sptlrpc_cli_unwrap_bulk_read +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 0x1882dd94 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19494394 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x195aa1dd ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a536914 ptlrpc_request_pack +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 0x1bf472aa ptlrpc_buf_set_swabbed +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 0x1d53a874 sptlrpc_enc_pool_put_pages +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 0x1f24cb2f ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20b4698b ptlrpc_unpack_req_msg +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 0x21eb13c0 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2293d46d ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2306a907 sptlrpc_cli_ctx_wakeup +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 0x251ae96b ptlrpc_register_service +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 0x258c1f00 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x265d0e4a ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2663228b do_set_info_async +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 0x288ecf55 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28fad21c ptlrpc_unregister_reply +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 0x2b14c8a3 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b1aa427 ldlm_lock_change_resource +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 0x2dcc1011 ptlrpc_prep_req_pool +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 0x2eb9d56e ldlm_cancel_resource_local +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 0x3173fb35 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x317626d1 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x324e6b3a ptlrpc_schedule_difficult_reply +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 0x34855ab6 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35db2d43 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3611c8fe ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x363f10c0 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36736b1a ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3754500e lustre_free_reply_state +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 0x38c65459 ldlm_namespace_foreach +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 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 0x3beaab8c sptlrpc_cli_ctx_expire +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 0x3c722ec4 sptlrpc_sec_get +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 0x3cc50403 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cfaafb3 ptlrpc_req_set_repsize +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 0x3e8b7440 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f3e4958 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f457cc8 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f63d80b req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40ffe2f4 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4159dab5 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4175d79a ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4179b567 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42cd89de ptlrpc_req_xid +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 0x43d87ac6 ldlm_lock2desc +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 0x4445d0e6 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x445f6817 ptlrpcd_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 0x44b0beae req_capsule_client_sized_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 0x4754b5c5 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47adba7e unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48f07c79 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x496b8b02 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49d05117 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49d8c0ec ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b2a8e1c ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4db71b28 ldlm_resource_iterate +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 0x4f16dfd9 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f744e3f ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4fbb4e75 req_capsule_other_get +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 0x549fb4ff req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5500d703 req_capsule_shrink +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 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5901ffaf ptlrpc_register_bulk +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 0x5bc604af ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c371e7e ldlm_resource_unlink_lock +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 0x5d67ceef lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5df83d92 lprocfs_wr_pinger_recov +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 0x5fdb9104 target_print_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 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 0x6330dbff ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63502d64 ptlrpc_request_committed +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 0x64270a85 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x642b7f05 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6462ecdc sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65104322 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65a39b8d sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65c3d965 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x677612db ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68387839 ldlm_pool_get_clv +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 0x69c77e47 ptlrpc_invalidate_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 0x6ae70a70 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b877318 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6be0bd85 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bf464eb ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d5643ca ldlm_cli_cancel_unused +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 0x6dc7d290 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e03b182 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e12fb2b req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e205a12 ptlrpc_resend +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 0x6f6d2bea ptlrpc_unregister_service +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 0x73359f61 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x738c508e ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73a96c04 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7590c486 ldlm_resource_foreach +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 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 0x7905378c ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79656e2d req_capsule_get_size +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 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 0x7e2b1531 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f37918e req_capsule_field_present +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 0x8043d3c9 ptlrpc_activate_import +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 0x83fc6de4 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8576fd5c client_obd_setup +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 0x8683f967 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8688e940 req_capsule_client_swab_get +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 0x87b32286 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87d45760 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88b5fbaf ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89c567c4 lustre_pack_reply_v2 +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 0x8a9b5070 ptlrpc_restart_req +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 0x8cc6701f ptlrpc_retain_replayable_request +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 0x8ecf5a12 req_capsule_fini +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 0x91aeff30 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91ca816b ldlm_pool_get_limit +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 0x92757e7e sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x927eee57 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92b88eb9 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9321d0e3 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x93727b78 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x947dccc5 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x950d7b7d ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95599351 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d912ff sptlrpc_gc_add_ctx +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 0x98498aab ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98728f09 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98cac853 sptlrpc_cli_unwrap_bulk_write +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 0x9b2cb77a ptlrpc_set_import_active +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 0x9bebf09a ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ec22dff ptlrpc_commit_replies +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 0xa2779787 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2c340f9 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3004363 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3fdecd5 ldlm_register_intent +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 0xa4b29461 ptlrpc_unregister_bulk +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 0xa67c6b00 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa685d579 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7065a48 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7153b83 llog_initiator_connect +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 0xaa3856d7 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacbc8ac2 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 0xad75ab2d ptlrpc_check_set +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 0xaf6672ee ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0503a2f ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0aa1d65 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b043cf ptlrpcd_alloc_work +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 0xb38dc3e0 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a19ef4 sptlrpc_conf_client_adapt +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 0xb5342fa4 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb54a0f3e sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5dc61bb ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb65cc8f7 ptl_send_rpc +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 0xb6ac8ece ptlrpc_prep_bulk_imp +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 0xb93c7da1 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9ceea3c ptlrpc_nrs_policy_register +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 0xbcae3d07 ptlrpc_init_import +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 0xbf193a79 ldlm_completion_ast +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 0xc0debaee ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1ae8865 client_import_del_conn +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 0xc37d20de ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc431ae00 lustre_pack_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 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 0xcb3c3056 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc8cc3fd __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd051bb3 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd5979b6 sptlrpc_enc_pool_get_pages +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 0xcf102612 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf11ae34 ldlm_lock_allow_match +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 0xcfa308e7 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd19a7e5e ptlrpc_abort_inflight +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 0xd41f602f lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5276ad0 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd698f776 ldlm_cli_cancel_unused_resource +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 0xd88cf87a ptlrpc_pinger_sending_on_import +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 0xd9e18eb1 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda5bb5ba sptlrpc_import_sec_ref +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 0xdbaf700d ptlrpc_hpreq_handler +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 0xdd3fb92a ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddf27c4e req_capsule_server_pack +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 0xde813391 ldlm_lock_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 0xe09bc1aa lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1ef0100 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe46643f8 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe571a9bd _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5cd2e32 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5de4514 sptlrpc_register_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 0xe6442c83 ldlm_lock_allow_match_locked +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 0xe70e23ee ptlrpc_request_alloc_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 0xe8cf9d41 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe91deddf req_capsule_init +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 0xec2164e0 ptlrpc_req_finished_with_imp_lock +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 0xee380df5 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee47fdc3 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef9a5cb4 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefd8a4f2 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0782e66 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1291e52 req_capsule_server_swab_get +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 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 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf57e7cfd ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf587beb8 ldlm_lock_fail_match +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 0xf6cd455b client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf74b636f ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8509f47 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 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 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 0xfd499b6e client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff0751ed ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff371a57 client_import_find_conn +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 0x6a774698 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x06aa58ec rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x075c16b2 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x093b92f0 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0aa96c73 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e4b8bcd rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e9df6a0 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a357a83 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a81057d rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b874711 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1d2c339c alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x209a9da5 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21f8aa16 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x23a716d4 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28508b33 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a3aae56 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x34501315 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x358799bd rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x35959826 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3a582462 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x40b9153f rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x49ee540f rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a3fddfe rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a7caa8c rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57565e11 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f5a22c3 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66011cdf rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x726dbaf2 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7541057d rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x763d206c rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x76d2a05a rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85c8fc0f HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x91ab6839 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x96a34e11 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9f10ca7f rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa69f6fc rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xab3a0660 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad40b7c2 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb00f8a32 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb15a3457 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb32b56af rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb36a2a66 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf8f0561 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc390bded dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc85b1216 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd98fed41 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdcde49e3 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe0dc28ac rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeade3737 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf21d0c2b rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf84d6878 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x014371bd SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x02b6fbfc ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0bbe98d8 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0c8c2797 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14b26192 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x214970fb ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2617171a DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2810b794 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x291d8a0a ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x31fd8bf2 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x356ae283 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cc71b85 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3d88aa57 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3e42458e ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ebe80ea DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f50f039 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3fa8d9ef ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4689c6c4 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x476aadeb ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b597e27 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d7d5cd1 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e645224 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5193fb9d ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x519d4151 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55407166 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x564f9574 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x64085919 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x654a8bcf ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x729a23e5 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73bfdb86 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75cb76ba ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x80e49206 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9b5f1650 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9f363666 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa44ac0a6 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa59d9107 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6ae8a79 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaad228c9 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xae3e8853 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb4185913 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb54525ac ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9a8e698 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbfb01787 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1838b23 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3b3f266 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5331fc7 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe1fc8833 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe2de42d2 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe8600f0f ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xee42816b ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xee63c4e5 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xefa2e746 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfdcab044 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe32fd15 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0632f694 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x07c45621 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x19138f80 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x23bd4628 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x330e6512 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3642a278 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x39e14b94 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3d9f1ad3 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x45bc8729 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x45e16689 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x47159888 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4dc1653e iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x57779c28 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5f04d976 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x683fffcd iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7769bebc iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x80de2bbb iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8ea34d0d iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x92b717b5 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaee543dc iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb0841652 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbc6ffb67 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbd4fc93b iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc1816efb iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe2c3029d iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe7a2a0fa iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf13e57a2 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf9b1964c iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/target_core_mod 0x021ba9ed transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03a42a66 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x0de883c7 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x14b7c4f5 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x188886ec transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x1955a211 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1a31e299 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x217a09b9 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x236d32e4 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x273f0c30 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d013c20 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e201bcd core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x2fe65e5e sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3567e33e target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x38f82648 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x391286d5 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c97df33 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x4208c3eb sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x496dc5c0 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c3e6aee target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5030829b target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x53fe4e9a spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x56376c11 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5906ff63 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x5abba93f transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c4474c0 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x70333530 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x7407aa2b core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x75ae9f20 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x767387c1 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7792a3f2 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x7db9f3ef target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x80945b4e sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x81574204 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x87e39f86 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ae30bc4 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e7b105e transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x902fd546 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x903706e5 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e4988ae sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0466c4c passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2da15cb spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2c58e8a sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6c595a8 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xb74bc1e5 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xba8bba9e target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xbe08471c target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1f445cf sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xc910ac29 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcb7a198e spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc30a5e0 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc93f65e target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xce110c04 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0799c86 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd4a6af0c target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf74fc6c target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xdff33805 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1f015c7 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xe62a1439 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xe68e54e5 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xe697a32f transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xec36ed56 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf304f46c transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf40896d1 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb4746f8 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xeacd323c usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x712e5130 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xd60cd72b sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0ca396d1 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x112b77e4 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1b3b1bff usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x45b004eb usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5e57004b usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7f7a0671 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa098e85c usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb2cc8ab1 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbf9337ae usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc3e808e9 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc8dd59ec usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcf4c3a8e usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x301670db usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x73a9410f 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 0xc7f66283 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd2949517 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf2e727fa devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf4be2939 lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x012e6e4b svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x05d15e21 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1672b37b svga_tileblit +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 0x2e493f89 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x3a849057 svga_tilecursor +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 0xd0f9567f 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 0xda48e0bf svga_settile +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 0x17f4a455 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x85663415 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x4d7bee07 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0d54d985 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 0x90761fd0 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x4654d453 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x4eabbb84 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xbaab2b15 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x3b039a86 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x3d1f6cb0 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x3e6d3922 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf74d7536 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x2edf50d5 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x84889f3e matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x16a0b381 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x7c3988c8 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb71d29bb matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb86e5403 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x2874f438 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x9c200669 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x0ea4e2d7 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x32201bbe matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb0be0fb2 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe81330f5 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf909d6a4 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xe84ad5de 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 0x0434c453 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x0e535ad1 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x2dba4c80 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc3d5a3eb w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x0f3b3533 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xc9ece8a5 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x3aca83eb w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x77ce002e w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x355adfc6 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x37409808 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x77051bf5 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x9db700ff w1_register_family +EXPORT_SYMBOL fs/configfs/configfs 0x189f4c19 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x30a33d4c config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x4ca2e9b0 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x50a3c863 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x6ccf9ab1 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x79925cce config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x815bbd7f config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x9cf61c77 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xa149466c configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xb8d71dcb config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xed692b9a configfs_register_subsystem +EXPORT_SYMBOL fs/exofs/libore 0x1b44f8a6 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x34e001ed extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x401c36df ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x416017ea ore_create +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x53c72eda ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x63a81226 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x7e9daf29 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x97d42906 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x99ce9ce0 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x9ecd81a2 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/fscache/fscache 0x00fd5772 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x07a2fb6a fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x0eee8b72 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x1c7e9b85 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x21c5f5e2 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x26d7e03e fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2ee3f2eb fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x2fcb2fe2 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x334921f5 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x35cef4b9 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x3a2681e9 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x3cd3fc3b fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x425ecbc1 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4b547aad __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x4e905948 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x5b044e1c __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x61db85ce __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x6b9c7941 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6dd7df72 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7185bfd7 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x727ae0d2 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7614d850 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x76992471 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7ecbcbca __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x83b80c95 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x841510b7 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x88a6040b fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x8fce7555 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x937e42fa __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x97a35902 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xae340b89 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xb7ffcbca __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xbb4640db __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xd5d5ad2a __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xda4f8df3 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xde47095f fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xe060fb00 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xe62fd3ce __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xe8a5e592 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xf5e5da93 __fscache_write_page +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x6abaa0d2 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x8136def5 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xa031547f qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb87de1e7 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc6e8b0a5 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 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x54b6476b lc_seq_dump_details +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 0xc2aa4e67 lc_seq_printf_stats +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 0x10f0db27 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x5c08c42f lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x61519f86 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xc1e250de unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x30ad4d84 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x90442cfd make_8023_client +EXPORT_SYMBOL net/802/psnap 0x2d2a52ce register_snap_client +EXPORT_SYMBOL net/802/psnap 0xcfddf1bb unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00007714 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x015b1e1b p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x08501dfd v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x08727dc1 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x08e402ad p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x0b17db4e p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x21ae2e07 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x22bea182 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x380aec9c v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x392aa942 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x41f25bc8 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4aaae6ab p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4e62cd53 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x57fbeede p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x59a04acd p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x61640b47 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x61a8499f p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x644bd181 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x64b355ef p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x6b2f6ff5 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x714c2755 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x7c9ee2f6 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x7de9367d p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x8a25886e p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x8e210037 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xa9e3f179 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xad47acf9 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb601f6e1 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xb9a234fe p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xba0702cb p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xba2c0084 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xba3d3aaf p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc05c87a7 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xc317f7a9 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc63d12af p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xd520c5aa p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd891a86b v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xebdbba4b p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf4b44d31 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfe9c1f22 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xffb304d9 p9_release_pages +EXPORT_SYMBOL net/appletalk/appletalk 0x39404887 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x3afddaf2 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x66919ad4 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xaa98739e aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x0afd11e8 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x28054b85 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x313e4af4 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x654f2b0b vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x7741f877 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x846ea2ed atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x8f8ac310 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x8ff004d6 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x986d80e1 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x9a5100de atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa5b43541 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xa856421b atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xdfa36e07 atm_charge +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfac5ae25 vcc_sklist_lock +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4119d971 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x41bba1ee ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x60886483 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x7c085ee6 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa7745bd6 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xaea50001 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc1557bd5 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xc3a450f1 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x034b7529 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x05a08c3b hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x07f84c11 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0b61fb90 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1321dec1 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1961ddcc hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x21a23480 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2626b9be bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x33c3b4ba bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x38559f0f hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46a9a9dc bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4df22329 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x52e2e543 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x58d7e68d __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x619727e9 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7db46d2d hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x83d4fb8b l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x894379b8 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8c69a486 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9d6c63b3 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa96d2273 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaa80cdeb hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb3fac5c8 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb92efcaf __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbfca418 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbdd24d5f bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbf135f10 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc26fc9ec bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcfd3083b bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd435318f hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd84d2bb3 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe12f92a8 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe8bec3ba hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xee0f3330 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf1814e63 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf404448c hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8eab081 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf98203cf l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd6ab53b hci_conn_check_secure +EXPORT_SYMBOL net/bridge/bridge 0xe2c99c14 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x35c4369e ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x60ea8f76 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xb1d8363e ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x13c23361 caif_enroll_dev +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 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x8a81e4b8 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x8fe5df10 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa0339d4a caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xa143c042 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x502b3eb7 can_rx_register +EXPORT_SYMBOL net/can/can 0x7afb1ed7 can_proto_register +EXPORT_SYMBOL net/can/can 0x9fa90ffc can_proto_unregister +EXPORT_SYMBOL net/can/can 0xa39f0f0a can_rx_unregister +EXPORT_SYMBOL net/can/can 0xa8acc781 can_ioctl +EXPORT_SYMBOL net/can/can 0xd44e1633 can_send +EXPORT_SYMBOL net/ceph/libceph 0x0197b9d4 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x053c10b6 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x0563f289 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x093e8416 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x0d4750c6 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x13040b79 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x17689987 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x17b4b69e ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1cdb4535 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x1fb2c6f9 osd_req_op_cls_request_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 0x24d3cfe4 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x3262cdb2 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x383e6253 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ca60386 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x3d05a60f osd_req_op_alloc_hint_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 0x44435f7f osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47f30241 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x47f7925d osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x480e7e69 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x481d46f7 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4de60f02 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x5216eb80 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x53351336 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5c52a54a ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x61f5ac17 ceph_monc_validate_auth +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 0x6b6003c6 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x6b8b4064 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x6ea58d56 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6fa5015b ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x760607ee ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x7a0f774b ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x7d4d4f79 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x82ebf891 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8815baa9 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8a9936b1 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x8d2d6b2f ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x8f8cae1d osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x92543af4 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x93df6406 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x9553b070 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x95b64ada ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x95e2b6ee osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x96ca4424 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x97dce8e8 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a419a59 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9a5f422c ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x9e5cdb26 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa4b4229b ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xa7567652 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xa817ee2b ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xa8744a20 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xa8ef8b2e ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xa95108c0 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xac038923 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaeaa5354 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb1527494 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xb1b029c1 ceph_osdc_alloc_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 0xbec3b9e6 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xbffb787c ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xc18d2dac osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xc1a7fac8 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc59c73ad ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd218ebe2 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd2d7816b ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xd447ac12 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xd6dd86a6 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xdac00f54 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xdba278e5 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xdbbb8227 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xdee98595 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xdefea43b ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xdf22faea ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xdf3b7fbe ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe95f2cda ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xe965c97a ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xe9eda367 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xec119116 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xec232af0 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xecef6ebd ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xee84a953 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf96c1fa2 ceph_client_id +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x6b215df4 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xf96d3b9e dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xb9d364c1 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x35247150 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3c6a0a53 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9f51c7c3 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xaf1d3c16 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbff14fdd wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc9d709c8 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xc675cf1c fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xcc71debe gue_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1686af29 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x628cdbdf ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x7f01c874 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x9983a3a4 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd5d3fd8e ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd955e64a ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x4321ab87 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa3712373 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xfdda1dba arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x07021d48 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x2f16b570 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4c6ac4cc ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x511d56d7 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xe88ce977 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x1ae949a6 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x805d7671 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xbb129261 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd44b7c5a ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfb34640a ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x02e380dc ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x044f9d24 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x45b5b003 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x092ab7ff xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xfc4facde xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x12d19c71 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x91ac9508 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x268c6156 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x450553a8 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x60e2345e ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x72cba348 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7f5b5dab ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdadf2e9f ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe9fbd20e ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xecb0ba72 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x01590a8b irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x035c0daa irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x041570a9 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x0693376e irlap_open +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 0x0ee2604d alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x187a7327 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x1a9f11b6 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x2a17732a hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x2dc4ad19 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x32af8cf6 irlap_close +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x42004566 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x43675a21 irttp_data_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 0x4e53c2f5 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x5030a86c iriap_close +EXPORT_SYMBOL net/irda/irda 0x53ffc010 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x56b99f6a hashbin_new +EXPORT_SYMBOL net/irda/irda 0x62636ef7 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x64dabb0f async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b7f50b3 hashbin_find +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x757f6581 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7bb172ca iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x85daf69f 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 0x9516f690 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x96ec6b27 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x9afedb3b irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xa3c18f52 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xaad2d90a irias_find_object +EXPORT_SYMBOL net/irda/irda 0xaec635e4 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xb49a749c 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 0xc67a8379 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xd22e8861 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xd6876e31 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xd7702e20 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xdd988ce6 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe58ba397 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0xe7aa593d hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xebe11144 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xecf18378 iriap_open +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0f25ffe hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xff8c3d41 irlmp_connect_response +EXPORT_SYMBOL net/l2tp/l2tp_core 0x2ee27b02 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1b55b88e lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x3298a1b0 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x53135d9c lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xa84acef9 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xcf094c6c lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xe507a11f lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xe60d0bc6 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xfebfeb11 lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3ab95c89 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x3ee2a834 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x522fbc9b llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x96b2477b llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xb592f4e3 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xc5ccfd2d llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xede4ca47 llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x03ddfa23 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x060433bb __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x068d8ba8 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x090c2e6d wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd4c66e rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0d15405a ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1057a66a ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x117d5f01 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x11d7277f ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x14b3b007 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x1fdfad4f ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x2172718a ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x2375cad5 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x28a3fc2b ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x2d1a9f65 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x35f78382 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x372e024a __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x3c54bcb0 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x3cb39470 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x3ff0417e ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x44eb8db1 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x452b4f47 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x465979b1 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x47988e1b ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x49954431 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4a1a687b ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4bf1e99a ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x53410171 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5b55869a ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5e7563d7 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x606347e8 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x61317924 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x614a42ec ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x6b6869f7 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x6ffdf9ac ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x728ad052 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7f22e30a ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x87d74287 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x8c0cfb4d ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8d4e87b1 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x8fca8249 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x94da056a ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x976eec35 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x97e3ab50 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x9d719e1a ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xa047047a ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa0849612 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xa1c47b2e ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa2739108 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa285e662 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa815914a __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa855e630 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xa86165f1 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xae485cc2 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xaffb08f3 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xb32205b8 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xb6f8d7e9 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xb7800d54 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xbba2496a ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xbfe1650b ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc3d601dd ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xc6c2d46e ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xcc673928 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xcd747816 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xce901800 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xced5fcca ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd2daa874 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd3f41a70 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd91aa0c8 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xdba5be2f ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xea254306 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xecc50459 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xece06ffd ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xed902702 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xedde0ac4 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xefc22496 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf9106395 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xfc4ee35e ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac802154/mac802154 0x2c78da0f ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x371d87df ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x4da5514e ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x72e29476 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x752aa3ab ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x8eed7f42 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xc7f44935 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xcf9eb10a ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xe661038c ieee802154_xmit_complete +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x03066d18 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0bc3c2a7 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1927edd8 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x196cbe63 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1f2ea447 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x228351eb ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x42551fb1 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4792d59d register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4d8e403c unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc4705641 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc801365d ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc50294f register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcf2a62ba ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xef511b1a ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x45ad7b63 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x835f1fca nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xde7274a2 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x00fda0b2 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x8987ed77 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x8f9215df nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xc865bbd8 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xe3624c40 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xf00eaf35 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x25765f96 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x3aed0d81 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x605dc6ef xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7bd431fe xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x7d4df383 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x929eb31e xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xab3ead45 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xbf6efe43 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe494b026 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf8dea978 xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x10b617af nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1da8310c nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x41e13abf nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x545aaa72 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x627c7df6 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x6880b960 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x711ba416 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x7350c605 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x7456d923 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x7871c6c0 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x7ed4bdc5 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x9a91498b nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x9aa9452a nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xa3a4009f nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xb6d5203d nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xb977a2cd nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xd90f4f3f nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe3423037 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xed04716e nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/nci/nci 0x11c5a990 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x14914fcb nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x1639f724 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x37c93fba nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x4270da3b nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x489fc370 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6f4b01fa nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x71f26a82 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x81320ee1 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x8285c3c3 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x9b73feef nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xa35ea831 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xa713b69f nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xcdc7e880 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xd075fa8d nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xd18dcb38 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xd7f864a9 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xdd621357 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xe1ce71bf nci_hci_set_param +EXPORT_SYMBOL net/nfc/nfc 0x0ea6613a nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x143262a8 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x2567313d nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x25bdd411 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x2faaa9a7 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x3394402b nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x4bdf12f2 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x508004fc nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x53b6f727 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x64033140 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x6df130bf nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x71c7f47d nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x7c8cb5c8 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xa70359b5 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xb5070b96 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xcd5ec96f nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xcd6a8c0f nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xdd6fd856 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xeb9b0372 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xeec2a50e nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xf63d2ef7 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xffedf3d9 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc_digital 0x38bcde22 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x458c3266 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x766bd197 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xdf20916a nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x10c71677 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x200b3677 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x377419f0 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x60c1b575 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x7231e6a3 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x82655f5b phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xa4784f21 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xb52e2b75 phonet_proto_register +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x212f9a2a rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x364c579a rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4685c814 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x47acbf83 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x71173782 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7da8e4bd rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x90079d06 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x92a44083 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x959e8128 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9daa0723 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xae9b160a rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd85d0b71 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xec21b02f rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf62e54ad rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfa24b26a rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0x609c8c12 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x0ba3f9c7 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x2d80a025 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa87866c2 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x07c75a7d svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x08b0503e xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x89249bc0 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x6ae1dfdf wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x7a0f3e7d wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x039f48c9 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x03d6cb3c cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x04447f60 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x05ae20c0 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x079e37b0 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0ba1483b cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x0cff7d9f cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0d1cbbee cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x1344e9bb cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x15f5e93f cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18d74e60 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x19a57ecd wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x19fa5fe6 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x1a8cf4cc cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x1d6cae65 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x1e813699 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1fa66aaf regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x1ffcbeb5 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x2642903a wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x2bfd7d3b freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x3048b3a2 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x36da8c9d cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x3b1f4cb5 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3e68e22f cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x3f8022bb wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x3faf59bb ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x4123c1a1 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x4140eef9 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x44fe76b1 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x45386eb9 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x460edee4 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4ba1b43e wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x4f3d77c6 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x524acb99 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x536d1b80 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5ecf8e79 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x6030be90 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x65f45150 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x68f26f2b cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6f7bb377 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x70a557af cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x729e7a02 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x784a027d cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x7cdf6875 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7d82070d regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x808335d4 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x82bf5635 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8554a815 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x884f2132 cfg80211_pmksa_candidate_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 0x977a431e cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9aaaf60a cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x9b7a9fe2 cfg80211_ft_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 0xa34cbb58 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xa39d893d ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xa3e42144 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xa3faf4a3 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xa4978f59 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xa5094200 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa6a9975f cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xa811736a cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xa9e56575 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xaabf0435 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xac7c68ea cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xacb07e28 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xad99dad1 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb9a151a2 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbfe275b6 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc597ca4d cfg80211_remain_on_channel_expired +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 0xc964a400 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd02f7a82 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xd295b8c9 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd60f2e93 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdff8edf2 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe3c67903 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xe5e1c2dd cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe7d93081 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xebedfa1e cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xefe098fa cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xefe80ab7 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xf027ef0e wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xfddcd840 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x3b6ced5c lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x89f55d4b lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa1708ca0 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xafed5873 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xdcad219d lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xe5b24cab lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x024e8ebd ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x82abd12f 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 0x4ead6f16 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 0x6fcc4e39 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 0x97c8aba3 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 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf2299b07 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 0x681a9ce3 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 0x43e1d912 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x082c679d snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x129d9cc2 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x15aebf55 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1b5f5fb6 snd_jack_set_parent +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 0x2cf20c4e snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x34e7fcea snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x35573f56 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x380d8558 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3bc648c4 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x3ef6e084 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x3fbaeea3 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4bc00306 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x50e47956 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x571f41ef snd_device_new +EXPORT_SYMBOL sound/core/snd 0x5a367b26 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x5dfd85cc snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x64f8da15 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x717dc840 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x7536e23e snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x7f55d849 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x8022da8c snd_component_add +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x840c2d1d snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x84772ecd snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x85c9e458 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x947911e5 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x9beaa15d snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0aae0bf snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa3685ee3 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xa5f72016 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xa76e3bcd snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xa81b05c7 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xae5803ee snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xafb3dd39 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xbe4cfe09 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xc59a134e snd_cards +EXPORT_SYMBOL sound/core/snd 0xc5c0eea6 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xc7f17dd9 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xcf39e269 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xd0082c26 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xd511d80e snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xda4eafc0 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xdd53a6b5 snd_card_new +EXPORT_SYMBOL sound/core/snd 0xe29ea9c1 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xe482f421 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xe9346771 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xf03e7ace snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xf0faea83 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xfaea6713 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x4c5fd440 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 0x05eb0dda snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0b2bdece snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x16c9bca3 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x183480fd snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x225e382b snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x26b8bb1e snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x29585aa2 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x29ffbefc snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x32f92083 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x33df8078 snd_pcm_open_substream +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 0x3cf9a090 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x479157d0 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x4af89b69 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x4f92d135 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x4f98ee7f snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52223cb6 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x556a361b snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x562c0bfe snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5f5c8a2e snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x61077318 snd_pcm_lib_readv +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 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x727edc80 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x77f4c858 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x7c0f9f1d snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x7e2373c9 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x7f297a29 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x84403b26 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x9317f95b snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa04e380d snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xb7773e91 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xb9cd4091 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xba618b9f snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xbf5f0b03 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xc4c386ae snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xc728467f snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xcb844089 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xccb1cc3f snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xcd3c5982 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xd4a94efd snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xd9d8f462 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xdd5a7e64 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe564b650 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe645f087 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf1acdf9a snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf4d74312 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xf922e45b snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xfc4a19e9 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x014ba19a snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x16fab879 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2125ea8b snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x65acea67 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x725e02d1 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x75f4919c snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x78817e7a snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8104c374 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x871afb75 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x89645928 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8cbbbbf3 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa1a894c3 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa1a91542 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xafcfe5fe snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xafdd948d snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb2466276 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb96e61f3 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbe4f293d snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb196e71 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-timer 0x31be3562 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x32bc07b0 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x5260f904 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x58e753be snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x5cca72d8 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x64567f5b snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x7658343e snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x9a3d5252 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xaa8c9e51 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xbd92c9a5 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xc0f218ab snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xdccc8b61 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xf4b02a54 snd_timer_close +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x07704e96 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 0x08a11e36 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1b68dfee snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x26c15a8b snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7100c2da snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7252e54d snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xaec586ce snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd2590d22 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf31d6241 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf70fe8c0 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x07b16f01 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 0x396e8b7f snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x518e389f snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x74dd6875 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x948555ec snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9881e119 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa46b0c53 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb8b07c63 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd1bfa6f1 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x053b6119 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1a01d206 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1eb0def2 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2acf7ac4 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3c7262fe cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4732b5af fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4839bae1 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4ba7fce2 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x52aaafdc amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x55368c09 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6031b2cc amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x67d01eef cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6851ca56 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x77e17d77 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8336b306 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83bea6b8 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa3af14a4 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa86925dc amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaa8068fe cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xac711fe6 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc29ba7af cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc4ad894a amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc65cd989 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcf134ca9 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd394ee58 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd5180419 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd68faa55 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xda8d8976 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe39c1bf6 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xedea16ab fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xff1c0e7a fw_iso_resources_allocate +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x1913ca19 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x99cc7a01 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0a9c1b65 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x340317a2 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4269b846 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7ab4b13b snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9c7823c8 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xaeb8c1bb snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf7e81568 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfd6bb4f7 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x1022e7be snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x1534dfc3 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x561de5e2 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xecc0045e snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x4f3ec0a4 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf140fa04 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x40f6be56 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x48527d89 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7325196f snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8e7900ea snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x981fae1b snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd41a7758 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x01dc9f0d snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x508eb1ec snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5374aee5 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5ec03c07 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x769c35f4 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x76c1cf11 snd_i2c_readbytes +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x06f29e8d snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1b24e256 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x37cf020d snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3a04daf0 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3dcab8b6 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4a965b09 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x503e4929 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5336a0f2 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6d61b883 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x704a9c26 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7c42bcef snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8c00673a snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb3b716ce snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbbf7317a snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xda61a4ad snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf0afde31 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfd6b1233 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0858fde1 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4171c287 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x55e4d912 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6b72b350 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x85a061b2 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x862966aa snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe1c221f4 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf880f3ad snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfc515516 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x48359ab2 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x6fc59f86 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xfe12f4c6 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x00dd435c oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x07384ee7 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0bfeabc0 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x13eabd7c oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x149bb107 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1602525d oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3f47c7fd oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x582698f7 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5bfeb342 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x667179a3 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6e9600e1 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x834f6f25 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8ca90ae2 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x908a848c oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa26af872 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb4fae1c8 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xca7a5030 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xce80a4e6 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe4400cab oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe87bdf29 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf3f1bcf1 oxygen_read32 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1590bb40 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x20cf2909 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x55462847 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5c98b289 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa5764c2c snd_trident_start_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x875dcde1 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x954f41c0 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/snd-soc-core 0x4b866011 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x5e4c7785 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x74672d4d register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x87815bcd register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0x9d287ebe register_sound_special +EXPORT_SYMBOL sound/soundcore 0xa0b99330 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfc5e451b sound_class +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x03cd2ab6 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4e832965 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 0x9ed128f8 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb61a62f2 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xdb320038 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xfd9a3418 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x27fa7205 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6df8b892 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8928665a snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9178cb61 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa9d8f898 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbe2eaa55 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc5cb7cb7 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcdcdc503 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 0x63fcdb08 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 0x001b69ab scm_detach_fds +EXPORT_SYMBOL vmlinux 0x00226030 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x0033fce3 sk_dst_check +EXPORT_SYMBOL vmlinux 0x0041e1c8 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x00471665 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x0067a3cb register_sysctl_table +EXPORT_SYMBOL vmlinux 0x006b4bcd cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00956937 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x0098a570 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x00b77679 open_exec +EXPORT_SYMBOL vmlinux 0x00be3b3c vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00c2c518 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x00c5f610 numa_add_memblk +EXPORT_SYMBOL vmlinux 0x00cc1a88 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x00cd4384 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e2ffa5 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x00eda34a rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x00fbb8a4 dm_io +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x010417e6 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x010e6f5b remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x01254feb bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x0133718b kernel_listen +EXPORT_SYMBOL vmlinux 0x01356dd5 bio_map_kern +EXPORT_SYMBOL vmlinux 0x013d2452 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x015797d6 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x015bd8cb __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x016068e0 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0171d14d tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x01740fba dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x0177888e xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x01cf63de downgrade_write +EXPORT_SYMBOL vmlinux 0x01e7cf79 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x01ed7d85 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x01f19a56 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x01f19e7f jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0229d3ff abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x024239ab pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x024485e6 __break_lease +EXPORT_SYMBOL vmlinux 0x0249d750 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x0251316a security_file_permission +EXPORT_SYMBOL vmlinux 0x025eeb67 netdev_state_change +EXPORT_SYMBOL vmlinux 0x0261b633 compat_sock_get_timestamp +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 0x02b5322c clk_add_alias +EXPORT_SYMBOL vmlinux 0x02d5e36b __sk_dst_check +EXPORT_SYMBOL vmlinux 0x02e0b065 submit_bio +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02f2c50c file_update_time +EXPORT_SYMBOL vmlinux 0x02f87431 phy_attach +EXPORT_SYMBOL vmlinux 0x032ecd40 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03357353 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x03437af0 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x0346ddf4 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035f891b down_interruptible +EXPORT_SYMBOL vmlinux 0x0360541d in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03a1474c uart_update_timeout +EXPORT_SYMBOL vmlinux 0x03b66623 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x03c87389 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f8b318 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x03fcc535 wireless_send_event +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042b5bbb inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x042c1fe3 dev_addr_add +EXPORT_SYMBOL vmlinux 0x04452b4b zero_fill_bio +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04515eb3 d_genocide +EXPORT_SYMBOL vmlinux 0x045ee1d7 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048a97c3 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x049568bc security_inode_readlink +EXPORT_SYMBOL vmlinux 0x04a1dd0f sk_wait_data +EXPORT_SYMBOL vmlinux 0x04df0bb5 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x04e61a97 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f3d337 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0524ff0f tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x052b88f6 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x055bae7d netif_device_detach +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05631d79 vc_resize +EXPORT_SYMBOL vmlinux 0x05771ab4 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x058d9871 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x0597d2cb inode_add_bytes +EXPORT_SYMBOL vmlinux 0x05a60f76 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x05b9096b __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x06123b8d of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063c776e mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x063fabb0 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x0642c062 mutex_trylock +EXPORT_SYMBOL vmlinux 0x0661ddb6 param_set_ulong +EXPORT_SYMBOL vmlinux 0x067b8318 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x067bdae9 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06c0b6ea param_ops_invbool +EXPORT_SYMBOL vmlinux 0x06d1cc33 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071a8938 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x072dce0d of_get_pci_address +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x074e67cb pnp_start_dev +EXPORT_SYMBOL vmlinux 0x0772c833 to_nd_btt +EXPORT_SYMBOL vmlinux 0x078bd78d elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b091dc PDE_DATA +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07db2e66 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x07e3c7c2 generic_make_request +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082eb3b6 vme_lm_request +EXPORT_SYMBOL vmlinux 0x083e58db xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x085d85e6 bio_advance +EXPORT_SYMBOL vmlinux 0x089088e7 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x08bdabee file_open_root +EXPORT_SYMBOL vmlinux 0x08cede41 make_kgid +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x0908a18d skb_append +EXPORT_SYMBOL vmlinux 0x09215a27 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x093bfc3f proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +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 0x099bbd54 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x09b0dfc0 load_nls +EXPORT_SYMBOL vmlinux 0x09bc0884 is_nd_btt +EXPORT_SYMBOL vmlinux 0x09be682a sk_stream_error +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09ca4f6a sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e73e62 register_key_type +EXPORT_SYMBOL vmlinux 0x09ef8802 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x0a0cb63a mdiobus_register +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2ca677 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x0a4b80f0 bioset_free +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a611da1 get_fs_type +EXPORT_SYMBOL vmlinux 0x0a832beb scsi_host_get +EXPORT_SYMBOL vmlinux 0x0a875ce3 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x0a943028 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x0a9b473c redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0ab7bc52 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae84548 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x0ae964e1 locks_free_lock +EXPORT_SYMBOL vmlinux 0x0aee7751 icmpv6_send +EXPORT_SYMBOL vmlinux 0x0af215fc file_path +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b198bbf con_is_bound +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b22ea08 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x0b2b99e1 bio_put +EXPORT_SYMBOL vmlinux 0x0b4bbc27 wake_up_process +EXPORT_SYMBOL vmlinux 0x0b5027fd mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x0b51b3f5 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x0b5e44a2 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x0b601c28 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x0b60e2f7 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x0b677cf1 ps2_end_command +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b77da4e inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x0b797009 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x0b7e9028 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x0b8e6da1 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x0b9a0c29 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x0bb3e74d d_tmpfile +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bde1912 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x0bebd3a0 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x0bebd6c1 truncate_setsize +EXPORT_SYMBOL vmlinux 0x0bed96ff __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x0bf471e9 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x0bf5de19 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x0c0562df dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x0c1163ba pci_release_regions +EXPORT_SYMBOL vmlinux 0x0c206d36 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c50f8c0 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x0c534a3a devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5ad188 unregister_nls +EXPORT_SYMBOL vmlinux 0x0c654c85 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c75f775 read_cache_page +EXPORT_SYMBOL vmlinux 0x0c78c4d8 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x0c872efb inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x0c8f2be9 serio_reconnect +EXPORT_SYMBOL vmlinux 0x0c8f421c end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0c92af82 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x0c9af5fd tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb5c004 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x0cc7730a __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x0cccc274 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x0cff0b95 blk_complete_request +EXPORT_SYMBOL vmlinux 0x0d07f601 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x0d12fdf2 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x0d1b9744 set_cached_acl +EXPORT_SYMBOL vmlinux 0x0d2a873b generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x0d363c64 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d4b66a7 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d549812 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d658204 pci_match_id +EXPORT_SYMBOL vmlinux 0x0d742122 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x0d80efb5 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x0d93c9fe account_page_dirtied +EXPORT_SYMBOL vmlinux 0x0d9fb1df try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da24277 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x0da57ca2 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x0db09ec3 of_match_device +EXPORT_SYMBOL vmlinux 0x0db6011c param_get_bool +EXPORT_SYMBOL vmlinux 0x0dc00685 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x0df77efb sock_create_lite +EXPORT_SYMBOL vmlinux 0x0e034351 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x0e06eb2e of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x0e087f91 del_gendisk +EXPORT_SYMBOL vmlinux 0x0e0d0a10 arp_send +EXPORT_SYMBOL vmlinux 0x0e1b80b2 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x0e28394a pci_release_region +EXPORT_SYMBOL vmlinux 0x0e5afc6c sg_miter_stop +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e6e38c5 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x0e77a781 lockref_put_return +EXPORT_SYMBOL vmlinux 0x0ea61a17 generic_fillattr +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed19408 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f0b37d3 __breadahead +EXPORT_SYMBOL vmlinux 0x0f0bd6ba skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x0f11ca75 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x0f2d572f tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f89cf9e simple_write_end +EXPORT_SYMBOL vmlinux 0x0f8b4736 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x0fa03a75 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbbd861 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x0fd4f3ca generic_setlease +EXPORT_SYMBOL vmlinux 0x0fdbbda5 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x0fea68a1 __vfs_write +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff2c759 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x0ff2cb06 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x0ff4a408 __sb_end_write +EXPORT_SYMBOL vmlinux 0x0ff58057 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x100c2903 add_disk +EXPORT_SYMBOL vmlinux 0x10244ad5 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x10336bf3 param_set_byte +EXPORT_SYMBOL vmlinux 0x1034f218 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x104334b0 simple_follow_link +EXPORT_SYMBOL vmlinux 0x1051654f simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x1069ca7b jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e2135 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10b270a0 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x10d40633 d_rehash +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11411f38 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x114488ec vga_put +EXPORT_SYMBOL vmlinux 0x1156af27 seq_write +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11647859 padata_do_serial +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11867a82 genphy_read_status +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a0e556 unlock_rename +EXPORT_SYMBOL vmlinux 0x11a17e9b blk_recount_segments +EXPORT_SYMBOL vmlinux 0x11b065e0 phy_disconnect +EXPORT_SYMBOL vmlinux 0x11c04252 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x11dad4e0 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x11e21ac8 user_revoke +EXPORT_SYMBOL vmlinux 0x11e56c37 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11f9cbaa iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x11fd00ea numa_set_distance +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x1222ebbd sk_stop_timer +EXPORT_SYMBOL vmlinux 0x122ac65b get_gendisk +EXPORT_SYMBOL vmlinux 0x12317bfa pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x12388b44 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x1238d45f dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x124931df audit_log +EXPORT_SYMBOL vmlinux 0x1257a29b block_write_end +EXPORT_SYMBOL vmlinux 0x126b7b20 proc_symlink +EXPORT_SYMBOL vmlinux 0x1272e73a pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x12831ca5 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x129e2094 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12c714af md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x12cd04e4 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x12d3516b vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x1335cf96 kthread_stop +EXPORT_SYMBOL vmlinux 0x133855f5 set_anon_super +EXPORT_SYMBOL vmlinux 0x133ef0d4 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x134aa68f nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x135c8860 simple_statfs +EXPORT_SYMBOL vmlinux 0x135cbf14 replace_mount_options +EXPORT_SYMBOL vmlinux 0x13a3724c thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x13aeac1d param_array_ops +EXPORT_SYMBOL vmlinux 0x13afe490 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x13c3458f i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x13c920d2 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e21576 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x13ea51cc cfb_fillrect +EXPORT_SYMBOL vmlinux 0x13f800f2 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x14084ade pci_scan_bus +EXPORT_SYMBOL vmlinux 0x1416803f cpumask_of_node +EXPORT_SYMBOL vmlinux 0x141d14c0 vme_master_request +EXPORT_SYMBOL vmlinux 0x1444bfe8 vme_irq_free +EXPORT_SYMBOL vmlinux 0x1478187c __frontswap_store +EXPORT_SYMBOL vmlinux 0x149f1b3f eth_gro_complete +EXPORT_SYMBOL vmlinux 0x14abc8fe devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x14c5f7a3 __block_write_begin +EXPORT_SYMBOL vmlinux 0x14fd15d2 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x1511e1be scsi_register +EXPORT_SYMBOL vmlinux 0x152a2792 elevator_change +EXPORT_SYMBOL vmlinux 0x15364b63 ida_remove +EXPORT_SYMBOL vmlinux 0x153ed2e3 nf_log_set +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x157195b5 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x158179c6 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x15ac01c6 key_validate +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15e39948 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x16045827 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x160dcd77 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x162d4143 set_create_files_as +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x165165d1 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x1668cb97 nf_log_unset +EXPORT_SYMBOL vmlinux 0x16766435 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167eb9d7 should_remove_suid +EXPORT_SYMBOL vmlinux 0x16810119 input_allocate_device +EXPORT_SYMBOL vmlinux 0x169623aa xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x16d5d2cd cpu_all_bits +EXPORT_SYMBOL vmlinux 0x16dad02a simple_dir_operations +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1728620f dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x175544b2 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x1772ebdc dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17ad35e3 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x17b0ebb6 phy_device_free +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b6169d dquot_commit_info +EXPORT_SYMBOL vmlinux 0x17b92067 write_one_page +EXPORT_SYMBOL vmlinux 0x1807ab12 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1840323b input_unregister_device +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1887630f blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188f3199 tty_set_operations +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b48e28 __memset_io +EXPORT_SYMBOL vmlinux 0x18b6ab57 pci_dev_put +EXPORT_SYMBOL vmlinux 0x18de354e abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x18fef9cb xen_start_info +EXPORT_SYMBOL vmlinux 0x18ff1038 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x193c909d proc_mkdir +EXPORT_SYMBOL vmlinux 0x194117ac devm_request_resource +EXPORT_SYMBOL vmlinux 0x19456946 i2c_use_client +EXPORT_SYMBOL vmlinux 0x19485ae6 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x196d4fd0 ata_link_printk +EXPORT_SYMBOL vmlinux 0x197f597c udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x1985ef74 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x1992d8dd tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x199f8db3 vme_bus_num +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19d1aa06 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x19f4a7fc of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x1a1b28e7 udp_prot +EXPORT_SYMBOL vmlinux 0x1a1dc7f7 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x1a2e1f9e ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a7aa868 __f_setown +EXPORT_SYMBOL vmlinux 0x1a85416b dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x1a89dc34 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x1a9879d6 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x1aa36a4a xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x1ab06748 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x1ab4d8b0 revalidate_disk +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ac65cff msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x1ad846f0 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b32a474 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x1b372d3a __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x1b373d7d ps2_command +EXPORT_SYMBOL vmlinux 0x1b3d8031 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x1b46ca92 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x1b4cf970 inet6_release +EXPORT_SYMBOL vmlinux 0x1b53ecec skb_tx_error +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1ba75155 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x1bb219c9 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb4d79f blk_fetch_request +EXPORT_SYMBOL vmlinux 0x1bbafa07 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x1bc34bc1 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x1bca2a90 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x1bf15f49 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x1c0e3526 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x1c0f9939 udp_del_offload +EXPORT_SYMBOL vmlinux 0x1c38325c alloc_pages_current +EXPORT_SYMBOL vmlinux 0x1c3cd123 dev_notice +EXPORT_SYMBOL vmlinux 0x1c45f689 ilookup +EXPORT_SYMBOL vmlinux 0x1c47ce90 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x1c509a89 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x1c820066 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x1c84b5aa abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c8f3725 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x1c92aedc skb_find_text +EXPORT_SYMBOL vmlinux 0x1cbd973e vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x1cd02e4a mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x1ceb1e24 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x1ceb8f32 lookup_one_len +EXPORT_SYMBOL vmlinux 0x1cfee60d __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x1d018d1b block_write_full_page +EXPORT_SYMBOL vmlinux 0x1d02d5ce simple_transaction_release +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d15f7d2 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x1d3f71b6 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x1d4def33 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x1d4e8d45 vm_mmap +EXPORT_SYMBOL vmlinux 0x1d895149 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x1d89bdac neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x1d92d898 complete_and_exit +EXPORT_SYMBOL vmlinux 0x1da2ed44 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x1dac19f0 mdiobus_free +EXPORT_SYMBOL vmlinux 0x1db8c2ba security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x1dbc1efe inode_init_always +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcc3bde i2c_release_client +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dce2b0c f_setown +EXPORT_SYMBOL vmlinux 0x1dd3f56f ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1deb847b of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x1dfd0fb9 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e135c29 register_netdev +EXPORT_SYMBOL vmlinux 0x1e20cfde dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e29a471 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x1e4166ac cdrom_release +EXPORT_SYMBOL vmlinux 0x1e659442 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x1e6a3f75 dev_add_offload +EXPORT_SYMBOL vmlinux 0x1e6b88f7 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6e7034 dm_register_target +EXPORT_SYMBOL vmlinux 0x1e88b886 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x1e977f01 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x1e97bbf4 netpoll_cleanup +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 0x1eb8d0af find_vma +EXPORT_SYMBOL vmlinux 0x1ec0c682 bdgrab +EXPORT_SYMBOL vmlinux 0x1ec0f915 km_state_notify +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1ef37c50 brioctl_set +EXPORT_SYMBOL vmlinux 0x1f011944 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x1f19c546 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x1f2344ec security_path_symlink +EXPORT_SYMBOL vmlinux 0x1f26a582 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f9c1c65 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x1fa4276a nf_afinfo +EXPORT_SYMBOL vmlinux 0x1fb4b714 blk_finish_request +EXPORT_SYMBOL vmlinux 0x1fbc69aa iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcf4d4b _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fdc7df2 _mcount +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 0x2010e6e7 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x204346af proc_dostring +EXPORT_SYMBOL vmlinux 0x20462c06 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x20552b7f unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20837615 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20906cd5 idr_destroy +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20aa0441 inet_select_addr +EXPORT_SYMBOL vmlinux 0x20b3f7cf skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20ceb41f set_disk_ro +EXPORT_SYMBOL vmlinux 0x20ceb67b netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e3d2d7 misc_deregister +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ffa7f6 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x2106621c ppp_register_channel +EXPORT_SYMBOL vmlinux 0x2107ae7b cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x211aed6c netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x2128f780 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x212c2879 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x212f53b6 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x2139ba53 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x21580ef0 skb_trim +EXPORT_SYMBOL vmlinux 0x215923a8 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x215e6c7b mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x21b35de1 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x21c9f026 free_task +EXPORT_SYMBOL vmlinux 0x21d238bf blk_requeue_request +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e987c3 mount_nodev +EXPORT_SYMBOL vmlinux 0x22033867 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x221752fc seq_putc +EXPORT_SYMBOL vmlinux 0x2221289e get_disk +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22337f85 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x223cbf1c tty_vhangup +EXPORT_SYMBOL vmlinux 0x224177de truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x224ff4ad wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x22606b93 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2283fba3 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x22877c3c acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x22a1d02a mount_pseudo +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22baea3d proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x22ee7853 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x22fb406f register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23244051 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x233f36d1 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x2346d34e fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x234a700c cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x236061e4 bmap +EXPORT_SYMBOL vmlinux 0x2364c326 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x2375e2d7 padata_free +EXPORT_SYMBOL vmlinux 0x238b1efa dquot_operations +EXPORT_SYMBOL vmlinux 0x23907413 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c0a2e3 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x23c19244 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23dd2be3 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x23f1f62b vme_irq_request +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2401fc19 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x24174ba8 dev_mc_init +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242c6aae seq_release +EXPORT_SYMBOL vmlinux 0x243d0fac eth_mac_addr +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24554b35 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x2459833e register_filesystem +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245f621b mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x24697356 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x24811e2a __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24982743 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x24b22454 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x24b4e9d0 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x24b88718 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x24e78a81 proc_remove +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25282d14 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x252a94ef iunique +EXPORT_SYMBOL vmlinux 0x253a8b9a uart_resume_port +EXPORT_SYMBOL vmlinux 0x253f159a of_platform_device_create +EXPORT_SYMBOL vmlinux 0x2542a8dc arp_create +EXPORT_SYMBOL vmlinux 0x25562e63 netdev_emerg +EXPORT_SYMBOL vmlinux 0x255bb072 change_bit +EXPORT_SYMBOL vmlinux 0x2561eeaf bio_endio +EXPORT_SYMBOL vmlinux 0x256887b2 cdev_del +EXPORT_SYMBOL vmlinux 0x2569112f padata_start +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x258084fe pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25ab6fee request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25b24e98 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x25b5c841 xen_dma_ops +EXPORT_SYMBOL vmlinux 0x25b65c8a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x25cb0b95 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x26133a5c pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x26370e9b xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x2638015f neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264e269d follow_down_one +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26555ca7 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x2672c52f pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x267b2d1a generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x26909a39 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x26cb4fcc inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x26e4392f jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x27021b3a i2c_master_recv +EXPORT_SYMBOL vmlinux 0x2710ea18 user_path_create +EXPORT_SYMBOL vmlinux 0x271569a3 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27209a13 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x2723641f init_task +EXPORT_SYMBOL vmlinux 0x2724ba66 __ioremap +EXPORT_SYMBOL vmlinux 0x272556ba done_path_create +EXPORT_SYMBOL vmlinux 0x272f758b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x273a82e1 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27585568 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x275f5a51 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2760f8c8 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x2766b3ce ip_defrag +EXPORT_SYMBOL vmlinux 0x27681037 param_set_invbool +EXPORT_SYMBOL vmlinux 0x2771d98e dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a34754 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x27a3d7d6 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x27aa67fe tcp_connect +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c5f637 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x27c68940 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x27c9d1eb migrate_page +EXPORT_SYMBOL vmlinux 0x27d472c1 sock_register +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f3497f of_device_alloc +EXPORT_SYMBOL vmlinux 0x281070fd blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x2813f0ac __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x283b02cc register_netdevice +EXPORT_SYMBOL vmlinux 0x283e5657 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x2868b74d mmc_free_host +EXPORT_SYMBOL vmlinux 0x28900f5f md_flush_request +EXPORT_SYMBOL vmlinux 0x289b16ad single_open_size +EXPORT_SYMBOL vmlinux 0x28a23ee7 tty_flip_buffer_push +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 0x28b77a51 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x28bb0c60 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x28d11a2d dump_align +EXPORT_SYMBOL vmlinux 0x28d7ffea lg_local_unlock +EXPORT_SYMBOL vmlinux 0x28db252f devm_iounmap +EXPORT_SYMBOL vmlinux 0x28dc2f00 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x28df97a2 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x290429a6 dget_parent +EXPORT_SYMBOL vmlinux 0x29161792 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x2918375a blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x291ba05d udplite_table +EXPORT_SYMBOL vmlinux 0x29464db2 km_policy_expired +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x297a0ecb freezing_slow_path +EXPORT_SYMBOL vmlinux 0x29835fb7 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x29993ba9 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x299a9fc3 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x299cc526 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x29bae665 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x29efb522 sg_miter_next +EXPORT_SYMBOL vmlinux 0x2a0193ae clear_inode +EXPORT_SYMBOL vmlinux 0x2a1d9198 neigh_xmit +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a62a749 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x2aa1ad41 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab1dab9 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x2ac086c7 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x2aca5dc6 dump_emit +EXPORT_SYMBOL vmlinux 0x2accb5bd truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad351b7 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x2af99795 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b1621a2 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x2b1b1dac __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b34a9d1 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x2b3f9419 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x2b49c572 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x2b4f7f3a page_readlink +EXPORT_SYMBOL vmlinux 0x2b641583 icmp_send +EXPORT_SYMBOL vmlinux 0x2b885b70 dquot_quotactl_ops +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 0x2bd57cdd setattr_copy +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2be9e808 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c066d41 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2a1f8d pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x2c409a5f xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x2c4b05f9 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x2c4e31d4 udp_disconnect +EXPORT_SYMBOL vmlinux 0x2c60b224 dev_addr_init +EXPORT_SYMBOL vmlinux 0x2c7d0fe8 of_dev_put +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2cb089b9 param_ops_bool +EXPORT_SYMBOL vmlinux 0x2cb7b179 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x2cd73ae6 vfs_llseek +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d08adac unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x2d0baebc request_key +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2cfa80 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d4887e5 page_waitqueue +EXPORT_SYMBOL vmlinux 0x2d5ddc73 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x2d7f4009 vfs_symlink +EXPORT_SYMBOL vmlinux 0x2d8740ac starget_for_each_device +EXPORT_SYMBOL vmlinux 0x2dce2f1c __irq_regs +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2dda1516 flock_lock_inode_wait +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 0x2e13210a seq_file_path +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3bc9c9 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x2e5ed376 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x2e688d9a pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x2e7be112 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2e964eda __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x2ea4c1c9 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x2eadfadc tcf_action_exec +EXPORT_SYMBOL vmlinux 0x2ece1305 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2ede62b2 kern_unmount +EXPORT_SYMBOL vmlinux 0x2eefd92a vfs_setpos +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 0x2f0d4267 dentry_unhash +EXPORT_SYMBOL vmlinux 0x2f14b2c5 phy_init_hw +EXPORT_SYMBOL vmlinux 0x2f228c10 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x2f2c6a59 pci_dev_get +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f3857e2 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2f3ecfac filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x2f457057 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f5fe1c7 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x2f62e742 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x2f777916 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x2f7d027e pci_get_subsys +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc97945 bio_init +EXPORT_SYMBOL vmlinux 0x2fd5f72e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x2ffdf5c0 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x300fe1ca jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x301bc07c acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304555e1 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x304ec72b _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x305cec12 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30974c32 get_empty_filp +EXPORT_SYMBOL vmlinux 0x309b8ffd bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30ecdf9b swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x30f220e5 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310706c6 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x31374025 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31486337 lease_modify +EXPORT_SYMBOL vmlinux 0x3150e31d ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x3157bb9e pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x316069e1 pci_find_capability +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x318122e0 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x3198620d param_set_uint +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31d6a4c6 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x31da5698 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x31dcb7d1 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x31ed1ff8 inet_listen +EXPORT_SYMBOL vmlinux 0x31f2f925 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x31fd21ef neigh_seq_start +EXPORT_SYMBOL vmlinux 0x324b3877 up +EXPORT_SYMBOL vmlinux 0x325021c7 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x3280d416 I_BDEV +EXPORT_SYMBOL vmlinux 0x3282d8f4 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x32b7f249 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x32c69e00 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32f266fd skb_unlink +EXPORT_SYMBOL vmlinux 0x33049661 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x330e678a inet_ioctl +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x333feba4 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x33426fb7 __seq_open_private +EXPORT_SYMBOL vmlinux 0x33501066 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x3359cc83 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x337c4d1a pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x338ee79b security_path_chmod +EXPORT_SYMBOL vmlinux 0x3399d2c5 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x33a77870 dqget +EXPORT_SYMBOL vmlinux 0x33a939b9 kern_path +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33caae7d bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x340090f3 phy_stop +EXPORT_SYMBOL vmlinux 0x3408bb1e tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dd849 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x3434fcaa blkdev_put +EXPORT_SYMBOL vmlinux 0x344030b3 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x3444580b nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x3448cc51 __sock_create +EXPORT_SYMBOL vmlinux 0x344bd50f blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x344e6df7 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34750aaf sk_net_capable +EXPORT_SYMBOL vmlinux 0x34780428 genl_notify +EXPORT_SYMBOL vmlinux 0x3489db1c netpoll_print_options +EXPORT_SYMBOL vmlinux 0x349ad8dd seq_vprintf +EXPORT_SYMBOL vmlinux 0x349b8860 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34af3cbd netlink_ack +EXPORT_SYMBOL vmlinux 0x34b0ea42 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x34b46e2d tty_kref_put +EXPORT_SYMBOL vmlinux 0x34bb0dd4 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x34bb2878 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x34ced4ad cdrom_check_events +EXPORT_SYMBOL vmlinux 0x34e19175 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x35017da2 find_lock_entry +EXPORT_SYMBOL vmlinux 0x3509f688 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x352c49c5 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x352f5e45 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x3537a654 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x3542cf3f compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356a112f pnp_device_attach +EXPORT_SYMBOL vmlinux 0x356cb833 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x3578fd75 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x359aa4ca inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35d32945 set_wb_congested +EXPORT_SYMBOL vmlinux 0x35f6e4e5 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x36048931 simple_rename +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360f8f8a __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x360ff19f down +EXPORT_SYMBOL vmlinux 0x3621a85f max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x363716ba ps2_handle_response +EXPORT_SYMBOL vmlinux 0x365bd781 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x367a73a0 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36b1c166 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36d540f4 register_cdrom +EXPORT_SYMBOL vmlinux 0x3712652f scsi_init_io +EXPORT_SYMBOL vmlinux 0x3737f11c posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37456639 dma_find_channel +EXPORT_SYMBOL vmlinux 0x374a49e1 iput +EXPORT_SYMBOL vmlinux 0x37524049 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x37756015 release_sock +EXPORT_SYMBOL vmlinux 0x3786fcb0 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x378f95c9 get_super_thawed +EXPORT_SYMBOL vmlinux 0x379d27d8 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b51fa2 mutex_lock +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37f9a2ea __serio_register_driver +EXPORT_SYMBOL vmlinux 0x380ad840 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x380ee87a abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3827c06c sock_no_poll +EXPORT_SYMBOL vmlinux 0x383c9124 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x3849e07a devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x387d17c3 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x389c5817 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38ada8cc __dquot_free_space +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38c5f74a udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x38c9dbd0 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x38cb65c1 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x38f12225 __lock_page +EXPORT_SYMBOL vmlinux 0x38f91646 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x3905724d setup_arg_pages +EXPORT_SYMBOL vmlinux 0x391b91fd mmc_register_driver +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394a067d sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x394a7b4d cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x394e85b6 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x395208ea put_page +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39647e49 tcf_register_action +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a066ff eth_header +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bde02f serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x39e56170 ppp_input +EXPORT_SYMBOL vmlinux 0x39f68e14 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x3a08da80 soft_cursor +EXPORT_SYMBOL vmlinux 0x3a0d0caf simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x3a0e290f kernel_connect +EXPORT_SYMBOL vmlinux 0x3a2bf782 nonseekable_open +EXPORT_SYMBOL vmlinux 0x3a352ffe cdev_add +EXPORT_SYMBOL vmlinux 0x3a3d20fd scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa96b0b dev_remove_pack +EXPORT_SYMBOL vmlinux 0x3ab41b25 __copy_in_user +EXPORT_SYMBOL vmlinux 0x3ae2a1e5 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x3ae58926 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x3b1cbd7b audit_log_start +EXPORT_SYMBOL vmlinux 0x3b1e8911 blk_start_request +EXPORT_SYMBOL vmlinux 0x3b2a9dc1 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x3b2c77fd tcf_hash_create +EXPORT_SYMBOL vmlinux 0x3b300948 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x3b465fe3 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x3b61eb06 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b946a8e blk_init_queue +EXPORT_SYMBOL vmlinux 0x3b9bbeaa of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x3bdac3fe module_layout +EXPORT_SYMBOL vmlinux 0x3be54400 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x3bf8fb25 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x3c01e62a md_cluster_mod +EXPORT_SYMBOL vmlinux 0x3c07f985 of_get_parent +EXPORT_SYMBOL vmlinux 0x3c122304 md_register_thread +EXPORT_SYMBOL vmlinux 0x3c20b2a8 param_get_string +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c46149e of_device_register +EXPORT_SYMBOL vmlinux 0x3c480fa6 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c702a62 udp_proc_register +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3cad1b96 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x3cd3b6b9 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x3cdf5e60 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfae893 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x3d05161d netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x3d08c1bc set_user_nice +EXPORT_SYMBOL vmlinux 0x3d093081 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x3d2044ea dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x3d3f5d6a get_cached_acl +EXPORT_SYMBOL vmlinux 0x3d5c947c cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x3d5e4de5 node_data +EXPORT_SYMBOL vmlinux 0x3d5f7923 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x3d6a6271 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x3d756177 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x3d811e44 input_register_device +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3dab288f phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x3db3d11a serio_close +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3de683b4 dquot_initialize +EXPORT_SYMBOL vmlinux 0x3de7c7b2 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x3de9860f fb_get_mode +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0d349c __elv_add_request +EXPORT_SYMBOL vmlinux 0x3e19ff5e dev_crit +EXPORT_SYMBOL vmlinux 0x3e1d3345 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x3e218ab6 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x3e2ada93 __register_binfmt +EXPORT_SYMBOL vmlinux 0x3e38b740 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x3e49f577 __inode_permission +EXPORT_SYMBOL vmlinux 0x3e556805 skb_checksum +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ea21982 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x3ecaf89b path_nosuid +EXPORT_SYMBOL vmlinux 0x3ed1f0c8 abort_creds +EXPORT_SYMBOL vmlinux 0x3eedfbc8 dev_mc_del +EXPORT_SYMBOL vmlinux 0x3ef40c06 d_delete +EXPORT_SYMBOL vmlinux 0x3f0f9363 d_obtain_root +EXPORT_SYMBOL vmlinux 0x3f130fa2 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x3f3c0bdb pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5907bf mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x3f5a4d10 param_set_ushort +EXPORT_SYMBOL vmlinux 0x3f71fa58 notify_change +EXPORT_SYMBOL vmlinux 0x3f9c463b put_filp +EXPORT_SYMBOL vmlinux 0x3faff6c9 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x3fc20404 kobject_add +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe5e57d __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x40035360 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x4009fff5 backlight_force_update +EXPORT_SYMBOL vmlinux 0x4027d74b down_read +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x40301125 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403ff162 scsi_print_command +EXPORT_SYMBOL vmlinux 0x4059dc90 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4093e809 console_stop +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 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ac0536 padata_alloc_possible +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 0x40cbb360 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x412583c5 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x412780a9 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x413b867e get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x413c9131 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415b9f54 pci_get_slot +EXPORT_SYMBOL vmlinux 0x4170c712 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x4184ac08 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418bbea9 dev_close +EXPORT_SYMBOL vmlinux 0x41d5099b pci_choose_state +EXPORT_SYMBOL vmlinux 0x41e5ac80 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x41f24b88 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x41f7a868 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4224f7b1 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4238cad7 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4264db7e blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x426a8ac5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x426c26f1 blk_rq_init +EXPORT_SYMBOL vmlinux 0x427365e8 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x427b7480 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x428a046c netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ae5af0 dqstats +EXPORT_SYMBOL vmlinux 0x42e5089b pcie_set_mps +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x431d1088 input_grab_device +EXPORT_SYMBOL vmlinux 0x433035c7 path_put +EXPORT_SYMBOL vmlinux 0x433ef403 netif_device_attach +EXPORT_SYMBOL vmlinux 0x43419b8e d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x4341f89d of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x434d8b2b nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4353d48c i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x435594f1 of_node_put +EXPORT_SYMBOL vmlinux 0x4355b06a pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x4358a450 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x435de87f sock_no_accept +EXPORT_SYMBOL vmlinux 0x436e02fa jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x43716ff3 input_set_keycode +EXPORT_SYMBOL vmlinux 0x4373d141 processors +EXPORT_SYMBOL vmlinux 0x43823acb mmc_put_card +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438f9fd4 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x43a62f58 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x43aaef54 init_special_inode +EXPORT_SYMBOL vmlinux 0x43ac2c09 inet_frags_init +EXPORT_SYMBOL vmlinux 0x43b1bb77 __alloc_skb +EXPORT_SYMBOL vmlinux 0x43bb5a98 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x43c2a565 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x43ec057d pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x44057f3e of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4412327d cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x44258ad0 may_umount_tree +EXPORT_SYMBOL vmlinux 0x443c304d tty_devnum +EXPORT_SYMBOL vmlinux 0x44412eea neigh_seq_next +EXPORT_SYMBOL vmlinux 0x446e09f9 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x4477195a tty_port_destroy +EXPORT_SYMBOL vmlinux 0x44827b56 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b2178f __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x44ba0e9f writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x44dcfa41 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44ea0585 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x45071783 vfs_getattr +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4550be06 sock_init_data +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4588b12a key_put +EXPORT_SYMBOL vmlinux 0x45998084 register_gifconf +EXPORT_SYMBOL vmlinux 0x45a2b69e dst_discard_sk +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45d42eec of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x45db27c6 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x45fa4c0b iterate_dir +EXPORT_SYMBOL vmlinux 0x45fbe6bf d_make_root +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4625098a inode_dio_wait +EXPORT_SYMBOL vmlinux 0x462c660f proc_dointvec +EXPORT_SYMBOL vmlinux 0x464a31d9 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x46655c72 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467a1747 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46abbc5f __quota_error +EXPORT_SYMBOL vmlinux 0x46bb8539 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46ce33b3 input_get_keycode +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4711b09a tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x471ec141 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x471f7e26 i2c_transfer +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47495312 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x476cd908 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x476d8ec4 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x4771d440 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x4777a712 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47cfd6b7 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x47f45bba sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x480822bc make_bad_inode +EXPORT_SYMBOL vmlinux 0x480b9f97 inet_frag_maybe_warn_overflow +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 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x48312d02 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486b6bc7 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x4876d2e2 dev_alert +EXPORT_SYMBOL vmlinux 0x4876f30e security_path_chown +EXPORT_SYMBOL vmlinux 0x487935f7 netdev_change_features +EXPORT_SYMBOL vmlinux 0x487e84ad copy_to_iter +EXPORT_SYMBOL vmlinux 0x488b66d1 netif_rx +EXPORT_SYMBOL vmlinux 0x48917ee7 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x48b88188 inet6_offloads +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c6bd99 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x48d7503f scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x48d97411 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x48e18728 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x48ebd090 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x48ee4aa5 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x48ef8603 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x48fb3182 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x494d0aae framebuffer_release +EXPORT_SYMBOL vmlinux 0x494ded7f acl_by_type +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49725b2e user_path_at_empty +EXPORT_SYMBOL vmlinux 0x4976eb63 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x49831df1 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x49930938 idr_replace +EXPORT_SYMBOL vmlinux 0x4994ea92 amba_find_device +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b104ab dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49b67372 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x49c472a8 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a33b51d of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x4a355290 __ps2_command +EXPORT_SYMBOL vmlinux 0x4a4e02d1 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x4a516c59 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x4a52851c mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x4a544745 devm_free_irq +EXPORT_SYMBOL vmlinux 0x4a56c9d9 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x4a635520 mpage_writepages +EXPORT_SYMBOL vmlinux 0x4a7e12ea scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x4a9aac02 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x4aa42c10 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4acee714 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x4adeb077 alloc_disk +EXPORT_SYMBOL vmlinux 0x4aeabd64 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x4af2172f ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x4afd6f04 simple_open +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b0d8826 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x4b15f238 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x4b28637f dev_mc_add +EXPORT_SYMBOL vmlinux 0x4b37c5e3 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x4b392361 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x4b493bfe ip_check_defrag +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6bd621 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x4b73e1b0 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4b7d19b3 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x4b936c56 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb03db3 phy_suspend +EXPORT_SYMBOL vmlinux 0x4bc00877 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x4bcbcc72 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x4be2d565 netlink_unicast +EXPORT_SYMBOL vmlinux 0x4c1296c5 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c36af5a genphy_config_init +EXPORT_SYMBOL vmlinux 0x4c4bb24f blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x4c5329e8 fb_show_logo +EXPORT_SYMBOL vmlinux 0x4c65cce9 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x4c6f9ef3 test_and_change_bit +EXPORT_SYMBOL vmlinux 0x4c9b767a sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cc1deeb dm_put_device +EXPORT_SYMBOL vmlinux 0x4cc6b8ee nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ced249a mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x4cfe3659 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d0efbb2 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x4d25e221 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x4d29eee7 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x4d2b40b3 of_match_node +EXPORT_SYMBOL vmlinux 0x4d302ecc of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x4d4c43e4 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x4d509bb4 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x4d921d43 key_link +EXPORT_SYMBOL vmlinux 0x4d922cfb handle_edge_irq +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9e150d netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x4dca2167 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x4dcbe25d kthread_bind +EXPORT_SYMBOL vmlinux 0x4dd6c88b __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dea1023 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e2b0225 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4a49ca jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x4e4a8e55 __kfree_skb +EXPORT_SYMBOL vmlinux 0x4e4b07bb tcp_prot +EXPORT_SYMBOL vmlinux 0x4e58272d sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e847241 inet_put_port +EXPORT_SYMBOL vmlinux 0x4e8c5bd5 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eb21b26 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x4ec4e492 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x4ed1b7d7 update_region +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ede39d2 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x4ee6623c dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x4eea2d65 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x4ef5ea52 kfree_put_link +EXPORT_SYMBOL vmlinux 0x4ef63c30 netdev_alert +EXPORT_SYMBOL vmlinux 0x4ef72c30 unregister_netdev +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1f0fbe acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2b4467 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f40e19e pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f73f703 msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4f7aa72a bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x4f8a1943 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x4f8cea21 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x4f95d908 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x4faca8e3 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x4fbaa754 dquot_file_open +EXPORT_SYMBOL vmlinux 0x4fbb1c41 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x4fbe7c7b follow_up +EXPORT_SYMBOL vmlinux 0x4fed36f3 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x4fef9667 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4ffe3dc6 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50165838 napi_disable +EXPORT_SYMBOL vmlinux 0x501c5d49 mmc_release_host +EXPORT_SYMBOL vmlinux 0x5043fb9b dev_mc_flush +EXPORT_SYMBOL vmlinux 0x5048b7c4 serio_interrupt +EXPORT_SYMBOL vmlinux 0x50535db4 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x50542d11 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5067a161 tcp_req_err +EXPORT_SYMBOL vmlinux 0x506965f4 key_task_permission +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50a99ad4 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50c0f226 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50ece495 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x516d341c max8925_set_bits +EXPORT_SYMBOL vmlinux 0x51749fc8 _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x517becb8 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x51abeb58 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x51bba305 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d4e59e phy_drivers_register +EXPORT_SYMBOL vmlinux 0x51e22ade sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51f44b36 irq_to_desc +EXPORT_SYMBOL vmlinux 0x51f6c8e3 cdev_alloc +EXPORT_SYMBOL vmlinux 0x51fb8aff posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5207529d filp_open +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x5210c1ed __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5226f1da xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x522e33d7 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x5239ce3b ___ratelimit +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52440088 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x52488c35 amba_driver_register +EXPORT_SYMBOL vmlinux 0x525248c0 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x525b259d generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x5272049e module_put +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x529c19fa ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x52a72b07 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x52a93bc9 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x52ac38b8 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x52db1aba cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x52ddcc0b pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530b5be3 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x5327fb80 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x532ba8a5 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x532fbe04 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x532fef29 unlock_page +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5335ddc2 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x534850ff d_drop +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x53670d18 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5390c699 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53b3d731 no_llseek +EXPORT_SYMBOL vmlinux 0x53bdedb2 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x53d5ebf6 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x53dd0acb dev_alloc_name +EXPORT_SYMBOL vmlinux 0x53e1538e d_move +EXPORT_SYMBOL vmlinux 0x54065ae7 dummy_dma_ops +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54407ac2 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5450bce0 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x5464edde phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x54932760 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aec3f2 dquot_commit +EXPORT_SYMBOL vmlinux 0x54b1d35e fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x54b6db17 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c7821f eth_validate_addr +EXPORT_SYMBOL vmlinux 0x54d4bded ida_init +EXPORT_SYMBOL vmlinux 0x54d6e56f pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x54de1e1a fb_set_suspend +EXPORT_SYMBOL vmlinux 0x54de8810 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54eda2b0 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x54fc9ebc xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554ba1eb pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x554d0592 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x556112ae fence_signal_locked +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x557c9359 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x557ec7ed generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x55a5985f free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x55b49c2f scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x55ccab3d vfs_mkdir +EXPORT_SYMBOL vmlinux 0x55d3b413 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55dec520 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x55e09c05 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x55ef47e4 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x56025646 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x5611db34 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x561c6e03 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x562ca601 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x562f0f22 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x56342ce1 down_timeout +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x567eeeb3 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x5682eb7a sock_release +EXPORT_SYMBOL vmlinux 0x569042df pci_fixup_device +EXPORT_SYMBOL vmlinux 0x56924c55 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x56b10dec __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x56b9e0ee skb_seq_read +EXPORT_SYMBOL vmlinux 0x56bd3bda flow_cache_init +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d56325 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x56e64dec rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x572d0104 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573b4a04 d_instantiate +EXPORT_SYMBOL vmlinux 0x574bdce8 elv_add_request +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5776ebcf bh_submit_read +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5785e944 d_invalidate +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579403ad input_event +EXPORT_SYMBOL vmlinux 0x57a8792d walk_stackframe +EXPORT_SYMBOL vmlinux 0x57c2576e do_truncate +EXPORT_SYMBOL vmlinux 0x57c7962a fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x57e2d413 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x57f454c9 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x580921ec __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x58181372 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x581bb64d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5846e596 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x58622f8f phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587de4f7 sock_create +EXPORT_SYMBOL vmlinux 0x588ce9c4 set_device_ro +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c26f99 param_ops_uint +EXPORT_SYMBOL vmlinux 0x58d28d76 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x58d3559c serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e583a7 copy_from_iter +EXPORT_SYMBOL vmlinux 0x58e623b9 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x58e81747 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x58f136a9 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x58f14700 input_open_device +EXPORT_SYMBOL vmlinux 0x59037573 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x594457f3 clone_cred +EXPORT_SYMBOL vmlinux 0x595805d7 get_phy_device +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x596f7e83 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x59772759 blk_run_queue +EXPORT_SYMBOL vmlinux 0x597dda50 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x5988ae54 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59917ca6 bdget_disk +EXPORT_SYMBOL vmlinux 0x5993b62b dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x5995e856 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b728b3 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x59d4e00d free_netdev +EXPORT_SYMBOL vmlinux 0x59d72441 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x59d88d2c __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x59ddce53 simple_lookup +EXPORT_SYMBOL vmlinux 0x59f0d21f jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a435e10 input_register_handle +EXPORT_SYMBOL vmlinux 0x5a5438ff dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x5a634040 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x5a7094b1 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9c9cf3 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aba78f9 twl6040_power +EXPORT_SYMBOL vmlinux 0x5ad18d72 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x5ad5c4d3 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x5ae03dfc sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x5ae9a0be blk_start_queue +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b1648dc tty_port_init +EXPORT_SYMBOL vmlinux 0x5b3dcedf sget +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b708d70 tso_build_data +EXPORT_SYMBOL vmlinux 0x5b79f903 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x5b90b492 register_qdisc +EXPORT_SYMBOL vmlinux 0x5ba89f28 mii_check_media +EXPORT_SYMBOL vmlinux 0x5bb7da8f kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bf5d840 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x5bf9c1ab page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x5c00dd3e scsi_print_sense +EXPORT_SYMBOL vmlinux 0x5c00ddc0 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c04b253 param_get_ushort +EXPORT_SYMBOL vmlinux 0x5c0dbe12 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x5c2c1c0f setup_new_exec +EXPORT_SYMBOL vmlinux 0x5c5081c4 set_blocksize +EXPORT_SYMBOL vmlinux 0x5c66e6d9 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x5c7024ea cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x5c7ae9b6 inet_shutdown +EXPORT_SYMBOL vmlinux 0x5c7f29de devm_gpio_free +EXPORT_SYMBOL vmlinux 0x5c8731fa tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x5cb154d8 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x5cd885d5 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d112304 __memcpy_fromio +EXPORT_SYMBOL vmlinux 0x5d1165aa fasync_helper +EXPORT_SYMBOL vmlinux 0x5d252045 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x5d3dfa39 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x5d46ab48 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x5d4b42d4 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d618182 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x5d716a16 __napi_complete +EXPORT_SYMBOL vmlinux 0x5d7317e0 param_get_uint +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d77cf8b xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x5d7df6f7 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x5d931467 fb_set_var +EXPORT_SYMBOL vmlinux 0x5da966a5 skb_queue_head +EXPORT_SYMBOL vmlinux 0x5dc99c76 tty_name +EXPORT_SYMBOL vmlinux 0x5dd76cd0 netdev_info +EXPORT_SYMBOL vmlinux 0x5e0ca1e7 nobh_writepage +EXPORT_SYMBOL vmlinux 0x5e46ba46 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x5e5c23f5 inc_nlink +EXPORT_SYMBOL vmlinux 0x5e67eb18 thaw_super +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea79efe fence_default_wait +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb57938 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ede6a19 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x5ede9195 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x5ef6d120 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f015542 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x5f01bf43 vfs_mknod +EXPORT_SYMBOL vmlinux 0x5f04f22f vfs_writef +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1215cc register_console +EXPORT_SYMBOL vmlinux 0x5f2b5af2 nd_device_register +EXPORT_SYMBOL vmlinux 0x5f3c66d1 inode_permission +EXPORT_SYMBOL vmlinux 0x5f3e063e __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x5f4335c8 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x5f4869f0 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x5f6524cf n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x5fad9205 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x5fb03f29 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x5fb4c983 skb_pull +EXPORT_SYMBOL vmlinux 0x5fd6adbb netif_napi_del +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdf70b2 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x5fe34bca sk_mc_loop +EXPORT_SYMBOL vmlinux 0x5fedac19 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x5ff718d1 thaw_bdev +EXPORT_SYMBOL vmlinux 0x5fff7b33 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +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 0x603fe539 block_truncate_page +EXPORT_SYMBOL vmlinux 0x604bfdf8 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x605ba58f blk_end_request_all +EXPORT_SYMBOL vmlinux 0x605ca986 block_read_full_page +EXPORT_SYMBOL vmlinux 0x605ec6db __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x6069f778 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60b0bf85 key_revoke +EXPORT_SYMBOL vmlinux 0x60c5cadb of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x60d9307e d_lookup +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e3fc8f page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x60faabb0 bdput +EXPORT_SYMBOL vmlinux 0x6121a78b jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x6124cd95 sock_no_listen +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612a8478 skb_pad +EXPORT_SYMBOL vmlinux 0x612c330d pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x61797190 seq_printf +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619e40ac pci_find_bus +EXPORT_SYMBOL vmlinux 0x61ab3fda bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x61ac146b ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61e7b2c4 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x61ef31c8 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x62045251 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6234b739 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x623722dc touch_atime +EXPORT_SYMBOL vmlinux 0x623e4066 vfs_unlink +EXPORT_SYMBOL vmlinux 0x6255b6ea jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x62780215 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62947c24 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x62a7f978 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x62effa51 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x62fdd649 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x630a677a send_sig_info +EXPORT_SYMBOL vmlinux 0x6312176a compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x6313ee28 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x634276d8 pci_disable_device +EXPORT_SYMBOL vmlinux 0x634d2aef xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x634dd332 put_io_context +EXPORT_SYMBOL vmlinux 0x6355df39 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x6377c8ee inet_stream_connect +EXPORT_SYMBOL vmlinux 0x63850035 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x638a74e4 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x638d357a napi_gro_flush +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c184a6 generic_file_open +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63dfcdcd simple_dname +EXPORT_SYMBOL vmlinux 0x63e49e51 tty_lock +EXPORT_SYMBOL vmlinux 0x63e96dc1 dcache_readdir +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640a08f9 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x642dab79 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x64357b01 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x644dfadc netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x64539479 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x645c871a shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x646a690f netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a8c542 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c08047 phy_detach +EXPORT_SYMBOL vmlinux 0x64c3f881 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x64d5d396 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x64f58ed3 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x650967b1 phy_find_first +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651ea611 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x65257f94 sock_no_connect +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65345022 __wake_up +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65436e07 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x654ac5d3 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x65671c2d mutex_unlock +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x657febcf blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x6581428f nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x658232a2 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x659390b8 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x6596c03c inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x65a696cf linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x65c1ed1f __dax_fault +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 0x65e797a9 proc_set_size +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6608527e __find_get_block +EXPORT_SYMBOL vmlinux 0x660a52d3 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x660d7076 seq_lseek +EXPORT_SYMBOL vmlinux 0x662c1e13 set_groups +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x665c9c5a tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x669f8446 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x66d6b1a2 __scm_destroy +EXPORT_SYMBOL vmlinux 0x66e269af param_ops_int +EXPORT_SYMBOL vmlinux 0x67276286 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x6750117a security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x675b2c40 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x675c08fe mdiobus_read +EXPORT_SYMBOL vmlinux 0x676e22e7 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x6776d231 scsi_device_get +EXPORT_SYMBOL vmlinux 0x677ee696 __register_nls +EXPORT_SYMBOL vmlinux 0x67855278 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67ba229c blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x67bc3787 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x67d86595 up_write +EXPORT_SYMBOL vmlinux 0x67e3315c lro_flush_all +EXPORT_SYMBOL vmlinux 0x67ed25ef kill_anon_super +EXPORT_SYMBOL vmlinux 0x67ed7d95 tty_throttle +EXPORT_SYMBOL vmlinux 0x67fc32f3 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x683cd341 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x6844e754 check_disk_change +EXPORT_SYMBOL vmlinux 0x685249b9 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x685310bd cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x689b23b0 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x689bb0af ata_print_version +EXPORT_SYMBOL vmlinux 0x68b58fe6 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c690f1 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x68c8d25f bdevname +EXPORT_SYMBOL vmlinux 0x68ca7b14 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x68cedf06 posix_test_lock +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6933e315 km_is_alive +EXPORT_SYMBOL vmlinux 0x69592734 free_page_put_link +EXPORT_SYMBOL vmlinux 0x6964f81d netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x6966b812 empty_zero_page +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69764ca0 rwsem_wake +EXPORT_SYMBOL vmlinux 0x6979f574 d_alloc_name +EXPORT_SYMBOL vmlinux 0x6996c116 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c0d14e mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x69ef6c3f tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x69f587a8 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a34b862 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a69549a elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a8d1483 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x6aa314a9 neigh_lookup +EXPORT_SYMBOL vmlinux 0x6ab6e1a1 __brelse +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acf0097 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae5dcb5 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af56b20 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x6afd8e52 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x6b06413f key_invalidate +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b3955f2 iget_locked +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b73ff99 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x6b91ffb9 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x6bac6053 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x6bb59e76 sg_miter_start +EXPORT_SYMBOL vmlinux 0x6bbeabc4 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c2cdc47 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5c8bd1 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x6c5ea8ee security_mmap_file +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c66ed1e generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6c692d06 read_code +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7a214d fb_validate_mode +EXPORT_SYMBOL vmlinux 0x6c80f1e4 path_is_under +EXPORT_SYMBOL vmlinux 0x6ca3c957 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x6cb937c8 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x6cc0e324 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x6cc15ecb gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x6cde209c ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x6ce1c5f3 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x6d09026a blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d10d53a __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x6d26b1e5 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d546c2a dev_remove_offload +EXPORT_SYMBOL vmlinux 0x6d6106ac __init_rwsem +EXPORT_SYMBOL vmlinux 0x6d6d270b dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x6d9517d2 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x6dbde6ed xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x6dbfb1bd security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x6dc027d9 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x6dc3967a vm_insert_page +EXPORT_SYMBOL vmlinux 0x6ddf0684 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e05aa31 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x6e1b2cae page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x6e4efc07 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x6e5ddf4c param_ops_charp +EXPORT_SYMBOL vmlinux 0x6e612ef5 dump_skip +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7436ef posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e805810 fence_init +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea27dbe invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x6ea76843 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x6ec65b91 led_set_brightness +EXPORT_SYMBOL vmlinux 0x6ecfb231 set_nlink +EXPORT_SYMBOL vmlinux 0x6ed32d9a dev_emerg +EXPORT_SYMBOL vmlinux 0x6ed43ee3 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x6ee6fdac create_empty_buffers +EXPORT_SYMBOL vmlinux 0x6ef0c45e gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x6f103365 textsearch_register +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f26cb7b idr_get_next +EXPORT_SYMBOL vmlinux 0x6f2732c2 vfs_statfs +EXPORT_SYMBOL vmlinux 0x6f4f6c3d elevator_init +EXPORT_SYMBOL vmlinux 0x6f52e6c1 inet_release +EXPORT_SYMBOL vmlinux 0x6f5ec7ec idr_init +EXPORT_SYMBOL vmlinux 0x6f5ed620 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x6f61f9ec mount_single +EXPORT_SYMBOL vmlinux 0x6f7c02f8 iov_iter_init +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc596b7 stop_tty +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd00446 inet_getname +EXPORT_SYMBOL vmlinux 0x6fd6c604 mmc_request_done +EXPORT_SYMBOL vmlinux 0x6fd9a286 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x6fe6117e pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6ff6907c iterate_mounts +EXPORT_SYMBOL vmlinux 0x6ff97cbc scmd_printk +EXPORT_SYMBOL vmlinux 0x6fffb753 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x7005bf5e pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x701565dc vfs_readv +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707b59d4 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708381cb __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x7093b88b blk_put_queue +EXPORT_SYMBOL vmlinux 0x70a4eb03 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x70bfce77 neigh_destroy +EXPORT_SYMBOL vmlinux 0x70c17230 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x70d7d3ed dev_get_stats +EXPORT_SYMBOL vmlinux 0x70e56d25 md_error +EXPORT_SYMBOL vmlinux 0x70ee551b dev_addr_del +EXPORT_SYMBOL vmlinux 0x70f64f62 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717264eb twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a81c45 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x71b68424 param_ops_long +EXPORT_SYMBOL vmlinux 0x71c1f747 file_ns_capable +EXPORT_SYMBOL vmlinux 0x71d1ca4d seq_escape +EXPORT_SYMBOL vmlinux 0x72178feb udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x7219db35 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x72326dc7 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x723a546b __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x72518faf start_tty +EXPORT_SYMBOL vmlinux 0x72774cad ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x728f93e3 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x7291f56a pci_restore_state +EXPORT_SYMBOL vmlinux 0x72a49a96 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x72bfe687 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x72da955a inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ee9cf5 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x730d6446 netlink_set_err +EXPORT_SYMBOL vmlinux 0x730eb23c of_clk_get +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7342dc4d tc_classify +EXPORT_SYMBOL vmlinux 0x734439d4 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x7349d54e devm_ioremap +EXPORT_SYMBOL vmlinux 0x73743f32 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x73893df0 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x73964de6 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x739f53a8 __bforget +EXPORT_SYMBOL vmlinux 0x73b6b149 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x73b7ce1b pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x73c3f950 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x74078f2d __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x740a0652 kobject_del +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741608c3 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x7427e863 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x74352cda bio_integrity_free +EXPORT_SYMBOL vmlinux 0x7464619f blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a4f2d1 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cbf8ad netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x74d9aa3f tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x74dcbca2 module_refcount +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ee891d kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x74f15ba5 arp_xmit +EXPORT_SYMBOL vmlinux 0x7511676d tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x7524f30e generic_write_checks +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7562b34e dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x757027d5 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x757966e8 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x75850d01 __vmalloc +EXPORT_SYMBOL vmlinux 0x758bb858 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x759af823 blk_peek_request +EXPORT_SYMBOL vmlinux 0x75a3a385 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75a55c46 sock_i_ino +EXPORT_SYMBOL vmlinux 0x75a80588 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75f9a7f3 netlink_capable +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x76098331 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x761c6fee __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x76374125 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764b7ecf devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7658b911 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x7664aabe lookup_bdev +EXPORT_SYMBOL vmlinux 0x766d5cef ether_setup +EXPORT_SYMBOL vmlinux 0x7673818a bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x76912dae blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x76954d0e mdio_bus_type +EXPORT_SYMBOL vmlinux 0x769d33b2 put_tty_driver +EXPORT_SYMBOL vmlinux 0x769f2ae2 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x76a5b343 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x76a898c9 __d_drop +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d4a06d tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x76d9a6da inet_del_offload +EXPORT_SYMBOL vmlinux 0x76eb0785 of_phy_attach +EXPORT_SYMBOL vmlinux 0x76f421b4 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x770fc5df pipe_lock +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772b4f24 bio_split +EXPORT_SYMBOL vmlinux 0x773f1534 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7772604a skb_copy_bits +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a32ae2 seq_path +EXPORT_SYMBOL vmlinux 0x77b27f2d mii_nway_restart +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bd6fc7 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x77d40b11 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x784bd6e2 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x78586bc9 redraw_screen +EXPORT_SYMBOL vmlinux 0x78775b16 i2c_master_send +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a8df54 complete_request_key +EXPORT_SYMBOL vmlinux 0x78b40b72 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x78be7afc dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x78c19a6d mempool_resize +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78fa55b2 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x7909d7c8 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x79124318 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x791dfa80 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x79353cc3 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x795c9c33 loop_backing_file +EXPORT_SYMBOL vmlinux 0x79640982 input_inject_event +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797ca2ab of_get_next_child +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x7997181b blk_end_request +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c812f9 dquot_drop +EXPORT_SYMBOL vmlinux 0x79dc4890 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x79dff707 try_module_get +EXPORT_SYMBOL vmlinux 0x79ea484f skb_make_writable +EXPORT_SYMBOL vmlinux 0x79f77a7e phy_register_fixup +EXPORT_SYMBOL vmlinux 0x7a0513b3 dquot_alloc +EXPORT_SYMBOL vmlinux 0x7a06181a ppp_channel_index +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a340deb forget_cached_acl +EXPORT_SYMBOL vmlinux 0x7a4009e2 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4b3125 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x7a548a95 node_states +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a8bbcef __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acfaae6 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad48744 skb_insert +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af98a3a inetdev_by_index +EXPORT_SYMBOL vmlinux 0x7afdc220 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x7b0e4e80 seq_pad +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b1a0687 finish_open +EXPORT_SYMBOL vmlinux 0x7b23e854 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b6646bb _raw_read_lock +EXPORT_SYMBOL vmlinux 0x7b6b3188 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x7b6ca102 sock_efree +EXPORT_SYMBOL vmlinux 0x7b6f4ae0 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7b726884 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x7b76da4d netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x7b79606d t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x7b7cd55a truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x7b809578 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x7b820115 tty_do_resize +EXPORT_SYMBOL vmlinux 0x7b972a0c genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x7ba35c87 bio_copy_data +EXPORT_SYMBOL vmlinux 0x7babe09b dup_iter +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bb10eab pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x7bb5bb21 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x7bc1bc11 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x7bcc4d0b filemap_fault +EXPORT_SYMBOL vmlinux 0x7bde187e mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c189afe kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c2dd666 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x7c324cf8 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x7c3dd803 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x7c43f082 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c51b742 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x7c60807a buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c7154ab nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c99a039 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x7c9d3ded acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbff110 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x7cd21598 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x7cdfa0a9 pci_bus_type +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +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 0x7d191f98 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x7d1bf6ba kernel_getsockname +EXPORT_SYMBOL vmlinux 0x7d24ccf0 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x7d259e5c of_translate_address +EXPORT_SYMBOL vmlinux 0x7d52a81c seq_dentry +EXPORT_SYMBOL vmlinux 0x7d65bd0a __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x7d6cc09b md_integrity_register +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7d63df cpumask_next_and +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7dc2aa8d of_node_get +EXPORT_SYMBOL vmlinux 0x7dc60e96 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x7dc9d38e from_kuid +EXPORT_SYMBOL vmlinux 0x7dd12586 security_path_link +EXPORT_SYMBOL vmlinux 0x7dea99e9 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x7deebe31 inet_frag_find +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfbb592 bdget +EXPORT_SYMBOL vmlinux 0x7e0934c3 install_exec_creds +EXPORT_SYMBOL vmlinux 0x7e0ec966 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x7e13e814 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x7e6036a1 deactivate_super +EXPORT_SYMBOL vmlinux 0x7e6806e2 would_dump +EXPORT_SYMBOL vmlinux 0x7e850dd5 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x7e9da777 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x7ea26921 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x7eaabe73 param_get_long +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7eef49e8 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x7eef915b inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x7ef3a506 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x7ef933bd d_set_fallthru +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f140fa9 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2ad9b0 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x7f3bb24b netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x7f3cd19f bdi_register +EXPORT_SYMBOL vmlinux 0x7f4d11cd blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f65071a nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x7f7e0b28 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x7f89b30e crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x7f8dd12c generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x7f9dda33 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x7fb22e76 release_pages +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fcee645 udplite_prot +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x80115734 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x803a47a7 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x8065d261 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x80675702 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x8091a1d3 __kernel_write +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d7e9b2 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x80de639a ping_prot +EXPORT_SYMBOL vmlinux 0x80e201dd __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x813685e3 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814d296c scsi_host_alloc +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 0x8178c18c cfb_copyarea +EXPORT_SYMBOL vmlinux 0x81b72174 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81eb828a inet_add_protocol +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82236b88 security_path_truncate +EXPORT_SYMBOL vmlinux 0x82239627 pci_get_device +EXPORT_SYMBOL vmlinux 0x823c8a91 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x8296a939 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x829e15d1 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82bc7ab0 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x82bf7a0e nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x82d6202a jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x82e2fc58 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x82edddcb __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x830208f9 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x8344aebf iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x834ea460 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x8355fa42 input_reset_device +EXPORT_SYMBOL vmlinux 0x8369f772 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x83731ce4 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x837ef3f7 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x8382af3d __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839fb35a blk_get_queue +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83bdc151 elevator_exit +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d8396c i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x840a7e97 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x841ffdc8 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x842b1f61 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x84790bca xfrm_register_km +EXPORT_SYMBOL vmlinux 0x84a2b01e proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x84d908b0 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x84dade5c mmc_start_req +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85061b76 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x8521f0ea __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x853a45fd xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x855b5ad8 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856d215e fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x859fc31a blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85d654af padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x85dc44f1 param_get_byte +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x861ad92e generic_setxattr +EXPORT_SYMBOL vmlinux 0x8626df85 dev_err +EXPORT_SYMBOL vmlinux 0x8646fa50 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8660cc68 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86746568 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86b23818 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x86c76e82 write_inode_now +EXPORT_SYMBOL vmlinux 0x86c917dc posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x86d07708 sync_filesystem +EXPORT_SYMBOL vmlinux 0x86d28454 pcim_iomap +EXPORT_SYMBOL vmlinux 0x86ea4d38 complete_all +EXPORT_SYMBOL vmlinux 0x86f499ff do_splice_direct +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87186d80 may_umount +EXPORT_SYMBOL vmlinux 0x8719eb09 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8726ee7d sock_no_getname +EXPORT_SYMBOL vmlinux 0x873badd5 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x874b184a sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x874d9b26 udp_set_csum +EXPORT_SYMBOL vmlinux 0x874f83ae blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x87550716 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x875a6ddf bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x877072dd of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x87717494 dma_ops +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879c57fb param_get_ulong +EXPORT_SYMBOL vmlinux 0x87afd3e0 simple_release_fs +EXPORT_SYMBOL vmlinux 0x87b8f994 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x87b8fe33 noop_qdisc +EXPORT_SYMBOL vmlinux 0x87c9f827 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x87cfba2c key_type_keyring +EXPORT_SYMBOL vmlinux 0x87df8d71 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x87e92a28 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x87f63814 vga_client_register +EXPORT_SYMBOL vmlinux 0x87f96138 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x87fbaabe dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x8801340a phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x8823b232 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x884b2c5e is_bad_inode +EXPORT_SYMBOL vmlinux 0x88602b8a vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x88640375 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x887eb684 inet_accept +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88a0882c qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x88a78c1d genphy_suspend +EXPORT_SYMBOL vmlinux 0x88aa7918 unregister_console +EXPORT_SYMBOL vmlinux 0x88af0562 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x88b335ca dev_uc_init +EXPORT_SYMBOL vmlinux 0x88b4e83b down_trylock +EXPORT_SYMBOL vmlinux 0x88cfb93d xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x88f7f196 of_dev_get +EXPORT_SYMBOL vmlinux 0x890b6aad blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x89253720 sock_wake_async +EXPORT_SYMBOL vmlinux 0x892e0efd current_fs_time +EXPORT_SYMBOL vmlinux 0x8935da44 dcb_setapp +EXPORT_SYMBOL vmlinux 0x89476580 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x894f8456 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x895a3835 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x8968616c eth_header_parse +EXPORT_SYMBOL vmlinux 0x897ffbb5 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x89843855 uart_register_driver +EXPORT_SYMBOL vmlinux 0x89968c34 dst_release +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89c989a7 __inet_hash +EXPORT_SYMBOL vmlinux 0x89ca224e kobject_init +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d8479d xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x89e80fb5 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x89f9cf94 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x89fc7715 udp_seq_open +EXPORT_SYMBOL vmlinux 0x8a02240b param_ops_bint +EXPORT_SYMBOL vmlinux 0x8a07aa75 register_quota_format +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a285b77 param_set_int +EXPORT_SYMBOL vmlinux 0x8a35cd3f iov_iter_npages +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 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa57c4f udp_table +EXPORT_SYMBOL vmlinux 0x8aa5aab7 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x8aa6f8c9 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x8aa84511 devm_clk_put +EXPORT_SYMBOL vmlinux 0x8abc053c send_sig +EXPORT_SYMBOL vmlinux 0x8ac75fb0 __vfs_read +EXPORT_SYMBOL vmlinux 0x8acca4d8 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x8ad1c58c pnp_device_detach +EXPORT_SYMBOL vmlinux 0x8ad4cc0f pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x8ae1b601 of_phy_connect +EXPORT_SYMBOL vmlinux 0x8ae21e1a file_remove_privs +EXPORT_SYMBOL vmlinux 0x8af66566 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x8b187878 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x8b212343 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b3c7baf rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b484538 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x8b5749f3 md_update_sb +EXPORT_SYMBOL vmlinux 0x8b612e25 vga_get +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b622eec kernel_read +EXPORT_SYMBOL vmlinux 0x8b67cf88 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b9476d3 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x8b97156c fb_find_mode +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9984f6 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x8bd0a3fd _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x8c0a7d95 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x8c1a4a82 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x8c215b85 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x8c5fc4e2 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6ba14d copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x8c795431 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x8c7aab7b param_ops_string +EXPORT_SYMBOL vmlinux 0x8c927c2f tcp_read_sock +EXPORT_SYMBOL vmlinux 0x8c9ccf0b devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x8cad1a5c free_user_ns +EXPORT_SYMBOL vmlinux 0x8cad2c96 cont_write_begin +EXPORT_SYMBOL vmlinux 0x8cad5f44 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x8cb01432 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x8cb3ea74 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x8cc83a0c dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cdfae76 netdev_err +EXPORT_SYMBOL vmlinux 0x8cec84bb __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x8d00b982 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x8d07d13b inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8d1102c7 phy_start +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5c8db5 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x8d62dba4 igrab +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d807a8a __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8dbc6ad9 dev_warn +EXPORT_SYMBOL vmlinux 0x8dc0ff46 set_binfmt +EXPORT_SYMBOL vmlinux 0x8dcfd6db tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x8de507fa sock_create_kern +EXPORT_SYMBOL vmlinux 0x8de8b6b8 netdev_printk +EXPORT_SYMBOL vmlinux 0x8df7e1f4 get_user_pages +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8dfc8642 tty_unlock +EXPORT_SYMBOL vmlinux 0x8e054b33 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x8e08452c scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x8e0b5316 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e2c2e39 misc_register +EXPORT_SYMBOL vmlinux 0x8e2ca33c devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x8e4d402e vfs_link +EXPORT_SYMBOL vmlinux 0x8e85129f rtnl_notify +EXPORT_SYMBOL vmlinux 0x8e960092 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x8e971342 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x8ea9d5fe acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x8ebaa876 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x8ee284a8 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x8eeb6606 noop_llseek +EXPORT_SYMBOL vmlinux 0x8f010ec8 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x8f197a81 clk_get +EXPORT_SYMBOL vmlinux 0x8f1c90dd mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x8f260ceb nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x8f2b53b2 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x8f3787be panic_notifier_list +EXPORT_SYMBOL vmlinux 0x8f46e8b3 of_iomap +EXPORT_SYMBOL vmlinux 0x8f4ee109 blk_get_request +EXPORT_SYMBOL vmlinux 0x8f63cfcb key_alloc +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f7c99d8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x8f8233fb phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x8f91f568 kobject_put +EXPORT_SYMBOL vmlinux 0x8f965881 fb_class +EXPORT_SYMBOL vmlinux 0x8fb56ae6 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x8ffeaeb9 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x90163788 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x90375d9d pnp_register_driver +EXPORT_SYMBOL vmlinux 0x9047e419 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x90763a05 xfrm_input +EXPORT_SYMBOL vmlinux 0x9076cc9e inode_init_owner +EXPORT_SYMBOL vmlinux 0x90865bfb jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x90891472 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x908aeeb5 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x90ac3102 dev_base_lock +EXPORT_SYMBOL vmlinux 0x90d847ec __pagevec_release +EXPORT_SYMBOL vmlinux 0x90e851a3 lock_rename +EXPORT_SYMBOL vmlinux 0x90ea983a dev_mc_sync +EXPORT_SYMBOL vmlinux 0x9100fd6e request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x91183fd6 d_alloc +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9147e9c9 param_set_bool +EXPORT_SYMBOL vmlinux 0x914809ca gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9171d77f amba_device_register +EXPORT_SYMBOL vmlinux 0x918aed55 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x918c6374 mempool_alloc +EXPORT_SYMBOL vmlinux 0x9195b10b generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x91a513e8 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91bdd9ee led_update_brightness +EXPORT_SYMBOL vmlinux 0x91e09a3b security_inode_permission +EXPORT_SYMBOL vmlinux 0x91ee3d2f blk_make_request +EXPORT_SYMBOL vmlinux 0x922cc2b6 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x927ca802 kset_unregister +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a44a80 fence_add_callback +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b19add flow_cache_fini +EXPORT_SYMBOL vmlinux 0x92db63ec remove_proc_entry +EXPORT_SYMBOL vmlinux 0x92dcf930 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x930379e7 neigh_table_init +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x931868f0 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x93236618 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x9326b3a8 __get_page_tail +EXPORT_SYMBOL vmlinux 0x9336a40f pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9341ce42 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x9359efa9 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937da9d1 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x938f5941 tty_register_device +EXPORT_SYMBOL vmlinux 0x9390f226 ida_destroy +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93e19bc0 sock_wfree +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93fd2a4a phy_init_eee +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940b7d47 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x9422bcbf padata_do_parallel +EXPORT_SYMBOL vmlinux 0x942c86f6 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x943c7c1f iov_iter_advance +EXPORT_SYMBOL vmlinux 0x94547f61 param_get_charp +EXPORT_SYMBOL vmlinux 0x94682e4b get_acl +EXPORT_SYMBOL vmlinux 0x946a7412 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949b754f mempool_destroy +EXPORT_SYMBOL vmlinux 0x94b0c583 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x94bcb3f7 dev_uc_add +EXPORT_SYMBOL vmlinux 0x94ca8a5f kmem_cache_size +EXPORT_SYMBOL vmlinux 0x94fc00e5 dq_data_lock +EXPORT_SYMBOL vmlinux 0x94fe3abc ilookup5 +EXPORT_SYMBOL vmlinux 0x950a9e00 pci_request_regions +EXPORT_SYMBOL vmlinux 0x951092d2 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x95277c7b get_super +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954bf510 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x956fd940 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x957eab75 ps2_drain +EXPORT_SYMBOL vmlinux 0x958e8606 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x9597cc5e qdisc_list_del +EXPORT_SYMBOL vmlinux 0x95a127cb security_path_unlink +EXPORT_SYMBOL vmlinux 0x95bc974d inet_sendpage +EXPORT_SYMBOL vmlinux 0x96091121 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x9610439f skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x96220280 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x9632199d fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9636f621 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x964d7d04 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x966bccdf smp_call_function_many +EXPORT_SYMBOL vmlinux 0x96708d18 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x967e466f kill_block_super +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96bb9e31 d_path +EXPORT_SYMBOL vmlinux 0x96c5ce52 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x96ca08ce dev_addr_flush +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d33396 commit_creds +EXPORT_SYMBOL vmlinux 0x96ea8be0 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x96f695f9 tty_register_driver +EXPORT_SYMBOL vmlinux 0x970ea1c7 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x974dbedf jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97582550 param_set_copystring +EXPORT_SYMBOL vmlinux 0x977d5b3c compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x978ce3a3 vme_dma_request +EXPORT_SYMBOL vmlinux 0x9797a5c7 end_page_writeback +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 0x97cd7efe ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x97d83908 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x97d9ef85 mount_bdev +EXPORT_SYMBOL vmlinux 0x97f0e08c pci_set_mwi +EXPORT_SYMBOL vmlinux 0x97fdbab9 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980c1c00 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x98388c1b unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x983bf5c2 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x983f8525 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x984c6ceb tty_hangup +EXPORT_SYMBOL vmlinux 0x9857d4f7 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x9859bc0c alloc_disk_node +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x98737622 param_ops_byte +EXPORT_SYMBOL vmlinux 0x9873c0b6 mmc_add_host +EXPORT_SYMBOL vmlinux 0x987e511e md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x98b1f4d8 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x98b62324 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98ccb0af unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98e5a788 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x991da140 sock_edemux +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993b0c1d __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x99457c75 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9952dec0 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995e68b6 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x9979bd36 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x998215a6 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x998c2c62 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x999391c8 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99d75466 tcp_check_req +EXPORT_SYMBOL vmlinux 0x99e0bcef devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a5442b3 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x9a5556b9 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x9a5d5ec4 __bread_gfp +EXPORT_SYMBOL vmlinux 0x9a5e87c1 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a788078 vme_slot_num +EXPORT_SYMBOL vmlinux 0x9a7bd6e3 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x9a908b80 test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x9abc185e __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x9ac416e0 d_find_alias +EXPORT_SYMBOL vmlinux 0x9ad745cf blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x9add77a3 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x9ae7254d md_check_recovery +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aed557c sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3c2486 account_page_redirty +EXPORT_SYMBOL vmlinux 0x9b3e7d36 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x9b811e10 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x9b87734a compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x9b92e000 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bac6e00 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc6ef31 add_wait_queue +EXPORT_SYMBOL vmlinux 0x9bdc5e0b mdiobus_write +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf0d5e1 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9bfdf5ed mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x9c00a181 tcp_child_process +EXPORT_SYMBOL vmlinux 0x9c03c772 skb_dequeue +EXPORT_SYMBOL vmlinux 0x9c161ec4 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x9c1e30ab __ip_dev_find +EXPORT_SYMBOL vmlinux 0x9c29437d dquot_transfer +EXPORT_SYMBOL vmlinux 0x9c306f4d read_dev_sector +EXPORT_SYMBOL vmlinux 0x9c35b69a cdev_init +EXPORT_SYMBOL vmlinux 0x9c447647 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5bc552 finish_wait +EXPORT_SYMBOL vmlinux 0x9c7bb6e0 kill_bdev +EXPORT_SYMBOL vmlinux 0x9c99d503 register_framebuffer +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cc69da9 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x9ccf703a swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x9cd04072 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x9cd43056 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x9cea9fd2 dst_destroy +EXPORT_SYMBOL vmlinux 0x9d0a647e cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d417059 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x9d4ae062 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x9d65d7bb inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x9d754b0b fb_pan_display +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dac1b32 elevator_alloc +EXPORT_SYMBOL vmlinux 0x9dbbce11 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x9dcc9a9b skb_split +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e18d93e gen_pool_create +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e4ec38f generic_listxattr +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9c6aaf xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x9e9e1b99 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec43801 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x9ed429aa skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x9f11be7e down_killable +EXPORT_SYMBOL vmlinux 0x9f2b4e56 import_iovec +EXPORT_SYMBOL vmlinux 0x9f33d0b9 netdev_notice +EXPORT_SYMBOL vmlinux 0x9f37834a dm_get_device +EXPORT_SYMBOL vmlinux 0x9f423a34 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f73016d tcp_prequeue +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f8b4e2a nlmsg_notify +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb31c29 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x9fb49c66 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x9fcae757 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x9fd5278e kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdd1076 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0349014 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xa03aa681 clear_nlink +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa050f869 md_write_start +EXPORT_SYMBOL vmlinux 0xa0511177 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0841dc4 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c85d6f ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xa0c94c38 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f1c144 mdiobus_unregister +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 0xa1219bfd input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xa1297b56 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa1444372 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa160999d dquot_quota_off +EXPORT_SYMBOL vmlinux 0xa161f3fb phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xa1757a1d dev_activate +EXPORT_SYMBOL vmlinux 0xa17f24db max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xa1831f60 simple_link +EXPORT_SYMBOL vmlinux 0xa19dea87 pipe_unlock +EXPORT_SYMBOL vmlinux 0xa1b3e017 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c077d3 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1f5f7c0 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xa1fd37b5 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa222329c blk_sync_queue +EXPORT_SYMBOL vmlinux 0xa22e0b80 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xa2393f05 fd_install +EXPORT_SYMBOL vmlinux 0xa24000a8 cad_pid +EXPORT_SYMBOL vmlinux 0xa24fd7fd pci_pme_active +EXPORT_SYMBOL vmlinux 0xa25506ae sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xa25e1529 vfs_write +EXPORT_SYMBOL vmlinux 0xa276642e locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xa2842b87 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28d13cd nf_log_unregister +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2a45527 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xa2b7826a follow_pfn +EXPORT_SYMBOL vmlinux 0xa2cb8560 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xa2d0ad83 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xa2f2d5f9 pid_task +EXPORT_SYMBOL vmlinux 0xa2f37de4 do_splice_from +EXPORT_SYMBOL vmlinux 0xa305c080 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xa31ba762 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa342fb11 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xa3533a2c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xa37737d4 write_cache_pages +EXPORT_SYMBOL vmlinux 0xa37da1b1 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa391a1f5 mmc_erase +EXPORT_SYMBOL vmlinux 0xa39f349c from_kgid +EXPORT_SYMBOL vmlinux 0xa3cf3bc5 tcp_close +EXPORT_SYMBOL vmlinux 0xa3e17f56 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa408ce57 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa45163c0 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa46feb4a blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa472f1bd dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xa4a61145 generic_permission +EXPORT_SYMBOL vmlinux 0xa4acb7a7 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xa4b17ecd netif_carrier_off +EXPORT_SYMBOL vmlinux 0xa4c0d247 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xa4c175be blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xa4c645e8 ps2_init +EXPORT_SYMBOL vmlinux 0xa4cece61 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xa4d2b856 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xa4f72b42 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xa50a4ed3 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xa551ac5c inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55e03ad __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xa5682a9d pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xa5785d0a vlan_vid_add +EXPORT_SYMBOL vmlinux 0xa583ec55 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xa58faeb2 dev_load +EXPORT_SYMBOL vmlinux 0xa5907d45 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xa596ff59 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b7c307 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xa5cef2be bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xa5d50f23 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xa61bd439 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xa62eb0f1 md_done_sync +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa6382626 param_set_ullong +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa644998a skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xa651d2e0 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6994359 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6be294a udp_poll +EXPORT_SYMBOL vmlinux 0xa6ed8c3d vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xa6f2540e mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xa6f29392 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xa6f49e68 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7002a4e input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xa720bbea blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xa725dc94 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa72edffe qdisc_reset +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa736cdc4 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xa73b2e4d dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa75be252 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xa7790dcd blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xa78a292a pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xa79cd363 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xa7a25b5e tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xa7aedf29 nf_register_hook +EXPORT_SYMBOL vmlinux 0xa7b414b5 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xa7be526f _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xa7d36acd phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xa7d842d6 nf_reinject +EXPORT_SYMBOL vmlinux 0xa7f99ce2 phy_resume +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8660853 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87cf413 clear_bit +EXPORT_SYMBOL vmlinux 0xa89511be iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xa89888b7 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xa8a67ca3 mapping_tagged +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8ae7dfd fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xa8b0d739 block_commit_write +EXPORT_SYMBOL vmlinux 0xa8cde6e7 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xa8f6d38f tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa903aefa scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9365497 vfs_readf +EXPORT_SYMBOL vmlinux 0xa9412b01 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xa944ac8b elv_rb_add +EXPORT_SYMBOL vmlinux 0xa94c585c vfs_read +EXPORT_SYMBOL vmlinux 0xa9580645 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xa963cab8 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xa9640072 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa98449f7 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xa99af367 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9a5ac00 simple_rmdir +EXPORT_SYMBOL vmlinux 0xa9b248b6 idr_for_each +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9e4207a jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa24087a dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xaa4e0ade secpath_dup +EXPORT_SYMBOL vmlinux 0xaa5e2a0d vm_event_states +EXPORT_SYMBOL vmlinux 0xaa5f66b8 down_read_trylock +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7057b9 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xaa744bba __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xaa7a0f8b inet_addr_type +EXPORT_SYMBOL vmlinux 0xaa7b49b8 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xaab5b41f __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xaabd8f96 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xaac33cbf mmc_get_card +EXPORT_SYMBOL vmlinux 0xaacc3134 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xaacf1484 mutex_lock_interruptible +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 0xaaf95abb get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xaafd23c6 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab2e2c72 pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xab31af50 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xab40cca9 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xab45d58b sk_receive_skb +EXPORT_SYMBOL vmlinux 0xab493a0c generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xab4ba743 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xab542877 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab5c7388 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6ecd6b mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8a98a7 uart_get_divisor +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 0xabddaf2c netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xabe77f42 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xac008a2a mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2cc8a8 netdev_warn +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac46e8dd rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xac4b9403 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xac56c7b0 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xac6aefe4 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xac81de6e drop_nlink +EXPORT_SYMBOL vmlinux 0xac86f5c0 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xac904fc9 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xac9119ab inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb15d82 generic_writepages +EXPORT_SYMBOL vmlinux 0xacb7083e register_sysctl +EXPORT_SYMBOL vmlinux 0xacb86335 kill_pgrp +EXPORT_SYMBOL vmlinux 0xacba6487 netdev_crit +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 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad1f29f0 nobh_write_end +EXPORT_SYMBOL vmlinux 0xad28ae4e skb_clone_sk +EXPORT_SYMBOL vmlinux 0xad642446 pci_clear_master +EXPORT_SYMBOL vmlinux 0xad801714 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9f3b95 generic_write_end +EXPORT_SYMBOL vmlinux 0xadba08e1 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xadc1d726 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xadd84083 dev_open +EXPORT_SYMBOL vmlinux 0xadd884d9 backlight_device_register +EXPORT_SYMBOL vmlinux 0xadee1a8b iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xadeecb15 tty_free_termios +EXPORT_SYMBOL vmlinux 0xadf14840 dev_deactivate +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae298e05 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xae3e90f9 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xae4a1bda csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xae4e2881 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xae5246b9 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xae619615 scsi_print_result +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae7bace4 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xae8c4d0c set_bit +EXPORT_SYMBOL vmlinux 0xaea0579c dev_printk +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb2320e bdi_destroy +EXPORT_SYMBOL vmlinux 0xaec0dfbf __scm_send +EXPORT_SYMBOL vmlinux 0xaeedd8d1 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xaf065e72 scsi_device_put +EXPORT_SYMBOL vmlinux 0xaf37c0fe tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf5b9ea1 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xaf5e17da bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xaf69b3d6 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf93285f nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xafab862c always_delete_dentry +EXPORT_SYMBOL vmlinux 0xafcda043 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xaff5280a save_mount_options +EXPORT_SYMBOL vmlinux 0xb00099ef __free_pages +EXPORT_SYMBOL vmlinux 0xb00518e5 generic_show_options +EXPORT_SYMBOL vmlinux 0xb03d31f9 vga_tryget +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07ac238 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xb07dc183 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xb08ff142 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xb09576ab __register_chrdev +EXPORT_SYMBOL vmlinux 0xb09bdfda kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb11106a6 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xb11f652c tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb144f176 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xb14984d8 of_device_is_available +EXPORT_SYMBOL vmlinux 0xb15bd1fc inet_add_offload +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb1709775 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xb1908b59 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xb1986c3b scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xb199ead4 filp_close +EXPORT_SYMBOL vmlinux 0xb1b41399 __put_cred +EXPORT_SYMBOL vmlinux 0xb1bca6f7 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d9eadc nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xb1dd50d7 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xb1fce5ce find_get_entry +EXPORT_SYMBOL vmlinux 0xb1fce675 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xb1ff7ad5 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb21f0c80 down_write +EXPORT_SYMBOL vmlinux 0xb22b27c1 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xb248508c get_tz_trend +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26caf36 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xb27a9e14 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xb28c4a04 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xb29755a4 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xb2a9c286 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xb2bc6e8b inet_recvmsg +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d8e485 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xb2df0162 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xb2f720ea proc_create_data +EXPORT_SYMBOL vmlinux 0xb2f99df6 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb334e34f km_new_mapping +EXPORT_SYMBOL vmlinux 0xb33bfc3d bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xb3531f96 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xb372ed73 load_nls_default +EXPORT_SYMBOL vmlinux 0xb37a6464 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xb37bee52 rename_lock +EXPORT_SYMBOL vmlinux 0xb39a84b8 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xb3a3d44c devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xb3d05677 __mutex_init +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3f31844 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4133dd3 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42bc0b3 have_submounts +EXPORT_SYMBOL vmlinux 0xb42e1984 vme_irq_generate +EXPORT_SYMBOL vmlinux 0xb436948c __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xb4439a87 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xb45bc27b tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xb467086e __neigh_create +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb472df8a kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xb476f7dd find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xb484b528 fput +EXPORT_SYMBOL vmlinux 0xb4920ae4 request_firmware +EXPORT_SYMBOL vmlinux 0xb4c55d9d netif_napi_add +EXPORT_SYMBOL vmlinux 0xb4f0aeac mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xb4fc735b idr_remove +EXPORT_SYMBOL vmlinux 0xb5327dc3 param_get_invbool +EXPORT_SYMBOL vmlinux 0xb562d98b tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb58fefd4 param_set_short +EXPORT_SYMBOL vmlinux 0xb59a95fb __invalidate_device +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a573ad __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xb5aa44f5 __frontswap_test +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d65aeb vc_cons +EXPORT_SYMBOL vmlinux 0xb5e783e2 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xb5ee92a6 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xb5f2b1ef km_report +EXPORT_SYMBOL vmlinux 0xb60af5ad param_set_long +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6247042 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xb6317513 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xb63c0b21 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xb66427a5 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb688978a __genl_register_family +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69f9b00 mempool_free +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6e365f4 scsi_unregister +EXPORT_SYMBOL vmlinux 0xb71fb74f _raw_read_trylock +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb777b189 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xb78c77ed keyring_alloc +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7ca228d __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xb7f313f4 kdb_current_task +EXPORT_SYMBOL vmlinux 0xb7f511da lockref_get +EXPORT_SYMBOL vmlinux 0xb802cf6b xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xb832f7b4 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xb85f7637 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xb8732bcc ata_port_printk +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8890c06 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xb88ce450 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xb89d33f3 __check_sticky +EXPORT_SYMBOL vmlinux 0xb8a442f2 init_buffer +EXPORT_SYMBOL vmlinux 0xb8aea2cb i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xb8b021d7 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xb90eece3 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xb92c771a cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xb93c4e20 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xb95849c0 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xb9789304 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xb9799a95 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xb9a88811 lock_fb_info +EXPORT_SYMBOL vmlinux 0xb9c400a4 init_net +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ef1386 vfs_create +EXPORT_SYMBOL vmlinux 0xba01d6f6 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0xba146294 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba58adf1 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xba6773a9 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xbacaa87a neigh_app_ns +EXPORT_SYMBOL vmlinux 0xbae554e9 try_to_release_page +EXPORT_SYMBOL vmlinux 0xbaf1568b skb_copy_expand +EXPORT_SYMBOL vmlinux 0xbb0340f9 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb22488e __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb53c6bd nf_hook_slow +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb7c5680 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xbb8cf78c simple_getattr +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbdc6d45 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbbfff13f kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xbc02d1d7 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xbc082985 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xbc3687d4 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xbc4f2f9e tcp_parse_options +EXPORT_SYMBOL vmlinux 0xbc6911d4 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xbc6ca4b2 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xbca3c24f get_task_io_context +EXPORT_SYMBOL vmlinux 0xbcadfcd3 poll_initwait +EXPORT_SYMBOL vmlinux 0xbcb8dca1 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc6931f genphy_resume +EXPORT_SYMBOL vmlinux 0xbcc9a7be _dev_info +EXPORT_SYMBOL vmlinux 0xbcdd7564 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xbcf9c0ee uart_add_one_port +EXPORT_SYMBOL vmlinux 0xbd0c8bc9 tso_start +EXPORT_SYMBOL vmlinux 0xbd17b0a6 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xbd1f4858 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xbd282c47 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xbd383205 of_find_property +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4be800 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xbd50f018 console_start +EXPORT_SYMBOL vmlinux 0xbd605756 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xbd65b920 give_up_console +EXPORT_SYMBOL vmlinux 0xbd8e3ada udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd97f4e3 __skb_checksum +EXPORT_SYMBOL vmlinux 0xbdaeddbb dquot_enable +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdbc13a1 complete +EXPORT_SYMBOL vmlinux 0xbdbd00ae seq_puts +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe31be4c proc_set_user +EXPORT_SYMBOL vmlinux 0xbe3231bb param_ops_ulong +EXPORT_SYMBOL vmlinux 0xbe5f87ae noop_fsync +EXPORT_SYMBOL vmlinux 0xbe7f3038 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xbea3ed3a dcb_getapp +EXPORT_SYMBOL vmlinux 0xbea8a669 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xbea99124 prepare_creds +EXPORT_SYMBOL vmlinux 0xbece45d9 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xbedafd94 inode_init_once +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf1ec7e2 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xbf2db276 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xbf3944bb mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xbf686be2 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbf9e8fa8 param_get_short +EXPORT_SYMBOL vmlinux 0xbfeafa90 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbfffe127 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xc0022779 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xc011f534 blk_register_region +EXPORT_SYMBOL vmlinux 0xc012d515 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xc01e5604 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xc0349885 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xc0475e4e alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xc056ce60 netpoll_setup +EXPORT_SYMBOL vmlinux 0xc05bf890 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xc0645fc5 simple_unlink +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a7342e netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0xc0bb2017 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xc0bf797b textsearch_destroy +EXPORT_SYMBOL vmlinux 0xc0d3ef58 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xc0d4e3f7 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xc0f39d4d dm_put_table_device +EXPORT_SYMBOL vmlinux 0xc0f56ac0 generic_removexattr +EXPORT_SYMBOL vmlinux 0xc0fb18c1 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xc11396cc xfrm_register_type +EXPORT_SYMBOL vmlinux 0xc11502b3 fget +EXPORT_SYMBOL vmlinux 0xc129d75c pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xc13657ef tcp_disconnect +EXPORT_SYMBOL vmlinux 0xc137cd88 tcf_em_register +EXPORT_SYMBOL vmlinux 0xc14434e3 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc15eb0c1 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xc18e4320 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xc18fadb6 nf_log_trace +EXPORT_SYMBOL vmlinux 0xc19ed4a7 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xc1a9f40d __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xc1b28b5a __sb_start_write +EXPORT_SYMBOL vmlinux 0xc1b5106d dma_sync_wait +EXPORT_SYMBOL vmlinux 0xc1b824d0 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xc1baf4db pci_enable_device +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1df8a68 uart_match_port +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f57398 iget5_locked +EXPORT_SYMBOL vmlinux 0xc1f9f43e inet6_del_offload +EXPORT_SYMBOL vmlinux 0xc207864d mpage_writepage +EXPORT_SYMBOL vmlinux 0xc2125d34 path_get +EXPORT_SYMBOL vmlinux 0xc218d919 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xc21f1409 arp_tbl +EXPORT_SYMBOL vmlinux 0xc2465e8b audit_log_task_info +EXPORT_SYMBOL vmlinux 0xc28227c7 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xc2928f98 register_md_personality +EXPORT_SYMBOL vmlinux 0xc294c1c0 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc29e1948 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xc2b87546 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xc2c6f4c7 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2ff9aa9 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc32ad517 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc330f496 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xc3310736 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xc3359c37 prepare_binprm +EXPORT_SYMBOL vmlinux 0xc35dd4ec kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xc3606156 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xc366cf05 seq_release_private +EXPORT_SYMBOL vmlinux 0xc36b079a of_get_next_parent +EXPORT_SYMBOL vmlinux 0xc3881727 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xc3a7be25 lg_global_lock +EXPORT_SYMBOL vmlinux 0xc3aba565 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xc3bae1be tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xc3bc4b50 dquot_disable +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3e58818 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc3f7a0c9 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xc4012d4f blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xc40c0bd9 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xc41f3863 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xc4563d18 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xc45c51e6 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xc469370c ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xc4825fc6 simple_setattr +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc48463ce blkdev_get +EXPORT_SYMBOL vmlinux 0xc4868075 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49bfc57 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xc4b9c95e mount_ns +EXPORT_SYMBOL vmlinux 0xc4f0a23f sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc4feb67d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xc51896d4 da903x_query_status +EXPORT_SYMBOL vmlinux 0xc5485ebc vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xc54ad8ac max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xc550bd14 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xc55acd62 vfs_rename +EXPORT_SYMBOL vmlinux 0xc5708cfb tty_port_open +EXPORT_SYMBOL vmlinux 0xc5754b31 pci_bus_put +EXPORT_SYMBOL vmlinux 0xc57dbc80 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xc5826b19 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a62e45 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xc5aa5d03 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xc5ac5ec8 put_disk +EXPORT_SYMBOL vmlinux 0xc5f49342 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6003ecf xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xc60a1208 sk_filter +EXPORT_SYMBOL vmlinux 0xc61c4db7 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xc623b056 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xc6285d9b dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6382b36 tty_port_close +EXPORT_SYMBOL vmlinux 0xc656f742 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc696c890 sk_free +EXPORT_SYMBOL vmlinux 0xc6a100d6 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xc6ad737f make_kprojid +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6bbeccc vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xc6c9c5b7 alloc_file +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6f538f7 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xc7010800 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xc70b2fc9 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xc712e0b7 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72121f2 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc73e236f blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xc74e3b25 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xc7513e7e new_inode +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc76e4b17 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xc77e2a75 set_bh_page +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 0xc7a6da53 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xc7ae348e ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xc7d6e05a mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xc7de39bd tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xc7e1ff7b sock_no_mmap +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc802077e blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xc812cbe1 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xc81986d8 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83eb428 default_llseek +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc843f8a1 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xc848fc06 iget_failed +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8574c65 dev_trans_start +EXPORT_SYMBOL vmlinux 0xc863e1b4 kfree_skb +EXPORT_SYMBOL vmlinux 0xc86d4ea9 pci_save_state +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8767c22 proto_unregister +EXPORT_SYMBOL vmlinux 0xc876ebf2 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xc87b5501 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xc87be511 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xc8809073 build_skb +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89aea0d param_get_ullong +EXPORT_SYMBOL vmlinux 0xc89f79d4 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xc8a4b959 down_write_trylock +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8af8280 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bb04ed write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xc8bce34d __destroy_inode +EXPORT_SYMBOL vmlinux 0xc8cd70f3 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xc904786f security_path_rmdir +EXPORT_SYMBOL vmlinux 0xc90719f5 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xc90a2b4b serio_open +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc94a7cb7 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96b03ca fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc9887b6a pnp_possible_config +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a0591d seq_open_private +EXPORT_SYMBOL vmlinux 0xc9a6cad7 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xc9c110af tcp_conn_request +EXPORT_SYMBOL vmlinux 0xca07f68f dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xca0cbf97 flush_old_exec +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1325d8 inet6_bind +EXPORT_SYMBOL vmlinux 0xca229aec inet6_getname +EXPORT_SYMBOL vmlinux 0xca2b0396 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xca40f870 touch_buffer +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca80a376 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca994449 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xcaa7a787 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xcabc7888 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcabf309d override_creds +EXPORT_SYMBOL vmlinux 0xcaebe5da compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf39be6 generic_readlink +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb060eb6 input_flush_device +EXPORT_SYMBOL vmlinux 0xcb09ea07 pci_request_region +EXPORT_SYMBOL vmlinux 0xcb128141 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0xcb1e4b21 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xcb214385 put_cmsg +EXPORT_SYMBOL vmlinux 0xcb43fb2f xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xcb45e194 consume_skb +EXPORT_SYMBOL vmlinux 0xcb4751f8 netif_skb_features +EXPORT_SYMBOL vmlinux 0xcb497a78 ppp_input_error +EXPORT_SYMBOL vmlinux 0xcb57175d ndo_dflt_fdb_add +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 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd332f9 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xcbd7c8ad search_binary_handler +EXPORT_SYMBOL vmlinux 0xcbec7a77 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xcbf02ff4 unload_nls +EXPORT_SYMBOL vmlinux 0xcbf28c70 of_get_address +EXPORT_SYMBOL vmlinux 0xcbff5e68 mempool_create +EXPORT_SYMBOL vmlinux 0xcc185f1e skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xcc1a59e0 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2cb486 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xcc32683a netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xcc444995 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc56a1e0 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xcc660897 kernel_bind +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc77c466 simple_readpage +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccf5186c netif_carrier_on +EXPORT_SYMBOL vmlinux 0xcd02b682 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xcd13d002 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd63991a udp_add_offload +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcdbfd194 gen_pool_free +EXPORT_SYMBOL vmlinux 0xcdc1685d inet_bind +EXPORT_SYMBOL vmlinux 0xcdc29a96 rt6_lookup +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcddca8ce mount_subtree +EXPORT_SYMBOL vmlinux 0xce0f6576 nf_log_packet +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce37b0aa skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xce3980a7 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xce3ad06e ns_capable +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce52fa15 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6a9244 profile_pc +EXPORT_SYMBOL vmlinux 0xce759cdb phy_print_status +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce94a8c2 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xcea7a91c pci_get_class +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb1717d completion_done +EXPORT_SYMBOL vmlinux 0xceb3199c request_key_async +EXPORT_SYMBOL vmlinux 0xcec05048 genphy_update_link +EXPORT_SYMBOL vmlinux 0xcec66a3a input_release_device +EXPORT_SYMBOL vmlinux 0xcecebbd2 make_kuid +EXPORT_SYMBOL vmlinux 0xced50cc8 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xcee382c3 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xcee6576d skb_copy +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcefdfe29 sk_capable +EXPORT_SYMBOL vmlinux 0xceffef17 d_add_ci +EXPORT_SYMBOL vmlinux 0xcf792e63 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xcf8178da do_SAK +EXPORT_SYMBOL vmlinux 0xcf8960c0 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfc9808e empty_aops +EXPORT_SYMBOL vmlinux 0xcff0b43b devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xcff4a5f4 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xcffb69ac max8998_update_reg +EXPORT_SYMBOL vmlinux 0xd002ecb9 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xd00e8e93 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xd037e8ba passthru_features_check +EXPORT_SYMBOL vmlinux 0xd05c221b xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xd070f010 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0884a70 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd099b90c scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bce8d0 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xd0c3e77d pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xd0d564ef set_page_dirty +EXPORT_SYMBOL vmlinux 0xd0e1542c blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xd0e1e567 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xd0e5d7bb hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f9397c gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd10f9d86 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xd1122ba2 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xd11b56c5 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xd12eb376 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xd13913b1 blk_free_tags +EXPORT_SYMBOL vmlinux 0xd1482cc4 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd17c6ca3 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xd17cf8ef of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18ff827 cpu_present_mask +EXPORT_SYMBOL vmlinux 0xd1a1e063 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xd1a791c5 dput +EXPORT_SYMBOL vmlinux 0xd1aeffb6 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xd1b8354f datagram_poll +EXPORT_SYMBOL vmlinux 0xd1d1721b cdrom_open +EXPORT_SYMBOL vmlinux 0xd1d32f18 dquot_get_state +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e45a17 key_unlink +EXPORT_SYMBOL vmlinux 0xd1ef11f0 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xd21d3a08 padata_stop +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22875fd security_path_mknod +EXPORT_SYMBOL vmlinux 0xd242b5f4 vme_slave_request +EXPORT_SYMBOL vmlinux 0xd245f07c param_get_int +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 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25e16e3 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28aa920 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b55a1f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xd2d5896a fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3259d65 test_and_set_bit +EXPORT_SYMBOL vmlinux 0xd34e3fc1 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xd36c7e05 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xd36dd5ee kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd37bd3d7 phy_device_register +EXPORT_SYMBOL vmlinux 0xd3896c50 irq_set_chip +EXPORT_SYMBOL vmlinux 0xd3a36c55 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xd3a5f368 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xd3b12742 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xd3b6f084 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3f0e47d rtnl_unicast +EXPORT_SYMBOL vmlinux 0xd3fa6f44 __frontswap_load +EXPORT_SYMBOL vmlinux 0xd3fb0b39 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xd3ff7440 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xd402d789 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xd4040c20 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xd41fe818 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xd42a3cb0 mntget +EXPORT_SYMBOL vmlinux 0xd430cb48 seq_open +EXPORT_SYMBOL vmlinux 0xd4412ec6 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd45e47cc blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xd4634be0 nf_log_register +EXPORT_SYMBOL vmlinux 0xd47e5f13 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4944c96 inode_set_flags +EXPORT_SYMBOL vmlinux 0xd49d03cb netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xd4a1cb9d phy_device_create +EXPORT_SYMBOL vmlinux 0xd4aa2f84 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xd4ad602b blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xd4b72c22 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xd4be9fe3 single_release +EXPORT_SYMBOL vmlinux 0xd4c4d05f register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xd4dccfe3 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xd4e6fd48 __dst_free +EXPORT_SYMBOL vmlinux 0xd4e7aa3d ioremap_cache +EXPORT_SYMBOL vmlinux 0xd4ed666c vme_register_driver +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd545a5bf pcim_iounmap +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5547308 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xd55ec11f mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xd5acff14 napi_get_frags +EXPORT_SYMBOL vmlinux 0xd5b0a434 mpage_readpages +EXPORT_SYMBOL vmlinux 0xd5bd61bd skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xd5cefdd3 dev_change_flags +EXPORT_SYMBOL vmlinux 0xd5d198de input_set_capability +EXPORT_SYMBOL vmlinux 0xd5e3a794 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xd5e8caa5 scsi_execute +EXPORT_SYMBOL vmlinux 0xd5e9d5cd sockfd_lookup +EXPORT_SYMBOL vmlinux 0xd5ff81f8 pci_iomap +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd619a544 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd63a43ff sock_no_bind +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66abff7 phy_driver_register +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6ac2016 gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0xd6b56053 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xd6bd7d98 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xd6e4cf66 kernel_accept +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f435c8 vmap +EXPORT_SYMBOL vmlinux 0xd750fc23 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xd752f59f single_open +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd7742748 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xd778ab67 unlock_buffer +EXPORT_SYMBOL vmlinux 0xd77ab161 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd794bea9 from_kprojid +EXPORT_SYMBOL vmlinux 0xd79c7fcd neigh_update +EXPORT_SYMBOL vmlinux 0xd7a0799f unregister_md_personality +EXPORT_SYMBOL vmlinux 0xd7e2c10c jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd808c5eb __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xd80bd634 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xd8218d40 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xd8650309 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xd8748cdd xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xd87b5052 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0xd87db7ac neigh_parms_release +EXPORT_SYMBOL vmlinux 0xd893510a xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a083b4 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8aeea81 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd8b58d71 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xd8c603c5 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xd8ccb3d1 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e059e3 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e6e2b1 kobject_set_name +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd91f8be8 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xd933a0a3 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd9468197 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xd94d7029 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xd956ac97 dev_add_pack +EXPORT_SYMBOL vmlinux 0xd96a824a keyring_clear +EXPORT_SYMBOL vmlinux 0xd97388aa eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9b00c1e sock_setsockopt +EXPORT_SYMBOL vmlinux 0xd9ca7629 bdev_read_only +EXPORT_SYMBOL vmlinux 0xd9d053a1 phy_connect +EXPORT_SYMBOL vmlinux 0xd9d2ae7a dquot_resume +EXPORT_SYMBOL vmlinux 0xd9d576ea sync_inode +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e2ee88 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xd9f0a5f4 softnet_data +EXPORT_SYMBOL vmlinux 0xda01479c mempool_create_node +EXPORT_SYMBOL vmlinux 0xda0151bb generic_update_time +EXPORT_SYMBOL vmlinux 0xda185530 mpage_readpage +EXPORT_SYMBOL vmlinux 0xda296831 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xda35ed98 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda54e9e0 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xda5f0bee sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xda61f1f2 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda874abd netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8b1669 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xdac0466b tcp_shutdown +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac919fe of_get_property +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf7242b bio_reset +EXPORT_SYMBOL vmlinux 0xdafae4ef inet_offloads +EXPORT_SYMBOL vmlinux 0xdb2a67ff pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xdb315919 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb3f961e __get_user_pages +EXPORT_SYMBOL vmlinux 0xdb49d2ee from_kuid_munged +EXPORT_SYMBOL vmlinux 0xdb554b7b pci_read_vpd +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6c01a9 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb79b9ae deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xdb7b0f09 sock_i_uid +EXPORT_SYMBOL vmlinux 0xdb9ad190 simple_fill_super +EXPORT_SYMBOL vmlinux 0xdb9dbdd9 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xdbb9c593 dqput +EXPORT_SYMBOL vmlinux 0xdbd1a262 generic_read_dir +EXPORT_SYMBOL vmlinux 0xdbf48343 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xdc01ce0b md_reload_sb +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc090855 ipv4_specific +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc428ab4 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xdc4d49f7 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xdc4e7ca6 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc52fb8c inet6_protos +EXPORT_SYMBOL vmlinux 0xdc5c3fb2 dquot_destroy +EXPORT_SYMBOL vmlinux 0xdc62e393 netdev_update_features +EXPORT_SYMBOL vmlinux 0xdc891eb1 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xdc898e4c jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xdcaaa013 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb47b06 __lock_buffer +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcc8c6d2 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xdccd8724 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xdceb87a0 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xdceee85e do_splice_to +EXPORT_SYMBOL vmlinux 0xdcf605b7 tty_port_put +EXPORT_SYMBOL vmlinux 0xdd1b19b3 ip_options_compile +EXPORT_SYMBOL vmlinux 0xdd256a7a vme_bus_type +EXPORT_SYMBOL vmlinux 0xdd47d2e2 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xdd5cafac security_path_rename +EXPORT_SYMBOL vmlinux 0xdd6fc524 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xdd7108d6 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xdd90ce0f dcache_dir_close +EXPORT_SYMBOL vmlinux 0xddbc0df0 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xddd9166c pci_disable_msi +EXPORT_SYMBOL vmlinux 0xddf947f7 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xde034294 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xde3ccfbf of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xde3dc7f5 invalidate_partition +EXPORT_SYMBOL vmlinux 0xde42dee0 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xde434656 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde6ecb40 __serio_register_port +EXPORT_SYMBOL vmlinux 0xde7d5714 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xde85087e mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xde8fd5d5 revert_creds +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdeb0af78 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xdebdd036 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xdecec29b xfrm_state_update +EXPORT_SYMBOL vmlinux 0xded89726 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xdedd7ba2 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xdee44b87 kobject_get +EXPORT_SYMBOL vmlinux 0xdef70cb4 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xdefbe3f3 dentry_open +EXPORT_SYMBOL vmlinux 0xdf0346bc ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf17ddd0 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf7ae3f1 __blk_end_request +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf95290b devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xdfaebb49 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd110e9 to_ndd +EXPORT_SYMBOL vmlinux 0xdfd4bd65 eth_header_cache +EXPORT_SYMBOL vmlinux 0xdfede047 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe01ed833 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xe026b292 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0700c3d memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xe071660c rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xe074be02 elv_rb_find +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07ffba9 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe087a92b genl_unregister_family +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0de6161 pci_set_master +EXPORT_SYMBOL vmlinux 0xe110189e ida_pre_get +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11f3cbc _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xe1373f3e inode_set_bytes +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe1405b37 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1778a9b get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe1792b40 dev_uc_del +EXPORT_SYMBOL vmlinux 0xe17a60ad qdisc_list_add +EXPORT_SYMBOL vmlinux 0xe17d5898 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xe191074e ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xe196569b mii_check_link +EXPORT_SYMBOL vmlinux 0xe1aa5848 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xe1c503f2 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xe1c8b091 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xe1ea709a bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe210a123 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe216c6fa sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xe224fd60 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25bcb8b d_prune_aliases +EXPORT_SYMBOL vmlinux 0xe26f8cc9 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xe2893533 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0xe29476fa ip6_xmit +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a2065f generic_perform_write +EXPORT_SYMBOL vmlinux 0xe2bb4445 inode_change_ok +EXPORT_SYMBOL vmlinux 0xe2d2d1ff finish_no_open +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e9a8e0 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f8d45e sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xe30151f3 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xe30dd469 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xe317fe53 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe3218bb1 vm_map_ram +EXPORT_SYMBOL vmlinux 0xe351270b mii_link_ok +EXPORT_SYMBOL vmlinux 0xe355d9f1 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3a8053c freeze_super +EXPORT_SYMBOL vmlinux 0xe3cb297c freeze_bdev +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3eb0bfc md_finish_reshape +EXPORT_SYMBOL vmlinux 0xe3fc274d nd_integrity_init +EXPORT_SYMBOL vmlinux 0xe404cd56 sock_rfree +EXPORT_SYMBOL vmlinux 0xe41091f1 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xe41df57c __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xe442d034 bioset_create +EXPORT_SYMBOL vmlinux 0xe4521e8a devm_release_resource +EXPORT_SYMBOL vmlinux 0xe46cd801 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xe46d699f generic_getxattr +EXPORT_SYMBOL vmlinux 0xe48c4c31 bd_set_size +EXPORT_SYMBOL vmlinux 0xe4936946 __page_symlink +EXPORT_SYMBOL vmlinux 0xe4aebbbe splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xe5113494 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xe5133d2d devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xe515ef90 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xe519ee46 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xe51c7c55 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe527fc46 follow_down +EXPORT_SYMBOL vmlinux 0xe52ecc52 pci_map_rom +EXPORT_SYMBOL vmlinux 0xe537e8fb component_match_add +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57f28b8 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5c581c1 locks_init_lock +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d68436 __getblk_slow +EXPORT_SYMBOL vmlinux 0xe5e3ebb4 __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe6108928 fsync_bdev +EXPORT_SYMBOL vmlinux 0xe6197aa0 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xe6248e6f unregister_filesystem +EXPORT_SYMBOL vmlinux 0xe6345d3e ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xe638d1cf fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xe655b33d keyring_search +EXPORT_SYMBOL vmlinux 0xe65a288c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe6864dfb blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xe69115b5 led_blink_set +EXPORT_SYMBOL vmlinux 0xe6911ccd rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a07b29 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xe6b45796 param_set_charp +EXPORT_SYMBOL vmlinux 0xe6e944d1 read_cache_pages +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe70f2669 up_read +EXPORT_SYMBOL vmlinux 0xe7139ce3 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xe760ebd3 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xe79d5996 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d63432 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xe8098a8d netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8584e00 seq_read +EXPORT_SYMBOL vmlinux 0xe859113a vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xe85d907c page_symlink +EXPORT_SYMBOL vmlinux 0xe8643bd6 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xe871473e neigh_for_each +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe891fde1 filemap_flush +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe894681d skb_store_bits +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d1eb5f kernel_write +EXPORT_SYMBOL vmlinux 0xe8f84324 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xe912f9cf __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91bfbbe sock_from_file +EXPORT_SYMBOL vmlinux 0xe91f9fbb irq_stat +EXPORT_SYMBOL vmlinux 0xe9386fe0 param_ops_short +EXPORT_SYMBOL vmlinux 0xe9429f4d mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe97019ff sync_blockdev +EXPORT_SYMBOL vmlinux 0xe97da836 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xe98cc625 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xe9b78284 kill_pid +EXPORT_SYMBOL vmlinux 0xe9cc2ed8 skb_put +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9f8bea0 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea2219b3 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xea572f4b md_write_end +EXPORT_SYMBOL vmlinux 0xea61774e tty_mutex +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea819a06 elv_register_queue +EXPORT_SYMBOL vmlinux 0xea8a6c48 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xeacc06f7 fence_signal +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeae57b31 address_space_init_once +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4d5d19 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xeb4f370b xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xeb50cba7 dev_get_flags +EXPORT_SYMBOL vmlinux 0xeb517122 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xeb5a022f swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xeb641fbe crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xeb6a6338 bio_chain +EXPORT_SYMBOL vmlinux 0xeb7ec7b3 dquot_release +EXPORT_SYMBOL vmlinux 0xeba659e3 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xebdbac2b kern_path_create +EXPORT_SYMBOL vmlinux 0xebed9009 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xec1b4984 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xec247aa3 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec51f8e7 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xec56ae95 pci_bus_get +EXPORT_SYMBOL vmlinux 0xec68bacf tcf_exts_change +EXPORT_SYMBOL vmlinux 0xec78c9ee ppp_unit_number +EXPORT_SYMBOL vmlinux 0xecac2dd4 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xecacbcd0 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xecba988f tty_write_room +EXPORT_SYMBOL vmlinux 0xecc1681a netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecdf0683 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfd60b3 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xed0364c2 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xed11ac27 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xed121dfb dquot_acquire +EXPORT_SYMBOL vmlinux 0xed2747e0 param_set_bint +EXPORT_SYMBOL vmlinux 0xed433664 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xed46abb9 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xed51d87c input_close_device +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed69fb10 update_devfreq +EXPORT_SYMBOL vmlinux 0xed89841d bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda6da40 mntput +EXPORT_SYMBOL vmlinux 0xedb5fcad inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc4d971 simple_write_begin +EXPORT_SYMBOL vmlinux 0xedc91da1 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xedcdee00 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xedd920e1 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xeddfb43c lock_sock_fast +EXPORT_SYMBOL vmlinux 0xede5c691 napi_complete_done +EXPORT_SYMBOL vmlinux 0xedf86f0a first_ec +EXPORT_SYMBOL vmlinux 0xee1d9649 nd_btt_probe +EXPORT_SYMBOL vmlinux 0xee2105bc of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee42e9fb pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0xee42ea22 d_set_d_op +EXPORT_SYMBOL vmlinux 0xee43b816 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xee4ac5f8 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xee6daa0a elv_rb_del +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea1c5e2 tcp_poll +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeebd629a __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0xeecca0af __devm_release_region +EXPORT_SYMBOL vmlinux 0xeed7d9cb twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef32383e proto_register +EXPORT_SYMBOL vmlinux 0xef473008 sk_common_release +EXPORT_SYMBOL vmlinux 0xef698002 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xef6b8d7a __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xef6f27d5 vfs_writev +EXPORT_SYMBOL vmlinux 0xef8a7914 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0xef8c92ac poll_freewait +EXPORT_SYMBOL vmlinux 0xef8f40f3 tso_count_descs +EXPORT_SYMBOL vmlinux 0xefaa71a0 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xefcefa90 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xeffaeb4e dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00e654f page_put_link +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf019edf9 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xf052aafd devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06a6b19 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xf08a669a rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf091b23f skb_push +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0b0a45a ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xf0b56581 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xf0d72cbb amba_release_regions +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf1087e19 block_write_begin +EXPORT_SYMBOL vmlinux 0xf11e6d99 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf162e86f block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xf1723043 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1b8e943 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21363f2 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf240b5be inode_get_bytes +EXPORT_SYMBOL vmlinux 0xf2762961 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xf278bb71 twl6040_get_pll +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 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c5cb39 input_register_handler +EXPORT_SYMBOL vmlinux 0xf2d221d8 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xf30518bf unregister_key_type +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322c52f pci_select_bars +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338bfdf kset_register +EXPORT_SYMBOL vmlinux 0xf34037c6 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34e624f dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xf3535f91 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf368a929 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xf368c7ba bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xf3767bde iterate_fd +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 0xf3a426a4 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xf3cf56f5 kill_fasync +EXPORT_SYMBOL vmlinux 0xf3d16be0 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xf3d41ae3 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f27652 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xf3f61699 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xf402d493 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xf40f28b0 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xf413c94c scsi_add_device +EXPORT_SYMBOL vmlinux 0xf4660cd1 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xf473ce0e devfreq_interval_update +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 0xf4844970 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xf48ec2b1 simple_empty +EXPORT_SYMBOL vmlinux 0xf49f5a75 set_security_override +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4ce741e dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fb9898 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xf517033c ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf52dd802 kill_litter_super +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf552fbe2 ihold +EXPORT_SYMBOL vmlinux 0xf559e561 fs_bio_set +EXPORT_SYMBOL vmlinux 0xf55d228b framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xf57347f7 dst_alloc +EXPORT_SYMBOL vmlinux 0xf59db668 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5adde46 of_device_unregister +EXPORT_SYMBOL vmlinux 0xf5bed172 padata_alloc +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf60dd522 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xf614b5e0 dev_set_group +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf641a45c __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xf6586071 __netif_schedule +EXPORT_SYMBOL vmlinux 0xf65ebb8a blk_execute_rq +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf693509f tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xf69ed645 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c67109 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f0ffed _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7248601 genlmsg_put +EXPORT_SYMBOL vmlinux 0xf724c377 sg_miter_skip +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf73332f2 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xf735af8f xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xf753b77f udp_ioctl +EXPORT_SYMBOL vmlinux 0xf75735ca ip6_frag_init +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7679fff generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xf77555cd __memcpy_toio +EXPORT_SYMBOL vmlinux 0xf78425c6 __module_get +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 0xf7b3be9e blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xf7c3be22 scsi_host_put +EXPORT_SYMBOL vmlinux 0xf7c89824 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xf7d33633 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xf7fef4ec input_free_device +EXPORT_SYMBOL vmlinux 0xf80a73d7 tty_check_change +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 0xf82b8d1f mmc_can_discard +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf836de4c km_query +EXPORT_SYMBOL vmlinux 0xf83eddd8 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xf841e621 skb_clone +EXPORT_SYMBOL vmlinux 0xf842cddc of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xf86d8d0a phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xf8870cea n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xf88d4dbf sk_alloc +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf89593ea netdev_features_change +EXPORT_SYMBOL vmlinux 0xf89688bc blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xf8bdcd8f bdi_init +EXPORT_SYMBOL vmlinux 0xf8c6d520 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xf8cb563a pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xf8cec192 dump_page +EXPORT_SYMBOL vmlinux 0xf8cedd38 drop_super +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8da6928 force_sig +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf8e44232 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xf8f33b60 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xf8f82366 d_walk +EXPORT_SYMBOL vmlinux 0xf9089005 submit_bh +EXPORT_SYMBOL vmlinux 0xf90bf72c vfs_fsync +EXPORT_SYMBOL vmlinux 0xf91e26fd ll_rw_block +EXPORT_SYMBOL vmlinux 0xf930f876 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xf95462a3 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xf956c339 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xf966a552 blk_put_request +EXPORT_SYMBOL vmlinux 0xf971b318 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf980e82f get_io_context +EXPORT_SYMBOL vmlinux 0xf988bb01 release_firmware +EXPORT_SYMBOL vmlinux 0xf997f3d7 of_root +EXPORT_SYMBOL vmlinux 0xf99ddc53 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c01a80 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9dde891 wait_for_completion +EXPORT_SYMBOL vmlinux 0xf9fc5024 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xf9fc8f0b tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xfa04479d scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xfa066940 fget_raw +EXPORT_SYMBOL vmlinux 0xfa368820 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xfa386367 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xfa417fb3 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xfa47465f ida_simple_get +EXPORT_SYMBOL vmlinux 0xfa54edc5 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xfa56a668 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xfa588432 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa7af287 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xfa946888 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacb6b3a wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfadc2433 km_state_expired +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf73684 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xfaf7c30b bio_add_page +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb2d88ff amba_request_regions +EXPORT_SYMBOL vmlinux 0xfb4c2a21 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xfb60c502 devm_clk_get +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb744256 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9edaa5 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd088ef blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xfbe32b82 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xfbe8ff5e cpu_online_mask +EXPORT_SYMBOL vmlinux 0xfbf050d8 serio_rescan +EXPORT_SYMBOL vmlinux 0xfbf37d38 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xfbfc8600 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc4b6d0a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xfc52047f __wake_up_bit +EXPORT_SYMBOL vmlinux 0xfc6beae1 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xfc722365 d_splice_alias +EXPORT_SYMBOL vmlinux 0xfc87dcc6 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcae7b7f pnp_is_active +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcdc7e4e phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf46bf2 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd5d3249 dma_pool_create +EXPORT_SYMBOL vmlinux 0xfd771075 dev_driver_string +EXPORT_SYMBOL vmlinux 0xfd7b1dfb km_policy_notify +EXPORT_SYMBOL vmlinux 0xfd8a72b3 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb1c195 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdeb3a1d inet_frags_fini +EXPORT_SYMBOL vmlinux 0xfdf291f8 iov_iter_fault_in_readable +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 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe1d4951 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe3cf521 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe73a223 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9d98e7 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfea0dfc2 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xfeb696b1 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfebaac34 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xfecd2553 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xfed23403 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee21dac __napi_schedule +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfeef30d4 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xfef30e4d registered_fb +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff30c2a7 eth_type_trans +EXPORT_SYMBOL vmlinux 0xff37c19d blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xff63563c flush_signals +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff7b4f46 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xff8aa133 free_buffer_head +EXPORT_SYMBOL vmlinux 0xff8cacbb dquot_quota_on +EXPORT_SYMBOL vmlinux 0xff9267c4 __devm_request_region +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa48972 fb_blank +EXPORT_SYMBOL vmlinux 0xffa70795 blk_init_tags +EXPORT_SYMBOL vmlinux 0xffcf9bcd neigh_event_ns +EXPORT_SYMBOL vmlinux 0xffd1d80d truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe34fe0 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xffec5baa blk_init_allocated_queue +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x0bf07ce2 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x13c074a7 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x2c7f8029 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x342a6d7e ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x5f641816 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x903722d2 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xd1946e8a ablk_init +EXPORT_SYMBOL_GPL crypto/af_alg 0x093faead af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x0ee0046d af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x1dd85930 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x4f524933 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x98f237f7 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x9dc6af17 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xa2660f73 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xa475d7ec af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xbb62dd60 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xcb39de78 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xd8889a1a 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 0x0b3ee8ed async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xae1eb844 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xc9df1a20 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x4c616f62 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x6e868cdf async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x36498205 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3a4b3da8 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa8ad8794 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd847d096 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x69f513dc async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xe494c379 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x82d634b2 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x13faff57 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 0xea40b162 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 0x2b11f847 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x30378d86 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4001e262 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5e9cfb08 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x69d5139c cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x736d65f1 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x86d9fa11 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xbe77dac4 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xc64fd3c8 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xca146e40 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x53e066c7 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 0x00bb7e51 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 0x3534db8f shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x4d7f58ab mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x595f3f29 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x831adbfa shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x84ffda1d shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xaae35513 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xaed2d15d mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xda50cf85 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 0xaed549c1 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xa9e94a55 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x6402503f xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x1c3d2c35 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x59a97d9d acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0748a594 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0ea81ced ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x105239ad ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2c2750d9 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x42281fc1 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x498197d5 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5470b77d ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5dff4a18 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5fc5a84e ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x707801d6 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x71e4e38f ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x766873eb ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x778513e2 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f57e6a0 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x82df19a5 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x84954bbd ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x88eaeb07 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9b6317dd ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9e266cde ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc0785f85 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd5212e23 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf018d281 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x1231bd07 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x14d1af89 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3cffeb00 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4ae70170 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6cea76d7 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7d772749 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9e4ea78f ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa208394d ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xafb86566 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xda0f1477 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xddd19a47 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe02eeb3b ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xebceb643 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x45a09469 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xd2048b92 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x1f503522 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x8f3ea3dd devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xa975d85d regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xccfee1e2 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x04fc377b bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x245423e6 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x276780d3 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x28e9e0c7 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2c803dc0 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x319668e4 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x38f5e41f bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3cba5623 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4a138257 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4cd25c48 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6ad97668 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x80def784 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8541f7c1 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87e4cc6e bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8d981ab1 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8fb005e1 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x92ea41c3 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb809170c bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc08fcd44 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xceecc360 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdac3db80 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe65fdc01 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe81deb37 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf66840f7 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x09db843a btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5ccc397e btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x70dc0c83 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc849d860 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xdd47123a btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xf1540850 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xcf572bf0 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xeeed4d20 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0af37054 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x14011532 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x352690da btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x35fa1010 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4fd2e6ed btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x542dde43 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8f66b33e btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb5fad2bd btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb7cae885 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbb745752 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfbb96b6d btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x4127ce46 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 0x1036e2c5 qcom_cc_really_probe +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 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 0x455aeb6c qcom_cc_remove +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 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 0x6e54b5e0 qcom_cc_probe +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/clk/qcom/clk-qcom 0xf0308a2f qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf6bee55a devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xaad9bbd3 bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xe7525bfa bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x76c0ed58 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3a7b3b24 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x80550536 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x9eb094f3 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xb27058fe dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbb8144c5 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x4191fb54 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x446f60f9 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x44ad8796 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x154fac22 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1935fa61 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1b8dd0f9 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2904949e edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x29061037 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2976c908 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x29d95cfe edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3a1e917c edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3b4a87b3 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x46df24dc edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4ea3cc69 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5e5ff1d1 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6251e671 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x931085db edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa4b77e6c edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xac317a20 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb154d0f2 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbf777d06 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc3e67674 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdd5bece8 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe19c94db edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf1780680 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf6711e4a edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5f68c67d __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x63522fe9 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x56fd159c drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6043ee76 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6a59387e drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x98b9c324 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb67f4f27 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd8ad7148 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x09cd79e2 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 0x85d2b383 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x99abdad2 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x025d6c49 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0478f565 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0cae4f15 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21a2e1a1 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x28e4416d hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x39cf3305 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x450466d1 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4bc4e587 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d273b0c hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x500f1bc4 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x54a932f5 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x586c8239 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x66b80b2c hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7313c48c hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x74fbb1b5 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x78b88da6 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7bb68004 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7c41bb19 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7dcc18bf hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8539045d hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x88097945 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9393f349 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x966af452 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9a74306a hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9ee620dc hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xae783424 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2dfa561 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4e051ee __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb83546b9 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd9f292c hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbdca2953 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca64f662 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd7e4fec1 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda5c5b5f hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe3e01418 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfc924356 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2b744e2b 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 0x12608e1f roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x3143d62b roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x472890d9 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x859f1d26 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa3d93c38 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xbb0a969a roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x085a7ec4 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x179f1df4 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3ea8fda1 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x404b9aa3 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x43bc5b10 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x505c1b79 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x620c720b sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd59172fa hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe35ac100 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xa8798657 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x12fb3592 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x29edb858 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x32d9eac5 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3bce58bd hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3ed62497 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x46143179 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x73944884 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x884e7697 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9ad54b68 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa3666e79 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa5977e95 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbb072320 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbc571e88 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc07f2c09 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xce7ea207 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd32ca02b hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe4d96426 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xeab808d9 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x2246eaf1 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x808f3393 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xcb7645b5 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0cde4d49 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x28bbc98e pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2942b950 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3476c8f0 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4a2da5d2 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5ac8393c pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6bdd55ba pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x84a95c6f pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb07166d0 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbae1af63 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbd66fc4c pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe40c3e8a pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xed939db6 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf5a46cab pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfd610b1a pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x127416a6 hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x1b0db1d3 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x25c88b4e hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x3f78d415 __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x4503c15a hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x82133f18 hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x83b60b2a __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x9c48dee5 hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xb27879d8 of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xf38b306d __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1fd7d1a4 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x24380b9b i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2682e984 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x58dabbe8 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 0x8dd1cd88 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdc6a8025 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf32f6a92 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf4d140dc i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xff85450a i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xce0711c3 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf2579518 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x4237f1a0 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x753074aa i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0293a5fb ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0ed8af24 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3d930fc5 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x47aa81d4 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6cfaa5ce ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9d5b8638 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc5c4f2c2 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd42eccb5 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd8a3c0a0 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 0x0e6452b2 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x32d55188 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x367f45fa adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x580bb863 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x61f5afbc adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x77249171 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x94b1e9b6 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa196c2df adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa5f2fdde adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xaaa349e5 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf3573849 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfcb298d2 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0bb403d4 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x11ba1fb9 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x17d3cc9b iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1c120095 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1e394bda iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x224b2cd0 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x24794e6e 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 0x386ba9e0 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3c9bf4db iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4f9f76ab iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x51cf2f5e iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x576f4529 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x59254ecc devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5a489c06 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x60ca603e devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x62c81720 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6bb0cde4 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d6213ba iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7dc8ebf8 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x81548970 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8ad26f0e iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8ae0450d iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9bcc6963 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb8e1c583 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbae6832e iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc97e86e4 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcad41530 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcfdaf5ac iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd005c5ce iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdb7d8c9e devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdffc30be iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfe2ec3de iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfe35a6b2 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x6258f2c7 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xa41e4478 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 0xb0a26faa adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x11f44c56 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x9558ad4b cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xea774a06 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x3c298197 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x43a40fd8 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xdcf44bfa cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x3aab440a cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc49a7476 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3d1526ab wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4a140b34 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4a92461e wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5fec9f09 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6301d045 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6d99ea7f wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7027f725 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x71fbe583 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x818768eb wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbc8df7bb wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcd5b79db wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xed014d0c wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1515fdd1 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x191e65b4 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3791f7b7 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x427c53cc ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x78282e36 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb6cb0b34 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc05bb78e ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd966bb16 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xec2241f8 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 0x16307090 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x18a93c13 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3529a046 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3e230cf1 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4b1120e8 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5c6fbbc0 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x62539492 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6fc40edc gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7ddf402e gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8de21de0 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8ed9fca6 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x90db3a74 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc896658d gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc8ef821a gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcc42fe43 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xec57a40d gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfc0c33a2 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x056004bd led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x15c0645c led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x56008aad led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd8f7e550 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xde020646 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe9db6d6d 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 0x0d376fe9 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1aa6d8a2 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x28910c23 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2941bff1 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2a69459e mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x31d77344 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x56d1b771 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6d792a4a mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x734a5336 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8187b717 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8a84a398 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x939100a8 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc462c8a6 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 0x182025c8 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1f225640 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x323eed93 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x379aac48 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3b547ff8 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5a4af5f6 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 0x8610efe6 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa850a139 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 0xc06b65ca dm_bio_prison_free_cell +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 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 0xf39c6a73 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x064ad69b dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x1c22db7c dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2c84f0ab dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x6f60b51d dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x998d4900 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9a1a20c3 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe0e5f894 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xba2f0059 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xeab14d20 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 0x34be4469 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 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 0x7ac50d40 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8789d4da dm_rh_mark_nosync +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 0xc3c98803 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcd9c3f32 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd7ab39ce dm_region_hash_create +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 0x42d1207a dm_btree_lookup_next +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 0x8ea6e3b4 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 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 0x0c3ddd27 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2128e137 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x239932b6 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x30bd4a1a saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3595763b saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x47fa2991 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x99eddbae saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9cbc8523 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9cbd3985 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc2d83ad9 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x76200eea saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x7b5d5fbe saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x7c682839 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x9ad45fe2 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x9fbd1416 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb521b6b4 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf71f43b3 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x16d7b09c sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1c695a14 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x30a84270 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x31bfefad smscore_register_device +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 0x6065534b smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x611e0919 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6b329de6 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8aa8b480 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8cee240a smscore_set_board_id +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 0xa894e591 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaeddaa58 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb33d86dd smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb593bf9b smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb9751d47 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe9f01e64 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfabcba26 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfe0c695a sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xd365d825 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x2730f647 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x81e5a1ad tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0bbec88d media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x0c00aa77 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x1c6f4c6c media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x359ba2f4 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x43d00902 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x473615a6 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x57f41e62 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x5f3bf2be media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x5f84d668 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x62c0df97 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x69d011d3 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x8660d1ae media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xa900e03f media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xb3853424 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xc5ea37ce media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xd2910d7d __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xe17dc604 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xe749d144 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xcccec57d cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0a41d162 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x15a1d277 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x24359597 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x29c5ca89 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2afa4977 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x329f9077 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4d0793b5 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6872d4e9 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7203aae5 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7ca068b3 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x92033559 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x99fd9073 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa99887d9 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb292681d mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb7834b72 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcad0139a mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcce8b7e6 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe7046cc2 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xea6b8b8f mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2620ccd9 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x26e5279f saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x379a1fd6 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3cf1fd53 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x447a1a0a saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x52a2476a saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6c68144a saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6cf04a59 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6e9aa5c0 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x918cfc18 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa0af82e5 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa0e5c7c7 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa64c9343 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa7ca50e9 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xca16a447 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd489c4d1 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe0d8e87b saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe6859bbe saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf5369c77 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1a602d6a ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x32c510f5 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x416b8353 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 0x8ae19352 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbb0cceb8 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbe526dca ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe9e6239c ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x33c5adf2 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3be80404 xvip_cleanup_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 0x72b54dd8 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x872f9b68 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbdc16758 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xc851f268 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xceb23cdb 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 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xc0039119 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x67921747 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x72752dc4 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x02a5a252 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x12210d57 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x28659f2b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x34df292b ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f6235cd rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7c3170bc rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x87a7e231 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x88a7ffca rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9618e3b0 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa624e613 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa768c56b rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xae7ffd68 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaeaccd42 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc3430fd rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd0b34208 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xda8627c4 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xebebef46 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf7e063ef rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xff01bc61 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x7ebeaba0 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x38baf600 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x0e489e55 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x35dc214a r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x5dded1a8 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xe9bba956 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x8c5a4154 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xb61e8c06 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x483918bd tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x201068fa tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xd325698d tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x3aabc3d3 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x8771c306 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x80be82f0 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x079eef49 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0803ecd1 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1a4fbd59 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4baedd0d cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x523f0213 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5997aa50 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7c5bd538 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7e07b7df cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8470dbe8 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x851718e7 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa4952ead cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaac1653e is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xae04e2dd cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaf95e2e6 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbbc87daf cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc6b4fa43 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd58cf451 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe624e621 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe81d880a cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xee272031 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xee37c86a mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x0940dec6 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x20d03fea em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2e050fd2 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2f1270d0 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4d4285bd em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x536d1773 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5b1c229d em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x73d85c16 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x81fa992e em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9bbdbea4 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa2373c88 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa33ac8ca em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xab5dc9ea em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xac2a2c8b em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd5334ad7 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd72bcb51 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe414fed1 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xeb4e5d4c em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf4dc5365 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x1519cef9 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x4064d27c tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x50660357 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xbabdf62e 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 0x159595b9 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x30d14838 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x4e62dbf3 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x53b72882 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6be9d465 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 0xc4480d42 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 0x0a888a11 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xd2d2073d v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x01980a94 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x02dcb7b6 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x10277503 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1bb5036e v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1e90ecaa v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2276899a v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2626278d v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x31db315f v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3eecb155 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x42973598 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4d7be7dc v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x53c5eaf1 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x58515d7c v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7751c0f4 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x78cb8f86 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x826aa423 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8901e467 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x89ea2def v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8a9ecf9a v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8be280a8 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x94bd909d v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa079d166 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaf9cdd5a v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb597985a v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbb105c37 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbb9fd65a 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 0xe85a47e7 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x06e31531 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x10181c88 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2c67e7d0 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3221cd46 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3a0eac34 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3dd25b7c videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x43109dcb videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4954d4db videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5804386c videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x58a1b704 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x62b6361c videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x64754f6f videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x668a9b61 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x68633f19 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6be0b90c videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x724ad449 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7c18e879 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7c3edea3 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7ea2423c videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8dec07ed videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc74a37b0 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd8297a97 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf147d470 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfef2247f videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x2fb1545a 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 0x61bd398b videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6c59427c videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb7f2c388 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x8a5e3aa9 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9c4a3bcd videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xff326b88 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0619b9d3 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x06eaf4c4 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x099e2af5 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0d3bee49 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1c08d2a5 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x271cc5dc vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x431304be vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x486da627 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x50bfa951 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52389ceb vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x54ed66c9 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5589e1cc vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x719d4472 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x73fd8c67 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x741c1a53 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7802e876 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x784a0d06 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c77fde2 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8d52370e vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x913b7557 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x92787436 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x92d1119f vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x97a2422e vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9ca48698 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9de6f666 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa5eba1d0 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa60be9d0 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa8fcece0 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa93424c6 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb43dc81f vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb56e71df vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbbf3dd03 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc25a6b20 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xca901bde vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd52aeae2 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdfa8e534 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xecc650d8 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf074dca9 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf9a62e36 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3617e3db vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x5c64c14d 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 0x11f91662 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 0xf129a381 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x185c45c0 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x5cb16796 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x5d95777d vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xf2d5ea9e vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xe393e028 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x07091271 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x08ff49e0 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0f6e3868 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1bb131c5 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1d2d8500 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3131d4b1 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3484e0b8 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4817aa3d v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4d3e7517 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x569d2f43 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5ca47398 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6dd73c48 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74f7fdd5 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x79e6381e v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7de9f135 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8373f80d v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8cf06eef v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98b8d4ad v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9a8eda69 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xade4aa56 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb0ac4a0d v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbcd1499b v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc633e0db v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc9a09ec9 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe6f1aa70 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7982cd0 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf9187ae0 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf9abf3e1 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x063217a1 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x89a6310d pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb984d54d pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x48902134 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x762b6af3 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7cd6273a da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7f3d3d8a da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc8426844 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x312d357f kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3a0b5113 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x41eed3b9 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x43a6c780 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x64f48874 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x68f3fb50 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x8cc127c2 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa61b2ba9 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x133cd370 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xd260bc6b lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xdba8ef95 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x001f1907 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2140c52e lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x683397f8 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9b4cf8a4 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xabbeb3a5 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbf4544b3 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcd391b24 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x449a747d lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x613f0b89 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xd0498f4e lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x07558a1a mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x155a7f72 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2e237f69 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x47efc13a mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4b9ac25d mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x97b68819 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x272c1099 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x57cc83ea pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6ecdcf30 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x73c25a2c pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9e09f782 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9f3ab878 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbefedf34 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xce767637 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd6141762 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xff923589 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xffe4c6aa pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0ab34780 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x56417df0 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1c9555af pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x3463b924 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x91cb502f pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xae50b9f7 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xff11688d 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 0x0092c118 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x022ae8be rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x02470568 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x03e7dad4 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0531e992 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x06e02627 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x078357bc rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0a81c201 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x120867f0 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2bb5ed84 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x32725960 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3f29c8d8 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6c9202d2 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x79275199 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8f185f18 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9379040d rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb79c0714 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb831b921 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcae0e6e3 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd137bcce rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdac78ca1 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe0743f39 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe48bf9ce rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeb9d24d0 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x186c9acf rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1f7bb4ff rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x269effa5 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x35d5edf9 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x49329606 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4f010c2a rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x72dcef6b rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9db70ae2 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa4eec11c rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc4a0fe39 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd004d252 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd108a231 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe6029ec2 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x11ca79c4 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1ad1fdda si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x22da7e09 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x26e3c362 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x29a4b6d9 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2cd43165 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2ef6de90 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3bffac95 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3c06be71 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3ce5bd6c si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4a4445d2 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4fb3469f si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x73573d48 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7f09fe52 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8018aee5 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8043edf6 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x82e65517 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8a95264a si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8c305ac3 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9efcc93a si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb8473533 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb87fcaf4 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbf4523b5 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc05855e3 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc08aba45 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc106d66f si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc273ebbe si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd0c899ac si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd7f5e082 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd7fb83fe devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdddb647b si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe3bf23d9 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfa011c37 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xff9b44ab si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8da31d67 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9142ce37 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xba1b62a2 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc3c1dd10 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe5ebac39 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x6b10f4ea am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x80033f70 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb5cf4e50 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xd9d4c03c am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x111e3aa6 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x583d1efa tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xafad5390 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xd6685526 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x628ecc5f tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x62f26234 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xc3019667 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xdcdc1753 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xc3ab3a89 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x13ba0833 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x62371643 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x72dbdee2 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xfb429484 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 0x2646048c enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2865e194 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2b838a8b enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x35ea56e1 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x45599549 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x943ca49f enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xcff7acad enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd8963ca5 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x01e1b6ea lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x024eaf27 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0ce1c939 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x53165a9e lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8dca349c lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x961b4006 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xefc9d8b6 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xfb834521 lis3lv02d_init_device +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 0x23e717fd dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x2773331a dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x77dbef4a dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x20d5c458 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x33c591ad sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x53f5bbc1 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5597c49d sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6af94a14 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7e33fea2 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8f04ebb9 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x942af26f sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbbc6f857 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbc4bc490 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd124b332 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdca842e8 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xea8a06e0 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfbcdc9fc sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1d850004 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3b29d407 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4f5d8b58 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x600a7a53 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6c6eb274 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6d9c6de6 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8cba8263 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdcecffd0 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdf115ed7 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x76b4fe0b cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x8baadb9d cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb483fe75 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x75212791 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x86d8e817 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf88aa3c7 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x05f92fee cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x4629d450 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xa827c40c cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xb3404685 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0f4cfcae unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x19ffd235 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x300d1fb7 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x30d61198 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32f38b2f mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x38bf9d82 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4695abc3 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a35b839 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x51bf3f7c mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x523de7dc __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5c6a41fd mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5ffde24e mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x62fd4b6b mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7500e02d mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x79f4a933 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7a318806 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7bfaa535 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7d7dd402 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7fffd8c2 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x80946844 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b95a2b4 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8bcb5c0c get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x959de470 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9797db93 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaf2d3ec1 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb195c0f9 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb63e7e18 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbb8e93d7 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc16237ff __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc29a2fc1 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc66f79f3 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd0530aab mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd60148f4 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd609ed85 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdb1c739c mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe389fa71 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe74c5d6f register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xef9e1c57 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0a2a61e mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0a3264f mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf3f2add0 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf5f3029f mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1923270a add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x20b915fa register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2a731e0b deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x325a6358 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe4b89f41 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x4251b32f nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x46e2c6b5 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xd6d0ff68 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x846259bf onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xc883c848 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xcc32ceda spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1bffcd43 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x283502c0 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c5a41a4 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c86e23e ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x488d8724 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x558b83c1 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5bd39f6d ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6fd6ce2f ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9d8a4221 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9e006baa ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc5f7bc17 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd12a2cad ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xee714b5c ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf6899e48 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0d3ba0f1 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2abd0997 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x76429a6a register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8b15af3d alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xad3ae35e unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb3ea8045 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0258e794 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x385ae635 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3c1af438 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x53528fed can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x53955c3d alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x67ca8bd7 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x76b7f47a devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7e035f0f can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8771c19a alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa256d074 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa9afb514 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa9d07829 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb14d6b02 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd61e3081 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe1321fc6 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe88a7daa unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xec55e3ce can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfdfe8e4c open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x25d78520 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x91de2788 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe667670a unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xedc6b0ea free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x675ec63c alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x81670856 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xc7aeb76c unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe6c13ba0 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x6670d91e arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xe6e15493 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x063b8e9d mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08079bba mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a2a3d58 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a85838b mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c5a5209 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f871c2d mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ff224f3 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x108bf3c9 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x123d8ecd mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1428124c mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14b191e3 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18312297 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18da8185 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ba09f9d mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1df6a64f mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2139538d mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x215582af mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x217edb6f mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23404e4a mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2452a590 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2665c442 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2705422d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a8cc688 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ac68684 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e03eb49 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ea98279 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f03bab4 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x341a34e9 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35d7cc81 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x364d035a mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38bf4ed5 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e5b0844 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x407cbaa8 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4360502a mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4363fe1d mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4644d05f mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x464ff1fe __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x488d5e71 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x498eeebf mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c521b09 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fad4ffb mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5300ca59 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53c7d955 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58fbfe99 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d53d733 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x615c92cd mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x624b6adb __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62a2fd6c mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6418d5ee mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65b625ed mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69b369f2 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d6cf2c7 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f1dfb31 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x706500a4 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7094b8c1 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70de0db8 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x754a6922 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7760aca3 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x776fe2ef mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7965fb0a mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d4bb8f5 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d5f1ebf mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80135cf3 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82b33608 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83bd2cf9 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8474bb14 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85e6b92a mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x864e31ef mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x866918bc mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88f7b2a7 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89c46244 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a0f3f64 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a9e7228 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ab8d69e mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b8a2b92 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ed335a3 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9404e509 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9573f750 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96518425 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97115537 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a2393fd mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d504ee0 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9de3869a mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2bc2790 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2ebb3ac mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7d8b851 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa80510e0 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9ca3b38 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae0e61f8 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0821a67 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb09c44e2 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb2ddcd21 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb989bfa0 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2a06d30 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc422ad9d mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc68da925 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb424d51 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf944c62 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0114345 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2346953 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd328ece0 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd490d59a mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdae9c59a mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdba5d793 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc406a44 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde762f16 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe378e081 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe39f07d4 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe40b0009 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4660c33 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4675561 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe596da6f mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe83759f4 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeacf05db mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec3cd09b mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec543142 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf122fe7e mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3d6f722 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf687bd6f mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf829fdf1 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf887e667 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb0d4c75 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb5a3482 mlx4_cq_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 0x09d77bcb mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10744233 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ab3afd2 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2767331f mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f15f579 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4165305d mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4cf145b0 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4d3fb04c mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f3b3b1d mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5322de52 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x594fd8bb mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c4fafe1 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x615e9e35 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76003eb0 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77826525 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7db7f17a mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c283602 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x91182f13 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99a2e4fc mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d02b013 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0609dbe mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb352ac9e mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb46513ba mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb703eead mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf53ca8d mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5b8bc30 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc67ec492 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc99803c2 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1419033 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd71a3576 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb226e9e mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe36f00f3 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7f64045 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed802faa mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1f9e963 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x2e16e041 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd0ea0ac0 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xe4f64f3d stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xe66d23dc stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5ac03589 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xdb42aef8 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xf77fb83c stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0dee4900 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x100ed733 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x14c205c1 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x19c3a6a2 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x266be5aa cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3b9aa248 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3eb1dea8 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x74d8fb1a cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x76b1d3c5 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x848d5729 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xac380c24 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb08c7142 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb3e26666 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb4378f8a cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf1717e61 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x14f3e29f macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3952cd7c macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x711a9bc8 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd1f10968 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xded2e146 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x7fc33776 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x44e0238d usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xca640557 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe297ce4d usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe68295d7 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0bc85022 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x26e7108f cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x48b0cba5 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4f133385 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x56d72062 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5c76a334 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x81204f20 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc3d20964 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc6ef577f cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x10452fce rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2b1224bf generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8e9809e8 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x92bc8e68 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xba5aa6a7 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd060dee5 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x019c1a34 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0efe6a5a usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x18881811 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1bef3300 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x217779d9 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2632f6fa usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x285b5de7 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x33391619 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4f6ff208 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x54623f80 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5632f813 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5e55723b usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x61b2920f usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x67273872 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6ac0e845 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x743c84e2 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x75af21e3 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x77d94cb5 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7f24ad6e usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x926a715a usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa6bd7454 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb24ee9c4 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb2eb3846 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc19cf46b usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc4e3cf4c usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcbf04ca6 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd243fca5 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd5072727 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xddb4d6aa usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe425e1c1 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xef669fa9 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xefb9b824 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x1fa2eecc vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x67bec31d vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x6bb79101 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8404760e vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x18bdbe15 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x36e07cab i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x37c8d355 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4e1bd1ac i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x56c6cb16 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x68c27d64 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x76008d42 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x78ef5cd6 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7d80558b i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x851dcb7d i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x85465037 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa7fa2e82 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa9c80560 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 0xc437f255 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xca54f9d7 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xda768837 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x07ec0147 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x080adb16 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x90d67538 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xe254d7e8 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xb16baafa libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x01964b30 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2676d1ee il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x4ca3855e _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xd0bd1adc il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xfb24d7c3 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0497a1af iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0ae9c39c iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0ccedc21 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x193d04bb iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1a31d0eb iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2b8f8388 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3e521d22 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4569ca0f iwl_init_notification_wait +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 0x5dce6b92 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5effe701 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x68f07a35 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6ec3fa38 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 0x7ab0e0f7 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7ecda649 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 0x8da16094 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x99fa768f __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c553437 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa15a5e18 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa52098f5 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa98873bf iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb7fc449e iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb9651ef0 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc1d4ecd8 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc5d20d77 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcff9a3f4 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd094aa21 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd99b1eaf iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf03a5420 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0f97c919 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1b1f8b70 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1cc9fa31 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2fd2e25e lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x35661ccf lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4fdd5a1d lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7c39d281 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x831b423e lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8a34eb8d lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x93ff5284 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbdf7b86e lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc44d1374 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc99069d3 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe697f4b6 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf7a9d44c __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfb5ff0d1 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x535149e0 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5ffa053d lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x71988f85 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc172ce80 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc54f19af __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 0xcbf5157b lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xd34e418c lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfb3426ad lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x015f2775 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x10553561 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1e2cf870 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x30d787b0 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x313697da mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x431404c2 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x697830d8 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x762f6d90 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7ded75f7 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x87dcd63f mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb1d3bd14 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcf23698d mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd6314679 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xda67ccdf mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdafc24d1 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe3101818 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe7cbe34a mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0113dbf5 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3bb659c6 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x45992e95 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x56e6adaf p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5d6f1297 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa3bbf6fe p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb981b12c p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xda950dd1 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdc026f8c p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x16b421e7 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x590dcc9d rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x96c1ca3e rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa5581071 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x03433234 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b244cb9 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0df97aa5 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0e0511cb rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x246799e9 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x265d803d rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x29f50f67 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2c0d08ab rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3554e65b rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x46d0db65 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x528e4a4b rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53629477 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e9c9c07 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6864dc53 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x723e28b0 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7cfa616d rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x842b96cb rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x89a46e6d rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8cb771a4 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8d4490c2 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa07809a9 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa2574603 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa94540df rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaa08a72a rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaca0d6cc rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae2342cb rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xccf828c7 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcec720a8 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd4451f4b rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xded260ec rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdfdf822e rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe0063d71 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe133e794 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe4c6778e rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf6859608 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf8c031ec rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfc5e5990 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfdef094e rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1a30e9ea rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1b1dea39 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2ecf442e rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3078da11 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4ab34351 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4b80e988 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x509fc19b rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5333dadd rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5737c526 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7442fa7f rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb7e88dbf rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd3852587 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf65a867d rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x019a59f6 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0c6a8406 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0dc0b50e rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ef4f878 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x11b003e0 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x11bb5439 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x127f212e rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x141e788f rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x14771991 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1897bc35 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x197ffdd7 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1a445a85 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e136965 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25c5bafc rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x35311646 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x374de1f2 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4f631a24 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x50d71662 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5a1de12c rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5dcaff4e rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x657e5ec5 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x671da756 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7331ff00 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x779e2dc7 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x77f75dd4 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ff51816 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x81ed66a9 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82cdc4ec rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9729f075 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98c1e185 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa348a352 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4293e77 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa526ffcb rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad3ce302 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbca5c24f rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbcc68869 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbd156f3f rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd9e0e7ec rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xda38f1dc rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb125340 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdeac8c1f rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdec7af91 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe81c808e rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xebccaedb rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5e25d97 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfb337732 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x1f32f402 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x90cb7247 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x99d0899a rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa53d7933 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xdb2caaa3 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x58945018 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd10b7695 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdafa5c43 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf2a8a514 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x06eeaf85 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0c17be6b rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x11a8dfdf rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x330d6301 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4dd6a819 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x53e83efa rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5dcbbde6 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8e6280a9 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x951376f3 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9613f1d4 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa7b114c1 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc616401a rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc94fae02 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd869c684 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdc80aca4 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe60ae62a rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1b8cff79 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x65e3e124 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xba551613 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfee630d6 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x119603db rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x19659aef rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x23185903 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x28211685 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x32df13b9 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x33ddfde6 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3c682f1d rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3d0cb14d rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x401bfe68 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4b14d5a6 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x64c2220e rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6577d7c9 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6ca1d25b rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6e10deda rtl8723_cmd_send_packet +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 0x7d10b98f rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8031a764 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x81c2e8ab rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x88082f77 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8c6cf725 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xad0f2a76 rtl8723_phy_set_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 0xb0535495 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb20106d8 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc72d466a rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcde06c7b rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe7a5075a rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf894d812 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfca77568 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0b8277b2 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x12b1f643 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 0x259268c6 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x28c13d75 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2bc84e0c rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x37234de4 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x394b3081 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3a3c3b64 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3d45220f rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x40c29d5f rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5c103f5a rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7887eb92 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7d7c7c1a rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x803ef93a rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb334ca9b rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd47d4f88 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe41d70a7 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe51756ef rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x70908c06 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8203086c wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x89dce9fc wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08b63ad4 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1ab328fd wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d44beba wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d70f767 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f0f1411 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x22792689 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x26066e46 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x26b3cc29 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27abe28b wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x299a8a12 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2a936940 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3191ffd4 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x35d55769 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x36cdf685 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x36d9c756 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x39bb117a wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3d6bfe24 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3d90761e wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x401d3f82 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x466626a1 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4bc57f6c wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6e3fd114 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x713ff382 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b46c316 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x84be141a wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x89f262d5 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8a5c3866 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa4c5dc4f wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb747a0c3 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc11b8a78 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc99fdf15 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc9e212d3 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xced0f8b6 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3babb9c wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdbe63aa8 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0bef398 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeb1f7f2a wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xef20c903 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf0656820 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfa25877d wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb92fef7 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfbd1e417 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfe384c3c wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x14afc825 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x155a45fb nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xa198eb96 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe8011c00 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x019f53b8 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4e9e67a8 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x65820d0f st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7917fecc st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x82246450 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbf573203 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd6554c3f st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xf4e070d9 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x287f4883 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x2af956e4 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xcc10e373 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x2bb5203e ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x30a4e683 get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x386f745d ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x48b7b57b ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x5cd51beb ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x946c4cce ufs_qcom_phy_remove +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xa64ad3e8 ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xcf7cdc84 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xde792764 ufs_qcom_phy_exit +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x39f07d15 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x835d3377 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb05c4886 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x83cc08ce mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xa312a1fb mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb0afcff3 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb502ad4f mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf6a09537 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2b8a9f12 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa65c2895 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xbf852e0b wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc9ab5bef wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe18d03fb wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf18cca63 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xb3abb8a2 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0155cc8d cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x04d2ea56 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x076901e0 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0ef2ccd5 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x15a84c98 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x172bbe43 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x214e60c1 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x23064f5b cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2349261d cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x258d97c1 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x266427b5 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x353c6cd8 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x36f4b087 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3fb43ded cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4441e154 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4e70450d cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x552b68bf cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57909b47 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e9769d1 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63d77a76 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x69a8a077 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b05b80b cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b146f5c cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b83691e cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7db20ae0 cxgbi_device_portmap_create +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 0x916a5c03 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x97050f70 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9be506db cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9df2e2e2 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f1df416 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0b66229 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb4555c28 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc2cece8f cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc5c4a16b cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcea206df cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd0ec9f1c cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb093ad4 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4beeafe cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe5143e3f cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe54ab379 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe5aa30e5 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xecab0cbb cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xed27220d cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0a7c6fd cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf26c3747 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfd44516e cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0157abb2 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x38ce98bf scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4a8c85ec 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 0x6780781d scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x6ce280ff scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8a49d142 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa90a4e43 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x14600eb3 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x14d292bb fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x20c8cf69 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x25c4360d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2fa890fe fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3982c1b4 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x569560e2 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x86b6e5be fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8ad5c48a fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x95cad7ea fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xad5d97f8 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb1c9dd71 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbb0c72cd fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdc86ec5a fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd5c18ec fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xea33daa8 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0b232e84 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1a67f435 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x6757164c iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa177b926 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdb3b134c iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe0afb533 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0156576c iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x072e3a59 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0ef80608 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x142d0ba9 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2916e670 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b2dbfcf iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3b042427 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3d98e5ca __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3dc29746 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x425bbe5d iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4986f84f iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4bcca4a6 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x503c7eff __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x56c80854 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x581ea971 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61b1f5e4 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68e87f5d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x709e7ebd iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x73b16cd0 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7f7f937a iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x88ff17ce iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a66dba9 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9009ab9d iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9142fef9 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa5adc95a iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xabc92f11 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb13e1f20 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb49398a1 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf090691 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1a2c267 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1e0744e iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4f5c88c iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc839d9fa iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc6c9bac iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc6eebbd iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd1084c87 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd897fa13 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda6cd05d iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb13b7c6 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf0c7b575 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf3127f6f __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf8d7a0b4 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x33fbe51a iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x34a19655 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x53081869 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6af9bc06 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x799fa6fc iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x96c220f0 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9aae0bae iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa3455a87 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa9e92544 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb92e3649 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbb49494c iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc869318d iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcf56edf4 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xebc330d0 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xedc34e3e iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf9fa9fe8 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfb74a7cf iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0e126af7 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0f930cd7 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x227d3e2e sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x230681fc sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x47ba283a sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5361edf8 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5c359191 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7fdcb273 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x83b5483a sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x83c69699 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8859245f sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8aeac565 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa814ccda sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa96733b0 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc5d68dd4 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd508aea0 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd7afcc60 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd8f07c43 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe1dfdf42 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe3792b5c sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe53eb652 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf3c7d3dd sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf5a4728e sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfbe0bea4 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1c556fd1 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x265f3bef iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2ffbf0a3 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x37093735 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x469730ed iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x62e10870 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6efd085e iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x709aaa4f iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x73afdc4a iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x755beb00 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79b9195f iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7ef89e9f iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x890ede7a iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x892f8714 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x907a51a5 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x92e4d050 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x99feb1f3 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9bd4906f iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9df8f20f iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa5f9796f iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa912b88c iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb37f2ca6 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb711c67b iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb83de3be iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xba6f3e07 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc72dac78 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xca83714b iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcfa2984f iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3613541 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7061d51 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdd2a0fe2 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdf06e405 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe0907450 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe466a39b iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe674e701 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf454cc0d iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf6c7b1e8 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf6cd2fa4 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfb183e4b iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfddaf4ff iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x08b3a452 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x429c2a40 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xb6775220 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xed42f88b 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 0xfbf75488 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3892d0c1 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4f9e8c84 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5cd94309 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x88d0d329 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbeb6f120 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf329517a srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x4dad8c2e ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8e68d3ee ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x9b88ed3c ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb37ee7e7 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x05930481 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x10b6e5fe spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5b734d47 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf6c5f484 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf89e13fd spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1331b643 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x198a15e7 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x4d9f06cf dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x70d1bc5b dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x00a046a1 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3043cfac spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x44efd120 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x492c364b spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x54aa4014 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6afcc781 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8fea5663 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9626d292 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x98ea5ba5 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa2f79e82 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa7895438 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb0715234 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbbb74a5f spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc235ed6a spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd5de9513 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe48956bd spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xeb831916 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf9751416 spmi_device_add +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x0d3c5d1d ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x040ce734 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06539717 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0dfa6389 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x13a80386 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x13a90173 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x14da00a8 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x166d8d06 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x19ac09b1 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2c9d474f comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x38b43029 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x457d25ed comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4bda4e38 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x55180bb7 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x57dacb70 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60c1dcfe comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x71dce750 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x73770c2f __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7b687d72 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8364bcf6 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8cc3e028 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x93c55945 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa2bd61aa comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa4fa2861 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xab3b478d comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xae0efd8e comedi_timeout +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 0xbe964207 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc794fcc6 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcad42cf9 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcad56324 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcb585cb4 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcc32711e comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd37264bb comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe4d0f0e5 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf0b21bb4 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfd398278 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x32e30b82 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x446d017e comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x4ed58e4e comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x7cb86f9d comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xcc2f6664 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd7c34d99 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xed2cf295 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfc34639c comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2c0e5b96 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x63512648 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7aa6b911 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7b007fc5 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x9ed93aaf comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xda018309 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xca04c5db addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x7ac56773 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xa08be8b4 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xf5cc0cb4 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0b352c69 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x39de7f7f comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x63ae4f46 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6d2e1944 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x961442a1 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xaf2bdf05 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb384798a comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb6ce4d1d comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbf22f2c9 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd59593eb comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd752e9a8 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe07a2cc5 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe56e71f9 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x433d5468 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x6a9bce79 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xbe914abe subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xc9c904e1 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0abc2da3 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x11b57472 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1ff4b573 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x26809659 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x33c80e89 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7072ace4 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7e50866b mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x93f10a6f mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x99e3930e mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa216cee8 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa7cc4f6c mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xabfd37f5 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc72d0f18 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd32e239d mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe013645f mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe8a2f86d mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf64a3c67 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfbac9ef2 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfbf8e44d mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfc6d9482 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfed91a0f mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x9d941d05 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xe4798a92 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1d3b9d6c ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6ccf4544 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x765b45ca ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x832c3122 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9fb74925 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa609e472 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa611b95f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xba2efd3c ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x733c6de9 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x75590a3d ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x82f27b43 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb8b4527a ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xba949f8b ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfff0102e ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4aa0ed95 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5954d768 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7bbf7421 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb4f7275b comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe6a2540c comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf06ab321 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf591046e comedi_open +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x03110946 fsl_mc_device_add +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x4d80d5d5 fsl_mc_object_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x66eb0cf3 fsl_mc_bus_type +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x6f4429ee fsl_mc_resource_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x7bb8b5fc fsl_mc_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x7e6c321a fsl_mc_portal_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x80414ba4 fsl_mc_portal_reset +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x83fc2b92 fsl_mc_device_remove +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x9074260b __fsl_mc_driver_register +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x924c4ab2 fsl_create_mc_io +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xaab7fd92 fsl_mc_portal_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xaf82ec55 dprc_scan_objects +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xbd1658b7 fsl_mc_object_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xc08c3112 dprc_scan_container +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xc75156c0 fsl_mc_resource_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xe88070a3 fsl_destroy_mc_io +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x72d71368 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d71c401 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d58e845 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x9589ca91 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5f6b1f3 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xfac4a346 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x11eac647 spk_do_catch_up +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 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 0x5387a206 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x56355aa9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6c43717b spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x762b4884 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7ef62978 spk_var_show +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 0xa23ae784 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa7346c7d spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb004207e synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb25dbe7c spk_synth_is_alive_nop +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 0xde563c40 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 0x2a7719b2 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xbe8bef5f __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xecbe4aaf uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x6ac625ef usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xd2148ef2 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x64302f42 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xe62bee79 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x0f6d96bf imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xae42a160 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xd49661db imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x13451f88 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x87d492c2 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x885fdaf6 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb386ddab ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc27b6e68 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xfecec28e ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0cf47bf8 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0d23540f gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x16950620 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x34bd5076 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4d448021 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5048818c gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6f7f8b4b gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x802814b7 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 0x9c758394 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc2825146 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc5f55bf2 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc85725f0 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe0158de5 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf6d65cea gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf900c468 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x2415cbd8 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 0xb09c8175 gserial_connect +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 0x84eef001 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xe9103651 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xf3dafe65 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0196c858 fsg_common_set_cdev +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 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x36c8eabe 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 0x39b8492e fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3edb971f fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x44a86ff2 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x47a9e74d fsg_store_ro +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 0x5debc085 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x67d542f3 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x89a32be6 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x957d7f8b fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x979ff38e fsg_store_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 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 0xca4c21c2 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1253b9c 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 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf1af9da9 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4ef81c7 fsg_show_ro +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 0x021b0330 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x29564b12 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x387ad072 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3af8d964 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4dca4903 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5bba3219 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5ecbde1d rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7c026cfe rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7caacfd3 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x94869a52 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x949cf39a rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb81d8066 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcf8e76d0 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe4b237c1 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xff979533 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d580079 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x31339468 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4fb60c9d usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5df91a8d usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x630557dc usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x660f08b3 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6bfca290 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7ac8d616 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x83e770f4 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9c520354 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9fefbe67 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa8736952 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaeaa6619 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb0f05117 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb1268658 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb404d8ad usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbbdecbb0 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbc3e47c9 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbe00e87b usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd375e0ab usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd7380037 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd837fff4 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe11d28ee usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe2574b19 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe43e6fbb usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeeb5e1be usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf7a4d013 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfda0e641 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x053ecb80 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1185cc6a 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 0x4f2df7e2 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6384f776 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x69818221 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x74ff3dfe usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7609a133 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa1b31032 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd1c0fc8c usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd59eb254 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe17ba70d usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x4f789b6a ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x835430a0 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x04ab2330 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3b114f7f usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x53bfa9a1 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6f0b2dde usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x72e6e519 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x91038c65 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9490afac ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa8dbde5c usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc28226e6 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x1a6552e4 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 0x1e4b442a isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x32232d8d usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x015e8cbd usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x15fdd5bd usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1ba45a50 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1d99a14c usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2b9da11c usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x38fe4884 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x46202aea usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4cfddcc3 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x51f2a48d usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x52114bda usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6b739b7f usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x91822990 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc65b2390 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc694c262 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc6a7cfea usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd1d53f2a usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd47677da usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe25f3339 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf0140748 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf71997d3 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf963dd25 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x017f7ac4 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x062bdfb6 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1298653a usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x129c45d4 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x18238d8d 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 0x3879d5df usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3adf8136 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x411c8ccb usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57a7c06b usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57aa0600 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5ee272f8 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x68452a43 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7004710e usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8e7f670c usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa4d3398d usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbaf8d262 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcdb877e2 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd8a2eae3 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdb2f476e usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe4428586 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe6b795ad usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf38207fb usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf5ff2cec fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xff9f33f1 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x00c9469d usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x31f79659 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x39e9369b usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3bad1099 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4498c85c usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7cd7675a dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9b05eb91 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xaa91d2d4 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbf19ef96 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 0xe438903c usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe76f5877 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf6a700e1 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 0x25f3fcaa wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x58795e6f wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7ac54a55 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x87291579 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe9219d74 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf25a01e7 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf2c07f5c rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x10041afe wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x30d47b6a wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x38e2ffa9 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3a406651 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4619a1eb wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x48b12690 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x624fac6f wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7270ed45 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7fc96818 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbfcf1c0e wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc443a273 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc6e969f4 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdb486c6d wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe21e21bc 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 0x4305f00e i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x9ec9bb86 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xbee38a9d i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2ab3561b __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x35541858 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6412eb1c umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x72388695 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa92eb03b umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd41021cc umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xda009d7e umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xfcf95de7 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x021c9855 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x06ae1b59 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a92c8de uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d1a6ac8 uwb_rc_cmd +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 0x1022330d uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x11e555b4 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x198a660b uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x21724610 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x230050e8 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x26c44e9b uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2db1a982 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x35e5e099 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3b27d7cb uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46448c22 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x479c4a0b uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4ca33a0e uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x51033d2b uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x57709ce1 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x583a4ec3 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x62e414f0 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6552c182 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6a0c8c07 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8ebb73ab uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x94d2cdad uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9635596d uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9753b449 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9a6dda8f uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa3266663 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa9f3dc73 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5fa4126 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb6ded3da uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc9a057f1 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcc92f4bb uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd3ffbdc3 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdb6632f6 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdf61a12d uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe4d55d66 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xee61e9b9 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/platform/reset/vfio-platform-calxedaxgmac 0xe4e8fac1 vfio_platform_calxedaxgmac_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0x4387fedc vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0x95287328 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4327817a vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x555b20f9 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 0x9ff2bf3b vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa3fa17e0 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc0ec81ba 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 0xf22eef21 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xa975d344 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xac58bd91 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0172f1c5 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x06048cb0 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e52f6f9 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x250db5d4 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2ba4ba36 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2c23a039 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2c342f4e vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2edbe800 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x329ae870 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3dda0136 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x44fc4fd2 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4b64445b vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4d5e1a68 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x530d5359 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x59781416 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x722e2087 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x86151bdd vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8ac23c40 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8fb23283 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9cec7b66 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaec7b8aa vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb02bc972 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb205e7b5 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb207986d vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbdec1f6b vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc4a24afc vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdba9fcbe vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xde7b3e83 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdfc6deb4 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf7cde077 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x37c32f3b ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4eaaf4f2 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5227fabe ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5a4cca36 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x67e72238 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7296c06b ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9fc1bec5 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x068fe8f3 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0902bf93 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2773384a auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3293e4df auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x67aedeba auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbc144546 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd3f7004c auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd41958ea auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd80ccf77 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xda8c8956 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xdc83a642 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x92e2fbcb fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x97bf180f fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xad917888 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xe9f18bb7 sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3b89cbb3 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5181778e w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9a00de32 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc7e3ea01 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd9e6f5e1 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe15641bd w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe4183be6 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xea5df252 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xffc59d3e w1_write_8 +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xeee66b7a xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x91208d3c dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9cb5e340 dlm_posix_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 0xd1c011e7 dlm_posix_get +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 0x0056b018 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3dc286f4 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x41af0f49 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x42ebeb49 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9e82232f nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbdcb6626 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf9aea0aa nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x014144d4 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x015df3e1 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x049e5bce nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05b8c4de nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0603f452 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0773770f nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07dd9e7f nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1072ca37 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x170a6936 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x199a8a73 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c8fc336 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fc883c8 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x216f54e5 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22594a0f nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x236181af nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25b03eac nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26b56238 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27816fc7 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x299a820c nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2aa768dd nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2de1e8e6 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e6ede00 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2fb50aae nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2fc5e9db nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x318724ff nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x391903e9 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39bb208a nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a694505 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b0781ec unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b4d0f4b put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b532922 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bcedf36 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c25298a nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cb68853 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e90738d nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40a1c59b nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40c02c47 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40d6285e get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x431c8bda nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44adb66d nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45041efe nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49a769e0 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c855fb8 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e33e642 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f7e8285 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50c9c609 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x523fa5e3 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52f7463c nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5467672c nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54d62c1a nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57df3900 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bde715e nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x622a81e5 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x638dabfe nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d33d410 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7252a3a2 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75e47a58 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x782459fd nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78e8f68a nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79179bd7 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bc2108e nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bea20c5 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c56e4f8 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e5c3f92 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8046be1e nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84c27ed7 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8749f6f5 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f29bf30 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x970fa773 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98aa3849 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99090228 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a3f8cba nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c2f64ff nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d266196 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7883884 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8b8d965 nfs_show_options +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 0xabab3f5c nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabafc2cf nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1d23d6f nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb74b56fe nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb76d24a4 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb81f40ae nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb84595e7 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8938825 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb910b37a nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba4734ad nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbadecfc nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc10ba32 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbce7b437 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdab4a25 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc34adf0a nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3746a28 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3e2ed1f nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ea3268 nfs_sb_deactive +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 0xc89cc137 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc967ecfe nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb6dc193 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce0994a3 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce3b8953 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf290084 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf4d439d nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfe4b411 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1899d5d nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5c13ac3 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd74052de nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda229239 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda2dff20 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb934266 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc67f770 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0652ff7 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0f30d0a nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1648ec3 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe28304bd nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3b882be nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8252388 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8b71db4 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebc6674a nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef91d067 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5178201 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf52fb991 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbb7c024 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbefde3c nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc880be9 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfdf4a829 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x1a500795 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x068d36da pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c223349 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0f550c76 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x110d3da1 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x122ec78a nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x14074d53 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1565fcf9 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x17dde941 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x21a9dc72 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2315bc30 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2494fe2d nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x285b9c9c nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x292b76b6 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x29ef54da _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2aa9c4b7 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2caa671e pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31894dd1 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x329c1180 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f381949 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f4feaae pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3fb0ee68 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4336c90a nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x493ac877 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x503c80f3 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x518acf81 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5224179c nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x588c2f47 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x639b1f2a pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67807b5b nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x690fe14a nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e905473 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71613c45 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x719040ce nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x76c48f55 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c637438 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x86e70d07 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x97f8756b pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9b19c9a9 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab5550c1 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xacb8a736 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc2f8127 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe1a57e5 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc719f481 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc7ff6a27 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc83f4e8a nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xca3360d9 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xccaef0dd nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xccfb99c8 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd28c9be2 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd66fe927 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbaf698a pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc7d0827 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde220a0e nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe21b0bcb pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xebb308b7 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf15d870b nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff3dde35 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x8184f7ea locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x9f38303f locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x9ea3936d nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xb3cecd48 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 0x1f9ff516 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x244c4238 o2nm_get_node_by_num +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 0x515e6c87 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7bf9d740 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9dc4d223 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 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb9377365 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 0xbb4ba3f1 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 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1d08b8c4 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x2473abcd dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x86836a07 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8f7ca2d3 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x964b4df3 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 0xf382adf2 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 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8496e962 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 0xe0e32b53 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe572bbd2 ocfs2_stack_glue_unregister +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 0x8a967587 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xb79a1429 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xbc6319a8 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 0xa926a760 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xd969a0f8 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 0x6fd48e08 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xbf88ee2a lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x381628ff garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x51cdf877 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x995007b4 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xc54d28ae garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xdd6c437b garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xec53e136 garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x04df10c0 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x13c8700b mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x7e829b95 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xcab6de0e mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xcfe76d57 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xd67590f9 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x2c52bc87 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xc10c24dc stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x59f0e516 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xe516359a 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 0x5f878edc 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 0x0c614e6b l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x10e17dce l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x65d859fa bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x782607ba l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7a983aba l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa5af0565 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xaebd98ff l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd4e7f45c l2cap_chan_del +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0e070f52 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x236893c3 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4bdd8bcf br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4c951484 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x630dbbd4 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x73f63cb6 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7724dc1a br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xbdedd669 br_deliver +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x45d91195 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xc51bfed6 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x01f2284c dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x121ee63b dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1b2ccda3 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x213ff133 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x255f825e dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x41441577 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4c66baf0 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4def8757 dccp_poll +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 0x604fd37c dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x612f47ba dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x643f7db6 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6445b8ec dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64e8ebe0 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b528796 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ff7779f dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x75fc5b8b dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9bb78959 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9d2dfa96 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa428cf06 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa5145d33 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa675931d dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa6e327eb dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa93e2aaf dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbbd42577 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd90756b dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbf2bf815 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc8a43e3d dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcce37acd dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce44a9d9 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd83e8439 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe1a5fafe compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe71019d1 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf04950af dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf224a1fe dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5847a10 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5cdb3f5 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x01d6faf1 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x51312c34 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc6fc43cf dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe57cd0f9 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe6f30322 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf27d9b55 dccp_v4_connect +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x0d691bc4 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x446e3d84 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d2593e0 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x9166282d ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x0bebdcb1 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x494753cc geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xd47a6a98 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x350e8cdd gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x35a00fe7 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x6e48e8fb gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xaf026bbb gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xf87d9a77 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0ca1cc39 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x14180920 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x62a0049b inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7fdc0776 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe41105f2 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe7648a27 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x02a7fc1e ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x042e907d ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2aa0ac99 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x32482885 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4749c843 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6c84e217 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7074ff17 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7a10342f ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7b073b6c ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7bb2e640 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x95e2a1a0 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa2df4775 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb8299cb0 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe887f1f8 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xce8cc956 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x9d009ae0 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 0x149c3c6b nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x47f1c376 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x82410d76 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x91991a24 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe65d4049 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 0xb48425da 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 0x057a5d9d nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x650c62c3 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x8d625fdd nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xbbbf0688 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc539520d nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x4efee9c4 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3be7481c tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5f93d3c8 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8fc2ce5e tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9fec1e8f tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xce1a73c6 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x29136b4a setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8bdd6139 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb3728616 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0acde4ce ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x16b79c02 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6882e71a ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb85479e3 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf6c64f06 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xc2acea6e udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xc6b60e5f udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x4dea000d 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 0x07a765d3 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x4f207b28 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xb5482dc6 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xeb1329d6 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xef0d6c1a 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 0x2a5b9ff2 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 0x3a949527 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x79d7c65f nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x8c82addc nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x985adff4 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xea24358a nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xd63ee7d2 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x334ff518 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x49b742f6 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x524516b9 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x69544938 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x705a352b __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x81f761c9 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x85fa5045 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x93896abb l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa97ff0af l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc9953fde l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xca2f6955 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcc7ef1d9 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe466602d l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe5430e0e l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xec2f84c0 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf7646b10 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xeb0652b8 l2tp_nl_register_ops +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 0x473801ca ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4b76ff33 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5309259d wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x59c70ee0 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5eeeab70 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x61d880cd ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7e652162 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x80058c88 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x883ccdba ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8dbf5c7b ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9b8faf5f ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbbdea0ad ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcee93953 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd135e560 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5db8e15 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf3f7658f ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0b6b314f ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x12f4e2e8 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2203d6c2 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x71daffc8 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x767f5d7e ip_set_type_unregister +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 0x899dd32e ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9657e89b ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9ab9d291 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 0xa5165320 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbbcc5707 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbe020715 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc2d094dc ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe3622b6f ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe52e0f96 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeb273bc6 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 0xf5423ab6 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x11e814f1 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x38c4ba31 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6c320d49 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe8bdf3ea ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0200a077 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x08955b38 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09dad03f nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11d5082b nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x160cd0c3 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x172b908b nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2421e965 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25b3b03a nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x283b8b21 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x287d6ed3 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e102a9b nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x341ce642 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34ff80c8 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36c55d41 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x375d38b1 __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 0x40137742 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41883003 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47dff1ce nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c686693 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x57ab2616 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x585ef5fa nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x588ad653 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59f6cd9a nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e51cce9 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6026d7d8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x618607f6 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x622e92f5 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6498ac4b nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x674389a8 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d699c9f nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ff46628 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77d72243 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78927c6b nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78a1222b nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x79db5ee1 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b8e3c4a nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82e4a7f4 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x843f4451 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87ca0301 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x884eb30e nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e6f6fad nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ed917fb nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90194219 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ed9b19 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ce68f5f nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f4eefa9 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1c9ae5a nf_ct_seqadj_init +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 0xae20e657 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaff54e65 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb02d19a1 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6c78b66 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6ce2b40 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb98072ec nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbdef81d0 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1481297 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2005daf nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc335f8e2 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc5244125 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc724cb9a nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb288504 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xccc45e8a nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd14f73d nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce15c2d4 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1767073 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd27a44c8 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2e30d63 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdeb0fa5c nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb456f36 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedc57c98 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeebe57b4 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf0363f2d nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1ffce76 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf512a918 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf69c3182 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf843e0ae nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf89653c5 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa719a10 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x799f5367 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x0923dd25 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xd9d787d7 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1de49a55 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x47ea05e5 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x55485cbb nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x626a9ccd set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x757c91e8 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7aada9a9 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7de99b36 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc4267b73 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xeda451df set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf0898dd0 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xf8b0577a nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x72f5b4e5 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x88e73688 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc527b1e2 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf079e7d0 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x25bf34a0 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xfa5b5a67 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3fc0377b ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x485be7f1 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7e2dc5eb ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9020d593 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd14346fe ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd8469e05 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xecff8857 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xd4b7a9ef nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x09ca85ef nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x25d16257 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x33f03287 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x88c979c5 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x96c77c58 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x04dd124c __nf_nat_l4proto_find +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 0x1b283a0f nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x35cec420 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4438e5ac nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4f8a7d78 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x54aceb6b nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x63c62bbf nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9ca64be7 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xca8529b5 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x06fadb2a nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x37018dac 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 0x31978abf 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 0xd072123d synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x10cf2402 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1d8e965e nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2c67dc21 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4ead4a7c nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x52cd66c1 nft_data_init +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 0x729a3a89 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7c12b01e nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x80b5dee1 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8987a256 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x912a138a nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb313a788 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc2e58465 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc8dabb4b nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd5f2d05b nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd70dd4da nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe2a147d1 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xef6c6cba nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x54aca431 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8a640bea nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8e96e0ff nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x98785aad nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa042e0fa nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc7e458a7 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe5c90271 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x2ac3ccfd nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xe3bd244a nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xae4dee38 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x2898dac0 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x58ee1bae nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x7550d367 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x13be6328 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x332825c5 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x722bf531 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc28f7a68 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc2a741b6 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xfa931048 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x76342acd nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x8745ad13 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc8670611 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x16ec00fe nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x2a772a72 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 0x055ad49d xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0a69cde3 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x49294037 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x55a33484 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x58ab18f6 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x63c27ab3 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x694515af xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6d3f836c xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7916d798 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7eef7cca xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x855dd894 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb25cce1c xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb6122d1f xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb809008e xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc1ca68da xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc3a4e31d xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc5589903 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd65e8c19 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdb8f5da4 xt_check_target +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/xt_RATEEST 0xe9ef9dd0 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf156a7fd xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x29539fe3 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x7198bbd4 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xb6831667 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x26f57df5 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x74e24141 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x9e6b3e4e nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x26ae538e ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2d3bbb4a ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x354047a5 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5f3e511b ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7606634e ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7fbeb7b9 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd7a85b0d 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 0x099e3769 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x25e8f900 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 0x34b64738 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x45221f63 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x4a6e7efc rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x4fa9493a rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5be448ac rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x635ab390 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x65604e8e rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x7310595e 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 0x8e0fea30 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x95fd2c78 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x9fe453ee rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xb110d546 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xb3c91a92 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xbba4688e rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xca6ff6a4 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xd1136431 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xd9769f0b rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xdf9d6e77 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xe15c43b8 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xe41c0973 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xfc5df6d6 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xa693047e rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe2355e57 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 0x3f5801b2 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x5f000077 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x611d4b7f 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 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0020fe8d cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0120ca4a _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0269cbb6 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x031c0258 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0523ba0f xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0645bdce svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07a5724c svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b1d818c svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0cbe01a5 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ddabd53 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0eca9f65 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1027fcbe xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14c8bb43 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1538ed0e rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16c10590 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19032002 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ac8a30a rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1afa6b12 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b839525 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c408e3d svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2112834e svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x217dd151 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x232a1eb2 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x244fa4e3 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25859f12 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27c35517 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29193185 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aa47876 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aeb3f5e rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d019934 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2de38b5b xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f10f393 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x302ddb26 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x305d85da rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30b75b2c xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30f8d3c8 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33ed2505 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x341a7d44 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3824bdd3 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3883e39b svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39698753 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a8b7978 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3aac1965 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b03e138 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b9df5f0 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bd4bdaf xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c21ea4f svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d37c40d sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e008938 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x403174dd xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x417aa5de svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41a379df rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41eb6d3e rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x436dd10e xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4517b152 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4654cd9a xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47630f12 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x479e2a7f rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47ca2ef8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d65247 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bfb8068 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c6464cc xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c963412 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c9f1a55 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d298d17 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4eed16b8 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f3dc27d write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50790507 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x515856b2 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x523ba22b xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5248d9bc unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x537fc4e6 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55245844 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x568fbd23 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5af45cbb svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60788592 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60b412e9 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6234a2cb auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62f2a442 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x642ced1c svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64a3987b xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x652ed3b3 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x660bea58 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67e3aa1d rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x687a4d8a put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68db9e57 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a4a9eed rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70a4d2dc rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x715f35e4 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7328892b svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7568193a rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x756ab57e xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75cc07d3 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7699783a rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76a252e3 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77a67737 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78d89e4c rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79816305 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b3e75e0 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b69da7b xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dc9c2ec xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e2e28b2 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f0a0ea4 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81733c39 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8226cda1 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83576bb8 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85e5942e svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85f3468a rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86755af3 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a4e024c rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b2d8f9a xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d880e85 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8de2f1fa xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8eefbf59 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93cbaa55 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x944e9b1a sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x948aa7ad rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x966d17cd xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a3cf16b rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b0601bd sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b078d12 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b2365ee xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c851e72 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d8c9a60 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fa12985 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa009d772 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0bb025b rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa22098f5 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2ea31bf rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7b80ff7 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7f34622 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab2eee91 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaed767eb rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0f333ab xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0f4230a rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb13a0001 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1b68b8a svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb27b56bd svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb27cef9b rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3a3d00a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4252ca5 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb50886e6 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb63a83c3 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6d78a86 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba5090ae rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd062dc9 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe91a836 rpc_clnt_swap_deactivate +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 0xc18d1c55 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1d2283c rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1decedb rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6671a76 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc748aa4d rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc774a4af rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc850b5f4 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc902e29d xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc952aac4 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc96dc923 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0b72a03 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd196f466 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3c0432f xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd465036e gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5309cac xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5a9f423 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd639da2b rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd692fddf cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6ffaa5d svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9246237 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb1b8eed xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf86a559 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1713646 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1b8ab39 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe337a906 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5200766 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8b8006b rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9d83340 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea1bfc90 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea40f5df rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb44f604 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed2f9528 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed696cb1 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed6e55dd rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed9ee3ce rpc_create_xprt +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 0xef997388 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf22788ba rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf35f6086 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3d1b0bf rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf48bf9e8 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6b72afe auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf967ccb2 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfae05a34 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfda81fd9 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfec789ad svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff05fe35 xdr_shift_buf +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0e2d5804 __vsock_core_init +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 0x28f75a46 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x339efd91 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4d8626d7 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x593015d3 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x68895c51 vsock_remove_connected +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 0x8044fb64 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x87bee0f7 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9b7daa0b vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb55df100 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc689f73f __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdd5ea599 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf93c370c vsock_insert_connected +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0f71522f wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x115d8833 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1bea1474 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1f29c487 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x22bcc92c wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3811845d wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3d314140 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x627694b9 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb7162497 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc3569177 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xced7dc16 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd28cab3d wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdd04989d wimax_msg +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x05bb29e9 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0798719b cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3e7a67a3 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6e44460f cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9228d6e4 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb97d7dc3 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc6aade7a cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd413d93e cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd5dd61ee cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd69365ee cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe44a9c53 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xef4430e9 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf23b3b5e 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 0x0adc759a ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1c56b1e0 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x29753f92 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7670953d ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x3f76cfc8 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x5074fad2 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x2006195a snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x74bc2b35 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x8981e71a snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x8e1be542 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xbcbead7d snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xc010539b snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xe1b7592e snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x785fc568 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x7d154908 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xb38ee729 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 0x2c4f279b snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x2eced59b snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x3b6a1e4d snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x58e61995 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x801fdaca snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa4ea4fc2 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa6811a62 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe4b991dc snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf40e685a _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x181250c5 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x19865738 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x59a57810 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6125b85b snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x755ba184 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x82df58c8 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa2042427 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xaf5e80bc snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xcb222ec5 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd5799942 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe0a0855b snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x03a724e2 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08a347cd snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1cb1091d snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x20e4e9dc snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x24212f7e snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x248fd964 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x25f93c25 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x292d617c snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x295c70f3 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2d4f1dda snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x35331ac2 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x359ed206 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x38813497 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x38d68995 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3be73d76 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x41d2db5d snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x47d13373 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49797d9c snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x50270b4d snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x51d8ad5c snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5304e234 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53a345c4 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x54786b71 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x57427c3f snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5a6b0d1f snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x63c531dd snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67b9b3fa snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6fec7451 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7a983deb snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c3b9556 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7d1d6af2 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7d27fd9f snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7d6192f6 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ef08683 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84262831 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84340e40 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8ae0b7c8 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8bd0c45d snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x967734b4 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9accfa98 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9e55c12 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaed94bc5 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaf43b5e8 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1112379 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8a64fe5 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8fed93d snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb60c5c2 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbd2b3395 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbf0e5afb snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc07ea2e5 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc142fab9 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc789a75b snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc8bf8991 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcaa032ed snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcab2ed98 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcb1e9907 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd6145107 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdf37e5bc snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe688d461 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf23e2dc4 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf401b1f2 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf51f8328 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf8405924 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd609cf2 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0bebdece snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x660e2930 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x88c9dc9c snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xbaa9603f snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe8c5134e snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xfd377a96 snd_ak4113_check_rate_and_errors +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 0x072870d8 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a08d336 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d4422fa snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e509099 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e62b22d snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e63da1e snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f9145cf __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fb6bec1 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13267440 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x135e8809 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14029181 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17231fc8 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1724f73f snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17bd6117 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a24ead6 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1bec3846 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f3b8a4a snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f7c1c5e snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2294a393 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x231d60c4 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x262eaef5 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28624431 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28ac59f4 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29a2b70e snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b7c2da3 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bba31e0 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3036f45f snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x317a1343 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x325f68d0 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36731fae snd_hda_codec_load_dsp_trigger +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 0x3da3fc5f _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f6f6111 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41b99cec snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4620089f azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x472e9ad4 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4be12046 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c93a5be snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f50a5b6 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x503587bd snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5302d939 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x538f5442 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e04c219 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fd60256 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x602cd3ab snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60517291 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60be5faa snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6300a07a snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x646267e5 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67dec1f3 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69abfd41 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69e9440c azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e23d409 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f97abf4 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x723fae58 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a41d981 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c1e3f2c snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f73caf9 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80f355de snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81b13b95 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x825d254b snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x851f5da6 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8657b556 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86e92984 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8776d8cf snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8871036c snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88d4321b __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89374dbf snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8939fb5f snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a5d401e snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8af3f6cc hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e5087bc snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90f6e85c snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x938aa80f snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97d4dc51 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98048f5a snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9acd0496 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c9c3d56 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d7d5086 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ddc9b25 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e7e6632 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9eec605b 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 0xa2f0cd5e snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa41f0b8a snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa54ec616 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6110649 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa70f7361 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac9903a9 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1d61f1c snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb43453e4 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb46b3f0a snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5b395df snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb63f1ac7 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf415c6f snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc003e99e snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2c89c5e snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8287f3f snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce737e32 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3f6dcd0 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4db9823 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd597147f snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6eae4a2 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd87c1b6c snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd903139d snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbcb6077 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe010b27c snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1d65794 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4600a03 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5079024 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5ae5f22 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5d82837 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe65fcbd9 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6a09430 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9aba5d5 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeab47815 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xefb49257 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2937c2f snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf32efc0a azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf45a66af snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4c6c877 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6904025 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7e5acbf snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8fa796a snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa015890 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfde0e312 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe1df28f snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0db900ea snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x258a8556 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3502801c snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x35c0a10f snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x505f9834 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5d4653bc snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6b028b6d snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6cd7c9bf snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6ed6a212 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 0x854f74fc snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x90983bc0 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9128e696 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x929bcfd7 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xacdad88c snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xae13c34b snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb0a44372 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcdb1e462 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcef927d1 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe4190e94 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe4cdbba1 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf79cc4aa snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x3ee50f9e cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xf3dc517e cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x26b13d30 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x355c45ce cs42l51_regmap +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 0x74a97f16 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x8b52ed37 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xdb80cc18 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x23af106c es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x794d0b0a es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x56a34960 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x63591619 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x6642d4d8 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xbe82c71e pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xdfb16684 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-rt5645 0x37fadc15 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x5fa1c996 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0xd158c2b3 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x33300271 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x5d067341 rt5677_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x53826966 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6430cf85 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9c170526 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xe35d4b94 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xef260763 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x9d6f5d41 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xe2ae17bb ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xe362b31e ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x4081d101 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x88aa01cb tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x5df45015 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x2ed3e8b0 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xb2b6acea wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xcd924d14 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xfb78d3de wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x030e3869 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x940dcabc wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x4ca52907 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x644c2196 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/qcom/snd-soc-lpass-cpu 0x70fa0099 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x9bb4277e asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xacae34f7 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xeec20730 asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0xf047fabb asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00d1863a snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03b95955 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07515486 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08f3d32a snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0969c53e soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0aa5e367 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f07a69b snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f2bc801 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f424e8f snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ff89309 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10450573 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1406bce8 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19c07c08 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1db92468 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ed6dd3e snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f717580 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20f9ef52 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x216672bd snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23bee14e snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25cf19cf snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x283f9ec3 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28e6a753 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29b841a7 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c1f493a snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ea45929 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32a9a6f1 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3531d258 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36fc44cd snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37ba831b snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ba863cd snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bd9348f snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c07dd4a snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e1f98a2 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3fe303f0 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x436bb496 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x451e5d91 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x479ad205 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47c1d4b6 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48436b53 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b2427f3 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e8e949d snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51175236 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51d5d79f snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54b8f7fa snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x556dc1c7 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5573a6fe snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5758432c devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5812833d snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x589c10c7 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5fe0b78d snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65e28f19 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6966b90a snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6af7ff3e snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bc0ae91 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c75f5c1 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d19bf86 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d7b5174 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6dccb78f snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70794f0f snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71cff0ed snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7280eed2 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75a8ebee snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75c59606 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77b67d58 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77eeaf48 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78c1a15d snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d15b532 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f07e365 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fc57a47 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82e9e98f snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85b2de91 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85ea02bf snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x880e430e snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x890d322d snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b037671 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d1a5821 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8fc1c5b9 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8fe30b4c snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90d6f9f1 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x929a06db snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92c51ba6 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x932893fe snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97b8c018 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9980756e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b99dc90 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9bdc7055 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fcd0301 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4838b88 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5f66b5a snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa74d84e1 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8c10b78 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae34f195 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf357781 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafb9d061 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb07ac1ba snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1f7119d snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb27f0a58 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb38cf054 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3e2934f snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb468c767 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4f31b94 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba1de106 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbad014d snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbea1c755 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbeaf3c99 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf0dc711 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0186adb snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc16fce50 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2e5c715 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc798a8c6 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 0xc9feec4e snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca71f790 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd3a590b snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce2d839e snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xceed63c8 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfad80b6 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfed1321 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd3763921 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5256d43 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd71ed7af snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8f3dfce snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd9f64207 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda27727b snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb1bde77 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc8c0fc6 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddb4ed41 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0624bda snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0a3a8a1 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0fe0e8f snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe22a9883 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe251892a snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3ad64cd snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4cafde5 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5be69fb snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe85f5c65 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee12d3f6 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefa61950 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf34f0f44 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7507b7a snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf78f32a6 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf84ae965 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa8e6df7 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb15b0ba snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfbd15ef9 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfcb24f9a snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff6506af snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x05d7c43a line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0a11c61d line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0aefbeb1 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1544b0e7 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 0x2cc7b162 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x31e5d014 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x37587004 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3feea2a2 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x48b8ae3b line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7759129f 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 0xb38405f6 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc9c2f785 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe2a6a53a line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf9ffe4e5 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfd8942c2 line6_write_data +EXPORT_SYMBOL_GPL vmlinux 0x000ee020 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x0015660f blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x001f6ae1 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x0048e3f2 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x005240fa fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x005a90b2 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x005e55f8 __clk_mux_determine_rate +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 0x00b2520e seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x00b6238f unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x00c3f899 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f4842b ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x00f85cb5 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012f2ba3 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0142d32b balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x0150fd68 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0153ce0d regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x017d2743 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x018d3a85 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x0191f8ae inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x01a62c61 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x01b67a20 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x020e6034 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x020fa40e ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x0225269f powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x022ccfc7 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x024b5077 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x02687f82 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x0277c938 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x02bdd168 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x02f72a8f hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x02f9c5ee phy_get +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03087338 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x031f5625 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03275457 irq_set_affinity_hint +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 0x0363aadc trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x0365c366 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x03849a6d xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0387bebb anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x0388d2d7 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x03895973 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03ce6dbf regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x03cfdb5c srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x03e02887 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e3c9a8 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0425cd1b balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x042dc801 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x0462ced6 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04719597 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x04763392 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x047cd826 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x04869bc9 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x048a1cc9 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04922b41 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x05343abc blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x053b09fe acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x054cc119 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05573fd7 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058c9500 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x059cf997 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x05d17ee0 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x05e71ba2 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x05f4486b unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x05fa3fcc usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x0602c18e device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x06077ee9 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x0615af06 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0635496f amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x064f4317 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x066d0218 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x0684cb81 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x06a15e1f default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x06c2f064 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x06cc2c72 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06e9051a md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x072f02de fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x073330c3 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x073a1314 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x07502b88 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x076ed699 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x07738f98 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x078f0424 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07e625ca pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x07ec1403 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x080ac3a0 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0831b858 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x0858e871 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x087894ca nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0891baa1 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x08adab5e crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x08b6aeb0 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08cd93ab devm_regulator_register_supply_alias +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 0x094ea837 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x098f7bff crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x099b9f31 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x09ab2d22 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x09f5d81b cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x0a0bd1a1 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x0a21991e ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0a6b5395 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x0a763cf1 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0abff29d gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x0ac96a39 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x0acb704d __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x0ae6907f crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b132612 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb754 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x0b1bdfc6 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0x0b359f37 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0b3c2d4d platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x0b3d3a07 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x0b6dd43e virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x0b71f6f3 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x0b74ca8d sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0be13fff smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0bf216a6 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bfb5fff crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0c05536c usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0c0c9143 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x0c15a020 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c33f653 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x0c404d0a stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x0c4d6fad mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x0c51a1cb pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x0c6e5691 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c86f16e ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0d1b240f fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x0d36a68f fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d848723 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0d969ef9 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x0da95cf4 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x0dbdb57b scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e0b7f7c ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x0e1205c4 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x0e15d0a5 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0e2ccb97 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x0e382f89 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x0e493231 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x0e5672c7 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0e5680ac extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x0e6417a6 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x0e65cbf3 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x0e6bf7f6 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x0e6c2db1 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0e78c22c security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0eb2dec5 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0edcc48c acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x0ef8f27d register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x0f182014 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x0f1b46f2 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x0f31b20b regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0f31e4d8 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0f32fbba class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f3f1139 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0f4a31e0 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x0f562536 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x0f60a32d __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x0f6453b0 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f9baf27 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0fb931a8 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x0fbf3b71 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x0fc0308d kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x0fc16138 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x0fc56ad0 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x0fe12f65 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0ffad961 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10159f82 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1016447c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x101967d7 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x1058fb30 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x105e3f98 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x10e0620b dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x11052d4d acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x1109b800 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x110afda5 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x113d7b56 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x11435235 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x119b931f cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x11a27355 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x11a6e873 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x11aedfb0 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x11b1d57b xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x11b3d381 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x11bcf580 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x11c89ecc pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x11d2f95a mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x1213048d __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1220dbfc regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x1232eaf9 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x1235b086 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x123c4f24 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x1243c59f gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x124bdc01 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1259f26c fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x128c623c pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x12a4e560 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x12b2a888 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12c66800 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x12cb0d41 napi_by_id +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 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x138088a4 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x1383ec80 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138f0d88 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x14026537 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x14071822 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x141b99f9 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x141dbbcf page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x1441b21f gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x14e22f19 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x151d2060 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x152f4132 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x1544e8ff irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1553550f ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x15580265 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15914823 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x15919c31 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x15959c3b sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x15b660cc debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x15bf4fd7 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x15d44a12 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x15dc5b77 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x15ea7482 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f534f7 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x15fd0aee wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16058a18 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x161bd3de swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x163bdf37 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x163c6630 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x164cdfda ping_err +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x167e19cb pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x169339e0 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x169930fa regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x16a53c18 pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x16a90178 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x16e3d2ef pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x16ee4f17 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x16f56c5c of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x1714faac __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x176a4aba fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x17760781 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x177b1090 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1792bd46 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x17a29a52 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x17a32b94 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x17bc5180 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x17ef79c4 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x17f81805 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x17fbc412 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x180582c9 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x1809afd2 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x182e9ef5 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x184c1d1a power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1863a980 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187f5ea8 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18809aac posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x18a68aac evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x18b1411b dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x18c22255 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x18f3cfeb __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x191a814b trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x193aa125 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19670108 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x1989cb90 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x199974d9 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b9d048 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x19d9ef0e dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x19da3fbd thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x1a0c2630 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x1a12290d devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x1a1dd43d spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x1a1efec3 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x1a36565d usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x1a55ea4e pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x1a791564 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a9e4a52 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x1a9ec458 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x1aaa4d64 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x1ac5e907 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1aeab9fb mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x1af6e7cb scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x1b0a3de2 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x1b0ff2e4 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x1b2d4a1c shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x1b3f8a59 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x1b4dcbab modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x1b7fb839 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x1b8316d1 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b8db7fd __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x1b940bfa debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x1ba6eb33 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1bae5bb4 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x1bb15338 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x1bb2466b sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x1bbcfc54 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1c0756ca fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x1c17e29c inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x1c24c74c lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x1c397379 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5f01c8 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c603b7f pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x1c61aa29 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x1c6bbfb7 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x1c7631fb regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c830f9c ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdb9af7 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x1cf713f1 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x1d0dbea9 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x1d2aef25 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x1d5383ae tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6dddb1 reservation_object_test_signaled_rcu +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 0x1da4133b usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x1dbaf158 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x1dc17b78 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x1dd534b1 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1dd9c9fa regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1df5cb99 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e165b97 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x1e267fff regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x1e4ac060 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e68ce14 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1e6abe56 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7cef5c serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x1e83fee6 HYPERVISOR_physdev_op +EXPORT_SYMBOL_GPL vmlinux 0x1e872da4 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x1ea418fa dma_buf_kunmap_atomic +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 0x1ee49c74 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x1eea993e usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x1f025832 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x1f0be691 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x1f110908 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x1f34029d devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1f52e54d skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x1f6aabe2 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f91d8d1 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x1fa5318b dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x1fb30f69 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x1fc13dc9 input_class +EXPORT_SYMBOL_GPL vmlinux 0x1fca3a84 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x1fcae41d cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x1fcef4ca ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x1fe69d3a irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x1fe7519f tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1fef2190 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x20179971 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x204e3444 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x20591b06 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x205ab0ce amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x205bd49c virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x2075ccbc verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x20811a87 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x209cae0b inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20dcb718 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20f87357 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x20fb60f6 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x2108ac88 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x211ca02e alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x211cb24a __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x211e7c76 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x2125e2d2 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x2145465c crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x21474a66 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x215c7416 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x216e9288 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x2170dfd2 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x2194fd50 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x219892bd dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x221eb471 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x225c2451 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x227b241c da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2296ed75 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x22a337ad of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x22bd400f securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x22dd1506 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x22df9e41 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2306db6b wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x23232436 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x233c840d kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23703e36 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23b39726 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x23b797db btree_last +EXPORT_SYMBOL_GPL vmlinux 0x23dd2ec9 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x23dda2fe devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x23f43579 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2403164c blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x24043fb9 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x241cad3b virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x2429f2b7 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x24473acf kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x245394b6 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2459a129 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x245d28cf usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x246aa403 acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x246ae13e of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2495881c mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x24a3de09 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24d16a74 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f40dee crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x254f1252 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2560a4df ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x256467c3 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x25649db6 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x25c18a55 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x25c3afb9 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x25e64c4d inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x25f3a9e2 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x25f8d87e usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2621fd66 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26560111 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x2657bbcc blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x26580ed8 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2697de24 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x26983ec0 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bf66ad netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x26c0746a usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x26c2667d ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x27012ba7 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x27247c1e of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2747b059 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2792d32d acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x27931e5f dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x27936004 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x27accd41 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x27b7cd0e virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27f360ea split_page +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 0x2837b4a0 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x286e5753 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x287186df acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x2879a26e wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x28a0b1d8 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x28aa0c14 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x28fdc34c key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x293ca095 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x2962b35c phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x298722bf debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x29ab45af sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x29b61c50 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x29c16f60 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x29e0c29e ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x29e7b340 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x2a0d3430 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x2a1b3eeb gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x2a2b4d0f desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x2a32900b regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2a462050 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x2a5077bb ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x2a50b104 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a8a48b1 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x2aee68ec debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x2af1c241 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2af55f7c fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b151418 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2b1c6b97 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x2b837f60 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x2b91844a key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bbb529a percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2bbcefc3 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x2bcadf86 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x2bd04647 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x2bebea59 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c049156 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2c07bb8d inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2842de devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c4a740c da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x2c561650 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2c6cb604 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c91570d dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cb6c23f irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2ce278b0 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d1ad426 ip6_datagram_connect_v6_only +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 0x2d8133b6 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x2dcee966 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x2de9b96b adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2e0ddca0 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x2e0f6804 dev_pm_opp_get_opp_count +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 0x2e43ed10 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x2e66c68a wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x2e66c8b7 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x2e691684 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e9d88c8 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2ea3c8a2 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x2ea7bbfd nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x2ea969cb acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec01b62 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ecdceef power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2ee0fddd fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x2eeaf3f3 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2eefd51c pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x2ef37149 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x2f088d9a crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1d30e5 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x2f2f741a gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f7ede5b class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2f9de092 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff3a015 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x2ff4d601 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x2ff7a7b4 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x3011abd2 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x30246f5d usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x302f519e devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x3035a2a2 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x304b340e usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x3066f543 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x30757fe3 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x30adcd01 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x30c7805b edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30ef7ba1 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3110c7f8 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31313f9b regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x31435e78 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x31525c79 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x315c6535 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x317a20a0 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x317bfe08 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x3191eaf5 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x31a8f3cf inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x31b061b1 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31e5dcec ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x31edb32d iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x31f5b8c2 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x31fbd2d2 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x320936d1 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x320ae642 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x320daa25 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x32165e80 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x3233f3ed xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x323df93f clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x3253cfa6 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x325837b6 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3262632a class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3277cbe9 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x328c7930 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x32a669fd md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bd905c ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d6fc59 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x32e029d0 irq_domain_associate +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 0x336b320a vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x3384732b kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x338b7c26 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x339ad9ba alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x33a7276d yield_to +EXPORT_SYMBOL_GPL vmlinux 0x33b5fb47 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x33f79683 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x33fb454a of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x342f2062 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x3442c242 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x345ef2f0 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x345f4646 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x3474a3ba init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348fcd50 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x349faa86 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x34a6b3ca device_create +EXPORT_SYMBOL_GPL vmlinux 0x34e7b8d6 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x34e7e06c rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x34f79a79 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x34fe3970 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x3508eb0d xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x3514826e of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x351d76c2 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x3548df90 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x354933cf sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x356b82a6 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x357ced79 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35b1a4b0 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x35bde0a6 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35ec2d71 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f74785 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3608e48a pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3628210c dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x364e70a0 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x366f76d3 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x368acffd power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x36974279 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x369797ad regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a78148 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x36afa122 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x36b826d9 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36d1a8c3 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x370a00b0 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x3734839a sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x375dbef7 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x37654fe8 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x3774ecfe devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x377d1256 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x378716cb inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x37892742 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x379a96d5 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x379b8486 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x379c1b7a ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x37f0cc90 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x38111f50 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x381948c7 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x382e7f97 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x3839a706 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x384ea093 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3864b8d6 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x38739c26 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x387930c6 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x387daf14 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x388395cf dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x388a5ef6 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3891517f sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x389e7979 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x38ac7e10 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x38bc2bb7 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x38bf2076 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x38d0a082 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38e12a91 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x38e45507 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ed3ddc crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x390f8ba5 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x392d8dfb adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x393b94c0 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x39725c01 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x3990bad0 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e04d42 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39e9e76e of_css +EXPORT_SYMBOL_GPL vmlinux 0x39fdddd2 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a074433 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2da4b4 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x3a3c0237 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x3a40f7f4 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a645b52 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3a679f3f cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa90c80 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3b2e27e5 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x3b5b3032 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x3b844572 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x3b9addf3 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x3b9ec5d4 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x3ba09a3b rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x3baa36d6 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3baa8bd0 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x3bdf4719 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x3c01e2d8 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x3c26e375 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x3c36058c ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x3c38534e ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x3c6727b5 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cbee79b debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d0032c2 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x3d0e2a80 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x3d245b55 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x3d2e0aa2 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3d3273b1 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3a18a0 user_read +EXPORT_SYMBOL_GPL vmlinux 0x3d46ebcc of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x3d49623a acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d64abc6 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d849db8 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x3d867536 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dcde8cb pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3dde3d03 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x3de5e4ea subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x3de85e87 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df57f7e platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e012d5e device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x3e047c0c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e2330f8 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x3e2771a9 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x3e2fdf40 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x3e3285d7 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x3e3ec559 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e72598f gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x3e7d8090 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x3e856799 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x3ee98c01 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f15f9ab ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3f20e92d amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x3f231e99 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x3f2cc2f4 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3f349f59 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3f52ea80 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x3f62e763 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x3f6fba63 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f924b96 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fc55fd3 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fce6143 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x3fd25100 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x400189a3 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4006353c platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x400d5ff3 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x40236905 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4042024e crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4050076d spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x40575e4e ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x40685dcc __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x406a1e84 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x406ac92a get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x406f65bb pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40dbc442 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x4106bdaa register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x411fa117 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x417ecfe2 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x419035ec crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x41a5ee0f nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x41d56d06 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x41db7cb8 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x41e02fe9 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x41f25751 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x41fd8154 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x42119031 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x4221b67e devres_get +EXPORT_SYMBOL_GPL vmlinux 0x4245135d crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428e1d2d dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x42a1f8af class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x42b19533 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x42dd786b device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x42ef8c3c xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x42f167a9 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x431535cf bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x433d59e1 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x4348b4be pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x437fab1d arizona_clk32k_disable +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 0x43d9ff76 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x43db384c pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x43e6a2f4 component_add +EXPORT_SYMBOL_GPL vmlinux 0x43f0b02d hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x440c1e6f task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x441a8e8c pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4423940f kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x442c1e8a mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x443c81a7 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x4441db21 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4468d76c lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x446e44f8 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x44782234 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x447accf0 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a793ab HYPERVISOR_grant_table_op +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44f94674 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x450cc3d3 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x450f3e88 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4515cd32 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x4565430b devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4576337f atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4590d064 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4593a9b0 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x459de3c0 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x45a42d22 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x45afbbc6 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45e427a7 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x45eb7351 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x46146844 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x461a2e5d clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4643e406 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x464ac588 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x464ac8e4 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x46580617 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x4672b134 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4674f578 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x4682dafb sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468f582f xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x4696d769 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x469c8afd wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x46d633a0 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x46e1d93f bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x4700c4e3 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x47019d86 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x471daf86 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x471e002e usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472567e3 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x474956ba ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4779d7da cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47e5acf0 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x48184173 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x48295e76 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4865e9af sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x488d10ca pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0x488f57ed __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x4895d67c __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x48cc2a44 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x48f4036b crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x490e2e63 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4936eb00 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x49565531 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x496ee8d8 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x4970987b tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x4972a93a device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x4983b6bb usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x49862336 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49e0fd21 __cpu_copy_user_page +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49feb496 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x4a030a47 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x4a2c6540 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x4a35c1d8 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x4a35fe4b rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a4708e8 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a97d60a vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x4a9bb70e kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x4a9f928a cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac007a8 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x4ac15921 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x4ad36953 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x4ad7bf46 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x4b11c211 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x4b2ba444 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x4b2c51ae extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x4b527ab4 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x4b7c4d33 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4b7cb935 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x4b7e9af2 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4b898c6b regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x4ba02514 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x4ba09e83 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x4bee4dfb regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x4bfa3c0e devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x4bffbafd __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4c16273e gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c6161fd __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c64dc63 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x4cb80445 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x4ccb8748 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x4ccfdf15 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x4cd660f8 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x4cf740e0 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d1253a7 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x4d1e4448 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x4d21912c platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4d701069 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x4d801905 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x4d9000ed bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x4dc5d7f6 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de76004 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e113519 elf_hwcap +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e282910 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x4e338d89 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x4e37e398 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x4e3f1b39 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x4e42f164 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x4e51aa56 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x4e5babef anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e60b737 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x4e6104d7 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x4e94c4a6 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4ed28e17 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x4ed56bd7 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x4edc28a7 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f1903f2 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x4f287bbe regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x4f2d6ea5 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f5eb032 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f8ed626 md_run +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fc67afe nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x4fc7b13c skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd58058 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fec4404 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x4ff5508e sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x5005b69e btree_update +EXPORT_SYMBOL_GPL vmlinux 0x5015a468 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x502c126e ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5044fbef sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x504cc107 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x505f796b irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x50684dbe sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x50694ed5 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x506f83c4 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x50775d52 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50af305a fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x50b13147 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50ecc129 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x50f09193 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51341bea usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x5188bcbc unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x518f7875 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x51c57b39 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x51c6b54c extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x51caa6c1 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x51d7cd0d ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x51e420cb regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522605e7 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x52331a9c spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x524f52b7 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5275211c rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x527976ef dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x52836244 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x529ba6b5 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x529e169a iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x52a16f17 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52e51d07 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x52f65c9d fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x52fbe3ab sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5307ccd3 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x530a892e irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x5338360d nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x534a643a iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x5358751a nl_table +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537f1bc9 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x53920432 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x5393e2fc sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x53a8ca49 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x53bd378e __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x53dd548f scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x540a1103 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x540cafc2 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x540de01b fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5452176b regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546fc965 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5478d001 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x547abf5d kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x5487c80e blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x54896ada device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x548bef0f tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x54947dee xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549b7eda __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x54cc034b tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54f5f3b8 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x54fcc769 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x54ffa102 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x55002be6 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x55034c6e acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x5506072a regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x551b5df5 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x552ade8f of_reserved_mem_device_init +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 0x555ac12e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557df555 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x557ec6aa mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x558a0484 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x55936a95 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x55af6b66 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x55c98e97 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x55d3cd9d stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x55e557aa devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5602c22c pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x5603de3f wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5606adb5 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x560f8685 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x5623fae0 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x5624cfaf raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x564085ad phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x565b75b8 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x565fc8b2 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x56630bb9 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x56871059 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5689ce44 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x56a34a2d usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x56c5cba2 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56de6190 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x56e14e6f crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e85f1b gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57327c0e sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x57478d09 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x575e090d pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x576108de tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x57656280 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x57780dd9 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x577b3b39 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x5782595d pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x5783d9b5 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579c3175 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c68872 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x57d964ea iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x57eb7aeb of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x57f4e884 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x57fe1fd9 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x5807cff5 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x5819d428 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x5844d155 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x58464794 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x585e3f93 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x58832eb7 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x588889de shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x588a9fbd ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x5893d389 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58aed6e8 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x58c802f2 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x58de6465 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x58de7643 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x58df2374 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x58e14f15 HYPERVISOR_event_channel_op +EXPORT_SYMBOL_GPL vmlinux 0x5922d29a fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x59350e9c xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x593d371f kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x594a3a8e arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x5951c88f acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x59779b62 blkg_prfill_stat +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 0x5a1bed7d ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0x5a1e1af9 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a47bfc1 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x5a5999cd pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x5a75e253 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a82613a bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x5a885a3a perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a8f3b47 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x5a9bfa95 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x5a9db983 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x5aa09910 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x5aa4eb05 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x5aceb183 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5aed84e5 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5afa49c5 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x5afbbcb3 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b4da2bf ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5b5926b3 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5b5c826d attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b7608af extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x5b77085f of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x5b9524a9 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5ba8eb5a fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd82a7d usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c09d51f cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x5c139333 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x5c275eb8 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x5c403d92 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5c91b5 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c9c3a26 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x5ca8eca6 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cde1d57 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5cf96d9a ping_close +EXPORT_SYMBOL_GPL vmlinux 0x5d04961a led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5d0ecf2e xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1e0d1c blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d7934bd devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5d8b3e86 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x5d95e1da acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5da844b4 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5db5ee9a fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x5dc7af73 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x5dcb6dd5 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x5dcd7160 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x5dd295de acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x5ddbe9fd stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5e02c92c pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5e02e00e sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x5e115ac0 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x5e39c248 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x5e3e80d2 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e593738 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x5e7c4460 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x5e99eda1 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x5eb24348 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x5ed0ea85 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x5ee5c463 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x5eeb4319 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x5eedf479 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x5efa61c9 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x5efafc3f of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x5eff7f4a ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5f18bfca fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f40e1bd handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x5f560d76 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x5f589706 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x5f738bb6 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x5f756649 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7ad146 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5faa3640 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fe8dbfe usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x5fef27ec exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6024936c efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x60374981 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x60442822 phys_to_mach +EXPORT_SYMBOL_GPL vmlinux 0x6049fa75 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x604e035e rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60690f70 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x607ceccf ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x60834f88 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x608629e2 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60b444b8 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x60ce4fe8 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x610e309d tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6119e843 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x611e6d79 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x612575f6 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x61349bfe ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x6155a424 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x617f974b kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x61afe23d stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61de7854 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x61ec5a64 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6200e6f5 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x621a765d tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x6220aaad perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6234d1c5 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x624010ff usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x62700bf6 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x62c5db13 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x62f39171 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x634b1f53 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x63576aa3 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x636db78c trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x6378bf3a gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x637b58ff public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x63a22e55 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x63bf5f8a __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x63c2e84c ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63cb5081 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x63f3cfbe init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x643bd21c __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x643f283d extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x648dc309 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x64a336ec tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x64a57002 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x64b8da9d pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x64dc8e9e nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x65195803 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x65209d11 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x6523cb87 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x6527ad8f to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x653a5fbb input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x6541a717 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x6542b4d1 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x65487f36 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x65526933 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x655d03b1 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x65732258 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x658529dc perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x658b34f0 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x658b8382 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6593fc94 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0x65990b40 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65bd87dc amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x65c2a249 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d008d9 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x66017fdb ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x660e42fd ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x66156c70 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661907a6 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x665258f5 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x6652dd50 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x6653df93 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x6659f664 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x66640136 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66aa4719 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x66ab55c2 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66c71294 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f4fcb3 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6705c635 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673a832e to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x673bae7a init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x674a1250 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x675b24c2 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x67704a59 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x678e8825 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6796692e devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x67a473de sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x67ccd932 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x6842dec7 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x6852ac11 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x6852febf bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x685bad1c ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x68845edd regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x688c7027 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x6892c2c9 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x6898c5a8 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x68a51aec pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x68afeb85 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x68c20662 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x68d100fc devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x68fc6030 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x69125844 md_stop +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 0x697a75a8 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x6991ddbc usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x69b3267c pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x69b6f943 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x69d26800 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x69decfb1 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x69f4855c device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x6a006004 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x6a0d7e55 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x6a0e50fb fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a322ff0 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6a3eef23 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a4fce7a acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6261cb ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x6a6853c7 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x6a6b0a55 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a8e306f i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6aa0a055 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x6aa72406 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x6abfecc8 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ada85e7 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x6adcc282 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x6af108f9 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b0bb68c regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b0f3157 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x6b120ea7 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x6b1aecd0 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x6b1e5a42 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b351f95 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x6b37bf55 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6b4cda79 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x6b572d64 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b83afae arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x6b899b40 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x6ba71e0d xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6bb2a53a __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x6bceb34b gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa73 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x6bd7bc58 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6bfc58bf ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c31fdaa fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c583e63 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x6c5d1cab usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c804926 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca9e731 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cf4bea3 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3e98f1 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x6d5a458d alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x6d8128e5 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x6db617eb root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6dd03008 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e0cf1b4 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x6e18f668 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x6e2e6810 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6e34a181 usb_enable_intel_xhci_ports +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 0x6e942bd3 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x6e949e4d clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x6ea07f55 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x6ea3b323 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x6eb951b3 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x6ec039f4 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x6ed5791a virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6eed8504 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x6ef63176 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x6f14fa9b platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f15c180 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2a80ea sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x6f34037c ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x6f36f606 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x6f3f8b23 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f545623 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x6f70e0ae inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6f844e6e regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6f8f94bb acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x6fd56b88 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7021d9e5 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x70370f49 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x7038e906 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x7038f487 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x704e9a07 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7060a37a dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x7064da8b btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708fb177 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x70aa44e7 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x70aba51e device_reset +EXPORT_SYMBOL_GPL vmlinux 0x70bb4b0e uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x70be4b12 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x70c8b826 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70ea1d1b serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x70f58ca5 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x70fefd64 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711ade21 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x71501706 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x7155f33d pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71800cc7 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71b64a24 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f1cfb6 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x72609ff4 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x729d1962 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x729f9ec9 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x72b2657e crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x72c48105 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x72c5481e pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x72db4c17 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x73050e51 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7308ef5b crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x731edc24 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x73205b92 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x7330db7c dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7377561e tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x737a34dd rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x739ff28e ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73aa29af dbs_check_cpu +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 0x73e4a4d6 arch_pick_mmap_layout +EXPORT_SYMBOL_GPL vmlinux 0x73ea64da nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7464db29 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x748d221e regulator_set_load +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 0x74c9f53b tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x74f55db1 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x750c03d2 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x751619e3 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x755d165b spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x75732079 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x75836219 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759c8984 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x75b023ff virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x75f2ec36 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x75f32955 of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x75f5f1c3 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x75fb86e1 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x764c15ab ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x765c5263 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768a8be7 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x7693ebf7 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x76a357d8 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76aa4b96 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x76c98623 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x76d068fc dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e23aff usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x77051a62 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774ba86a inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7754f81a shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7776a50f pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x77854c9f pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x77944804 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x77a001e4 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x77a81779 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x77ac3f70 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x77cee845 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x77df597d pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x77e64c1f kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x77e934e7 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x77ea69b8 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x78140870 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x78187085 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x782de55c crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x788b60d8 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x788d9f4c usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x7893cc24 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x78960d70 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78af376e serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x78d05159 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78daaba6 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x78f21591 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x79013aba dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x79207498 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x793a4dbd device_move +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7946e325 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794caf42 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x795290f5 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7983eea6 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7996c547 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x799b254b rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x799b307a of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x79a16807 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x79abb762 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x79cd589e devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x79dcd802 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e89787 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x79fba5ef platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7a261d85 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7a269739 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a519564 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x7a7f9af9 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab46bf2 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b0a4ca9 efivar_entry_get +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 0x7b2d3262 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x7b39873b inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7b67eb48 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x7b6fcf31 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b736b57 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x7b7f6083 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7bb74a37 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x7bd9a3d8 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x7c147be2 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7c25675b blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c43e001 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x7c452c89 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7c4d38a1 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x7c60369c da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x7c8fa36d serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7c9fae62 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x7ca600d5 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x7cadf1cb stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7cb7c1c4 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x7cbadfa3 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7cc11fb5 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x7cc61a74 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd8c6e5 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x7cda00c6 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf437f5 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d7da359 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db53c7b regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7dbe813f acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x7dc05012 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x7dca0518 HYPERVISOR_multicall +EXPORT_SYMBOL_GPL vmlinux 0x7dcaea81 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7dee812b clk_register +EXPORT_SYMBOL_GPL vmlinux 0x7df0c945 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x7e116b4a device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x7e1d4321 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x7e23d887 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x7e2d2ba3 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x7e3637e9 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e48e0cc sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x7e4ec826 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x7e5549a5 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e80703f sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ea2451d ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x7ed06b32 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x7ef05cf4 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f2a2e10 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x7f37253d input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x7f6d033d tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x7f78d01e led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7f7d89b8 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x7f7e7157 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x7f8285e6 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x7f85912a dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x7f941b98 device_add +EXPORT_SYMBOL_GPL vmlinux 0x7f9e88f5 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x7fc8a9f0 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x7fd38778 armpmu_get_max_events +EXPORT_SYMBOL_GPL vmlinux 0x7fe69901 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x8007b084 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x8013730d power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x801a3e84 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8022647e pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x802e4e64 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x804f15b5 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x80640afd sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a58671 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x80a8ca22 get_device +EXPORT_SYMBOL_GPL vmlinux 0x80b033db sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x80b18b57 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x80b1f2c8 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80ccebd4 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x80d12300 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e409bc ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x80f3112f crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8122fc1d wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x812336e5 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x812daf3a virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x8143b386 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x814884ce __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8182d2ee ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x8190e848 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x8192fbd7 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x81bfd9e8 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x81c470b4 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8202f68f dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x820fa8b4 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x821eb13f device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x821f8ad7 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x822420fd fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x82a8af76 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x82c28427 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82d7dd6e __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x82e13990 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x82eb95ff wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x82fcbf4d skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x831d011c __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839ab5c1 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x83b93a7a __class_create +EXPORT_SYMBOL_GPL vmlinux 0x83bbabc0 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x83be9833 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x83eb5fae pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x83ed2df9 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x83ff8e64 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x8400b117 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x84092123 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x840aceb3 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x840b8135 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x840c21fe led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x842c16b6 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x846711a1 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x848d1a54 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x84a566dc irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x84a6aaab nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x84a9015a device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x84a97e1c __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x84d89756 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x84e418f9 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x84f80590 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x850346d1 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x8509cbc0 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x850ef488 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852d4b0a raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x85328a25 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x853541e3 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x85367559 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x853bb57c rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8545b960 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x854f4ccd swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x859ef582 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x85a4774d perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x85c2a681 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cba90e rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x85d049b0 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x85d07699 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x85deaa3e dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x860ae8ee devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x861da5b5 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x864dcdc8 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x865f25c8 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868f698b ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x8698ebe1 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86a82121 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x86ab3ad1 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x86adafd6 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x86bfe00f bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x86e9f471 dev_pm_qos_expose_flags +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 0x870745d8 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x871183f5 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x87220e8a tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x872e80f0 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x873f6348 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8744cb1f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x87a38317 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x87aeb19d PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x87be1bff napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x87cfacab sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8815df88 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x88414507 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x887664e5 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x8884c895 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x8898c982 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x889dca07 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x88a7e88c usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88acde69 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x88b0240c pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88ba234b fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x88e56f7e device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89273c8c tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL_GPL vmlinux 0x893b9b39 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x895da204 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x8968936b bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x89bacf81 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89caaaa6 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a3f6191 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x8a46014f dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a912e47 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x8a991e4d fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad7063a sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x8af52e85 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x8aff0e33 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x8b02d907 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b0af3a7 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b1562d1 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x8b1ce827 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x8b2a116e platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x8b3e742e iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x8b4502c1 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x8b49e06c regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x8b51149a usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x8b61d127 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x8b6480b1 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x8b64dd4e led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b791b2b raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x8ba5afe9 HYPERVISOR_memory_op +EXPORT_SYMBOL_GPL vmlinux 0x8bdc6273 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8be15dc2 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x8beb000d regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8bf15a82 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x8bf8aed8 device_register +EXPORT_SYMBOL_GPL vmlinux 0x8bfd6a2a map_vm_area +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 0x8c0ce559 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x8c102879 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x8c1874f8 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x8c2f93e2 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x8c3ae91d xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x8c50757f ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c659b6c btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8c6fc470 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c80d1bb tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x8cb0bc1e pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8cc18db8 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x8ccb829a crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d32a87c udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x8d3c7598 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x8d7cfc48 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x8d8a5d97 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8db3c945 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x8dbf7aaa privcmd_call +EXPORT_SYMBOL_GPL vmlinux 0x8df0b98d ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x8df74872 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x8e01808d devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x8e08e255 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8e0db83d spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x8e11943a usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e7af4e4 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x8e9e12fd crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x8ea2c04b ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x8ea43775 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x8ea4b23f pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x8eab694e tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x8ebacd45 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x8ec5135d da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f5cfb3f tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f87a618 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x8faac947 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x8fcbf35b platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x8fff6bae crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x90013ff5 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x900bd5ec find_module +EXPORT_SYMBOL_GPL vmlinux 0x9025608e ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x902989c1 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x90432238 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x9052eada irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x90596b64 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90717245 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x907ec734 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9090cd92 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9095c471 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a75866 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x90b763f1 HYPERVISOR_console_io +EXPORT_SYMBOL_GPL vmlinux 0x90c6cf3a of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x90c765fa pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x90c917fe usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x90cff613 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x90d6b09c pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x90f2fa86 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x90f7c33c kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x91032d02 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x9182a974 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x918452c2 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91b1673f pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91fc2617 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x920aacca nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x921588a9 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x921b9bc0 xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0x921fa498 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x9221ddb2 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9265f7a1 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x926f3d00 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x9280bb84 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x928f0f4b irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e8beab of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x92ed4ac6 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x930000d0 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x9304e77a pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x9311761d pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93298209 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x937ac8b8 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x9385e138 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9391aa49 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x939ddb06 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x93b34c7f pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x940558bf of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x940aba30 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x94503923 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a53abf ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x94a64183 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x94d57104 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94e62d2e __set_phys_to_machine_multi +EXPORT_SYMBOL_GPL vmlinux 0x94eb9b8c spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x94ec4f80 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94fdbba9 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x950486f3 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9531f24e md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9551fcb3 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95ab51b8 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x95ae40f9 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x95b3e2f1 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95f8bc8a ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x95fb3aa5 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x961d454f kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9625e652 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x963fa13e ata_pci_sff_prepare_host +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 0x966c0578 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x967c0c74 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x9682feef mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x96a8359e tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x96ace606 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x96aecd6d ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x96bc1bc3 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x96c6247a queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x96c91052 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x96cb4850 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x96e51755 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x9700adcc perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x9743f13e xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9758407f irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x9764a20c vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x976ad092 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x9796911e unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x97bd1ecd dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x97c80248 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x97ce01e0 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e2f8fc get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x97e692b5 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x97f153ef user_describe +EXPORT_SYMBOL_GPL vmlinux 0x97f6db2d sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x97fbe845 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x980141c9 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x9828f123 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x982ec348 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9841d555 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98606dcc kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x9865351a pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x98769ee0 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL_GPL vmlinux 0x989abbcd bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x98a354a3 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x98a9f2a7 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x99196ab8 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x99228dec crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x99245123 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99284aab pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x992e4db6 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x9947e1c3 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x99486c0e ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99646be1 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x99728d02 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x9975bf20 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998d8d21 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x99a6ef81 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bd3ea8 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x99c03802 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1a8123 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9a1a97fe usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad8f1 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x9a3b4dec regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a7be74d relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a915e58 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9a923583 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9adaee92 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9afbc7bb sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x9b0c763c edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9b187143 put_device +EXPORT_SYMBOL_GPL vmlinux 0x9b44cc4b aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x9b4c8cbc set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x9b58f61c pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x9b6aabf4 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9b6b58c9 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x9b953c7d irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x9b9b6422 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba42759 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x9bc2361d class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bcd9303 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x9bd05898 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x9bd58017 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bed65fd shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9c187378 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x9c19b5c8 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c4e967b usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x9c55a6a0 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x9c6088c3 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x9c8b7185 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x9c9800ce rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9ca897f3 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccebd4b blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9cd47013 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x9cd9daae dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cfdd094 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d1f70db ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x9d270266 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d693cf2 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d6c4d38 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x9d8ce82c of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x9d9d833a ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dadc6a5 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x9df6f954 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x9df74792 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9e095635 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x9e11e189 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x9e1c51ea skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e61ddc9 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x9e89fbf5 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9ea98d9a n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x9eadf501 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x9eb1dddb exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x9ed32e82 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef5e14c crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x9ef7dfda btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f20f32f led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x9f42a395 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9f517986 HYPERVISOR_hvm_op +EXPORT_SYMBOL_GPL vmlinux 0x9f5f7cfb posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x9f79a8b4 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x9f87453d rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x9fbd9bcf spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x9fbe00f0 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe1c514 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff1dc0a pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ffc9012 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa01e5b8a crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xa0209c07 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa036e1a0 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xa050f4c4 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xa053f651 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa08c08e3 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xa09149b3 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0fd18c8 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa1217fb7 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xa17043b7 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xa17f6415 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1c2036f fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xa1c4de10 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1fb2751 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xa21322b6 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xa230d298 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xa267d1d6 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +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 0xa2cbc24c ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xa2e2396e posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xa2e8d232 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xa2f59227 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xa3140044 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa358fcb6 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xa3644733 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa37881ce crypto_alg_extsize +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 0xa394425a i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xa399e447 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xa39efaae md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3d628f7 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa404548a usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xa4293546 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa43b4008 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa4527ad3 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa465a2ed fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xa4683f6a regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa474cd14 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0xa4791f37 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xa47f8358 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa481caf2 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xa49ee371 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xa4a77e9c usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xa4ad8563 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xa4b90360 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xa4d01e6d trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xa5e3c018 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa604fd5c __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa610c9cc mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa617a24c regcache_cache_only +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 0xa62fff12 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xa64fe241 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xa65152bd virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xa6af4cd8 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b3a8b5 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa6c809f2 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e467d5 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xa6feb090 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa718132d vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0xa724a11f dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xa7273e0e tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xa72920f7 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa73272aa usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xa734b531 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xa7466c3d anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa76f390c posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xa773a390 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa77e9fa9 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xa79b2ad2 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7a913b7 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xa7b6fad5 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xa7bd4300 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0xa7ca49ee rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xa7cb5b01 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xa7d15c1c list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7ea9f31 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa7ff80c6 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa827e8de driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa845fe31 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xa850dafc idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa857c061 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xa8778978 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa890ccf1 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xa89b1dea usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xa89d5a4d nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xa8a19d4a usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8ba4e6c da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xa8c7fba8 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xa8d61d00 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xa8fc1689 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xa90e50a7 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xa921b2b8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa92965af event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa954188c sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xa9745590 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa97fa9b1 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa988f2ce locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xa99f247d devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9b357ea ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa0a6abd mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xaa1833ff gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xaa37bb1b mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xaa41a148 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xaa696550 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xaa74482c pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xaa77c153 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xaa8b5a77 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2d2657 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab48bf5a ping_getfrag +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 0xab833e8e thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xab8ceced gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0xab969f9f wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xabab79ed usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xabbabdf8 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabced1aa trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xabee4020 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xabf4e9a4 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0xac18ad33 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xac1aeac2 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xac1e9684 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xac250fba vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xac25c735 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xac33b3a2 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xac630255 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xac8f348f find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xac8f785b led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xacb60e45 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf25368 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xacfe8119 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xad13410e virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xad188927 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xad2e8d95 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xad2fba4d watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xad63a924 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xad73ccf4 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xad792ad8 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xad83bce2 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xadb4396a skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xadb9a0b4 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xadc0ab70 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadcb3449 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xadd42d7f gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae04578f devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xae10a35a extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xae3d69c0 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xae662496 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6f71fc xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xae706171 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xae74e710 __ip_route_output_key +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 0xaef27a4b kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xaf025a09 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xaf027cc0 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xaf0f9a80 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xaf3331e7 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf412faf elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaf478510 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xaf4d5c6d ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xaf5236b8 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xaf71367a add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xaf81dd7e raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xafb07262 __pfn_to_mfn +EXPORT_SYMBOL_GPL vmlinux 0xafef3ea5 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xb006bb0a ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0xb00ca10c ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xb0268f6c register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb02e864d xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xb03c7774 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb05d1c08 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xb063f005 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb0a45851 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0ce0b28 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d7ab96 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xb0f03b65 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xb0ffbf2c dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xb108a35a sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xb11b1e1a iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb11e2222 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb13dad5e disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1413c0e pinctrl_remove_gpio_range +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 0xb18ce669 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xb18f7a04 fat_attach +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 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e2b6a1 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xb1ee756a of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xb2181b4d usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2229884 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xb2230c71 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xb239082c ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xb2526be7 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xb253327a gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb254206d pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xb260bfa5 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb2c643d9 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ea1bb7 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2fe75d6 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xb3251ffa inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xb32c5592 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb32e14c7 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb39ca4d9 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xb3a01b5b sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xb3af5ab1 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xb3b86f03 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xb3e5794e usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xb3f3b73e wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xb413b3e8 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xb42237e0 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xb45fd7b5 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xb46af994 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xb4732af5 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb49c7f75 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c5fdd7 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xb4cac147 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xb4cb39ee serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb4d87b51 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51f1f94 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb545035f led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xb5467ecb inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb55aa7cb locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xb56f2251 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb5760a29 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xb5789ebe raw_seq_next +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 0xb5ab086d pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xb5bc93db ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb5be9c1b bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xb5c23990 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb5c3c4a6 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xb5c8b208 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xb5d57d34 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xb5d75265 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0xb5eda645 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6144fec crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb61e16a8 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb626dfdf perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xb6412859 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb665961f ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xb68f342f da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6a195e0 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc37bd iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6dd50cb bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6ec2318 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb7444425 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xb7456464 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xb75c0e89 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xb75f5942 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xb766c160 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xb76896cd sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xb772cf3c subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb791042b uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xb7b2dad1 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb7b691c8 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xb7be1c24 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb7e9a059 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7ff4337 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb81bd4ea mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xb82a13f0 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xb84f5eda sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xb868b5ec skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb87476f3 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xb87fa45d devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xb88bff47 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xb8c0c3a3 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8d84adc gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xb8de83bb cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xb8fabfb4 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9085a32 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xb917b6d7 return_address +EXPORT_SYMBOL_GPL vmlinux 0xb9192f79 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xb958ff90 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xb9683a52 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xb96ba4c9 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c334cf devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e566fb xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xba06e782 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xba0b1812 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xba0bcf9b transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3a2aaf __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xba401ac1 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xba4ee596 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xba52e36d inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xba90040b ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xba9dfcb7 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xbaa85c84 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac438a4 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xbad282ea srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb205d55 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xbb482094 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb7b0d90 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xbb8ca085 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xbba85f40 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xbbc70c35 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xbbc724e8 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xbbd415c4 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbe7810d platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xbbf2746d usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbc0d54d6 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xbc36b420 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc6306fc usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xbc7717e8 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xbc8c02ce regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbc8eccbd of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbc9d0abe usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xbcaa357f __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcbcdd2f hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xbcd8aaf8 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xbcdd1659 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd070b7c page_endio +EXPORT_SYMBOL_GPL vmlinux 0xbd151685 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xbd16d70b pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd42a3a7 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd7844eb kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xbd7eed6f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xbd982a7d __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xbdcce68c usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdda8f58 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xbde9e025 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbdfce1d6 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xbe10481a virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xbe13b8eb ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe3c5152 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xbe5e2480 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe72e41f kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0xbe747cc9 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbea834e5 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xbea9bb55 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xbeade8f8 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbebcff86 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeeb9422 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf04bcc1 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xbf114704 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xbf2aea37 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xbf48157c regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xbf50904c da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xbf6bcc4e ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xbf8355d3 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xbf9f76e1 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xbfa46382 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfb88ce9 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd992e5 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xbfffec06 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xc03e1a4e usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc06eca70 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xc082dc72 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0913367 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc09718a5 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc0a32c50 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xc0a4fd7a user_update +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0bedeb4 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xc0c48024 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d5dfca firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e3c2f2 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xc103f0ec ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xc1041432 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0xc10eb2e1 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xc11b4470 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0xc12e974d led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xc13b1f57 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc1563e9f dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc16b1fe6 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xc16cfdc9 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1964b10 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xc1a649e7 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xc1afaf75 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xc1e6b018 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xc1ea24e0 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc213f344 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xc21ea2bf tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc25f9539 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xc26243a2 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc266e736 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc2803666 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2814c75 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xc2893a6d pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc28f28d6 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xc29650fe ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xc29a4033 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xc2b1daea vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0xc2bab168 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc2bd7249 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xc2d0bc00 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc2d899a0 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xc2ea73f0 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xc3036224 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc31e3ce4 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xc32dd86b ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xc3313158 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc33f4e8d platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc352cb02 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc372e576 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc3826ba9 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3aa54f5 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xc3d54c95 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc3ea4765 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xc3f24239 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc40596d4 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc40fbbc1 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xc4133409 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xc413e913 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xc41ba3a2 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42ea46e __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc4359726 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xc45432ee sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45860a7 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc463ced3 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xc46eabee pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47eacd8 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4ac419e spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc4c42709 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xc4c9fb81 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xc4e9470b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc4ec6f69 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xc4f03192 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc4f0fabe regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xc510d644 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xc5378524 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc53f0a19 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc554afd0 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5ba381a ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xc5bfb35b of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xc5cdc0e8 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xc600e80a gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xc60de4e4 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc60f8aa1 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc629aafd sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc62ff08e sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xc635272d __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc64aae83 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc64e806b kset_create_and_add +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 0xc68bd0d6 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xc696369d acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6ad022b devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xc6b3ad9b crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xc6be833e pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6d76b11 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xc6f660d3 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc71e5eff xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73d4d33 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xc7657f99 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc778bb15 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b1dddd ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xc7c441dd regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7fab748 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xc7fe7a2d da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc805f1fe i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xc81960cd usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xc81c61b5 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc8263b56 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xc832f385 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xc85dad48 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xc86a1ae6 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xc8787184 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8847f42 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xc8a155f8 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xc8a94877 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8baca87 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xc8c40fd0 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc8d8ff71 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8fa38b9 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xc90e8eeb kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc958ed61 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc997e083 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xc9994138 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xc99fbe70 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xc9b0f494 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xc9b1c154 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc9b89f96 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xc9bd5f4e gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc9c9068b bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xc9e6efbb pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f1ad78 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xca04fe28 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xca2b3d04 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xca45a7d4 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xca64bc49 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xca6d8e84 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xca715f1d of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca803f78 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xcaa60a30 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xcaa65def xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcab89f0d mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac8a3d0 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xcacc1bdd ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xcad5a953 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xcae451d3 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xcaee2691 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xcb0c4b3e regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb548408 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xcb67caf5 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xcb6a4e55 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xcb6c8a0d ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xcb836707 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xcbc9f562 device_del +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbeae9b4 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc31de59 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xcc3e2e65 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xcc443f38 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xcc4c171c percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xcc4da60e dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xcc7f425a bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8e389e devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xcc91e522 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xcc9294ab da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xcca5244f crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xccb260aa component_del +EXPORT_SYMBOL_GPL vmlinux 0xccb57b93 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd20718 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xcd0b8d3a mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xcd3e7e8a add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xcd532621 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xcd6da6ae cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd6fde8d kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xcd709a02 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0xcd8eedd9 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xcd90f78f usb_string +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9a8669 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xcdac8ef9 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbcda59 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xcdc5af6e xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcdef98 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xcde499fe __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xce4f7c49 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xce5a893c ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xce5f221e blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7c2b28 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb4abcc acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xcec43fcd vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee79a2d gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xceed8c16 __set_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xcf042585 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xcf260f2a acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xcf376cc2 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xcf49510d device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf7da272 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xcf7f17e2 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xcf86a412 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xcf9419f9 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xcf946bf3 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfaef7c6 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfedb7ee subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xcff0396e skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xd017d70c power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xd026d518 HYPERVISOR_vcpu_op +EXPORT_SYMBOL_GPL vmlinux 0xd02e17e5 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xd0377dee component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd051ed3b xen_dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0xd055457d __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0743b59 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xd092ca02 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xd0936844 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xd0b6c687 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xd0b90104 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d750c3 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xd0f546ec blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xd100d7f4 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xd126640e phy_put +EXPORT_SYMBOL_GPL vmlinux 0xd12e65ce dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd14a0073 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xd15f02a9 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd177d367 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xd179e753 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xd194a90d fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xd1ac2090 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xd1d2d17a each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xd1de6938 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd2015dbb do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd238c03d dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xd2655f1f blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27ed719 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd28d7a01 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xd298739b filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xd2ab202f usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd2b7eae5 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd2d77984 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd314113a wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd32a46fe md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xd32d087a acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd340463d virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xd3558c8d regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd3661f0d regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xd36dc1bc devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xd3815890 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xd398c336 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xd3c188ac pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xd3e81077 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd409270b pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xd4116123 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xd418c027 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd434de07 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xd436a88a device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd43bbfb1 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xd4434b63 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xd4477c6a devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44cb61a ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd4543a3b crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xd457bf96 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd45b9a48 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xd45d3549 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xd463caa0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd46b22fd tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd48762fe dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xd49b8f81 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd4ab9c8e wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xd4af476c of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4ea0c59 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xd4fcf700 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xd54e8164 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd582fa76 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5f069e7 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd5f59a2d blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xd60b5af7 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd611d95c tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xd61cccc7 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xd6223699 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd62c1685 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xd62c480a ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xd62c8798 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd65c9aaa __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xd66e144b bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xd6732b51 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd675237b cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd6af18a2 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xd6c148ef pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70b4f9d of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xd70be51c class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd716e5db device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xd71b7d2c bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xd7281288 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd769fe0a devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xd77a683f da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd792294d klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xd7a62fbe bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7d8d55e skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xd7f9df97 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd802569a device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xd80fbf94 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82591df fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xd838ff3c devres_release +EXPORT_SYMBOL_GPL vmlinux 0xd84f6f88 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xd86bf413 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xd874f7a6 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89db7f1 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xd89ebb79 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd8b22d11 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xd8caf641 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xd8d3cdf5 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd8d82703 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xd8e619f5 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd90a9fa9 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xd90e01cf transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd93938cb max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd95005ea attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xd955b191 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xd9608eb7 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd98b3c4e ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xd99eac16 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xd9a1bb96 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd9b8424c usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xd9c0a961 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda1bba59 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xda208305 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xda24ec3c sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xda2a5645 acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0xda52615b regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xda902b64 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xda93c78b devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdab6840d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xdab947af kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xdad5c4fe bus_remove_file +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 0xdaf88f29 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xdb0f2132 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xdb301eb0 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xdb3694c4 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xdb4bb5a7 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb679813 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xdb816f7e regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb916fd0 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdb9b8b5d devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xdbaed8e7 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xdbb7355c ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xdbbc4be9 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xdbcc9135 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xdbdb92b7 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xdbe3aa07 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc486a54 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xdc57ec02 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc906d33 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xdc967470 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc983200 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xdc9983a6 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca50cc2 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xdccd1bb2 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xdcebf657 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xdd00298b register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xdd0718f0 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xdd0823a3 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xdd0a86f3 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xdd14e65c simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1e0045 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd2ff2d3 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3d89bc crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd7719ee usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xdd7b1410 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xdd8b3805 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xdd8d92cc regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdd909924 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddda9d4e kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xddeab477 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xddf78cd4 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde41c7a5 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xde52606e phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xde583337 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xde8320f8 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xde8571ea shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdec40f4b subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdece48b9 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xded67828 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xdf09bf5e devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf0b7d66 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf122243 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xdf156a8f alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xdf33894b md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xdf3a3e68 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xdf6aff13 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xdf730fff otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0xdf7e67b4 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xdf82dc69 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xdf883e00 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xdf8e4091 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xdf9bb272 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xdfa21be1 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xdfc07849 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xdfcdb03f gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe7948d ref_module +EXPORT_SYMBOL_GPL vmlinux 0xdff71463 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe00221e2 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe027f414 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe062439b wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xe07e4727 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xe0868edd nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b4eeec gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe0d7f943 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xe0df9a06 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xe0e3147c HYPERVISOR_sched_op +EXPORT_SYMBOL_GPL vmlinux 0xe10d385e ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xe1263856 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xe12b194a ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe13a76a2 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xe14061cf lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe148f004 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe14b744f rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xe1557e1c regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe167e67a ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe185ac0d pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xe1ac9d4f blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xe1babb1a __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xe1bed44d regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe1bf77b6 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xe1d5aa4f device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe1dc018f dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xe236b25b phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe243bae8 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xe2535954 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xe25e75ed tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xe265542b find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2a90d15 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe2aa2ee4 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xe2b1a496 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xe2c71402 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xe2cde3ab of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xe2db845b scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xe303a047 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe304f175 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xe30f9a8b usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe31728ce subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xe320bfaf phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xe35f87e3 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe361afb0 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xe3623eba shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xe36de895 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xe37b8f66 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3a9bd9b dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xe3b95354 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe3cab6ef crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xe3cbf2a2 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3cbfd7e sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe3d40cda blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4206bdc dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43323e3 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xe44cd836 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xe4502881 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xe45401b7 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe467ce1b xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe48b7907 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe49170f3 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4af1a1e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xe4cb105e driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe4d3ad85 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe4d88fa8 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe4dbd7ae sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xe4e374cb ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe4f1631e sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe50974cd xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xe5112c9f regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xe51914df blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xe522ea87 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xe535abef __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xe53d056d klist_next +EXPORT_SYMBOL_GPL vmlinux 0xe545869c leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xe54b6e62 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xe5500e2c ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xe570eca4 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5bd50c6 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe5be0657 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe5bf33a8 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xe5ed8a65 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe5fde307 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xe623b8c7 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xe62c4fd6 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6610c4e blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xe67b2103 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xe6a8b38d regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe6b0fc34 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xe6b3bc24 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xe6ba0c68 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6cf2ba6 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe6dc2e7d bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e66dcd power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xe6e6bb18 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f08143 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe710461a of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe71c9456 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xe7216340 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe721dfd1 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xe728e663 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xe730d2a8 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xe75b8ff7 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76b47e1 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe7803d48 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7845032 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xe7a2eb70 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7e23f87 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xe7ee8126 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe810175b skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xe816901e crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8232fa8 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xe83f453a arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xe84103fb devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8531757 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe877d0e8 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xe8794a20 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xe8879a25 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8a96073 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xe8ae5ed3 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe9104bba __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xe9152af0 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xe9179f68 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9762b65 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xe9aa1e06 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xe9be2b95 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d82cb1 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe9ea4f71 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea15d335 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea506013 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea6c4e95 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xea6fce8e component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xea790a01 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xea7eddef acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xeaa1f778 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xeab79827 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xeac3172e mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xeadd0d3a __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xeb2132c6 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb77ae95 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb94651b devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xeba5f467 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xebad326e tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xebb2183b acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xebc178d2 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebfe92ea md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec29e6a6 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec348ac9 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec4ee56e tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xec56ac1c wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xec5d19c4 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xecaa5895 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0xecaf7950 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xecef845a irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xed116f8f gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xed12bc90 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xed14b206 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xed25a19e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xed327f99 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0xeda14655 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedc00f8a of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xedc775af cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xedd26dec cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xedd97d32 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xeddff0d2 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xee0053c8 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xee07f51a ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xee08b3e3 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xee12bbff elv_register +EXPORT_SYMBOL_GPL vmlinux 0xee2e1642 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee89f55b inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xee8b6d52 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xeeb16a50 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xeededa1e mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xef08b782 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xef0bda3d usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xef0d45c2 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xef1f5abc xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xef302581 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xef49540f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xef527254 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xef637462 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef929c35 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefabe078 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xefd1a78d need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf01cf17f dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xf0261a57 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xf02c8b74 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf03c6d6e crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xf04e355f acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0xf058d76f cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xf0632704 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xf066db02 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0713781 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf093848f inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf09d2f7e pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xf0b22175 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xf0bd417e param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xf0c71495 xen_dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0fab504 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xf0fc3b58 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xf113163b mmput +EXPORT_SYMBOL_GPL vmlinux 0xf1180dde devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xf11f6ae2 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xf12f0ef7 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xf15e4a5a gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf193101d usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1ce5e6c pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf1f025cf gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf23c293d devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf25de35e ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf284fb61 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xf28ee4f8 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2913ad2 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xf29a30ab crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xf2bad678 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xf2c02a18 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xf2d237e2 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xf2ddd97f register_ftrace_function +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 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf327d881 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf334438b usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf33d2794 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf35af8db pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3955fc6 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3c3bc0f ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xf3c919b0 gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0xf3c9fc67 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xf3ca5494 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf3d16a69 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0xf3e18274 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf3e1e2f2 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3fde2a1 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xf41df038 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xf44d0f6f usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf45ef7b3 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4baf434 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xf4bfd58e crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xf4d75d48 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xf4dc8964 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xf4fad3a5 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf50026d5 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xf504f615 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xf52258ce crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf5238c66 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf588df05 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf59421a2 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a4f22e devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b9a9f2 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0xf5d0de84 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf5d17e68 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xf612130f device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xf632d8ec scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xf6b4d070 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6d53984 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xf6d5625e blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f67a6e posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf71042a9 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xf7143313 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf717e301 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf7253c70 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xf7389efd watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xf740764e zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf7434eea i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xf7445409 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf77a469d devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xf78c4e63 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xf7957430 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7d22bce gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xf7e477a0 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xf7ea149f xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf7edc94d shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xf80161c9 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf82c3abe crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf874f79e ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf886e70d regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf89cbf73 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf8c4449c __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xf8d6de0e tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9065eb1 extcon_get_edev_by_phandle +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 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf967422b HYPERVISOR_xen_version +EXPORT_SYMBOL_GPL vmlinux 0xf96c6c51 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xf96db870 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97dc990 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xf98b3f5c inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b1359b xenbus_dev_groups +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 0xf9f369fa ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xfa1be048 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa1ff2e2 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfa2382e4 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfa481c6c pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9c9b36 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xfabf22cf spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xfac3e853 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfae3ed3b crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xfaf71db4 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xfaf87fe1 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xfaf9cb4e cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb021cee pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xfb09146d pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0xfb250053 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb36edd2 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xfb43ea90 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xfb458982 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xfb66e537 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7fe122 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xfba77b7f bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xfbb0f7c3 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbd63fc2 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xfc01c248 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1fb1a2 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc493945 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xfc4ba8e4 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xfc5e7f7c user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfc8e8695 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xfca0e7a6 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfcbdcc8d ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcde4374 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xfd0e7e40 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfd1d13a8 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd8bda80 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xfdb35423 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xfdc5bf43 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xfdce7b63 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xfde01a42 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xfde54dd2 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xfdeb2d4b pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xfdfb1808 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xfdffcf99 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xfe016af7 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xfe1720a1 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xfe213545 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe4ca7d4 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xfe5239cb ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xfe6cc6f5 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfe6e2064 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xfe6ecb89 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfec271ea irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xfec37f06 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfecad1d1 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xfecd6c58 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed12790 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xfee14608 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xfef57b27 xenbus_dev_is_online +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 0xff297886 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xff2da34c iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xff4303fa __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff9a9875 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff9b5313 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xffdce16b sysfs_remove_file_from_group --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/arm64/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/arm64/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/armhf/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/armhf/generic @@ -0,0 +1,18434 @@ +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 0x0dd5cf04 crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x89ee324c 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 0xf552ed5e suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x102ce5c0 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0x44e3a37d 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 0x09a452c0 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x0f9c75eb paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4dfda63c pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x7a6f01b9 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x88732cee pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x99b7ce3f pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xa09641e8 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xa0ee5374 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc380ed2d pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xf0ac4432 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xf3baffef pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xf4195c71 pi_disconnect +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xa475926c 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 0x37c94ca4 ipmi_smi_watcher_register +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 0x4e854954 ipmi_get_smi_info +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 0x6f3b61e7 ipmi_smi_watcher_unregister +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 0xd1794465 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd7adc0b9 ipmi_register_smi +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 0x12391c4c st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x3aaa2451 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x8e7f5680 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x94b05ffa st33zp24_probe +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x41d53225 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x6c5ed518 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xab210dd4 xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x05f7e616 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x68a7bbc3 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x71ea08d8 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7eb345cb dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x9e207c0b dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xebe4dd9d dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/pl330 0x70501c63 pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0x88a10241 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x07bb5913 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1349a240 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x238d31a4 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2921b4cd fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x315ca69e fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x38014ad0 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x38ffc0dd fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x49b5384a fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6922a921 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x76102e35 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7b35d54b fw_iso_buffer_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 0x9292b45a fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94688ee0 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa1b5d657 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa2d011b5 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaad3fd98 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xafef7b95 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc0e28b79 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcc541cd1 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcf8ae887 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdcfb7d31 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe031f2d0 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe74f63ba fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xec0385be fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xef2f92ce fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf6c488cc fw_device_enable_phys_dma +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 0x0090495e drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00b2e9ce drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05587bd0 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x071738ee drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07fa16ca drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x094119cd drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0951b010 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0985c2d3 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x099f059c drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09dbc57e drm_mode_validate_basic +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 0x0b5b9e12 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b9b6933 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c879b73 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cd23253 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d17d427 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0da7a323 drm_modeset_unlock_all +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 0x1059fd30 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10b499c7 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13908381 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1450885d drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x151fb6b8 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15c33672 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15e60eee drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15fd9e69 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16fe5c03 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1759efee drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x179b8009 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19fb8f33 drm_vblank_pre_modeset +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 0x1b508ce6 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b60333f drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c69400a drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ec7457c drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f7f99ad drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fb5753a drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x205a7c07 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20ee9925 of_drm_find_panel +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 0x2328f1a7 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2413c4ee drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24de41b4 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x259a8b16 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x267aa937 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27202316 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2723452d drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28a8fda1 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x296e750d drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a5cdc82 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2afcf8b6 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b8518df drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ca1977a drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d4db328 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d802c88 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2dc6da6b drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f4f6aee of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f5522a0 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f9b8eb5 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fc41390 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3012c74b drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x306e81b8 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30cd5577 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x312adda0 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x333bbc12 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x334a0a7b drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x337252cf drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33ee33aa drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x348888a0 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34986b1c drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34abf3ed drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34afa257 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x388d1e7d drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38eeeae4 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3953823c drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39c6b198 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b227503 drm_bridge_enable +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 0x3d676c53 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x408ede5b drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x417f43e1 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41ae33dc drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43cdd765 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44f2b890 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4649403c drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46fbfb1c drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x472b9a23 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x477cb21a drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47e964f1 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x488ab28e drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48f35016 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ba40b drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4be5d995 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50492a8a drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50af50c2 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50db0f5f drm_open +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 0x53589da4 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53938980 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541cfc drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54bf13d0 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x553ce883 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x571e1657 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5747e886 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x575ad3fb drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59e588c7 drm_handle_vblank +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 0x5a67ea8a drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b4a834b drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bb5dada drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f9a4e78 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fc6c8d3 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x607a11f8 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63242ed0 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63fe5184 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65ce94cb drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66fd5e3b drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67a90c5f drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67b7d61a drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68dd1e57 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a73db3e drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b8f5631 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bcc93ed drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c259d33 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c627a87 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c96fa83 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e3982ae drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6edeaa6e drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fbc649b drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71600fb4 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73db5d4b drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x752f16f4 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75b14d83 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7671b859 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7759dc0a drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79e3f2ff drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a481f18 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a5fe1b6 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ae7cc52 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9fbf85 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cd9a641 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d00dfb9 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d0668af drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f9c1673 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8033281e drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8188d2df drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x836e84e5 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x838d46fd drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x864105db drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8658bccf drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86e1a0fe drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8704bf3e drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x870c0cbc drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88ae09d7 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88c519c6 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8900f321 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ae3a40e drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8af20162 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c7e9c90 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d71f687 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dcc2ebf drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ef7d522 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8efc8120 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9192f39e drm_mode_create_rotation_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 0x938bd472 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x954c35ae drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97401b5d drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99120d52 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99ad94ae drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d68fe2c drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d8a71de drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e37c528 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e994af8 drm_read +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 0xa1d3f4a1 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2716049 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2f9e3f8 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3e1d56a drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4ef11da drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6758b7f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab39ad04 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab51ac84 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae150478 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae3f3f71 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf07eb47 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf6e7699 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0a6253c drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b6f1a8 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0ca81c3 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1c4ca4f __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb33b4f6d drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3db8822 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4999fb6 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb994c459 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba6c20c3 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbacb166c drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbad9e17d drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb14a729 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb846c65 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc4d86e4 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcc10a45 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd8ca094 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe1416f2 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfa0cccc drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfea5292 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0062031 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc05f1311 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc084b7f7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3e35c7c drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5f72641 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc639ac40 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc65bcfa3 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc732518a drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7343005 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7efa4ba drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc991916c drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9a4591b drm_debugfs_create_files +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 0xca8a736f drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcae34fb8 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb179d1d drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc82de8c drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccbd914c drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcde808ef drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce31875a drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0aba2ba drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0bc7906 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13b3bfb drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1bf0ea1 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd29a711a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2ab1749 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd331cc78 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64afb6f drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd67f69d9 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8c54e0b drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8ff9e3e drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd94c146c drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd95db348 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdac18d44 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdad15b36 drm_framebuffer_lookup +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 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0105e61 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe276c28d drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2e3cc60 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3a19f43 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5773852 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe580223e drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5c65741 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6b8aa83 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7ae6a72 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7bf5013 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7fe04e6 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe89c79dc drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8d770d0 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe91f280e drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea6552c2 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeae09edb drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed4f4780 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee27c051 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee3caa96 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeefa8df drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef7b9dca drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf093c57b drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0e061cd drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4de8a3f drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8346fd7 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8369aa2 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8ecd391 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf917ba78 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaadcc57 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb5d8843 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb831229 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb9012cd drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc02b19b drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfce8c0ee drm_framebuffer_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 0xff500a84 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffa903b0 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05306409 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07f6a6c3 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07fa5e5f drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x080ac1ca drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08ab8490 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a3f1bf1 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0ff36199 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1071b37c drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13cba1cc drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15641026 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 0x1893f5a8 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b876294 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24d37f3f drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x281e5834 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a094b13 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3098c2e3 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x315440bd drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x331a7395 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35dde829 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36db10a6 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a59bb28 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b21aa40 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3bb4bb15 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c517591 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3dd58dc9 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fbc24c1 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45b3a899 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48641f9c drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b71b107 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c4eec79 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d432038 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e3448b2 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50a62a01 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51935046 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5575d67d __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x571c059a drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x573c4d21 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e1a5c74 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x638dc8bd drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6528ce15 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69a70ac2 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e8d6dec drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6eb095f5 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71efb350 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x74b24cc4 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x792b80e4 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79fb16da drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a0d008d drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ad2fdb9 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7de46b1f drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x813662f2 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8463f20a drm_fb_helper_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 0x885373d5 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ae9162f drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8bee7ca4 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8dc16bb7 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8de4fad6 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ffa7469 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91e7c46c drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93f58959 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96b74def drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96f720f6 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x991e35cb drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99998b83 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a7b92a3 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 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 0xa8f1ae29 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaab41c7b drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaaf10fc3 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xade8025f drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf8cbb95 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb69aac62 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6f9faf4 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbda8d66 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc2436b0 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc66e00ed drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd95e91f drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce8838d1 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf0d2a85 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd095ee8c drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd28d82f4 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4cc1d1e drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ac3dbe drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6362f64 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd63b8199 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7682bef drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7d71356 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd90d8599 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda189fdb drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0ee14f4 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe208a3f5 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2c72ce0 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2fa7e1a drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4376810 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4cfb886 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe72adb86 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe845139f drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe89c720b drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb826f01 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec1e5ae4 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedfb16b6 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0220788 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf100255a drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7d69011 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8b72bd3 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8cc915c __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfaf3c684 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb7be193 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc352397 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe29ce01 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0191437a ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0de66771 ttm_bo_move_accel_cleanup +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 0x269e33d0 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29138131 ttm_mem_io_lock +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 0x3eb10205 ttm_eu_backoff_reservation +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 0x5001db6d ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x54676d78 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5e335101 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x681b69f0 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c0ec969 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ff1004e ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a543005 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7ab06ae7 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7c6b7166 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8224471d ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x82b8b1ce ttm_bo_lock_delayed_workqueue +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 0x885106ca ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92a24075 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92b47ad6 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x98924872 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ce61205 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d85cc96 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9dae5b67 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9eafa88d ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa074b1b9 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0ba90b2 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa175de87 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2ea6c04 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa2b7e83 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaba84d9c ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xadf3eaf9 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaea16a3e ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6bf70ca ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb6da892 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc0526367 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc413c69f ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc652d956 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc85dd74c ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc968d68f ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xceba0391 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf36ac5c ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd24e3cac ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd6b25537 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdcef5118 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd2968a5 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdf044eee ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdfdd202b ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3198ee1 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6e7a137 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed461cd7 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed96aa89 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefc4df0d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf29cc2a7 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf3ddd39a ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf8ecf722 ttm_bo_del_sub_from_lru +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 0x031b13f1 host1x_job_put +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x0cf27e38 host1x_syncpt_read_max +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x1733f94e host1x_job_pin +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x1e090eaf host1x_syncpt_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x20d43517 host1x_syncpt_get_base +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x259441f8 host1x_device_init +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x39f47417 host1x_syncpt_wait +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x3b0e9925 host1x_syncpt_incr +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x40157802 host1x_syncpt_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x43799a4e tegra_mipi_calibrate +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x4d344096 host1x_job_alloc +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x4da89313 host1x_syncpt_read +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x517d2a5c host1x_driver_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x5dc07105 host1x_syncpt_read_min +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x7ed0b768 host1x_channel_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x810082fb host1x_client_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x82157d3a host1x_channel_put +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x91537680 host1x_driver_register_full +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x9451a33e tegra_mipi_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa158b6e7 host1x_syncpt_base_id +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa22af118 host1x_channel_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa647e476 host1x_job_unpin +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xaacf2785 host1x_job_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xaeabe5e4 host1x_client_register +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xc22b5b29 host1x_syncpt_id +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xc8fd2692 host1x_channel_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xd2860704 host1x_syncpt_incr_max +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xd3baa104 host1x_syncpt_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xdd19a01e host1x_job_submit +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xde5412cd host1x_device_exit +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xed139e2a host1x_job_add_gather +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xf933b47f 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 0x67989e52 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 0x322ce7ba i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x899f11a2 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xac23e0fa i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xb811d0b1 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf9dbdade i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xa936b8b2 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x05305c25 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0f0ae169 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2831b078 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x539cd8c7 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x66063ecf mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6ed46a32 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x73c022d5 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7ce15627 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x861c1334 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8bd564f3 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8c014ba7 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa1167258 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xaca59d61 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb04a3148 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcc000949 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xff1b32f9 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xabd663c0 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xf5ad1dcd 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 0x8a2b7fb8 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9dadc235 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xa40d60b6 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xbe0e4974 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xcf68c281 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x13b188e5 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x740e3a00 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xd9a1d64b 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 0x0f6fde2b st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0fd00de6 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x18b8c35d st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1d0e1506 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1eccfe6b st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x261a3091 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3dbad14e st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5053c3c6 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6720346e st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x72275856 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8257a43f st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbd5fea84 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc7424729 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd0fb2161 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xeef9eba7 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x5ace148e st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xf06777f1 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x5f569bd2 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x3173ed47 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x8ac49939 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x12fff969 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x322c4bb3 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0b460d2a iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x12081dce iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x1d6fac6f iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x39e04328 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x3a93ff06 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x49df1de5 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x51c72bea iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x57c13e1a iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x7a83d5e2 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x8124d410 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 0xa1ed98d7 iio_push_event +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 0xb83cb744 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x664b174b iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xdefacf83 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x32d4922a iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xb5a97a4a devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xd534aad8 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xfbb2e3fe iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x03b1cb18 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x7122177a st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xb909d76a ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x50e401b3 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xe87f76e7 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 0x85394375 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0dabeb6f ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2f593285 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x32a71fcf ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4429157a ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x46a1b765 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x490626d3 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x546631b1 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x782da87e ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8b76bb77 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x94e79648 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x973fb2b9 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9cc80983 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa82d548a ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa8ff63c3 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb7a62f2c ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbcaf66f2 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd4fbd793 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00702fc7 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01bee1f2 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x039533b8 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b303b86 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f5fb060 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0fd6eece ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1149730a ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15676818 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17a603df ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1eaabfd9 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2113ffd3 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2178f6e8 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22a82235 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x281812d3 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2de2951e ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3133f963 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33271b7f ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36d9ef51 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b834355 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d85f37d ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41e87725 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4311984c ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49d111a7 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51f4e156 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55465e59 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5976f2b9 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dcade79 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5de8f517 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6059e9e4 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62bbbb4e ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64e649b1 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66473246 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x669a0d82 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ae78a1c ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6baaa576 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cb63778 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7240a7c5 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77a050f6 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a2b8a54 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a5ae90c ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d4747d7 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80cee3d8 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x814bb8ad ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x843a25c5 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8452091c ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x861ee308 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8681ea25 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89e635c2 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94553551 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x953b67ef ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98c7a3a5 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99bd98e6 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99ceb095 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a962966 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9adf5d8e ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e264633 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f51d5f3 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa351cf85 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5ee8bf1 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8bc7639 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad1739eb ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae7daa4f ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf890a15 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xafeb2631 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb27bba75 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb281ac78 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb314ab33 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3deecd1 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb68c515d ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6d88329 ib_dealloc_fmr +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 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5b3f064 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc63dc2a3 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce36cbc9 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde19cd8b ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0a6fa16 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2708f78 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6751eef ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6f65a80 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea3707c1 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeace826a ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb92889e ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf252145a ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa91ec64 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb530129 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x06451b23 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0e3f2d61 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x165ca2b9 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2470ce75 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2e55ba91 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2edc8ca8 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3e59e5a8 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x499c7e72 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x75a82162 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x762203e9 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xaa8fdfe2 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xec4c9e77 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf52c5caa ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0f35ee90 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x25637dfc ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x47c67ad0 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9e7aad54 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd79aa285 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd9bcdec3 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 0xde9e1b2c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe0871297 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe73a7e49 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 0x155e4845 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x28a4aef1 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3641546f iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x39924cef iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3aebf660 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x41f4d368 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x522c0539 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5255cf4d iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x611a145c iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x642f34b8 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6678a457 iw_cm_disconnect +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 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 0xa188802b iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbce5edf6 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe582d8c8 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe7807f28 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x000677bf rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0567afb6 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x13cd9ed4 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1ba5169e rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x30d5d6db rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3b5c4930 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4060d59b rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4fc1a805 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5a12de9a rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5c514a50 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6b80bb51 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6e2c656f rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x703515ce rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x76766a62 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x82632574 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x855c28b2 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaf0a90ba rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc7dc1d42 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc8e5577e rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe4d97445 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xef0e96a4 rdma_create_id +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0dd83575 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x27bf4ee6 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3433d473 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x41a98786 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6712b66d __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8b5501c8 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa4519ca3 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xadb31cd1 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc4e3cb61 gameport_start_polling +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 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xaa417fff ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe28ad315 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x004752d0 capi20_release +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 0x1a3d67a2 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 0x385656e2 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4841d18c capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x48ae72b6 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4b47a467 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x56eb4ea5 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 0x815a526a detach_capi_ctr +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 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 0xd0937a95 capi_ctr_handle_message +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 0xf102734e capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x04aea68a b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x16bb9001 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1792a571 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2638cf62 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x29391e33 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2b811a3d b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x49b52e70 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x50a3dd8e b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x645d45cb b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x65bff971 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6a253b98 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6f1701a1 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7bf0004a b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x809061a0 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xce8e69b6 b1_alloc_card +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 0x15d4b0c7 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x21520d25 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x326998cc b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4cf71d56 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x95be2765 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa8f96a44 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbbceb198 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd34915ed b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf9ed4ee8 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 0x219005f7 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7ebaa04c mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb7047c2b mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xf8a0adf5 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x4fecad74 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xbabc74a5 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 0x79597ef7 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 0x27f930d3 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x623364e1 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7b5bc2d5 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf792ed1d isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xfb3a833a isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x17dfa1e4 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x85abbfbf register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe0cf8584 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 0x00ff99f0 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x13d7bd85 mISDN_freedchannel +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 0x23a8476a recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x331fd5b4 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x37b99c83 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x393c62d4 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3e934c19 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5248c4cb recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6079ac7b bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x624b3986 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x63530a3c get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x648b4348 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x79e97a69 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8fa2047c recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9121432a mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9a8b619e mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa4ebc6c1 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb0b85301 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbae21b5b mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xca8c6779 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcbfc9fab queue_ch_frame +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 0xd8760737 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf202ba95 mISDN_unregister_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/mailbox/omap-mailbox 0x833b4405 omap_mbox_restore_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x896c84b3 omap_mbox_disable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x9d700adc omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xbde1c089 omap_mbox_save_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xd8cb415e 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 0x3da7af6f closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x4d30c1fe 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 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xba8e761a closure_sync +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 0xf77f6fbd closure_wait +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 0x4102fd70 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x515db147 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x7661f091 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xa8ae11b9 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4b77affb dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5a0b629c dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x82eb6c8c dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x99505075 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbbd53898 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe6e9e082 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x94a7c2ef raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x007e272d flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0536e8fe flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x15472987 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x264d2cb5 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x30cdc405 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x311ce2a7 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x497b94f2 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4ae9fd5b flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6acf698b flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x737c923c flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8b2ca529 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd80976f4 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe9f49b25 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 0x37de366c cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x407326d2 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x4660d859 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xbeb5162c 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 0x0a40dce1 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0xd93cc003 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xedf05a04 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x007d1261 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07818f1f dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x169fd63c dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x189fee0a dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1b937b8e dvb_generic_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 0x41f78df4 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x43816534 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x489fac82 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4ed90506 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x629f9d31 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6b829fa6 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6da686c5 dvb_frontend_reinitialise +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 0x8905b2c2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x963eccdb dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x965810bb dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9850cb88 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9b4de24b dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9bb734ff dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaae8daa9 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xab0c07c3 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb5b087d1 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb8006d61 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbe0cccb1 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc5c43805 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd397c23d dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd695b35c dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd736e9c2 dvb_frontend_suspend +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 0xf5bcf2a4 dvb_dmx_swfilter +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 0xfd43caa2 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x37cee4b8 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xadec3a88 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x71b7e88d atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x039bdf62 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x43963f8c au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4accc311 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7b27f6e1 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8774ca47 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbd933ab7 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd87ac4aa au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdfd405e9 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfe02f56f au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xb5a9803f au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x8453ca32 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x949ddb82 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xfde86fe4 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xab483cb0 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2b0aa7bd cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xf2f6582f cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x623e8c17 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x143e84c6 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x7fa1fb4f cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x8aa8592c cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x647d82cc cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x02cc5026 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x284d050c dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x64d6fcbb dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x8d1ab716 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb4c0fcc6 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x120159f8 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2f61a297 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x31b803a7 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x41ee5dae dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x633964b5 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8b13a592 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x977045cf dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9b88b846 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa66575d1 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xaa667fcd dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xae1be907 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb4bbbf73 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb8f433b2 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xba718277 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbe010a4c dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x8b990d91 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3ce970e2 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4b3645c9 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5e5e5f8a dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x89bbcdb8 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb0c3627f dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xcc4ab3bc dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x1a43bccb dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x1e6aadc0 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9ea61dfd dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdeb5099b dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe43d510d dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5da2604e dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2a34528e dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3fc7609c dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9379dd23 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9f5afe6b dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xfaa9df44 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x17cec4f1 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xc3f7b721 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x457cad10 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xa2e4808b ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xbbb3da83 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x6d0b599c ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x529af31d isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xa398d0bc isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x07ca8c35 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x82ec2d24 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xf9caeaa4 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xc37a4fc3 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xe0cd0282 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x9d2a0872 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xe4242a06 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xcbe0ce11 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x07186c8d lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x4946fa40 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xcd4b2a9f lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xe457b84c lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x4ec4ad3b m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xb9b8319c m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xbaeeeffe m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xee46beeb mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xb69affd7 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x8412292f mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xa372377b mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x44854147 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xf52174c1 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xea9eb138 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xfad47afe or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x61f86c31 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x3522198d s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x15cdc2f2 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x91eba980 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xb72ceb21 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x9962bf01 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x11f8d365 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x3f7bee80 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x1e506fe1 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x87f2ef49 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xf940b3ba stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x28843d40 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xc02e18ef stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x5cd83110 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x50edc0fd stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x33e9155d stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xe50b10ba stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xfc9e5b4f stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xb9cd9590 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x070c6939 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x9818c80f stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xe3a1bf98 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x74cb569e tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x1ba36f1b tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x2c563048 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x3ea8a302 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x17b80404 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x3a505d06 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xd8285dbe tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x4d9edbd5 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x5ddff075 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x4abac0b7 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xdd321462 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xb126af6f tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x828e8ef3 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x11204da6 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x3f46778f zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xeed47e0a zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xebb7ec61 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x060a8776 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x164bb342 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x429681fc flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xce5451a4 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe7ec4d82 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xea47f103 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xeb333304 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x061c562a bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x10b5c22a bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x4eca5788 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xb523af56 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 0x49f7995e bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x60a68e8f 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 0xc3a5726c bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0319941c dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x55390d52 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x581a5642 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8bbaa98c dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9f982307 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa4af7499 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd4b2dce3 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xec80636b read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xed38ebca dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x75de30ad dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0b54a88a cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x247028dd cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x36004725 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xbebc15a4 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe41671db cx18_claim_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 0xfad656cd altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x50c3ac19 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x68001a1c cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9ef7d8fc cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc83d11db cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd7c3d03e cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe8866f4f cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xec301ed2 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x2ef5585e vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x55575c19 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x30c38afe cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x359302c0 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc852cb44 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xcdb1a73a cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x08aaf67e cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x74c5a601 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xafb976a1 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbcd96fd0 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc63bad03 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd317391a cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdb24e988 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x086997a3 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x09970c56 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0efc83fe cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0f81002b cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x17357402 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2d33c9af cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2dfd81ce cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x423d3fd0 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x48de492b cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x50405101 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x58aaeaec cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5ded1b90 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x687f5681 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6da6256d cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7c842837 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9168f11c cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa466fd12 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb1cfceee cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcb9d1a43 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcde680a4 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0a963ee2 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1f4419f6 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3611d477 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4f7de8f1 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5d5c4bb3 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x62bd637e ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x684cb3b3 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x77bd4d7c ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x78ac2d8d ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x829aec64 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x86442567 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x931327ff ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb1e10c36 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbade1f54 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdc92e414 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe0a4dcdc ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfe049717 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x02f60658 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x11c8facb saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x31ec9de5 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x58c76f0a saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x658bb651 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x73c5fb31 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x819122d0 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8793e3b1 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8a4d5bf4 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8e9b3aad saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9cfb7eea saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb2fe5b4a saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x52af02ed 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 0x05a40e3d soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x2421976d soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3af94548 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8ecbb8b4 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8fd19c6c soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x918d03f2 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xfadd7d80 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/platform/soc_camera/soc_scale_crop 0x2bdc20df soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x60fe7c5d soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x6685a327 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xfb296d87 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0a13f978 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x70219232 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9d83e0f4 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xad3f2266 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc5bae2f8 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd3022d87 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe457c1ad snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0a106ba8 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1d58dc3d lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x57c6cbdf lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9d89b811 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb83b608f lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc50c7a43 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcde61905 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe1275be1 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/rc-core 0xb77e5095 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xe1cc937e ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x50e1727b fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x8592a89e fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x0932bd19 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x34adada9 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xe3eb3cd5 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xd9904683 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xf611f3f4 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xbaa87cf7 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x39607a03 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x60551181 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xc9578f67 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xd5e846a9 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xf3a4901b 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 0x62da1601 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xd6c6ce38 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x04ccc9fe xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x8824691a cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xbfc5d1e2 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1080dedd dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x23ac34f3 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3a3d387a dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4505c8e5 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5c1ffc56 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x788d1c57 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x830965be dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x99bb3a42 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc0e4b6f5 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x338466e8 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x37e817d3 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x51710d0f dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8d29ddaf usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb75996c0 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe29c6a24 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf8a9a966 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 0x65b57097 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 0x0327ddf7 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1ee0e49c dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x49a28c19 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4ba79ba5 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7092ec4a dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa8f3dcef dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb4527272 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 0xbe95a711 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc3c6fac6 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcc0cb5fe dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdda08ddf dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x7a5cacac em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xd3c904c4 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x025a2801 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0d5be41f go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1aed9cf4 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3ecbcded go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x465475c9 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6243745c go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6610cb33 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8e525248 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc9c1095b go7007_update_board +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0272d28a gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1cecdf20 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x40bc827c gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7f6df036 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9c190d08 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb7b2539d gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb95430cc gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc66828a2 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x24c9a833 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xd0af2ff8 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xec74e62e tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x44ae48fb ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x6f694931 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x151575a7 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x34f6f60d 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 0x57581776 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x47caf8b1 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7b617d03 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x977f7e9a videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbd261741 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd221be33 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xe99b88de videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xe8a9e7aa vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x20d3ff9c vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x3d537302 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x6c4a2d25 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xace0637f vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe00adadf vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe8142de3 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01679fa8 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x05616be7 v4l2_subdev_g_ctrl +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 0x129416d3 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16465868 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22af7fbf v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x234293cc v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x26bed9a8 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2a192715 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ae220b0 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2dbc848b v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f0af65d v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f928fc3 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3137483d __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x348ee8b3 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x389257bc v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3923a0e9 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a60034f v4l2_ctrl_poll +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 0x3f81a62d v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42e71515 video_device_release +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 0x47b42583 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47e16f18 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x491b2fd9 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 0x4d619c83 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54a6eb86 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5732a6e9 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5803807b v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5a46c6ec v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x609deff3 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6897fa0d video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69f79a1d v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6b8d2078 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e4daf2f v4l2_ctrl_g_ctrl_int64 +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 0x7e215e65 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f44d256 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80bdf50c v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80c9d280 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82ebe010 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x845b43cc v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x861622f0 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x908261f7 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x91efc304 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9248b228 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9316c105 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9fa01648 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa124d1b2 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1f1ca9e v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7593db8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7efc9c1 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab32f33a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb527c55e v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9440dad v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba4dc9d3 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbd826a69 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbfa5009e v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc0d644ae v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc0ff0e15 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc55cb37a v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcffa52e2 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd07b6885 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd48df03d __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd9a37577 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde04a22d __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe164922a v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe5ff56a7 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6146fa3 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe7e85917 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec45090c v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee68ccb3 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8e7e7b3 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa81ce47 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff0f2ffb v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/memstick/core/memstick 0x33206e99 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3a14ced0 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3a6b534f memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x47720129 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5812528c memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xac161d94 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbf531ac1 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc18d8871 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc19129b3 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd17de66c memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe6007988 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf5a6306d memstick_resume_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x121ef0b8 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x12ecc0ec mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x14e91cbf mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x19c40314 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1cd0be4c mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x226240a8 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30670604 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30e0169f mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x37b8634f mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x45d02571 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4dbd48bb mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x520b4fae mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x52740388 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x76393563 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8794f929 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x903ede6b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9b6bb0d9 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9de73260 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa5b90e32 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa6d21ce8 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa869ae55 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0f22130 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc1beba6c mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc1f78258 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcd7e2d8c mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcf7822d5 mpt_detach +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 0xe0963989 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe23bf0b0 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe25b71f0 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0d154527 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x12049ff3 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x175aad6b mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x18220c0a mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x374d0460 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3f66a64c mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x466fa2ca mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x56b3962c mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5717f3c5 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6538dd19 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x66c6ee70 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x700fe570 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7507f207 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7ad1a9fa mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x896fcfab mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8cd53796 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8e1e2254 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8ec028a6 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9b663ab5 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9ed116ca mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa4138ddb mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa6679411 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbb0ff409 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc1beb1ef mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfbab2542 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfcda28e5 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfdb314eb mptscsih_io_done +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 0x0344a45c dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x1e68edd8 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x4b0c3ab3 dln2_unregister_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 0x043ab104 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x372975e8 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xea7bd5b1 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 0x134f0d7a wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x1a7a8ad3 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 0x5723db58 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x98de539f c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x6ae4055d ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xdefe2cc1 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x12e1f3b8 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x1cf41588 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x339114fc tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x37e43402 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x5c6644e8 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x6f099f6e tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x86079daf tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa291e894 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xb2e9be55 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xb7745f2b tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xfac12d4f tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xfd560e62 tifm_remove_adapter +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x2cf8bc20 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x6f7a0d3c dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xa69c4412 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xf23186da dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x40472100 tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x5ffc50eb 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 0x7fb5cbf7 tmio_mmc_host_free +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x9239fcdd tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xc484fe28 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xdd033b79 tmio_mmc_host_alloc +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2a4bf53b cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4eebdb61 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x60ff8aaf cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x63cc5e5c cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x66d3ef66 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xcc18d239 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xedc860be cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x2ed41727 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xde6aec20 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0x1d25609d denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xa802385f denali_remove +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x13d10b44 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6daaa5b6 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb193de8f onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xc437283e onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0a30acef arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x395d2a53 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7578a22f arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8d64aeed arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9c587f8d arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa68d6814 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xab97d0bc arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xad134ea6 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd7bfdeb5 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdefc8082 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x5ef52cf3 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x869acca2 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf30b3a8a com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0526107c __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2885e133 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x332178f7 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3644751f ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x534c0c83 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x68ccbd1c ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x75e3641b ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc2e18b5e ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd2ab02c9 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe764f8c3 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xbced61bf bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xeb494eb9 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0106e9ee cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0271f9db cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x06ceab04 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2e9f5527 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x33e9842f dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3ba8131c cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x404c889b cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x46d4fa1d cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6baa7117 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x71d273bb t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7677876f t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7ed4b3a7 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9f5d1f58 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd0c3bf45 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf5e5d0b0 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf7acdef9 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x00ef59a2 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09ebf160 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c7b42e7 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x119ff299 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12910415 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31c9213c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x33482dee cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x41d0582c cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x52f56c50 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x53daf39e cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x57db7ef2 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x61588dc9 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x662e3238 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7014a26e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x82a03d2b cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x83422fab cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8e7f27b7 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8ffb2066 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93c3eb11 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x965d17d1 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0c21417 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaa547e68 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb0e52f81 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb3eabd0e cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb93c863e cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc67dae09 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc812e9e5 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc99d8d6c t4_cleanup_clip_tbl +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 0xe3d7acd6 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xea11b611 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef0e1700 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf16ea9e0 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe16390c cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x441a1006 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4ee4085f 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 0x8caaf36d vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x31e89e00 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 0xf83f372d be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01a734b2 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0622bede mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x100930ee mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1500e0e5 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1762c807 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39a1e012 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a9c5fef mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e385412 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f2bb373 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40c858c0 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5236ce66 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5651e2f3 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59b93ff5 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5cd0f1d8 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d5f8a32 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e12dfd8 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70ad6f11 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72b43964 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74c67433 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7633536a mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x785cc6a8 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84da0c2f mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85266f26 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87f1dc8c mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c3aec91 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91be9846 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa59c9a22 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad4bf7f8 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb88727f5 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf7eacd7 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd69a5c13 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6a7ee21 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde4e4499 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe832d28d mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9dffbcb mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd5daf00 mlx4_gen_pkey_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 0x0d1bdad4 mlx5_unregister_interface +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 0x0eed6f23 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1657882b mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17414246 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x294ca27a mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30acac25 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x312fdd66 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x34715094 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38a62c10 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c0f9f3f mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c61f2a1 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x417b058b mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4980e629 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5cfe6d66 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67ab4f64 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x687398bf mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e619944 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e719e96 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c888b7e mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d16fdc0 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b230762 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90d859e2 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9674de6e mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e235628 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa23b1b59 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa81b8df0 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1f5b8c4 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3c7d227 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc8adeec mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbe33ca01 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc076c401 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc63b2144 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xccf6bea5 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd567c686 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdbb9022b mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde0c9d4b mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe213c4d1 mlx5_create_flow_table +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 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x240eb9c4 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4a1df7a5 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa2ddfa25 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xde87fe8b hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf107d6a0 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x13dafab2 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x287f8b42 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5782dbac sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5ed581fe sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x894d35af sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9e67c104 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc5d15fd0 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdfa78eaf sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe90ce5e1 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf58b48dc irda_register_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 0x1e89289d generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x1fe11bc9 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x257c195b mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x488c6027 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x5075cdbc mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x60c06dc6 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x896947ba mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x8b91b387 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x81ffca1b alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x873ea96d free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x832f8d48 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x7bd14110 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x942fc7f4 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xab07b618 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xb04e23df sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0963327a team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x2e03f0b0 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x36182c16 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x3b76e53d team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x5735ba21 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x7a3bb94c team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x80277f38 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x971a3ff1 team_mode_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x6fa73c17 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xa7303ab7 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe392e9dd usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0ba73593 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x24fa0433 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2cb35e90 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x597d0c7f hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5c101e8b alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x648391f2 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x748291eb hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x86821475 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x94ffbb52 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa164cc51 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa80f0c1b unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xb216b9ab i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x16f22812 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x67c33484 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x795abb61 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x850e6930 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x94098195 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9fb0570f ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa849194e ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xabaf443c ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc4b5ff61 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd6d238c8 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd74ad75a ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf717c599 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 0x063a10a4 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1ce6dec4 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2375103f ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x56c38c8c ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8350470d ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x93e51c89 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb4b3cd22 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcf5e74f8 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf91fc61f ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfa12f4d8 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfeac4893 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0699a946 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5b057ae1 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7df70beb ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x844753dc ath6kl_core_init +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 0xaada7973 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb32d17ee ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd275861e ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdbff1206 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe2eac2a7 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf0b3178f ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x06f8d22b ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0bb07d61 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x18157680 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x26897240 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d599e37 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2f9f670f ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x445826d1 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5a7936b0 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x68eebe03 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6eecfa60 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x78fd8d73 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x82c6d15c ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8eef68b4 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9cef1852 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa2a685be ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa33b2c55 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xad540191 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xba5796fe ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbcbcbd06 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc43e2213 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc6487c90 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 0xdac6ed5e ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe106ae81 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00dfd675 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0197ce4f ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03861270 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05d32be5 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07408feb ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a683b2a ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x105f8d59 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12247fbd ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15053d6e ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x164f96c7 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b0ad57b ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c17ba30 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d85c7ba ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f1a1670 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29d19247 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29e3683b ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2dd4d769 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f6db45b ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x324ab61f ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33152596 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35912254 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37397171 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x390299b3 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d7b10d8 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f38bbab ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f9d6ac0 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40daa2df ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x454234eb ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x464efcf1 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4698d7b8 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x471c2a5c ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47d97e5b ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c76a1f1 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d2858c2 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4db843f2 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4fb5f0a8 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50fd9bda ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x513e8087 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51c762d4 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53cb6ffc ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5739b9ce ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x585f9c78 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5aa9d29f ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e27e273 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6045f382 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62e6cd11 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6364c1d8 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6375d5c8 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b57e4c6 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e1a8061 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70feee58 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73a6ff87 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75e0428b ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7866c215 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78995d96 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x790c43d9 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b237f69 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x811b4d19 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x832cc9a3 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d8043ad ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d8c0e77 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8db39d10 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fdbc0c8 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91b3e6ff ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x921ee6d7 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x953ed44e ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9922ce57 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99b59d1e ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d7332d4 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5cc3a49 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7d84acc ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa882bef3 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa963b03f ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9948191 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab19923a ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaed69dd6 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0bfd8db ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1faa296 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2226566 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4a3c3ef ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4fa742f ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8bc3e60 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbabe620a ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb98e615 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbce784f ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc82a4d7 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbda14c64 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe9c4bc0 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1af7c6b ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc85c4e9b ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc96847a1 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc25acba ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xccc28f70 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcce47e3d ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcdaf367f ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce417eed ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd687e912 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9b2d1a7 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf00e2a71 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1cb10d4 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2d3c25f ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4c213cc ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe0b7957 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffb3f94a ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x02f6d217 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x43cb860a init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x9ed54429 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x089a4a31 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x32382c28 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3752d968 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x501ef813 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x82e6da0f brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x95bd1e5a brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd3364d9b brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd990e856 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe6b9fb33 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf10414ee brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf54c96f0 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf673f314 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xffae62dc brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0472c329 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1447c1e5 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x18283f75 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x271822b6 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2b298d38 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x30162d38 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x408f7e0c hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4568fd3a hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x62acfef3 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7ce3264d hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x86b7b4e9 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8c93f8aa hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9d65649f hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa0a9bf26 hostap_remove_interface +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 0xbcdae6f4 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbe2603b6 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd1c2cb9a hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd480ffa0 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd4fe7468 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe78b09fe hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe8432f45 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeef5ac57 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xefcf138e hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf82abd5e hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfb92ad46 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0b81ee88 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1ae42206 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x36c2bfe6 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x53781ffb libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x584a5e04 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5bd81fc7 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x62757830 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6b33ebe5 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6cf9aeaa libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x727d1fa7 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x72d52da8 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x733bf8b8 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7cb54f8a alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8322b015 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9d96e07d libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb76c68aa libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb79cf9d0 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbf039594 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd002ba46 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd0e16d3e libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdbd6be69 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0050e201 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01c4a604 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0332bae8 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03eb445b il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06c205ab il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x097d5fa6 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09c44e7b il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b716f67 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c92b3e4 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0cbdafe1 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e89dec1 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e8bf13c il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0fb310ed il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0fbcf63f il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0fbf96f0 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10a367e6 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x12a22f07 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x167187f9 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17c330d2 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1825a06b il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2416d1e2 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27d44b30 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2af9491f il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b2f2874 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2bfe8151 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c02ddad il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30136df2 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3299bf07 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3acb911c il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3afe0018 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b875882 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c00720d il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c6e76d1 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d37b52c il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ffcd8c8 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4082ceb2 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48a135f1 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x49fd9274 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a5820ec il_leds_init +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 0x4c63e067 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e030225 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ef51808 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5175857a il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53f2ff4a il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5771f48f il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57d2da85 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5ace5292 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d42810a il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60eb4e71 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6680abf9 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68ee5a0d il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ba94997 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c11aadc il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c5a28f9 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x727b7ee8 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77c8a199 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77e83f8f _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x797908ab il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f839cbd il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81eeac52 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x836884b6 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x882f55b6 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b8b863c il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d803e29 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93afe4d3 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96d48f8a il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99cc686f il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ab489a6 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d9a95ac _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa00fe122 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa21ad99a il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaaa84bd9 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabcca37b il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf47c3f1 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb6e2c31 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc9f0ba7 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2bb3301 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3c3b64b il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc61b5719 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xceb67328 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0262a78 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd09cb1bc il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd15a81dd il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd585bd04 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xddcf85c2 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0289e91 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0ec53db il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe23b689c il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe53f6d0f il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe83a519e il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec3d05fc il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeeccb900 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf22134d0 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2d21c7d il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbe4ccec il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfcfb8923 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfda2144a il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe2fbee5 il_mac_reset_tsf +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 0x0349fd6e orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x064f4c7f alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0c696175 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0cbc8ebd orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x40758f64 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4e1e926e __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5a954910 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5bfb0c47 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x70e97ae7 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7ad4aa52 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7caf3513 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9a6575b8 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa4a2e655 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb1c60177 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb2776563 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc06f4a39 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf92757b0 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x9c065b5f rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x12b0633c _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x19fa7ccf rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x27576221 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x35883b24 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x35d94156 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x37bb4262 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5263e6dc rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x562b80ee rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5679a415 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x59414241 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6227e87b rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x64574013 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x64b5aaa7 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6f86e281 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x72a51083 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7809664b rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7ae8d58d _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f256933 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89a59835 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8ebe48ea _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8f9244d0 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x902073cb rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a6fb495 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9af92963 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9fbe6c7c rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa0907844 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb07542af rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb42da15e rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb84512f2 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb916616f rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbd33b21e rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbd9c4e01 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcd4b96fe rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd6e6c99b rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc7afaab rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe5ef5a7f rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe9f074bd _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea1354c3 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xee83dd06 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf1d59a76 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xff83c7a1 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x1b0bd7fd rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x532e081f rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa3504be6 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xb0804bd7 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x0289f35d rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x0e3baafd rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x286fbb33 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xa8be20bd rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x037d0a3d rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ae60721 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3b713765 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3efc7950 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x439a4ff5 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x496d926e rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x572ef02c rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5aa5da5c rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5d25ff1c rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x619bd5cf rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x636f0df3 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6f4d27d0 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7ce4bafd rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7f173f37 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8ee38640 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8f027038 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x91659d6f rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9abe9aa0 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa075db50 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa29ad55b rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa98ce254 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb6d7b970 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb894beff rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb8c3ff8d rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcee6376f rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd7319fa2 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdc5bc3bb rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe3ae751e rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xec2e8049 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf07dde7b efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x0327e796 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x119f1751 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6fcb7436 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x89ff7a78 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6551bb28 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6b6b6366 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1e955093 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x8c357200 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x95758143 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x145f517e pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x6d551492 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x04c37e04 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1ddddc11 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x58fef650 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5ea0f639 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x611fae80 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6a90ae69 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xbb8e5ab2 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe1bb32ba ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf9ce8194 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1fec51f3 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x277cbfa1 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x311a4403 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x383879a0 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4f99018c st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x55a9299b st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x562a1d8f st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x57911262 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x691b49c8 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x73d15de8 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x77f0b8e0 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7d31c92f st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbfc9f48b st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xda6fdb94 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdd824522 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfeaa0398 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/ntb/ntb 0x14b4c433 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x15e247a9 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x37b6c293 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x5b47a68d __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x814212cb ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xc9fd47d6 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xd2112a2d ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xe9720cff ntb_register_device +EXPORT_SYMBOL drivers/parport/parport 0x0a103446 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x0b9dd944 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x1435a900 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x162c55aa parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x1fcb2851 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x20b5fe2a parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x25e784c8 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x2720f26b parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x286d3e88 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x433d9b56 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x54194dd4 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x67b2e284 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x685f068d parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x69b81845 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x7dc9c9ba parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x8595e819 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x866d3164 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x8dd28dab parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x90300c87 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x9ef15c2a parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x9f6024dc parport_release +EXPORT_SYMBOL drivers/parport/parport 0xa18997fa parport_write +EXPORT_SYMBOL drivers/parport/parport 0xa2cd8e97 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xb79e5453 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xba600232 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xd62cf687 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xd86448f6 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xde1a0bf9 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xe2b04a9c parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xe7898469 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xf8078d6d parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xff2e2194 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport_pc 0x96c8ca5f parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xc80eca0f parport_pc_unregister_port +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0x86ab1664 iproc_pcie_setup +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0xbd42236c iproc_pcie_remove +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x015bb3f0 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x04a42c22 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x240b1bdc rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x35f3e706 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x373b1d0e rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x52648fa3 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x761fe9b1 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x805923c6 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbe25c944 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xebd61c4d rproc_get_by_phandle +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x6d43b711 register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xa9111013 unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xe86ccbcf rpmsg_send_offchannel_raw +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xef75e3b7 rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xfe8345d2 rpmsg_create_ept +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x8d5e6cd2 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x001f0870 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x16846cc0 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xcc50ac20 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xfcd3b2f2 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1a0c7f3a fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4b1341bf fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5fce93e8 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x70d59d3c fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x71dafbc6 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x98818c78 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xab100099 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb5eeafb2 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbbef6fc7 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc99f9d75 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdc0495a9 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe7e39760 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x05a374b4 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07147f52 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0f0f930d fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x143bab8d libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16ade012 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x17e5b95e fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x19cbfd3a fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22453110 fc_exch_mgr_list_clone +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 0x34998f9d fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x34e492c6 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3938a94c fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3a3d33cf fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3cd39238 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x40f4c2c5 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4646fa6f fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x48a63a65 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4932d946 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4977ec09 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ca25cf1 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c900370 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x68a1e2fd fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83154946 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84cdffc7 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b7e895d fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8bee00bd fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98a49025 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98e44146 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9c822907 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab9d0800 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad94ea05 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xadad60d6 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb02ed994 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb452d72d fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb94ca2f fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd9ffdeb fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc613a22a fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf92a867 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd25f9f4c fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xde21558c fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdf9fbd16 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe474ab30 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee3f3eca fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf79f0426 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x02575596 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x584f7ff2 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x791beb53 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xfc49940f sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x0118eb23 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 0x0132e4ac osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0d3d4cdd osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d5c5116 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1e861a27 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x238c2092 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x24a4f6d2 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2e1211be osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x33298b67 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b125edb osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x55f4d11a osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6185868f osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x65f7572c osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6af08f0f osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6fe27b2b osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x73e7ece8 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74b422e6 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74fc6bc0 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7a5c8a5d osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7c85142e osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x885e1616 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x94d884f9 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x96f0bcb1 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x98601d7f osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x987b17ed osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a0995cd osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a370e4a osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9b105385 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9e483c6a osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xabc8170b osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xad5da415 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb65ead58 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcac6c18c osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcef2f0e1 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdedf1ee5 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf18dd07 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeb9227e7 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/osd 0x235f6c90 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3422bb8b osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x481c25f5 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x59319fd9 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x66d8c370 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf70bcbab osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x186426a5 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1ed8fe36 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x21ef89c6 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2cb79540 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4716eb40 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x56d9b21f qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x675eb755 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x69b86e88 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6cdd54e1 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x885f2d8c qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x95688908 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc9764196 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/raid_class 0xab2f8b48 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xbe2de4d6 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xf8db2cce raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0b8528cd fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1743b31d fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x249d184b fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x44b0f3f6 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x48a6c5bb fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6e596485 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x777ff583 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x85fd9e31 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9d896c39 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xaa4e7ead scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb278f5df scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xddf7fbd0 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xeaf3d025 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1d74065c scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1f8c7b38 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x24be4dc7 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x28a75074 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3440e41a sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b0a10d2 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x406017ae sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4ad2b423 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5cad749f sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7203b2ec sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7b3a8bdb sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x83fc805f sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8a3afe4f scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9029fb68 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x99db256b sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa1051a1e sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa1b5ec2b sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa37d8683 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb47de18d sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0f02c6e sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc5f163d4 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9819e8d sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcdd023bd sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xec969491 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xeff7a792 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf4891673 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfd7ebb86 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfe91f956 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3d098412 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x66ea4d69 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8d7dc0ce spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd777eb7e spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe680c63a spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x2ddd98a6 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x7f5cd953 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x904c16d3 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xc2280c74 srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x0f05ea51 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x27b89c37 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x5632c411 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x684bd7e2 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x797a2888 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa9718e3f ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc6b4d0b0 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x01aaa318 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x035e69e7 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x06484a13 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x29006322 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x2b967c23 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x35e2e235 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3b9b26b4 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x40be6be2 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x431c2ae9 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x47dc8c57 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4f499272 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x5ac363cc ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x7658f669 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8688aba3 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x8d16dd3d ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xac277b56 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xb3832285 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc15f108c ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xc994cc3a ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xcdaad2a7 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xeed22093 ssb_driver_unregister +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0623cb9e fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x205d6051 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x426c61e5 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x576d973b fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x62fc1ba0 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7f40bf29 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x84cdaa5d fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x85921979 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x85be1249 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8d26c4c3 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8dd36a46 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x984184a7 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9c354939 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa02737e7 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa49ba2e4 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb12e24d0 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb9ec900a fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xca0fa766 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd1dccef9 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd3a125e1 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe4188fed fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe99589a3 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf7dd974a fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xff8232b3 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x22c4e0c6 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x53e84756 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x079058c1 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 0x008ca04d lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x04895da1 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0bd2ca64 lnet_sock_write +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 0x3ad454b3 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c093289 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3e4472ed the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3fc963e3 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x47e25901 lnet_copy_kiov2iov +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 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x73f041cd lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7ad581ee lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8422a2cb lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8def3d76 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9b2005bb lnet_sock_getbuf +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 0xa57a581d lnet_copy_kiov2kiov +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 0xb4b1bef7 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb4eff8a4 lnet_set_reply_msg_len +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 0xc718ef7d lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcc042de5 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd76628d4 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdf71047c lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdfc1a153 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe31f23f8 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe459c304 lnet_sock_listen +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/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x14cd3b4a client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1ce603d0 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1d9bca7c client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1eff6582 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x2d86fa1f seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x8852d705 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xb0e2ed53 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 0x10c2f54d fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x8e9da56b fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xbd22df32 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc3e514a5 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc4db0f7f fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd5b91ac7 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xffba91e2 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 0x283f2501 cfs_hash_debug_str +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 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 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 0xbdec3cae libcfs_kkuc_group_add +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 0xcc74ceea cfs_crypto_hash_update_page +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 0xcdc6ab32 cfs_hash_debug_header +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 0xda304a32 libcfs_kkuc_msg_put +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 0x5fbc4ad9 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x93f45f17 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa3b3dbf7 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xef6d2040 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x099133f8 lov_lsm_put +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 0x68554ce7 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x8e1ae718 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x8f1beb18 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 0x00565eba iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x017fef7f lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01933c10 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01ad024b cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01f17f1d llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x020cdb4b class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x023bc657 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02b7b2b8 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x031d775c class_decref +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 0x044ea5de cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04facbbf obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0557289d lprocfs_wr_atomic +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 0x06071cd9 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0630338f cl_page_unassume +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 0x07f8b9c2 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0837ca01 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x091bc995 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0984082a lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09ab12cc llog_init_handle +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 0x0be56617 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 0x0d303260 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dd416a3 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ddc4b2f cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e0b56b0 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e3d63de cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e61c554 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f4020cf cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f40ee5c lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f8ce6ae llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10248432 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10f1d1d1 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1174276d lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12c8820b class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x147df3fa lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16d63754 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x178d2872 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19dece6d dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c4ef016 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc487c7 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cd892cc llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1de878e9 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1eb8876d ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3dfb0d lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f442e60 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f64f114 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20437539 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20c1843e lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21029255 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2112c32a cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x214e3aff dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21510fc0 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21ebee77 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x220f8752 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22b838e8 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22c770b9 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22f3b06d cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x233ea647 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x236193ff lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x237e09e8 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24a32ee2 cl_page_cache_add +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 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 0x28750ddc cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297ce0e6 dt_find_or_create +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 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ce642e6 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d3524fd cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e02994b cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x300bd42d dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30f4f718 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x313d89e7 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31a6b095 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x323354c6 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x334c27c8 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33a01ed6 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3411c9e4 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x352763d8 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x355bb743 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36bc3610 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ec35c8 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38e37c05 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38ffedb9 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39258694 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3940a740 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b26fbe4 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ba180ba cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d0b585b cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d107cf8 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dca5dfc llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x405fc335 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40eae917 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x414a7a63 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x421f04d4 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42a28250 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x437ff854 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44b7c3b3 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x457d29bb lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45a195fb obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45c78777 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45ee2424 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4621c32b lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47061299 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x472b7762 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4786113d lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47958c1b cl_page_find +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 0x493a1671 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49544fef lu_stack_fini +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 0x4a7dfedd cl_io_lock_alloc_add +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 0x4bccf78b llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4beddd36 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ce2f8c3 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d029503 class_incref +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 0x4d353a43 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4eec94da cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f8d5875 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f9fdf62 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fe1049a cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ff4e045 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50175098 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50385cc0 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51eea0a2 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x522b9511 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53226ae7 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5372b7a0 lprocfs_rd_server_uuid +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 0x54ce0b5c cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5515b747 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x555bf530 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55d66e22 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56106d39 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 0x56661bdd capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58458580 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58786b9c dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x589ab13d llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58cac4e4 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x594ebe2a lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59b0653a class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59f21d81 class_cleanup +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 0x5bad040a lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dd96408 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de01627 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f5ef307 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f93cf4b cl_lock_is_mutexed +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 0x60bf7251 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6161d5df lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x622d9826 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x638bc9f1 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x647b409e llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64a8d04c lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66051763 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x662602d3 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6679098e llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6687251d cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66c9a6f3 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67499c6e llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6846a33a class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x689bda7c llog_cat_declare_add_rec +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 0x69bc6bb0 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69fde546 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a46a7d6 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a69d2b4 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa48e1a cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6af442c4 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bc39ca0 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6befde78 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c2deda6 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dddc85e cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f180835 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f46fb11 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f9371e1 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70d05feb cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70d5a684 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x714cfbf3 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x715ef17b lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x726502fc obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72bef7cb lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x734e9035 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73c59ba4 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73ca9c61 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73e1f8b8 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x744c8872 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x749a5ea8 lu_object_put +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 0x75577698 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75b1681f cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x776a651f llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77c1c592 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77f59822 cl_io_iter_fini +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 0x79222021 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x797669a7 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79d15953 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a068c34 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ae0e87d class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd27a10 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7f63a9 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8000bfc6 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8006f0f1 cl_req_page_done +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 0x80da73ba lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x815f8143 __llog_ctxt_put +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 0x8380594d llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8389902f cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84162498 lu_site_print +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 0x848d2e18 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x848e5517 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8516cfb2 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x852c6e7f llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85a0819c cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85a63c21 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85a835b7 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d40144 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x860f61cc ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x866047f1 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x867e1ece lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x870ae84e lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x873acdc1 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87aedc1b cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x884109df cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88cbcc71 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89c6e22d cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a7807b1 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b11f1cd llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b43fe15 cl_conf_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 0x8ebd4fb3 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f0b3098 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8faa6843 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c8d327 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91f45871 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x928b9621 dt_txn_hook_stop +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 0x94677235 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94dd01c1 llog_setup +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 0x956b09c0 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x956faa97 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x959f1f3f cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95b6f606 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95faf8c7 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x966f61cf cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x969d85ba cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x972b0c81 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x978eec60 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9833dbd7 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98e7e92c lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x999786ba cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99989c6e cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a88ea98 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ac9f151 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1984e7 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1fc358 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bde96ff lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c4b4f5d llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d47b491 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e7ba8c1 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ea7731d class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9edecf94 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f5738af cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fc769d0 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa033383e cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa075d1f6 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa093cdae cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa225bf1d lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa271f3c2 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3c80708 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa405c7f7 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4335379 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa495a238 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5493542 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa629d3cb cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa65ba3ec class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6858c2f lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7494e37 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa816a7b5 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa862d221 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8b87766 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9338cde cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa964be4c cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa72a659 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab7297a1 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabdc3229 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac2bd5fa cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac589483 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac917a8f lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad731bbc cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae2fad9a cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaee26135 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf6e122d dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01242a0 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0f90eda lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1466447 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb14f661a dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb249bf55 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2b0092a class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3890735 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3de33cc cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb44eb89a cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb494fc8d lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb50c4f44 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb57ce11a cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb668a4b6 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6dfe8df class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6e1ddab ldebugfs_seq_create +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 0xba7c7277 lu_object_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 0xbad6f9f4 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb6d7107 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc74fc2f lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdec3f8b dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf8a6bd9 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9e695e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc029d5da class_config_dump_llog +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 0xc29948bc llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2a123a6 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3d7f25f cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3e312c6 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3ec68ad lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8bbcc7a cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc96a65cd cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb726bee cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc428ccd class_conn2cliimp +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 0xce05b8b6 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce4b79c6 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf8fa8d8 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0103eae cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd03d94c9 cl_page_is_vmlocked +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 0xd1d20dbe cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd28af41c cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd34eed0f cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3d1bb58 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4ba6cc4 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6bb77cb cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7176cbf lu_object_header_print +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 0xd80b8a1c cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8df70b8 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd94212be lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9797e3d cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5d486f cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdaeafaaf class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc4d4604 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd4ff3a7 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddd20b54 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde1ee6f2 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde8916d2 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf623799 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf836175 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfdd7c8c cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfdfab78 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe005353e cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe11ba72d class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1dec6ea cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe213a115 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe23774c0 lu_site_init_finish +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 0xe3534c3c lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe38a9142 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe55c604d cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6c7dac0 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe710b9ba capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe824a9ee obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9966fb1 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaa9d3a0 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb2e04e9 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec59aa7b cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed6626ef class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee685dc5 cl_locks_prune +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 0xef07d126 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef37a084 ldebugfs_add_symlink +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 0xf01fa0d3 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1231fb7 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf22db445 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf580fe08 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf669f7c9 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf704d40b cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f42641 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8259814 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8390df9 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf85725b5 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf87b603e class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8adf8ea cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf993f777 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9ba22da cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbd8511b cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc3ff52a lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc5e4660 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc8a3251 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd08397e cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd3fc63d cl_object_find +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 0xfd926b39 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdd4d1e3 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff32bd7a cl_io_commit_write +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 0x010b10b4 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x015883c0 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01eeca7a ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01f75f84 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0240cd3f ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x033add83 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03727529 req_capsule_filled_sizes +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 0x06342dd1 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x063be9df ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06dccd30 ldlm_glimpse_ast +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 0x0833829c ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09383d6b lprocfs_wr_pinger_recov +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 0x0a931443 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a9bbfc6 ptlrpc_req_set_repsize +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 0x0b82df9c ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0be2e214 ptlrpc_send_error +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 0x0db92550 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f1407a6 sptlrpc_req_replace_dead_ctx +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 0x11c40339 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11e62215 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1271a910 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x135a458b ptlrpc_prep_req_pool +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 0x15544650 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1689e3e2 ldlm_cli_update_pool +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 0x17d06cd2 ptlrpc_error +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 0x1b65e688 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b95a23c __ptlrpc_prep_bulk_page +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 0x1c278197 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c98baa9 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d15fcd6 sptlrpc_target_update_exp_flavor +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 0x1fef9802 ptlrpc_req_finished_with_imp_lock +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 0x23dade9b ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2427cb77 ptlrpc_pinger_sending_on_import +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 0x253a8840 ptlrpc_retain_replayable_request +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 0x25a6cca3 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f0e4a2 ptlrpc_fail_import +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 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 0x2b5cb474 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ba2c623 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2bdbd037 unlock_res_and_lock +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 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 0x314bcf78 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31c43d35 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32e154a3 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3302a03e client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x337d2eae req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x342c6a36 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x354a2c6e sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36520c8a ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3730ee28 ldlm_namespace_dump +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 0x386325e3 sptlrpc_gc_add_ctx +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 0x391f3fd7 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39bf8a9a ldlm_cli_cancel_list +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 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 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 0x3e5131b3 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e7581af req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f0ee07e sptlrpc_cli_ctx_put +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 0x42ea401f ldlm_pool_get_lvf +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 0x43929b4b sptlrpc_sec_put +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 0x450ebca9 target_print_req +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 0x467ca742 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4690c57f ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49114b3c sptlrpc_cli_wrap_bulk +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 0x4aee8c15 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b12498a ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b213e21 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cafd949 ptlrpc_prep_bulk_imp +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 0x4e31cd75 req_capsule_server_grow +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 0x4ee56755 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f0e4401 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x500bb5a8 lock_res_and_lock +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 0x52116da2 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x521fb07d req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5266ae03 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x526e560f req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52e9bc4b ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5304c534 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53124313 sptlrpc_conf_client_adapt +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 0x54f010e2 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x584546c7 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58bedaa1 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x592c5c9f ptlrpc_request_bufs_pack +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 0x598095a6 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59e62abb ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a857b1b client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ac3d6a2 ptlrpc_prep_req +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 0x5c676921 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c80b863 ptlrpc_request_alloc_pack +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 0x5def5582 ptlrpc_buf_need_swab +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 0x60ab5854 ptlrpc_abort_inflight +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 0x617edd6a sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61c0726a sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62a5b876 ptlrpc_start_threads +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 0x63c1085d ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63d9c290 sptlrpc_enc_pool_get_pages +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 0x653f636a ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6679768b lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x679d8a90 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67aa976c ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x681666de ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683be427 ldlm_blocking_ast_nocheck +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 0x68e82c5f ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f584c8 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x691a4366 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69aa4c9f ptlrpc_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 0x6b036071 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b5b3d00 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c6f2e97 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d550eb9 req_capsule_server_sized_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 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 0x6fa0add8 req_capsule_shrink +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 0x710620a2 llog_initiator_connect +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 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74c63f28 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75ff982d ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x765862c6 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76967a96 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76d1e593 req_capsule_server_swab_get +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 0x7963e0b6 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x796ba227 ldlm_register_intent +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 0x7be716a3 ldlm_cli_enqueue +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 0x7e3ac1b9 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ea35d87 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ea3b883 ldlm_cli_cancel_unused_resource +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 0x80fb57d4 ldlm_cancel_resource_local +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 0x83320ef2 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x836f0e83 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x844e07b2 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8464725e ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x847bcf43 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84a469dc target_send_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 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 0x86fe534b ptlrpc_init_import +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 0x88e4f92a req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +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 0x8aa876a7 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8aed32dc client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c7dd694 ptlrpc_reply +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 0x8e20f8d6 lustre_pack_reply_flags +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 0x911d1aa1 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91976da7 client_obd_cleanup +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 0x922b299b sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92dc4883 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9453ef9f sptlrpc_cli_unwrap_bulk_write +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 0x969b0a54 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96c03a6c ptlrpc_restart_req +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 0x9b260bc2 ldlm_pool_init +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 0x9be74f86 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d248cb8 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e635ee1 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e680855 ldlm_resource_unlink_lock +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 0xa187792d sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa226444a ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3874d46 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4114dec ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa45dbcd4 ptlrpc_set_add_new_req +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 0xa5bc57df ptlrpc_schedule_difficult_reply +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 0xa80daabe req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8b5c3b0 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9243672 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa965b496 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9777d39 req_capsule_client_get +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 0xaa0e4425 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab73d2df sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac90d7f8 ptlrpc_nrs_policy_register +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 0xae6b0049 req_capsule_has_field +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 0xb100ef27 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb124330a ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1a1f663 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1a85e12 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1be1080 ptlrpc_service_health_check +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 0xb3ffee24 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb465343b ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb46b402b ldlm_pool_get_limit +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 0xb5b86ddf ldlm_destroy_export +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 0xb688e78d ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6e2f722 ldlm_pool_add +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 0xb9c1cb7a target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba34519f ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba4dd896 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba6bf35a ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb70561b ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbbe3540 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbf455c3 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd5937c4 req_capsule_init +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 0xbe58b812 ptl_send_rpc +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 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0255441 sptlrpc_import_sec_ref +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 0xc26ca083 ptlrpc_request_committed +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 0xc4580618 sptlrpc_svc_ctx_invalidate +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 0xc6696b34 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6b30f11 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6d38d19 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc70bf4b3 ptlrpc_nrs_policy_unregister +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 0xccad22ba req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdb3d2cf ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce7a5dfc ldlm_namespace_foreach +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 0xd117268c req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1fe3c39 ptlrpc_check_set +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 0xd2f6c17a ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3997a10 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5bab122 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd65add08 lustre_pack_reply +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 0xd6fb0463 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7da47b2 ptlrpc_stop_all_threads +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 0xdc83738e req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc931c83 ptlrpc_unregister_bulk +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 0xdede2580 ptlrpc_at_set_req_timeout +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 0xe170884f ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe22c2369 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4163dcc ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57069b4 ptlrpc_disconnect_import +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 0xe66850fe ptlrpcd_alloc_work +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 0xe924c4b3 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9a817af lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9eb47c4 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea367f20 sptlrpc_target_export_check +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 0xec0b089e ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec50d166 ldlm_namespace_free +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 0xee7f46f6 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef007380 client_obd_setup +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 0xf25131bb client_import_find_conn +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 0xf4515e62 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf463bb23 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 0xf69236c6 ldlm_pool_set_clv +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 0xf93d9195 ldlm_namespace_new +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 0xfafd93fe ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb08600c req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb61ae2e ldlm_lock_get +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 0xfc530b53 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc60e482 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe196ec0 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfeec4429 sptlrpc_unregister_policy +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 0xb51425b2 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 0x04e5bb8a rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0549ff70 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09439078 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09da4681 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d514534 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1468763a free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a6d3035 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25c123dc rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a53698e rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x34318278 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3a8fddd6 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f20a99e rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4205c87e rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a213260 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a2976b0 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x505337f9 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5a1f2592 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63a74873 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x729ad4b9 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73369043 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73794a14 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x77756c1d rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x79d0f1be rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x80da07d7 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86ef809c rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x895c8fef rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8c909e70 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9132ee1c alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93082a51 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93c1e9ba rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b4ebabf rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9f51d342 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8a1eb37 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa92937f5 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa9a21066 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb89615a7 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb95ee17e rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc30f202a rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9576268 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca90736b rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd2390f85 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc01560a rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe12b6b3e rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe55e8e10 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xed31d58c rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf039c2e7 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf58f68c9 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf6a568e4 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8bd3229 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8ec150a rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x057d115e ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06f999d5 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x07a0665c ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a8ffd60 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0fbe0bc7 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x192f57e6 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1ad893b1 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b8e1936 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x296853e4 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2d7ed4ca ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x31ec6b5e ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x35ec08f9 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a986163 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x413aae0b ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x419ee575 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x430e78bb ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fb0a4cc ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50e84c8f DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x555cbfc9 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x60072915 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62706ad4 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x647145f6 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6b02ecdd Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x717daa09 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75926e78 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x766e0d99 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7798384b Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7d83a2a5 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8fd09e13 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x94101a52 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x94c00a7b ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x99be0d29 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9edd7b91 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9efd34ab ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4571e50 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0dc3a73 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb728bc37 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe2e87c2 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1320240 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc2f71b23 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcb3f28e0 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcd607903 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcd75d23f ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5c51ac9 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf1c9e03 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdfd24d76 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe1802def ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe975f2d9 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb0c3c16 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec8e8f46 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf1750642 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf3254111 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf55b8db3 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf94bbd27 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x010b5e0e iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1490e3f7 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1ce94f7e iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2056ac05 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2632141b iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2d284a4d iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x377b71c7 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3923c9be iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x53a0c2f8 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x57527f8b iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5aea214e iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6a439316 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x744e551a iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x77dafe13 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x810ac5db iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x87e644e2 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x97d5db9a iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ce2227a iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa00deb8c iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa92ac527 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc7eb5131 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc88b10e7 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd65ed2df iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe570bfe3 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe89f956e iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xeffa7371 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf7d3b174 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfdb99fa3 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x036b24d7 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x08b9b5be transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a91e538 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x1129087d transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x1bb54dfe transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x22d6710b target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x260e0f2c spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x28dd1c09 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a167c7b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2edc8e4e transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x2efa1c6f target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x3157d4e7 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x36135b4a sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b72a137 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x409d1257 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x445146d1 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x49e16c17 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b9fe885 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d6ecb31 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x4dab0f33 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x524d9073 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x59492e3a target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e808d5e spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f4afa01 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x60f6490b target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x631cbd75 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x638dbc0d target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x68860e27 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bb6901b spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x6dbbd4f0 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x72303b04 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x74a9d9f3 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x75a88bdd target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x78a618d6 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x82fc3166 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b16433f target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x8bf0ecb6 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ff70241 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x99dcefa0 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a3adda5 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a994a26 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x9bcd4504 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c1e447c core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x9de41088 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0f1058c core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5af85ae target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa83699d5 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xacd24703 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf8eac9d target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb0ee68b5 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2e29dbe transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xb307b44e sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6205bbe transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xbdda2d2d core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xcff07f62 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9cc2547 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xde840ed4 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf8dc6cf transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfcfc413 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1054580 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xe23bf449 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xebbdca61 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9472fe2 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb7d496a __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xfedd1406 passthrough_parse_cdb +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x21685d12 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xe5f279c9 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xc1568d3d sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x284abb32 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x29f2ed65 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x51472074 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x537e097d usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x703c3613 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9ec1342a usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc7c1123a usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdc276941 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf6ebafb0 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfaef16eb usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfb18d39b usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfc1ec0c2 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x16e6f73a usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xb385c4d4 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 0x613d1bef lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x62e742e2 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc9a7b3fa lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf629cdc8 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x175e1924 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 0x352bd547 svga_tileblit +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 0x98d0c1dd svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9b4145e2 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9cc4c3d2 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc83f03c5 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1eac1e6 svga_settile +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 0xd38a377f sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x22336d1b sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xc01dfbff 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 0xadf86e8e cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe8ea498a mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x6149a7a8 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x61c533a4 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xe93c0db3 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x3e60ce70 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x7b32cdb9 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x8ee5ac6d matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xfa8faa94 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x5cef5a8d matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x6c5d43c8 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x294ba985 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x89a7b437 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xeff72b01 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xfe6e96be matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x64995f20 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xc272ffe1 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x0081089c matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x577fa92f matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x783f14fc matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x9ae11c4a matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb44c4b26 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x2ba90ec5 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 0x5ea453f4 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x65c7201d w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xb0d98aae w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xed19e19e 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 0x09b9da0e ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x6a08129e ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x88eba749 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa6055bd3 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xbfd826e8 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xccc9bd5b ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xde5329ed ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xe5378c55 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xebff4802 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xfe576bd1 extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x1b3f63f8 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x1c23b7bd __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1d375a69 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x251dda09 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x25303d85 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x3278a0a2 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x4576e055 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x4a29e654 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5626755d __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x594321b6 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x5b78a2ef fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x5dcca753 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x657cba80 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x6cce0b26 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6de0d161 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x6e6ddf3e __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x73ca9ccb __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x79dc5fe1 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x7c221999 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x813dac21 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8c3937a2 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x8e3f4513 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x9166ad8a fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x91910fb9 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x91c61b1e __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x940db03b __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9bf2998f __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xaf412f1e fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xb35da662 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xb37bb124 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xba580cb9 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xbc1c74d1 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc876a680 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xd2f97413 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd6d406f8 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xe5db1997 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xe5f97a7b fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xfa0225ed __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xff7ebd56 fscache_op_complete +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 0x026606e5 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xca6a1ce3 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x60e0ff37 register_8022_client +EXPORT_SYMBOL net/802/p8022 0x72d5f489 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x47e6f479 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xd42d8f7b make_8023_client +EXPORT_SYMBOL net/802/psnap 0x50362172 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xadf1f3ed unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x019b02c2 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x0a378b3f p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x0a7b7f7b p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x0d43518e p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x18133c53 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1a8d37df p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x1d9b084f p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x1de1a16c p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x20df6d3e p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x21f42c49 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x22bead17 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x3572aaf1 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 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45946329 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x45f16bfc p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x47eed362 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x55f7928e p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x566e8485 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x59f8817a v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x6c0f5dbf p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x6fb5e736 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x70856152 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x86795474 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x88b1910a p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x94eaf053 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x986d092b v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x99f18eb1 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x9ce58e4f p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xa3083546 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xa7174e4e p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa8ee0b8a v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xab606b1e p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xb70fc29f p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd1f8d614 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xda9d3b25 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xe3730b1f p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe506bce2 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf1a1f3b4 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf5b1e17e p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xf6b7fa69 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf9aa6147 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x02cdadf7 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x6c5f06f0 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xdce7b071 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xe81bc1ab aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x069fda31 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 0x4d76787e atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x53d87212 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x5c3c1aa0 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x613ad9e4 atm_charge +EXPORT_SYMBOL net/atm/atm 0x6b7b816b vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x6da9a631 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x96ff7e4d atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9aa0ed12 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc905f56b atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xd8fccd4d atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xec61d12f vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf0c658af atm_dev_release_vccs +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 0x5d99de20 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x6329f475 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x64866975 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x7dc0c608 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 0xaffc5d5a ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xbb4f72cf ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd40dcdcf ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe22894f8 ax25_listen_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0da75cf7 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1144b66e __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x271e2af4 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x29780dc7 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2bfd7ad0 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x32163bab bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34bc4832 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x36a860cb bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b896635 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4300852e hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47aea350 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48bebf51 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4a91357c hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4d673fef l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5362bec4 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5367bcd3 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5709d9b2 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d62971f bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x66f6f282 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x68e25e15 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x690e6293 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x71d63838 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x720e66b0 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7ff8258d hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x906997d1 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9801fc7f hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ba27848 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9f37274a bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9fe96a6b hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xacef8fdf hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0235e93 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbdadbeed l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcac5f3b9 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd5e83c91 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdba12464 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde04bced bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7987378 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xee33100a hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf68fd827 bt_procfs_init +EXPORT_SYMBOL net/bridge/bridge 0x59d54b0a br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x1c2c0f01 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x819c72a9 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x9f4f6f4e ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x053563ae caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x0ce9a0ac get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1b44f557 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 0x43808ece caif_connect_client +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 0x9d3396ce caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x255fe910 can_ioctl +EXPORT_SYMBOL net/can/can 0x316a813c can_rx_unregister +EXPORT_SYMBOL net/can/can 0x55c199df can_proto_register +EXPORT_SYMBOL net/can/can 0x7c4cb590 can_send +EXPORT_SYMBOL net/can/can 0xb1d98bfd can_rx_register +EXPORT_SYMBOL net/can/can 0xd2095f03 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x00e9f0ee osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x04454ef0 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x05122678 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x08f41957 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0a8ebe21 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x0b692df6 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x1f3e6938 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x20318043 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x25e5a124 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x27251f3c osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x28d7e151 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x28dd9727 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x2bff187a ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x31b29026 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x32363ce3 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x371f7d0c ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x389f9c4d osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x38d2fe78 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x399959fd osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x3a37bad3 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b607c2f ceph_messenger_init +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 0x46081d3b ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x488e7427 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x4c14c078 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x50d13731 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x51069f1f ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x532ae138 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x5385364a ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x54f4e6a9 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5630bc75 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59dbb660 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x5b91be59 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5e78a388 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x61fda492 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x630795b9 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x68c88aaf ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x7156ef26 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x76f35c97 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x77b6fa20 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x79a799e8 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x7cebc9de ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x88398519 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x8bcdfb88 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x93b05baa ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x969bb414 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x97882913 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9853bb27 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa0dbd759 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa12d01f2 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa287e058 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xa2f498d3 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xa5aef42e ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xaa7b3641 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xacf251b7 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb1871619 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb4e8dfb3 ceph_osdc_new_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 0xbb2758ec ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xbe289f69 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbe776d60 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xc12b695a ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc424b6a1 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc8709a55 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcd803e78 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xcd900814 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xd246723c osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4ff8bbf osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd6ae024e ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xd73717fd osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xdb16bae1 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xdf6bee15 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xdfae358b ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdfc91d0e osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xe2bf185b ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xe503a0e0 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xeb5b931b ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xeca28ee7 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xedcacde8 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xf0083e8e osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xf3e4160e ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xf553bb8a ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xfac5849e ceph_calc_pg_primary +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x6b87e2cf dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xbf7450ed dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xa9c17d7c lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x12e697b0 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x27bf1085 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3cabf8ce wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x535926bd wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb16b258c wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xec089850 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x3cce2225 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xd70ebdd1 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6ffb7c82 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x71b25827 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x72ef1aba ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe49bc5d8 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xebe69fc4 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf5c6eb64 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x03be6cd3 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x725d798f arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa8d98981 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x23fbfab0 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x8de713c0 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x9ed12433 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x51a529e7 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x5b84c361 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xa8257e63 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x441f30b8 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x9a52fdef ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa03d3af6 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xdf2cb5bb ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x523feaf6 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9a4ebc05 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xd07d335f ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x0af06c17 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xf2f8af3e xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x630e3652 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xd10cba59 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x261b14e6 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x33170de1 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5dc0f3bf ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x85ec4321 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x97301af4 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9b4917e3 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xaf384d6c ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbf67242c ircomm_control_request +EXPORT_SYMBOL net/irda/irda 0x048ae0cc irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x06087b93 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0e5fd21a irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x0f4733a1 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x0fc171f6 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x162b0503 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +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 0x4035a70f irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x405c27c5 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 0x4ccb3be8 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x4d2bd8b1 irlap_open +EXPORT_SYMBOL net/irda/irda 0x5a6bfaac irlap_close +EXPORT_SYMBOL net/irda/irda 0x6492e28c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x68898819 irttp_close_tsap +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 0x74924200 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x77ea5522 async_unwrap_char +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 0x8495f181 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x8f2e7ca0 iriap_close +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 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xadf93241 irttp_dup +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 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 0xcbd01b88 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xce2ee365 iriap_open +EXPORT_SYMBOL net/irda/irda 0xd65a1fc9 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe6d3e7e1 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xf2945186 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xf49d705a alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xf66db3fb irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xfa5b01ba irttp_connect_response +EXPORT_SYMBOL net/l2tp/l2tp_core 0xfb3c2255 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1eb89000 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x43d479a5 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x55183cde lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x6dafb57d lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x7f68f4fa lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xc195f303 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xd7d8bafa lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xf9e54b94 lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x05fe4d11 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3ce2295d llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5558eec8 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x8ad0ecd7 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xb0dbd028 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xebd1734a llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xf6b6ea09 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x02baa754 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x0fe3cff3 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x13d7f35e ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x15ebb5d8 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x1638f50d ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x1c1279d5 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x1e94d432 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x1f6dd674 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x214860a8 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x296acad1 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x32aed8b0 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x3463f365 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x38489c8e wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x3b1aa471 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x3cbc9f6c ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3d80b85e ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x3f8ec29e ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x41fe82a0 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x426747eb rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x4374db05 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x45706a5a ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4c0e9b05 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x4c9e0424 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x531a228d ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x53dbb5fa ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x576b9803 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5b0f41fd ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5c6b33d0 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x6328991d __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x655411b6 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6d9c7b26 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x706cc0bc ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x73b79c63 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x73fcf87d ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x76c888f4 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7ac5544e ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x7b6997fb ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x7fb812da ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x83c668db ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x84ac6568 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x852943ca ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x898d774c __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x8a1b27e2 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x8e34ccbf ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x98626917 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9ab5ddd7 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x9b695a92 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xa2e5855a ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa3eed683 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa4b9bae1 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa8c9c8f9 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xac9a9c54 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xae2b166d ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xaea334c4 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb0f74b8d ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb23fa2ca ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xb2d57428 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xb44ce871 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xb594c82f ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xb735ada7 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xb7b2f511 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xba779c05 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xc073cda6 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xca4d255f rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xcb1305d6 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xcbc8ec86 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xd2ea921a ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd5cb487a ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xdff6f112 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe12de40a ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xe138c683 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xe1cf9ce8 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xe20907b9 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xe5f55e5e ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a9bea2 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xf0b31b98 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xf60559d5 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xf982386d ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac802154/mac802154 0x0e0a366c ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x3f844e79 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x4cde5c45 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x52434017 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x62523a45 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x9b30a39f ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x9d024b16 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xc996f2a2 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xfd2d3728 ieee802154_alloc_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x14dcd02b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x231cae69 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4052df4f register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x50bc7b71 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x69b186b6 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6a8518f6 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6e3d56da ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8c0ee95a ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9a304a1b ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaf8580bd ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc2dee98d unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd48f5e6f ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe5e93af4 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xef31d008 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x2b71a0d3 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x6e3e7bec __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xc7381587 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x18272cdb nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x361c7f82 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x9633653e nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x980e8640 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd31699b2 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xeb41decd nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x01caebd3 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x19121ccb xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x1e0457ab xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x715e8aba xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x79ef3629 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x9dbf8b00 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa6eb99fa xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xc072fcd1 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xf5816568 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf7ddc5f0 xt_unregister_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x01bc1148 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x2d44c579 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x2dc695a9 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x412c1302 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x414f0d07 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x4301ff62 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x5231f2b0 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x5c14b165 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x5fafff28 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x6ec5bc13 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x910e5c6c nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9d83b5fd nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xa9a7f770 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xb2245844 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xb2c58eb6 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xb4998bbe nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xb8c54166 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xdcedd5a0 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf2bfd758 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x0b4f8483 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x1a7d7f3c nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x2d07726e nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x2f86d151 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x39eb72b1 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x45b6651a nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x61cc9cb7 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x6b1a7af1 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x6dcd2110 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x6e95a468 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x717d8bc1 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x83e1f2da nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8777fcfc nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x8e566543 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xaddb0c3b nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xd21418c6 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xd4a17589 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf2bf5cb7 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf7ab4ca5 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nfc 0x04b2ec24 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x1d9d8c82 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x20bd7c6a nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x32cdc24f nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x4408d516 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x44a6345b nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x4d3650c2 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x58d61b55 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x5a34ddf4 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x69c6b65d nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x6fa33f81 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x7afe39ee nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7b71f109 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x7dbdb30d nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x93188846 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xa9d8599a nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xafd2c5a1 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xb1e48257 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xb9a30bd2 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xeb7096e1 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xed6a6de2 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xfd935278 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc_digital 0x09d119f6 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x13170457 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xcac4099f nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xf92bd12a nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x23ed1765 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x730bafdf phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x90f14b87 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x950c9f17 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x9cbc218a pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xa6c1726f pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xc4dc4ca9 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xcdf5e837 phonet_stream_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0fa4437d rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1ecf02c1 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2a42feec rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x46db163b rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5254862d rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x881768cc rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x91ad39c3 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9dc6e92f rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xad31dc5d rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb883e3c9 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb9af635d rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xba995429 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xddcbaf00 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdfc16ba8 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfb86e906 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/sctp/sctp 0x8ac378d7 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x05535a67 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x5bcbeb4c gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb844a0a0 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3128336a xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x86b5664c xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xf5c5a2bc svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x11b260e3 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xb0c66b69 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x05fd8a0a cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x0716c867 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x0982876a cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x09c610b6 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0bb83269 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x0c975590 cfg80211_pmksa_candidate_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 0x1bea08a9 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x240b1ffc cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x2580832f cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x2aa20d7c cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x2b0139ef wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x2bf3a7f9 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x32205a4b cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x36d4167a cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x37e2fc92 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x38f4dfbc ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d6be1c7 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x3e137b88 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x448ca3a2 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x497b5954 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x4e872dc3 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x4f801b68 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x52a6c40f cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x52f8cca8 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5954080b ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x65528334 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x66051108 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x66421313 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c091b8d cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x718b8f94 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x735c5351 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x7788a12c cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x79e905f4 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7bef8a25 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x7d3fbf6d cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fd14361 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x84bc3fd7 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x8628b40e cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x87cb4160 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x897f5509 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8d126403 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x8f3d46e2 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x951eff44 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x952b3282 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x974d3d9c cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9f8d87cd cfg80211_put_bss +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 0xa1b99cd4 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa5acf820 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xa78990c7 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xa7e6a577 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xa893bcaa cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xa8cc1700 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xb12755ca cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xb514ba0a cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb68b2a3e wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xb85420ff regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xb89a3201 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xb9e6b6c8 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xbbf37900 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xc1243cbf cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc2ed4616 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 0xcfb591df cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xd224feab cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd2c00caf __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xd34e53e0 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xd450414e cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xd84f7574 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xda3715fb cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdbbf4020 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xdd2c3d77 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xdf8543c9 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xe20e94e2 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe63964bc cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xec3eedc6 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xeee5e1b1 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf415d9c1 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf4ae2fef cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xf82985ae cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfd2e47ef cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xfd353c00 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff7a26da cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/lib80211 0x01ab91c6 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x22d90341 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x49afdeb5 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x775440e6 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x91be55f5 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xf9e46e42 lib80211_crypt_info_free +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x268f0be7 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 0x6752444d snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x695c5df0 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 0x86bf88a6 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 0xe86b29ec 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 0x8a21ff51 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 0x9648f94d snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x284634d5 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0f9dbd7b snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1ac64a4b snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2ab64617 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3cbae5ea snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3f161e70 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5313c72b __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x56ac7b72 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6ffeda43 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7765fa93 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x896c35f9 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa07a4d15 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa0a2c35c snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xac926f85 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbfa3653a snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd248ee62 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdc785e04 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe6063ae6 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xebdafbf5 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf7725b40 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xb1a7f25c 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 0x3da5316e snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x483b11fd snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x62892f84 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6d48dc77 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7d379ced snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x83ea9819 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x890239cc snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x957e2a9f snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xac3de573 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x098d5e4e 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 0x3241f13e snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4cdc3cb0 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x613c59a6 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7ae521cd snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9cb8d9f0 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa9df540b snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb8ed5966 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb8f64891 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0aa16096 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0ee81878 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1083ae31 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x10b531b4 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x159b5bb2 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x24d2f9b4 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x30b2a90a cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32e0313d avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x342a3602 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x36d3c9a2 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x44fad911 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4d60b372 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x524356ca fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x52797afe fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5b928bae amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x635f7d39 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63b2ac85 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7174bd26 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x750f7e70 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7b7e3689 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83ddba96 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d009976 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa65e25b8 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa9f24800 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdcebf4b5 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe102a603 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe33db113 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe48b837b amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf0c3ad6f fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfa1a3747 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfc02a993 amdtp_stream_update +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x0efcf1b7 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xc47d6526 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x1fb1595b snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3f4ae4f3 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4f5e7e19 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6143b9a7 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x676fe929 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7457a92b snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbf8c726f snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf0b5ffc0 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x173137ba snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x493ea958 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xc446bd47 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe80af2c3 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x453db344 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf4a0ec84 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x70a11f81 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa3cab608 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xbe72b3a2 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xce714b8d snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xdef61ca3 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf96ad6aa snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1fa5567d snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x3e14f4dc snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x52fd2100 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x71f200f1 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x92659a18 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbce7f63f snd_i2c_readbytes +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x010e7ffe snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0489ccbe snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x04b273a7 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2bb634b2 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5356f733 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x620be0a7 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x70bb82e7 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x747a53bc snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8547dc7d snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x855a9ff6 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x888be22f snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x96ea2a89 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9b818493 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc275bf41 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdd0070c3 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdfcac788 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xea94160d snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x01375b61 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5c2ce131 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5ef2febe snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7f9b417c snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9bc8a507 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb6f5c743 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd1e1e1c6 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd3e9888d snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe1591e9e snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x02f735dd snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5fa0c76c snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xabde4de1 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x009f1932 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x053db83d oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1888daff oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x219bce48 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2426547b oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x33623a24 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x56c40032 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x596968ec oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x602d0837 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x853b2029 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x900c4a32 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x94e19e04 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9ca3c0f3 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xac2ddc90 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xacc8cd16 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xae272051 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb3d34fa5 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb7380dc5 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc24f6d0f oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd8451728 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf79c17a0 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3b1e7b78 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7a08c74d snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x81a95e18 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x8e38fed3 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x9b6bbec3 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x510d5af3 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xee75c96f tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/fsl/snd-soc-fsl-utils 0x17d78623 fsl_asoc_get_dma_channel +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4ef16a13 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x60b39fbf 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 0x75051f4f snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb9d73cb8 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc9dd2e36 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xcf727970 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0fcb57da snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1ff289c8 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x22544fa0 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x832c4801 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x93087900 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc0c7ff8f __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc6bb4b65 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xceca66b6 snd_util_mem_avail +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x060702a1 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x0005a879 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x001ee95a imx_ssi_fiq_base +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x00406332 __kfree_skb +EXPORT_SYMBOL vmlinux 0x005bc545 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x007b3f75 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x008a0fa6 proto_unregister +EXPORT_SYMBOL vmlinux 0x00bd8387 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x00c72c08 vme_irq_request +EXPORT_SYMBOL vmlinux 0x00d27a0e inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x011280a4 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x01636bad simple_release_fs +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x01737777 skb_append +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01b7fd59 dispc_read_irqstatus +EXPORT_SYMBOL vmlinux 0x01e2cdae deactivate_super +EXPORT_SYMBOL vmlinux 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL vmlinux 0x01f8d56f free_page_put_link +EXPORT_SYMBOL vmlinux 0x020d784c __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x0248a9f6 sock_no_connect +EXPORT_SYMBOL vmlinux 0x024fb4b2 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +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 0x02863786 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x028b3c83 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x028c29c3 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a4b1db posix_lock_file +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02c4f341 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ec8394 phy_start_interrupts +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 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03411bdc blk_sync_queue +EXPORT_SYMBOL vmlinux 0x035853ba fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x03635439 edma_stop +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037a9aad alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x038141b1 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x03901746 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x03a33a70 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x03a391d0 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03c3a286 km_report +EXPORT_SYMBOL vmlinux 0x03c803ed dst_destroy +EXPORT_SYMBOL vmlinux 0x03d50286 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x03e8a56c tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x03eefd20 icmpv6_send +EXPORT_SYMBOL vmlinux 0x03f29081 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x03fb47bd kill_block_super +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0402a556 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04250406 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04535b09 __seq_open_private +EXPORT_SYMBOL vmlinux 0x0456cd43 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x0477a73a udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x047e8353 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x0497a969 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x0499138d __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x04b7dcab register_sound_dsp +EXPORT_SYMBOL vmlinux 0x04bac816 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x04bb8b8c sock_alloc_file +EXPORT_SYMBOL vmlinux 0x04c1030c noop_llseek +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04d4c67f acl_by_type +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04fce9f9 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x05101ff8 cdrom_release +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05368af1 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x0566911e __breadahead +EXPORT_SYMBOL vmlinux 0x057e7cfe arp_send +EXPORT_SYMBOL vmlinux 0x05818f43 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x05936c33 iterate_fd +EXPORT_SYMBOL vmlinux 0x05a836cc blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x05a8b791 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x05ccda3d vfs_mknod +EXPORT_SYMBOL vmlinux 0x05ce146d simple_transaction_set +EXPORT_SYMBOL vmlinux 0x05d46f09 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x05d8ef1a sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05e089a2 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x05e8ab26 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x05ec2c2a simple_pin_fs +EXPORT_SYMBOL vmlinux 0x05f458ea tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x06136810 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0618f2ac of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0649be6f mmc_can_trim +EXPORT_SYMBOL vmlinux 0x065be89b mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x06607f92 dss_feat_get_supported_outputs +EXPORT_SYMBOL vmlinux 0x066247b8 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x066ab518 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x06783696 padata_start +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0687efe0 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x06ace462 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x06bf190f blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070e9ef2 d_obtain_root +EXPORT_SYMBOL vmlinux 0x071535a0 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x07166920 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x071fa03b __vfs_read +EXPORT_SYMBOL vmlinux 0x072a8f8d __set_fiq_regs +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073bce87 edma_write_slot +EXPORT_SYMBOL vmlinux 0x0750a0bf tty_do_resize +EXPORT_SYMBOL vmlinux 0x075285e9 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x076495d6 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x076c80b3 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x0777d001 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x07889389 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x07891b2c d_drop +EXPORT_SYMBOL vmlinux 0x078a0d9c netif_device_detach +EXPORT_SYMBOL vmlinux 0x0795fffa cad_pid +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07a98e9e blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x07aeb08c input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x07b8a384 release_firmware +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 0x07d915c0 dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL vmlinux 0x07ed1548 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x0821e53b snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08573597 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x088d2571 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x088e26f4 set_anon_super +EXPORT_SYMBOL vmlinux 0x08913ae4 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x089ac55b generic_file_fsync +EXPORT_SYMBOL vmlinux 0x08a050f7 vme_register_driver +EXPORT_SYMBOL vmlinux 0x08c7fe53 dump_page +EXPORT_SYMBOL vmlinux 0x08d9560c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08faa776 pci_disable_device +EXPORT_SYMBOL vmlinux 0x09015b13 lock_fb_info +EXPORT_SYMBOL vmlinux 0x09052195 ata_link_printk +EXPORT_SYMBOL vmlinux 0x09095cd3 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x0937092c bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x09386299 dquot_release +EXPORT_SYMBOL vmlinux 0x09491d8c pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096759ef km_is_alive +EXPORT_SYMBOL vmlinux 0x096cef86 __destroy_inode +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09c31599 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e3e4ee put_disk +EXPORT_SYMBOL vmlinux 0x09eb4858 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x0a0004c7 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x0a03db1e of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a1213a2 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2eb84d of_phy_attach +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a39312f kernel_listen +EXPORT_SYMBOL vmlinux 0x0a39c9e0 seq_vprintf +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a6306b7 pci_release_regions +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0ab33c59 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x0ac1d4fc simple_rename +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae4c8f3 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x0af7cbc6 d_instantiate +EXPORT_SYMBOL vmlinux 0x0b010fc0 tty_port_init +EXPORT_SYMBOL vmlinux 0x0b0a196a vme_irq_handler +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b14cd9b xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b57155e tegra_io_rail_power_off +EXPORT_SYMBOL vmlinux 0x0b6809ca snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x0b6ae30f blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8f7a00 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bcaf0c6 abort_creds +EXPORT_SYMBOL vmlinux 0x0bd27027 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x0bdd51fa devm_ioremap +EXPORT_SYMBOL vmlinux 0x0bfcd23d sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x0c0abcd9 bio_put +EXPORT_SYMBOL vmlinux 0x0c2afc81 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x0c3fcf85 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c4735f6 netdev_features_change +EXPORT_SYMBOL vmlinux 0x0c48a488 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c903533 ptp_clock_index +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 0x0cb48765 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x0cce5a6f sk_receive_skb +EXPORT_SYMBOL vmlinux 0x0cd65373 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x0cd6e696 unload_nls +EXPORT_SYMBOL vmlinux 0x0cd74909 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d072e70 unregister_netdev +EXPORT_SYMBOL vmlinux 0x0d0bcc05 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x0d0f1844 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x0d1018b9 omapdss_unregister_output +EXPORT_SYMBOL vmlinux 0x0d13a44b follow_down +EXPORT_SYMBOL vmlinux 0x0d1c347a key_task_permission +EXPORT_SYMBOL vmlinux 0x0d38e2a2 would_dump +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d42297b neigh_direct_output +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6df318 file_open_root +EXPORT_SYMBOL vmlinux 0x0d6e787e xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x0d91928a blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0ddeb147 dev_deactivate +EXPORT_SYMBOL vmlinux 0x0df48c94 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x0e0273fc snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0x0e08f2cc scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x0e3e67ec fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e9f586a free_user_ns +EXPORT_SYMBOL vmlinux 0x0ea3e5da inet6_add_offload +EXPORT_SYMBOL vmlinux 0x0ea770c8 snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed1e9e3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x0edd1c30 start_tty +EXPORT_SYMBOL vmlinux 0x0ef0ecbb i2c_release_client +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f31d186 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x0f381b9f inet_frag_find +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f66a517 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6eb2f2 omapdss_output_unset_device +EXPORT_SYMBOL vmlinux 0x0f702b0b ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x0f8dccc7 dquot_destroy +EXPORT_SYMBOL vmlinux 0x0f945831 md_reload_sb +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbc0058 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x0fd2bc22 setup_new_exec +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x102d38d2 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x1031888f mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x1059a080 mount_bdev +EXPORT_SYMBOL vmlinux 0x10605a40 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x1076f680 skb_trim +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x109c3e0b truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x10b0a296 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x10da859b tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x10df201a dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x10e040b1 get_disk +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11096863 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x110eeace put_cmsg +EXPORT_SYMBOL vmlinux 0x112748bd omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0x11300faf param_set_long +EXPORT_SYMBOL vmlinux 0x113e5bd1 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1168ca54 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x117051d9 dev_crit +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x117b57ab snd_card_register +EXPORT_SYMBOL vmlinux 0x117bbe91 blk_make_request +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x119e5913 bdi_destroy +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a617f3 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x11db53f6 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x11ecd608 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x1202bb3e xfrm_register_km +EXPORT_SYMBOL vmlinux 0x12097c54 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121aa83a elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x1225a9dd swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x12373ae2 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x1245a990 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x124cc6cd pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x126d70e7 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x127ac4f6 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x1292d428 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a3da15 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x12a8c416 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x12ab6264 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x12b229f9 kmap_high +EXPORT_SYMBOL vmlinux 0x12c861dc rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x12d0e5d1 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f3e4da md_flush_request +EXPORT_SYMBOL vmlinux 0x12f8ea0b unlock_page +EXPORT_SYMBOL vmlinux 0x12fb6177 __blk_end_request +EXPORT_SYMBOL vmlinux 0x131f8f38 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132c4b23 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x133528ec padata_free +EXPORT_SYMBOL vmlinux 0x13552d2c phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x13ac8f65 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1403c3f9 input_unregister_device +EXPORT_SYMBOL vmlinux 0x140e4247 simple_statfs +EXPORT_SYMBOL vmlinux 0x141291c5 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1430a87f snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0x144e4e99 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x146d6640 kill_anon_super +EXPORT_SYMBOL vmlinux 0x147ded1a tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x149d1e44 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x14b87cb5 init_special_inode +EXPORT_SYMBOL vmlinux 0x14c7dc2c mmc_can_erase +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14fed820 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0x151534c8 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x152178b3 file_remove_privs +EXPORT_SYMBOL vmlinux 0x152b1275 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x153edfc1 ip6_xmit +EXPORT_SYMBOL vmlinux 0x1546e043 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1560fa57 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x15687c11 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x156b429d kunmap_high +EXPORT_SYMBOL vmlinux 0x156e8300 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x158a46c5 elevator_change +EXPORT_SYMBOL vmlinux 0x15a6f62a elv_rb_add +EXPORT_SYMBOL vmlinux 0x15ad31e2 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x15b01aa6 free_task +EXPORT_SYMBOL vmlinux 0x15b15c61 set_create_files_as +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15e92a76 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x15ee8d6d bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x15eedf88 proto_register +EXPORT_SYMBOL vmlinux 0x15f3b952 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x16131d5b __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x164437f9 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x16443f57 force_sig +EXPORT_SYMBOL vmlinux 0x16539fda mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x1656eee2 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x165e4628 udp_add_offload +EXPORT_SYMBOL vmlinux 0x166521d0 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x16696022 alloc_disk +EXPORT_SYMBOL vmlinux 0x1673adb5 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16901153 phy_init_eee +EXPORT_SYMBOL vmlinux 0x16b6145d dquot_quota_on +EXPORT_SYMBOL vmlinux 0x16d24dbd dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x170f1e58 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x171ecdad genphy_resume +EXPORT_SYMBOL vmlinux 0x172edbe2 set_user_nice +EXPORT_SYMBOL vmlinux 0x17331c48 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x174478ab of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x174afb1a __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x17520ed2 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x1756c181 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0x175be30b inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x1776f0f7 unregister_console +EXPORT_SYMBOL vmlinux 0x177c09fe iget_locked +EXPORT_SYMBOL vmlinux 0x1784f057 dispc_ovl_set_fifo_threshold +EXPORT_SYMBOL vmlinux 0x17930909 generic_permission +EXPORT_SYMBOL vmlinux 0x17936a02 dentry_open +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b19e78 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x17ba8d4e ping_prot +EXPORT_SYMBOL vmlinux 0x17bd7315 empty_zero_page +EXPORT_SYMBOL vmlinux 0x17ce4531 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x17d2d0aa tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x17e2cf75 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x17f166a4 path_is_under +EXPORT_SYMBOL vmlinux 0x17f47dd7 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x17f7c4e5 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x181403e3 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x181e2990 arm_dma_zone_size +EXPORT_SYMBOL vmlinux 0x1820951a starget_for_each_device +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182baabd brioctl_set +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184a8fe4 simple_unlink +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x185c7634 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x18725686 skb_split +EXPORT_SYMBOL vmlinux 0x188954a7 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188cb2be call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189b8d9f shdma_chan_probe +EXPORT_SYMBOL vmlinux 0x189dbc72 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x189f8703 dentry_update_name_case +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 0x18c6003f snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x18d59b07 generic_make_request +EXPORT_SYMBOL vmlinux 0x18e4d52c do_truncate +EXPORT_SYMBOL vmlinux 0x18e5a25f iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x18f2b5d1 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x19025aa5 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x192828fe max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x195d0db1 console_stop +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x196b4444 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x19747de4 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x1985a6db mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x1993f105 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x199a4963 __register_binfmt +EXPORT_SYMBOL vmlinux 0x199cf191 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b81d1f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c5d604 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x19d616fc unlock_buffer +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x1a158e14 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x1a16a440 amba_request_regions +EXPORT_SYMBOL vmlinux 0x1a20c540 omap_vrfb_supported +EXPORT_SYMBOL vmlinux 0x1a549f29 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a58f526 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a69ca5d get_io_context +EXPORT_SYMBOL vmlinux 0x1a7a9d39 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x1a9a02b8 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x1a9ff732 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x1ad15044 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1adb8c2a iov_iter_zero +EXPORT_SYMBOL vmlinux 0x1ae68508 amba_release_regions +EXPORT_SYMBOL vmlinux 0x1ae90536 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1ae9e04d page_waitqueue +EXPORT_SYMBOL vmlinux 0x1af38026 free_buffer_head +EXPORT_SYMBOL vmlinux 0x1afe769a skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b03e10e inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x1b045364 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b2d6d2c qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0x1b3b2ea2 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x1b581e31 __lock_page +EXPORT_SYMBOL vmlinux 0x1b6309d1 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b65cb80 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x1b67672a blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x1b78d23a kill_litter_super +EXPORT_SYMBOL vmlinux 0x1b81edbf tty_kref_put +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b887fa1 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x1bb26a60 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bd64aa7 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x1bedfd00 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0x1bef3f9e do_map_probe +EXPORT_SYMBOL vmlinux 0x1c0d5a82 unlock_rename +EXPORT_SYMBOL vmlinux 0x1c27a474 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x1c2af6c9 led_blink_set +EXPORT_SYMBOL vmlinux 0x1c3fd68f dm_put_device +EXPORT_SYMBOL vmlinux 0x1c59c241 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c6588b9 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x1c6f9062 write_cache_pages +EXPORT_SYMBOL vmlinux 0x1c74e751 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x1c7f8a3f udp_disconnect +EXPORT_SYMBOL vmlinux 0x1c8a0934 vm_map_ram +EXPORT_SYMBOL vmlinux 0x1c9531df current_fs_time +EXPORT_SYMBOL vmlinux 0x1ca20abd update_devfreq +EXPORT_SYMBOL vmlinux 0x1cb30b41 __get_user_pages +EXPORT_SYMBOL vmlinux 0x1ce07b3a ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x1ce1d52a snd_timer_new +EXPORT_SYMBOL vmlinux 0x1ce21823 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1cfdd01c security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d0c35ae __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x1d0db8a8 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x1d3a4534 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1d4f475b __quota_error +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d5e096c tty_port_close_end +EXPORT_SYMBOL vmlinux 0x1d68f34c get_acl +EXPORT_SYMBOL vmlinux 0x1d6ecaf0 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x1d832391 d_rehash +EXPORT_SYMBOL vmlinux 0x1da2888a tcp_try_fastopen +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 0x1dd30b62 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd86e8a file_update_time +EXPORT_SYMBOL vmlinux 0x1e004687 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x1e03583e pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e07398f up_write +EXPORT_SYMBOL vmlinux 0x1e17572e filp_close +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6f89b0 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x1e7bf4f8 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x1e932da6 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea35fdb security_inode_readlink +EXPORT_SYMBOL vmlinux 0x1ec0651a input_unregister_handler +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1eed8140 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x1ef7aea2 inet_add_offload +EXPORT_SYMBOL vmlinux 0x1f157a1e iget_failed +EXPORT_SYMBOL vmlinux 0x1f5e37c3 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x1f62a7d7 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x1f6bbd93 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x1f6e65b5 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x1f78fe7e jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x1f7c3289 redraw_screen +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc01399 __mutex_init +EXPORT_SYMBOL vmlinux 0x1fcef789 sock_i_ino +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1ff4bc5a generic_writepages +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201dee29 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x20701adb dev_addr_del +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20885bcc md_error +EXPORT_SYMBOL vmlinux 0x209afe6e __invalidate_device +EXPORT_SYMBOL vmlinux 0x209b3a8d vfs_readv +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20b9593a pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d14e72 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x20e8133c udp_poll +EXPORT_SYMBOL vmlinux 0x20fb0670 rwsem_wake +EXPORT_SYMBOL vmlinux 0x20fba223 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x21055720 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x213a2eb5 km_new_mapping +EXPORT_SYMBOL vmlinux 0x2143123a sg_miter_next +EXPORT_SYMBOL vmlinux 0x21471c3a scsi_device_get +EXPORT_SYMBOL vmlinux 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x215f6292 sock_create_kern +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x21707fba __frontswap_store +EXPORT_SYMBOL vmlinux 0x21807bce security_task_getsecid +EXPORT_SYMBOL vmlinux 0x2198c13d param_get_ushort +EXPORT_SYMBOL vmlinux 0x21a832e3 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x21c61bcf padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x21d756dc netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x21d9969d up_read +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f7eb8f claim_fiq +EXPORT_SYMBOL vmlinux 0x2224a521 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x222df6e0 crypto_sha256_finup +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 0x2275fe79 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2277d558 mx53_revision +EXPORT_SYMBOL vmlinux 0x22830711 edma_clear_event +EXPORT_SYMBOL vmlinux 0x22975c1c generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x22a3d7c3 should_remove_suid +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x22ff9104 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0x23088218 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2330a43b tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x2355664c __sb_start_write +EXPORT_SYMBOL vmlinux 0x23580a5f pci_save_state +EXPORT_SYMBOL vmlinux 0x2359888b __dst_free +EXPORT_SYMBOL vmlinux 0x23726702 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23b2683d dev_uc_init +EXPORT_SYMBOL vmlinux 0x23b55985 pci_restore_state +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23db8551 pci_iounmap +EXPORT_SYMBOL vmlinux 0x23df324d __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2407bcd3 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x240b2097 dqput +EXPORT_SYMBOL vmlinux 0x240bd474 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2452fea0 dev_addr_init +EXPORT_SYMBOL vmlinux 0x24537536 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x246aba34 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x246e0575 from_kgid +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24aeabbd inet_addr_type +EXPORT_SYMBOL vmlinux 0x24f9064d security_path_rmdir +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x251dbfa1 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x2522143c pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2527a087 vme_slave_set +EXPORT_SYMBOL vmlinux 0x253813ed dev_uc_add +EXPORT_SYMBOL vmlinux 0x2539ed3a of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x2543f046 security_sb_clone_mnt_opts +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 0x25aa4668 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x25ae9ea4 dev_add_offload +EXPORT_SYMBOL vmlinux 0x25ba59bd km_policy_expired +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x261d315e __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c5bcf phy_device_free +EXPORT_SYMBOL vmlinux 0x2646c83e inet_recvmsg +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2655d3c1 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x266db492 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x2670820d dev_mc_init +EXPORT_SYMBOL vmlinux 0x2676db20 open_exec +EXPORT_SYMBOL vmlinux 0x2688a52a dqget +EXPORT_SYMBOL vmlinux 0x268ec8e5 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x26a2fc3b amba_device_register +EXPORT_SYMBOL vmlinux 0x26a8f72f nf_setsockopt +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c2128c lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x26c9ec38 check_disk_change +EXPORT_SYMBOL vmlinux 0x26ce9f02 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x27388d34 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x273b2c0e phy_connect_direct +EXPORT_SYMBOL vmlinux 0x273c3892 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x274799a7 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x2798b9f3 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a40e66 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x27b80971 mdiobus_free +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27ddcaa0 dev_load +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e6014c of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x27f4def6 load_nls +EXPORT_SYMBOL vmlinux 0x281166b1 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x28177ccf twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2821235a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x2836062f blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x283c3f06 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x285041af release_sock +EXPORT_SYMBOL vmlinux 0x28885708 __neigh_create +EXPORT_SYMBOL vmlinux 0x2889292f skb_free_datagram +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a6557e mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x28a7b8c9 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x28c75fc9 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x28c75fed jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28edcb0b dquot_disable +EXPORT_SYMBOL vmlinux 0x28f4378d param_set_invbool +EXPORT_SYMBOL vmlinux 0x28f59bf8 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x2901ad2e tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x290e3226 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x290e40af scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x29231e12 ps2_end_command +EXPORT_SYMBOL vmlinux 0x292e0e2a dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x2930c842 tty_mutex +EXPORT_SYMBOL vmlinux 0x29311901 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295f636d omapdss_register_output +EXPORT_SYMBOL vmlinux 0x296ca14a __napi_schedule +EXPORT_SYMBOL vmlinux 0x297c96e4 __init_rwsem +EXPORT_SYMBOL vmlinux 0x297e92c5 dma_find_channel +EXPORT_SYMBOL vmlinux 0x29c8e68f seq_path +EXPORT_SYMBOL vmlinux 0x29e1b020 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x29fc4273 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a57791e devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a80d353 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0x2a81cecd d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x2a89e8fb __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x2a906795 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab96873 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x2abb7ad5 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x2abcd761 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x2abdac80 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad246db blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x2afe4ceb inet_stream_ops +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b114257 nobh_writepage +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b24c980 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x2b2571b5 msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0x2b2a3cc3 con_is_bound +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b348b9a vfs_link +EXPORT_SYMBOL vmlinux 0x2b40ee0d blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x2b42f1a6 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x2b43372b snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b51eac7 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x2b5d0fa7 read_cache_page +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba1062b tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc81a85 km_state_expired +EXPORT_SYMBOL vmlinux 0x2bc887da ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2be379f8 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x2be3c9b2 kern_path_create +EXPORT_SYMBOL vmlinux 0x2be7f6e1 elevator_init +EXPORT_SYMBOL vmlinux 0x2bea0fdf notify_change +EXPORT_SYMBOL vmlinux 0x2c1136fd sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c91194a iterate_mounts +EXPORT_SYMBOL vmlinux 0x2c92e09a jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x2c9732f8 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x2c988955 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x2cb29a04 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x2cb7930b param_ops_int +EXPORT_SYMBOL vmlinux 0x2cb889a7 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x2cbf1b49 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x2cc19bdb pci_enable_msix +EXPORT_SYMBOL vmlinux 0x2cceee1e adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x2cd5c706 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x2d03c470 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1a23e2 inet_frags_init +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d588917 bio_phys_segments +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 0x2d834cc3 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x2d8d5b64 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x2d8df2a1 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x2d962c1e input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2de46f9f drop_nlink +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dee756e of_device_register +EXPORT_SYMBOL vmlinux 0x2e0b47b6 param_get_bool +EXPORT_SYMBOL vmlinux 0x2e0ea14c find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2d05dd cfb_copyarea +EXPORT_SYMBOL vmlinux 0x2e36fb7c bio_split +EXPORT_SYMBOL vmlinux 0x2e3e7c79 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x2e3ea883 cont_write_begin +EXPORT_SYMBOL vmlinux 0x2e3f8175 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e5e4407 phy_driver_register +EXPORT_SYMBOL vmlinux 0x2e84de8f devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x2ea1d6d2 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x2ea786d5 proc_set_size +EXPORT_SYMBOL vmlinux 0x2eabdd42 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2eca893d mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x2ecd441b fence_free +EXPORT_SYMBOL vmlinux 0x2edbeb15 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x2ee1d13f single_release +EXPORT_SYMBOL vmlinux 0x2eec9588 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f029608 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0559b2 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x2f0a72e6 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x2f2ea6b9 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x2f3c69a5 misc_register +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f473280 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x2f4e8cea kernel_read +EXPORT_SYMBOL vmlinux 0x2f552570 security_path_truncate +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f65d8d9 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x2f827634 i2c_transfer +EXPORT_SYMBOL vmlinux 0x2f923095 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x2f94fd7d tcf_exts_change +EXPORT_SYMBOL vmlinux 0x2f9bdcc6 user_revoke +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fca79b6 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x2fd4326f sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ffc0698 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x302e1ab3 simple_write_begin +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x305ec472 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x30689447 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL vmlinux 0x3086caf2 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x308aad56 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x3099cadd ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x3099f537 pci_request_region +EXPORT_SYMBOL vmlinux 0x309f4ae7 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30cb5f1a __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x30d39f44 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x30db38a4 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3101d3a7 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x31265563 seq_open +EXPORT_SYMBOL vmlinux 0x312f4462 register_md_personality +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x31368dcf __put_cred +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315129ed vga_get +EXPORT_SYMBOL vmlinux 0x31566756 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x316037d4 dev_change_flags +EXPORT_SYMBOL vmlinux 0x31683780 kset_unregister +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31805f80 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x318db7c2 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f69176 clear_nlink +EXPORT_SYMBOL vmlinux 0x320ad46f set_wb_congested +EXPORT_SYMBOL vmlinux 0x320f8d90 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x321f70d8 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x3236f274 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x32504364 input_register_device +EXPORT_SYMBOL vmlinux 0x325b2638 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x325f0ef6 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x327ea658 bio_advance +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32907b91 idr_remove +EXPORT_SYMBOL vmlinux 0x32fa4ac1 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x3301ee6a kernel_accept +EXPORT_SYMBOL vmlinux 0x3305a49f proc_create_data +EXPORT_SYMBOL vmlinux 0x3316845e idr_get_next +EXPORT_SYMBOL vmlinux 0x3329b57b kobject_add +EXPORT_SYMBOL vmlinux 0x332e9a66 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x332f1889 seq_release_private +EXPORT_SYMBOL vmlinux 0x3330a47d gen_pool_free +EXPORT_SYMBOL vmlinux 0x33494942 pci_choose_state +EXPORT_SYMBOL vmlinux 0x3362d5ac bdgrab +EXPORT_SYMBOL vmlinux 0x33762f63 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x33820b27 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x338229ac page_symlink +EXPORT_SYMBOL vmlinux 0x338eac5e invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x33a3c040 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x33bce4cb ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d1f106 netif_skb_features +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e10223 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x33e4b8f9 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x33e8bc72 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x33ebfaad down_write_trylock +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341d80c9 sound_class +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x341e82b8 __devm_request_region +EXPORT_SYMBOL vmlinux 0x34240d20 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x3440c9c2 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x344b8b63 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3470a473 snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349ccef0 __frontswap_load +EXPORT_SYMBOL vmlinux 0x34acb58a dev_change_carrier +EXPORT_SYMBOL vmlinux 0x34b7cff3 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x34c36b8d __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x34de6b22 dcb_getapp +EXPORT_SYMBOL vmlinux 0x34de716a eth_header +EXPORT_SYMBOL vmlinux 0x34e28065 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f4058d t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x3500d3b0 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x35040ce5 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353894e1 mount_ns +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x354faf7a tcf_hash_search +EXPORT_SYMBOL vmlinux 0x355f0c56 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x357bfb44 kobject_init +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35aaf3cb xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x35b56085 dcache_readdir +EXPORT_SYMBOL vmlinux 0x35c3f96f blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x35ccb5ce ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x35e55a61 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x3613d3a1 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x3614b8f2 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x361c4940 wake_up_process +EXPORT_SYMBOL vmlinux 0x361c64af xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x363a1f7c dev_open +EXPORT_SYMBOL vmlinux 0x364478b8 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x364ce22b scm_detach_fds +EXPORT_SYMBOL vmlinux 0x3658e60c __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x36627408 dev_activate +EXPORT_SYMBOL vmlinux 0x36710f61 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x3678361b lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x367e09b5 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x3680623b dss_mgr_connect +EXPORT_SYMBOL vmlinux 0x36898947 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x3697a6d4 kunmap +EXPORT_SYMBOL vmlinux 0x36a5b601 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36db43f8 key_alloc +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x371ccb76 netdev_update_features +EXPORT_SYMBOL vmlinux 0x37250841 map_destroy +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3775c64c devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x377c8a9e cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x37811d72 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x3789bd29 simple_lookup +EXPORT_SYMBOL vmlinux 0x378e869c dev_printk_emit +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x379bee53 mutex_lock +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37a02fa9 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f26be3 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37fa0e1e forget_cached_acl +EXPORT_SYMBOL vmlinux 0x37fc0060 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x380f36ed uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ceaab cdrom_check_events +EXPORT_SYMBOL vmlinux 0x3826a928 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x383bf381 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x38445d82 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x384ce2d4 d_invalidate +EXPORT_SYMBOL vmlinux 0x385dc4bb md_finish_reshape +EXPORT_SYMBOL vmlinux 0x386386b6 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388cff5f elv_register_queue +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 0x38c136ae input_free_device +EXPORT_SYMBOL vmlinux 0x38e4e822 fb_get_mode +EXPORT_SYMBOL vmlinux 0x38f8b2b3 phy_resume +EXPORT_SYMBOL vmlinux 0x38fe16b2 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x39043304 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x391f9155 sk_stream_error +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x3924e051 read_dev_sector +EXPORT_SYMBOL vmlinux 0x392af433 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3965e7fc sock_setsockopt +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39730d06 atomic_io_modify +EXPORT_SYMBOL vmlinux 0x3991b9dd fb_set_var +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399c6506 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x39af7bd6 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bb18cd ppp_input +EXPORT_SYMBOL vmlinux 0x39bc1e90 inet_shutdown +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39c2ef19 datagram_poll +EXPORT_SYMBOL vmlinux 0x39f25c75 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x3a18843a tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a29bf34 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x3a4b2208 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x3a4b814b inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x3a5ec071 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x3a62eca1 read_cache_pages +EXPORT_SYMBOL vmlinux 0x3a91f71d __alloc_skb +EXPORT_SYMBOL vmlinux 0x3a997058 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3abb26b0 ioremap_wc +EXPORT_SYMBOL vmlinux 0x3aeee7f5 module_put +EXPORT_SYMBOL vmlinux 0x3b0ea799 dss_mgr_register_framedone_handler +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b95ae66 backlight_device_register +EXPORT_SYMBOL vmlinux 0x3ba056a5 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x3bb4231e dev_remove_pack +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bc8c5a6 pci_dev_get +EXPORT_SYMBOL vmlinux 0x3c084081 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x3c1d25c6 fb_class +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c6021f9 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3cbea903 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x3cc3d636 of_node_put +EXPORT_SYMBOL vmlinux 0x3cc47c82 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x3cd07d2a kern_path +EXPORT_SYMBOL vmlinux 0x3cd0f6e3 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x3cd9a906 param_set_bint +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d06c512 account_page_redirty +EXPORT_SYMBOL vmlinux 0x3d09e771 vfs_statfs +EXPORT_SYMBOL vmlinux 0x3d30409d iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x3d35cf47 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d52328f tty_lock +EXPORT_SYMBOL vmlinux 0x3d62b843 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x3d850363 i2c_master_send +EXPORT_SYMBOL vmlinux 0x3d85fbb0 block_truncate_page +EXPORT_SYMBOL vmlinux 0x3d8afbcc param_set_int +EXPORT_SYMBOL vmlinux 0x3d8d1c6f tty_port_close_start +EXPORT_SYMBOL vmlinux 0x3d9e587e cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x3daf74d1 param_get_long +EXPORT_SYMBOL vmlinux 0x3dc32427 of_find_property +EXPORT_SYMBOL vmlinux 0x3dc7dd21 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e13c89e ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x3e296160 param_set_bool +EXPORT_SYMBOL vmlinux 0x3e432c45 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x3e5784df grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x3e5ac035 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x3e827eb6 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x3e86f334 release_pages +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e92dc79 udp_prot +EXPORT_SYMBOL vmlinux 0x3e9e951c touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x3ec8a186 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x3ed07c25 do_splice_direct +EXPORT_SYMBOL vmlinux 0x3ed2d9c6 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x3edc3d06 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x3ee5f3cd phy_print_status +EXPORT_SYMBOL vmlinux 0x3eecf7d4 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x3ef6d910 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x3f02a571 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3f35505e sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x3f3db337 blkdev_get_by_path +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 0x3f62c3d5 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x3f67da52 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x3f6b7f8c noop_fsync +EXPORT_SYMBOL vmlinux 0x3f8c37cf registered_fb +EXPORT_SYMBOL vmlinux 0x3f944671 generic_file_open +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fb27e35 bio_add_page +EXPORT_SYMBOL vmlinux 0x3fba369b tso_build_data +EXPORT_SYMBOL vmlinux 0x3fe983c5 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x3ff8af21 blk_complete_request +EXPORT_SYMBOL vmlinux 0x40026125 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4058deb2 tcp_get_md5sig_pool +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 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a6026b blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad3abc neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x40b5f906 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40cf628c snd_ctl_register_ioctl +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 0x41117285 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x411d6d54 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x413b4cf0 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41517d13 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x4154f813 f_setown +EXPORT_SYMBOL vmlinux 0x415fd9e6 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x417842fd __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x4181fac1 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x418251d2 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x419f11fd gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x41a08edc kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x41b40353 __register_nls +EXPORT_SYMBOL vmlinux 0x41ba0063 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x41cbe3d7 inet_release +EXPORT_SYMBOL vmlinux 0x41d0bb57 is_bad_inode +EXPORT_SYMBOL vmlinux 0x41d81f7c bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x41e81ec9 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x41f4fbe8 dev_mc_del +EXPORT_SYMBOL vmlinux 0x4208b11a pci_bus_get +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x423d81ed ida_pre_get +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4251757e blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x42518e05 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x429be6d3 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a3223b mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x42a6ea39 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x42a8ebd4 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x42b6b475 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x42b95b9a generic_file_mmap +EXPORT_SYMBOL vmlinux 0x42bac4b2 dss_mgr_disable +EXPORT_SYMBOL vmlinux 0x42bb90ef tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x42de074e read_code +EXPORT_SYMBOL vmlinux 0x42fb48be scm_fp_dup +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430b4342 d_find_alias +EXPORT_SYMBOL vmlinux 0x432216f4 cdrom_open +EXPORT_SYMBOL vmlinux 0x43233b43 param_set_copystring +EXPORT_SYMBOL vmlinux 0x432c30f2 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4352c1ef scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43869d6d seq_escape +EXPORT_SYMBOL vmlinux 0x43c678df blkdev_get +EXPORT_SYMBOL vmlinux 0x43c6a833 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x43d2624e __kernel_write +EXPORT_SYMBOL vmlinux 0x43e78e11 param_get_int +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f655b5 skb_insert +EXPORT_SYMBOL vmlinux 0x44009a85 skb_push +EXPORT_SYMBOL vmlinux 0x4401bfe4 fb_firmware_edid +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 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x445c0d42 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4477aead sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x44a728ea snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0x44adb3c0 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44c91481 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x44d64aee __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x45039015 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x4505e833 ppp_input_error +EXPORT_SYMBOL vmlinux 0x45180055 down_read_trylock +EXPORT_SYMBOL vmlinux 0x453be9aa insert_inode_locked +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45901063 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x459c4882 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x45a39148 fasync_helper +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a7743e generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x45b89000 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x45bb42af skb_unlink +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c2f611 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x45d03d8e dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x45d668b5 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x45eacf37 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x45f4e775 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x46284457 phy_stop +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46370b2a pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x463981ff sock_edemux +EXPORT_SYMBOL vmlinux 0x46399fe1 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x4654a777 register_filesystem +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 0x467abcb8 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x46ca68be genphy_read_status +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x46ff0d54 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x47247587 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475209b0 rtnl_notify +EXPORT_SYMBOL vmlinux 0x47697251 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x476bc0e5 dcb_setapp +EXPORT_SYMBOL vmlinux 0x477ee673 of_dev_put +EXPORT_SYMBOL vmlinux 0x478a5e46 elevator_alloc +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479b9a41 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x479cb841 snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x47aa532d vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x47af2639 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x47b3fd22 nf_register_hook +EXPORT_SYMBOL vmlinux 0x47bf8db3 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x47c151bc block_commit_write +EXPORT_SYMBOL vmlinux 0x47c2820c jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x47d5359e inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x480f9ba6 kthread_stop +EXPORT_SYMBOL vmlinux 0x4810b046 scsi_add_device +EXPORT_SYMBOL vmlinux 0x4817de6b snd_timer_start +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485a1619 generic_read_dir +EXPORT_SYMBOL vmlinux 0x4871c6c2 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x489602d1 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x489ec2b3 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c2d8af abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x48c6bee6 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x48cbf175 msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x48d136ab generic_setxattr +EXPORT_SYMBOL vmlinux 0x48f08a51 kill_pgrp +EXPORT_SYMBOL vmlinux 0x48f4714e blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x48fd31b8 tcp_connect +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490e9f33 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x4944939e truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x495f26ce inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496f5dd3 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x49824429 param_ops_byte +EXPORT_SYMBOL vmlinux 0x49984c60 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b82850 filp_open +EXPORT_SYMBOL vmlinux 0x49caeccd pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x49db989b generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a0334d6 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x4a07da14 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x4a174a26 napi_get_frags +EXPORT_SYMBOL vmlinux 0x4a28274e mapping_tagged +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a4b895f simple_rmdir +EXPORT_SYMBOL vmlinux 0x4a4dd623 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a620c5c jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x4a745f30 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x4a893c9d skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x4a8ac4fa input_set_capability +EXPORT_SYMBOL vmlinux 0x4a8e3877 tc_classify +EXPORT_SYMBOL vmlinux 0x4aae9cce tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x4ab8b802 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2e0a48 fs_bio_set +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b4d989e pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b78933c qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0x4b924d41 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x4ba39550 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x4ba7b052 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bcc4841 bio_copy_data +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd0acd7 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x4bdf6a8f generic_perform_write +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf87a20 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x4c036c62 invalidate_partition +EXPORT_SYMBOL vmlinux 0x4c233a44 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2b376e inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x4c2b3fb6 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x4c33081d omapdss_compat_uninit +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c48bda3 flow_cache_init +EXPORT_SYMBOL vmlinux 0x4c4eb582 soft_cursor +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c6eb37e snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4ca84b7f tcp_close +EXPORT_SYMBOL vmlinux 0x4cb4d619 kobject_set_name +EXPORT_SYMBOL vmlinux 0x4cb9dff6 request_firmware +EXPORT_SYMBOL vmlinux 0x4cbdce40 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x4cc2854d tegra114_clock_assert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0x4cd53041 fb_pan_display +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cfef306 skb_put +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d0fe019 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x4d1f7f09 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x4d1fe5ac bdput +EXPORT_SYMBOL vmlinux 0x4d250b71 vfs_unlink +EXPORT_SYMBOL vmlinux 0x4d287962 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x4d3ac3b6 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d4e19a4 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x4d632622 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x4d83b295 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4d874b2c xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x4d89e040 of_phy_connect +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4dace553 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x4db323f1 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x4ddca9fa __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e0a07b4 file_path +EXPORT_SYMBOL vmlinux 0x4e28ebe7 copy_to_iter +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3f7f92 pps_register_source +EXPORT_SYMBOL vmlinux 0x4e4ee118 mmc_start_req +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e703763 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x4e743ba5 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x4e7e0c50 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x4e8a21bb put_page +EXPORT_SYMBOL vmlinux 0x4e8aeef9 pwmss_submodule_state_change +EXPORT_SYMBOL vmlinux 0x4e92188c netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x4e98eab5 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x4e9ce9f9 edma_link +EXPORT_SYMBOL vmlinux 0x4ea3973e nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x4eb15202 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x4eb59ff3 inet_bind +EXPORT_SYMBOL vmlinux 0x4eb9946d dev_driver_string +EXPORT_SYMBOL vmlinux 0x4ef3a035 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x4f0461ad inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x4f199273 mutex_unlock +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f221b2a seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f291061 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x4f37361d xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f534070 of_clk_get +EXPORT_SYMBOL vmlinux 0x4f587f95 cdev_init +EXPORT_SYMBOL vmlinux 0x4f6462a0 dev_mc_sync_multiple +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 0x4f9174b0 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x4f9d6066 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x4f9f3354 security_path_chmod +EXPORT_SYMBOL vmlinux 0x4fd7d67d mmc_can_discard +EXPORT_SYMBOL vmlinux 0x4fed4e48 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x4fef75cc omap_dss_find_output_by_port_node +EXPORT_SYMBOL vmlinux 0x4ff0c786 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x5003402d skb_checksum +EXPORT_SYMBOL vmlinux 0x5006ba59 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500a9f53 neigh_xmit +EXPORT_SYMBOL vmlinux 0x502595dd i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x50381253 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x504d46a5 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x5057f216 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x50592014 vfs_readf +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x50971fbb dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50b97135 tty_set_operations +EXPORT_SYMBOL vmlinux 0x50be6517 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x50d25c23 __free_pages +EXPORT_SYMBOL vmlinux 0x50d5612e dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e01cf4 sock_no_listen +EXPORT_SYMBOL vmlinux 0x50e46e26 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x50f53fd9 nf_log_trace +EXPORT_SYMBOL vmlinux 0x5117013f inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511d95a4 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x513d5d52 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x513ff375 nf_afinfo +EXPORT_SYMBOL vmlinux 0x51577489 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x516d9735 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x517791d7 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x517b062b jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x51802a7f find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x5193d892 clone_cred +EXPORT_SYMBOL vmlinux 0x5197ed59 truncate_inode_pages_range +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 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5234898c __ps2_command +EXPORT_SYMBOL vmlinux 0x523b4559 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524499e8 sock_create_lite +EXPORT_SYMBOL vmlinux 0x526cb29f dentry_path_raw +EXPORT_SYMBOL vmlinux 0x526d7d75 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x527acf03 block_write_full_page +EXPORT_SYMBOL vmlinux 0x5289d3e9 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x528c3767 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d0c14 idr_init +EXPORT_SYMBOL vmlinux 0x529c2ce8 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x52a65c99 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52bb841c atomic_io_modify_relaxed +EXPORT_SYMBOL vmlinux 0x52e02d75 edma_filter_fn +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52ec5c63 try_to_release_page +EXPORT_SYMBOL vmlinux 0x52fe08ca of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530d64f0 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x53223a2c __genl_register_family +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5358aaa2 eth_header_parse +EXPORT_SYMBOL vmlinux 0x535c6661 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536126e8 input_reset_device +EXPORT_SYMBOL vmlinux 0x5371e8ea __frontswap_test +EXPORT_SYMBOL vmlinux 0x5381ebf0 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x538827cc devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x539fdb6f from_kprojid +EXPORT_SYMBOL vmlinux 0x53c2d67f wait_iff_congested +EXPORT_SYMBOL vmlinux 0x53c6d818 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x53d5247f km_query +EXPORT_SYMBOL vmlinux 0x54014a2b snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540b659c locks_remove_posix +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54433497 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x54453f7d mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x544d469a snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x545ebd37 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x5469462d tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x546ff765 snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x547ce898 dispc_read_irqenable +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c59e63 d_splice_alias +EXPORT_SYMBOL vmlinux 0x54c7f5b6 blk_put_queue +EXPORT_SYMBOL vmlinux 0x54cab22a __pci_register_driver +EXPORT_SYMBOL vmlinux 0x54e374db devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54e7c05e netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x54ebf142 neigh_update +EXPORT_SYMBOL vmlinux 0x54f62989 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x54f6830a omapdss_get_default_display_name +EXPORT_SYMBOL vmlinux 0x55115471 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552a872b vfs_iter_write +EXPORT_SYMBOL vmlinux 0x553cf967 vme_master_request +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5547d367 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x5558c189 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x556649ac dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x557ab5e9 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x5595347e pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x559ac4ea xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x55a5809f tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x55ba1a70 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x55c07654 ptp_find_pin +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f10521 get_user_pages +EXPORT_SYMBOL vmlinux 0x55f7a8b2 input_inject_event +EXPORT_SYMBOL vmlinux 0x560147fd edma_unlink +EXPORT_SYMBOL vmlinux 0x5616a712 drop_super +EXPORT_SYMBOL vmlinux 0x561a9bf3 fget +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x563bd988 vga_tryget +EXPORT_SYMBOL vmlinux 0x5640f2ba nlmsg_notify +EXPORT_SYMBOL vmlinux 0x565216bf udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x565857ae led_set_brightness +EXPORT_SYMBOL vmlinux 0x565e58e0 netif_napi_add +EXPORT_SYMBOL vmlinux 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL vmlinux 0x568b66c6 register_quota_format +EXPORT_SYMBOL vmlinux 0x56a984f6 component_match_add +EXPORT_SYMBOL vmlinux 0x56bc2f15 dispc_ovl_set_channel_out +EXPORT_SYMBOL vmlinux 0x56c85ea8 snd_card_new +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56ceebfd poll_initwait +EXPORT_SYMBOL vmlinux 0x56f166f3 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x5719655f ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x5721a59c scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x57284177 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x572e075e md_check_recovery +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5739e499 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574e1d86 blk_start_request +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5788389c scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x57a59f9b ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x57b04028 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x57bc8068 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x57d89276 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x57e3fe1a simple_write_end +EXPORT_SYMBOL vmlinux 0x57e61da4 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x57ed4c2e dev_emerg +EXPORT_SYMBOL vmlinux 0x57eea19c register_qdisc +EXPORT_SYMBOL vmlinux 0x581db390 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583e6b70 udp_proc_register +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x5854f9b6 may_umount +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5877ab6b netdev_crit +EXPORT_SYMBOL vmlinux 0x58880bf7 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x58ac111d netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c25516 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x58d54612 vfs_setpos +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58ffcec2 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x59078e25 simple_readpage +EXPORT_SYMBOL vmlinux 0x5911696a napi_complete_done +EXPORT_SYMBOL vmlinux 0x5918221f tcp_seq_open +EXPORT_SYMBOL vmlinux 0x593ac1d2 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x593bd11e vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x593e04c0 snd_timer_pause +EXPORT_SYMBOL vmlinux 0x5941ae98 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x5945b7af dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x596b2ccc mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x596cec24 of_get_parent +EXPORT_SYMBOL vmlinux 0x596d7be3 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x59797859 neigh_lookup +EXPORT_SYMBOL vmlinux 0x597ec4d3 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x597f4845 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x598ea5f8 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x598fb610 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x5990a387 kernel_bind +EXPORT_SYMBOL vmlinux 0x59a17bfc tegra114_clock_tune_cpu_trimmers_high +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59cb78e4 elv_rb_former_request +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 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x5a0455eb generic_update_time +EXPORT_SYMBOL vmlinux 0x5a0789c2 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a116cfb dump_emit +EXPORT_SYMBOL vmlinux 0x5a3b5a50 write_inode_now +EXPORT_SYMBOL vmlinux 0x5a4281a9 netlink_unicast +EXPORT_SYMBOL vmlinux 0x5a505b01 inet6_offloads +EXPORT_SYMBOL vmlinux 0x5a520f4b snd_jack_report +EXPORT_SYMBOL vmlinux 0x5a57620c copy_from_iter +EXPORT_SYMBOL vmlinux 0x5a580780 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x5a59ba38 __scm_send +EXPORT_SYMBOL vmlinux 0x5a929d5f __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x5a9e2f54 path_nosuid +EXPORT_SYMBOL vmlinux 0x5abd4817 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x5add9567 send_sig_info +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5aeed6ee of_device_alloc +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b04be5a disable_fiq +EXPORT_SYMBOL vmlinux 0x5b148a3d ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b581bc1 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x5b6738e9 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x5b6c0853 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x5b752c2e tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x5bb9daec __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5bf31600 param_ops_bint +EXPORT_SYMBOL vmlinux 0x5c0c1221 tso_start +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c3e3ed9 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x5c7043c8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x5c721399 dm_register_target +EXPORT_SYMBOL vmlinux 0x5c723e62 igrab +EXPORT_SYMBOL vmlinux 0x5c8fe014 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x5c90e6bf kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cbf4a91 netdev_emerg +EXPORT_SYMBOL vmlinux 0x5cc6c152 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x5ccc9689 bdevname +EXPORT_SYMBOL vmlinux 0x5ce85848 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x5ce8afee genphy_suspend +EXPORT_SYMBOL vmlinux 0x5cf49856 d_make_root +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d37c7f3 simple_empty +EXPORT_SYMBOL vmlinux 0x5d51f112 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d59efed write_one_page +EXPORT_SYMBOL vmlinux 0x5d83b007 inet6_bind +EXPORT_SYMBOL vmlinux 0x5d8fb236 sock_no_accept +EXPORT_SYMBOL vmlinux 0x5d97a21a blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x5da4e46f kernel_connect +EXPORT_SYMBOL vmlinux 0x5da801ca key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x5da870cf __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x5dcc60ea ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x5dcf6341 outer_cache +EXPORT_SYMBOL vmlinux 0x5de5c52b snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x5dfae17b tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x5dfcc033 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x5e3c8d86 truncate_setsize +EXPORT_SYMBOL vmlinux 0x5e435bcd revert_creds +EXPORT_SYMBOL vmlinux 0x5e58abd1 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x5e655b28 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x5e729ce7 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e7f86e0 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb5ba98 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x5ec50fb1 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x5eceda15 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed2ee81 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x5ee2d4d6 generic_listxattr +EXPORT_SYMBOL vmlinux 0x5ee8df1c __serio_register_driver +EXPORT_SYMBOL vmlinux 0x5efaa8a4 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0bff3b from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x5f1d3a3b mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f296205 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x5f3b24cd snd_timer_close +EXPORT_SYMBOL vmlinux 0x5f704bf0 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f770e86 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x5f88d139 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x5f987986 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x5fac6c22 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x5fc4e7d5 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdb993c qdisc_create_dflt +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 0x6008802e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x60098744 set_page_dirty +EXPORT_SYMBOL vmlinux 0x60166933 pci_request_regions +EXPORT_SYMBOL vmlinux 0x60169aab end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60313b5b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60541702 edma_alloc_slot +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60893dbb tcp_release_cb +EXPORT_SYMBOL vmlinux 0x608efed7 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609890ec vfs_writev +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 0x60bb077b pci_iomap_range +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e07e3d con_copy_unimap +EXPORT_SYMBOL vmlinux 0x60e2083f tcf_em_register +EXPORT_SYMBOL vmlinux 0x60e5fa19 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x610c409d dispc_ovl_check +EXPORT_SYMBOL vmlinux 0x6119aef1 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61419e36 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x61596a76 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x61608c11 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x6163bde6 d_walk +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6182621b nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x61921d0a amba_driver_register +EXPORT_SYMBOL vmlinux 0x61b29ffd __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61b9ba55 set_binfmt +EXPORT_SYMBOL vmlinux 0x61c53a6c genphy_config_init +EXPORT_SYMBOL vmlinux 0x61c6fbf9 finish_no_open +EXPORT_SYMBOL vmlinux 0x61c8abdd blk_end_request_all +EXPORT_SYMBOL vmlinux 0x61e1e3e5 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x61ea4f50 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x61feb59c d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x62100f43 tcp_v4_do_rcv +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 0x6241b287 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x624db582 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x624e187b kfree_skb +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629a2f98 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x62b56db8 touch_buffer +EXPORT_SYMBOL vmlinux 0x62b67450 get_super_thawed +EXPORT_SYMBOL vmlinux 0x62b96d85 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x62dd6d3f nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x62e58de4 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x62e8d5cd mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x63085a72 follow_up +EXPORT_SYMBOL vmlinux 0x63107caf ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x632aad9f netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x632e6a8f fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x632ea273 tty_throttle +EXPORT_SYMBOL vmlinux 0x6338ab89 init_buffer +EXPORT_SYMBOL vmlinux 0x6339d53c inet_accept +EXPORT_SYMBOL vmlinux 0x6341a172 arm_dma_ops +EXPORT_SYMBOL vmlinux 0x635082d3 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x63694e25 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63b2b417 elm_config +EXPORT_SYMBOL vmlinux 0x63bc80d3 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c8f2b8 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x63d96207 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x63eae48f flow_cache_fini +EXPORT_SYMBOL vmlinux 0x63eb70b3 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f12e0c override_creds +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640d1c1f sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64173987 bmap +EXPORT_SYMBOL vmlinux 0x64326dfa blk_register_region +EXPORT_SYMBOL vmlinux 0x64371925 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x6445b243 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x644ce825 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x6451413b sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x646245c0 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x6470dd38 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x64839264 snd_unregister_device +EXPORT_SYMBOL vmlinux 0x648426e4 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a22ff0 dispc_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x64cc8b99 bio_clone_bioset +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 0x651dc573 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x653cbee2 unregister_nls +EXPORT_SYMBOL vmlinux 0x653cfe8c dma_sync_wait +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x65b12492 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x65b32d64 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65de3117 dquot_transfer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6621cc52 snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x662bbfc3 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x664165e8 snd_info_register +EXPORT_SYMBOL vmlinux 0x6644b03b scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x664c1833 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x667334b6 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x66890fce module_layout +EXPORT_SYMBOL vmlinux 0x668b60d5 search_binary_handler +EXPORT_SYMBOL vmlinux 0x66928712 twl6040_power +EXPORT_SYMBOL vmlinux 0x66b77a4e sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x66c1ea8a dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x66e03e77 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x67068092 ether_setup +EXPORT_SYMBOL vmlinux 0x670687b8 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x670b05b7 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x672d0011 param_set_ullong +EXPORT_SYMBOL vmlinux 0x6737382a sync_inode +EXPORT_SYMBOL vmlinux 0x6762e468 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x676bd041 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67741724 kmap_to_page +EXPORT_SYMBOL vmlinux 0x6774d334 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x6788114e inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x679875ce i2c_del_driver +EXPORT_SYMBOL vmlinux 0x67a10a40 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x67a4d259 fput +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c34509 lock_rename +EXPORT_SYMBOL vmlinux 0x67c48730 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x67cdb4d5 ps2_drain +EXPORT_SYMBOL vmlinux 0x67f12884 snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6815200c scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x681e9bb5 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x682191d1 shdma_init +EXPORT_SYMBOL vmlinux 0x683c8673 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x6856de0f mdiobus_write +EXPORT_SYMBOL vmlinux 0x6877224e devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687f4eab posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x688d7038 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x6898a76d neigh_ifdown +EXPORT_SYMBOL vmlinux 0x689be111 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68abb700 kobject_put +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68d2ed0b bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x6904e1f6 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x69074609 cdev_alloc +EXPORT_SYMBOL vmlinux 0x690b337b __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x6916f7ee mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x691c781c unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x691fc2a0 vfs_read +EXPORT_SYMBOL vmlinux 0x692058a1 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x696680ee blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x699dda75 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a27f30a dev_disable_lro +EXPORT_SYMBOL vmlinux 0x6a577a63 generic_fillattr +EXPORT_SYMBOL vmlinux 0x6a5e73a9 get_gendisk +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7e5eae i2c_use_client +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6adba501 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6aeff866 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x6aff9aaf generic_file_splice_read +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 0x6b2affb1 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b2f42e0 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x6b32cbd7 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x6b8320ff tty_check_change +EXPORT_SYMBOL vmlinux 0x6b9ed823 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x6bb9f711 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bde1e26 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x6bea168c __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x6befb5a0 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x6bf6792a sock_recvmsg +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0b9045 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c38c653 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x6c3f04d0 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x6c3f65da omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5240d7 sock_i_uid +EXPORT_SYMBOL vmlinux 0x6c57005a scsi_ioctl +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6277c6 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c81305c nf_reinject +EXPORT_SYMBOL vmlinux 0x6ca0397a __skb_checksum +EXPORT_SYMBOL vmlinux 0x6ca64b47 install_exec_creds +EXPORT_SYMBOL vmlinux 0x6caedaf4 dm_get_device +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce68cbc mntget +EXPORT_SYMBOL vmlinux 0x6cf17486 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x6cfaeb8d sk_capable +EXPORT_SYMBOL vmlinux 0x6d021750 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1c44dd lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6d1e80fe posix_test_lock +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d30f197 security_inode_permission +EXPORT_SYMBOL vmlinux 0x6d31da91 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x6d3349d5 filemap_flush +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d45b55a gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d67895a unregister_binfmt +EXPORT_SYMBOL vmlinux 0x6d6d1234 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x6d85f61d blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x6da6f176 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x6db38b96 d_tmpfile +EXPORT_SYMBOL vmlinux 0x6dd2e4aa ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x6debd2b3 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df07a4e pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x6df15432 vfs_rename +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e373d5b dquot_resume +EXPORT_SYMBOL vmlinux 0x6e37e7c4 serio_rescan +EXPORT_SYMBOL vmlinux 0x6e3b819f sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x6e57451c netlink_net_capable +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e90298b ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6ecdc208 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x6ee13687 dump_skip +EXPORT_SYMBOL vmlinux 0x6ee58a77 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x6eeeab73 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x6ef17a1e blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6f1ab973 fd_install +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f222223 skb_pull +EXPORT_SYMBOL vmlinux 0x6f2990db blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x6f40787b of_node_get +EXPORT_SYMBOL vmlinux 0x6f7e0140 nand_bch_init +EXPORT_SYMBOL vmlinux 0x6f7f070f seq_write +EXPORT_SYMBOL vmlinux 0x6f819f4e pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f977ba5 mmc_add_host +EXPORT_SYMBOL vmlinux 0x6fa63112 generic_show_options +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fe10ccf xfrm_init_state +EXPORT_SYMBOL vmlinux 0x6fed50b2 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x6ffe91da set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x700bd9a0 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x7038db6c of_get_next_child +EXPORT_SYMBOL vmlinux 0x704ec8d7 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706b2976 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7089a3d3 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x70a0fe24 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x70a30bfc blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x70ba83c3 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x70db126b __getblk_gfp +EXPORT_SYMBOL vmlinux 0x70e17ca3 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x71017ac9 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x71113eca blkdev_put +EXPORT_SYMBOL vmlinux 0x7119db7f omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x712fab7f pci_set_power_state +EXPORT_SYMBOL vmlinux 0x71309950 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x7137d22f elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x7142c63c edma_free_slot +EXPORT_SYMBOL vmlinux 0x7169102e omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71acc654 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x71c022d1 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e59790 snd_card_free +EXPORT_SYMBOL vmlinux 0x71ec90e1 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7204b635 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x7207fbbf dev_trans_start +EXPORT_SYMBOL vmlinux 0x720bb58f dev_get_stats +EXPORT_SYMBOL vmlinux 0x7215a384 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x721689f5 pid_task +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x724ff859 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x72547349 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x7281d710 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x7296d8a2 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x72a0e6f2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x72b46a8c kobject_get +EXPORT_SYMBOL vmlinux 0x72c5ee72 processor +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e3376b proc_mkdir +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72faa356 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x73082aa8 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x7311aea7 pipe_unlock +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x73174657 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7385aba4 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x7387f225 kill_fasync +EXPORT_SYMBOL vmlinux 0x73b03494 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x73b7fcf9 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x73d64906 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x7405b147 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x740daac8 flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74373390 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x743f8273 tso_count_descs +EXPORT_SYMBOL vmlinux 0x74530263 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x74536113 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x747beeb3 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x747d136b scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74b570ce snd_card_file_remove +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e46dac imx_ssi_fiq_tx_buffer +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74e7ded8 netlink_ack +EXPORT_SYMBOL vmlinux 0x74ecc86b of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x74f0f42f param_set_ushort +EXPORT_SYMBOL vmlinux 0x74fa022d edma_trigger_channel +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x751961fa add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x751e14eb shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x75304fb7 vme_slot_num +EXPORT_SYMBOL vmlinux 0x753199ec get_super +EXPORT_SYMBOL vmlinux 0x7549799e simple_transaction_read +EXPORT_SYMBOL vmlinux 0x75509f6b vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x7567d381 __get_fiq_regs +EXPORT_SYMBOL vmlinux 0x757b3367 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x757b5d0b omap_dss_get_device +EXPORT_SYMBOL vmlinux 0x75836eef page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x7590cc0c vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x75922f80 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x7596b3f5 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x7597116a ip_check_defrag +EXPORT_SYMBOL vmlinux 0x75b23048 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c5a696 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x75cfdab0 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x75e8714a blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x75f5d48d elv_rb_del +EXPORT_SYMBOL vmlinux 0x75f87ffb __skb_get_hash +EXPORT_SYMBOL vmlinux 0x7601dd4d register_sound_midi +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x762d4929 register_netdevice +EXPORT_SYMBOL vmlinux 0x76385e78 keyring_alloc +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x76520289 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x765637d5 pcim_iomap +EXPORT_SYMBOL vmlinux 0x76604fb1 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x76809bef tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x76841024 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x769c7e9e __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x76c06fec no_llseek +EXPORT_SYMBOL vmlinux 0x76c78570 dev_set_group +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 0x76de03c9 sock_no_getname +EXPORT_SYMBOL vmlinux 0x76e30f5c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x76e9fb8d pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x76f1cfcf memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770a38cd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x772b234d input_register_handler +EXPORT_SYMBOL vmlinux 0x775a130e __sg_free_table +EXPORT_SYMBOL vmlinux 0x776261f6 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x7773ee22 nand_scan_tail +EXPORT_SYMBOL vmlinux 0x777a7810 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x77858d6e clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b9b5a1 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77ca8ca3 pci_select_bars +EXPORT_SYMBOL vmlinux 0x77e77ad4 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x77fa1a63 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x78037be8 neigh_table_init +EXPORT_SYMBOL vmlinux 0x78087d30 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x7810a88b fence_signal_locked +EXPORT_SYMBOL vmlinux 0x78228307 neigh_for_each +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x78654081 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x7869eb3f vme_bus_num +EXPORT_SYMBOL vmlinux 0x786a42e5 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x7875a63f pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x78779c0b set_fiq_handler +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7887e956 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x78900df9 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78b8f96b blk_rq_init +EXPORT_SYMBOL vmlinux 0x78bfd55a devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x78c3750f empty_aops +EXPORT_SYMBOL vmlinux 0x78daad78 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78dfa52c mmc_get_card +EXPORT_SYMBOL vmlinux 0x78f2ef64 netdev_printk +EXPORT_SYMBOL vmlinux 0x790fc38b pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x79168f10 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x792b5e63 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x792f8704 amba_find_device +EXPORT_SYMBOL vmlinux 0x793ca486 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x796b393a neigh_destroy +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797ae65c dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x797b4895 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x7981fd44 elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0x79830532 vfs_llseek +EXPORT_SYMBOL vmlinux 0x7995cb4f __find_get_block +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c5a9f0 ioremap +EXPORT_SYMBOL vmlinux 0x79d65c4c snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x79e845bf blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x79e99311 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x79fa1deb imx_ssi_fiq_rx_buffer +EXPORT_SYMBOL vmlinux 0x7a1238cf xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x7a1f2611 dispc_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x7a23a82a fget_raw +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a303999 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x7a4113da kmem_cache_size +EXPORT_SYMBOL vmlinux 0x7a41aeb0 mount_nodev +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a570d7a omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0x7a595e12 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x7a6a4dd9 devm_clk_put +EXPORT_SYMBOL vmlinux 0x7a76aae7 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9484f3 load_nls_default +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a994a82 ps2_command +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad4660a free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aee7958 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x7af5e830 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b149400 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b222d3a tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b5bc8fd napi_gro_receive +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b782a38 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x7b7bc2be tty_devnum +EXPORT_SYMBOL vmlinux 0x7ba91cd9 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x7bc29075 mtd_concat_create +EXPORT_SYMBOL vmlinux 0x7bc3a5db blk_get_request +EXPORT_SYMBOL vmlinux 0x7bf0f0e1 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c2e57c8 of_device_is_available +EXPORT_SYMBOL vmlinux 0x7c40eb44 mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c57b436 dquot_initialize +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb3c5df kern_unmount +EXPORT_SYMBOL vmlinux 0x7cbc308e backlight_force_update +EXPORT_SYMBOL vmlinux 0x7cbcb399 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc5d6be get_unmapped_area +EXPORT_SYMBOL vmlinux 0x7cc83c05 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x7cdc795d devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7cffc1a0 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x7d022dee inet6_ioctl +EXPORT_SYMBOL vmlinux 0x7d04f656 phy_detach +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0f5a5b sock_sendmsg +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d22dbb2 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x7d2f0e03 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x7d34f3e1 mdiobus_read +EXPORT_SYMBOL vmlinux 0x7d578a35 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x7d58d35c skb_find_text +EXPORT_SYMBOL vmlinux 0x7d5a9e2d snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0x7d5ef9c0 netdev_notice +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7db3e679 consume_skb +EXPORT_SYMBOL vmlinux 0x7db7d5d7 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x7db7fdf7 mmc_erase +EXPORT_SYMBOL vmlinux 0x7dc3f3a5 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7de51452 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e1e3dbd commit_creds +EXPORT_SYMBOL vmlinux 0x7e292421 have_submounts +EXPORT_SYMBOL vmlinux 0x7e37f279 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x7e3b475a param_ops_short +EXPORT_SYMBOL vmlinux 0x7e585abc generic_write_end +EXPORT_SYMBOL vmlinux 0x7e609fbe iov_iter_init +EXPORT_SYMBOL vmlinux 0x7e67bb82 set_disk_ro +EXPORT_SYMBOL vmlinux 0x7e6fa3ef tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x7e8991e6 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x7e8dafba scsi_rescan_device +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 0x7ebc7f8c __f_setown +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee7f093 dispc_ovl_compute_fifo_thresholds +EXPORT_SYMBOL vmlinux 0x7efc2451 qdisc_reset +EXPORT_SYMBOL vmlinux 0x7f015745 omap_dss_get_output +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f14cab6 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x7f1f06d4 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2739e4 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x7f2ca8f9 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x7f4cb9e2 __sb_end_write +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f6c001d udplite_prot +EXPORT_SYMBOL vmlinux 0x7f73da5d bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x7f9233fd debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x7f9e4628 netdev_warn +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x804aabdf idr_is_empty +EXPORT_SYMBOL vmlinux 0x804d9c1e netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x806bf807 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x807ae372 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x808cbb9d clk_add_alias +EXPORT_SYMBOL vmlinux 0x80a07765 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cabcd3 vm_event_states +EXPORT_SYMBOL vmlinux 0x80cd5774 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d81308 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x80d8a2f0 simple_follow_link +EXPORT_SYMBOL vmlinux 0x80d9ef13 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x80e2e831 param_get_ulong +EXPORT_SYMBOL vmlinux 0x80f9ea55 bdev_read_only +EXPORT_SYMBOL vmlinux 0x810979ad register_netdev +EXPORT_SYMBOL vmlinux 0x81108377 shdma_chan_filter +EXPORT_SYMBOL vmlinux 0x81142fc7 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x81171067 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x81176269 prepare_binprm +EXPORT_SYMBOL vmlinux 0x811796ac mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x811eac9a vme_lm_request +EXPORT_SYMBOL vmlinux 0x8123c022 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x812b657e skb_dequeue +EXPORT_SYMBOL vmlinux 0x812f6ed9 param_get_short +EXPORT_SYMBOL vmlinux 0x813988bf devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x813b4fe6 sock_from_file +EXPORT_SYMBOL vmlinux 0x81490126 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x814e9e13 __getblk_slow +EXPORT_SYMBOL vmlinux 0x81520455 dquot_enable +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816a2fc6 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x818a5cd8 snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0x8195d437 find_get_entry +EXPORT_SYMBOL vmlinux 0x819cccfb mmc_detect_card_removed +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 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e004f7 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8211c9e1 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x821b6c17 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x8256d671 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x827e9fb8 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x827fbf33 padata_set_cpumasks +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 0x828981f5 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b7c295 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x82c9b6c5 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x82deb3a9 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x82e8a873 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x82f4b1a4 tty_unlock +EXPORT_SYMBOL vmlinux 0x82fcba40 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x831396c3 fence_signal +EXPORT_SYMBOL vmlinux 0x831f2589 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x832781fd end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x8327c506 set_security_override +EXPORT_SYMBOL vmlinux 0x832fbc40 sock_efree +EXPORT_SYMBOL vmlinux 0x8330d74b pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x83367801 icmp_send +EXPORT_SYMBOL vmlinux 0x83416791 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x834385eb xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8375d79d ida_destroy +EXPORT_SYMBOL vmlinux 0x83799ce1 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x8384e180 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839cdf99 edma_resume +EXPORT_SYMBOL vmlinux 0x83ae178b tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83baada7 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x83c0521f kmap_atomic +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d70683 edma_start +EXPORT_SYMBOL vmlinux 0x83d84688 sk_wait_data +EXPORT_SYMBOL vmlinux 0x83e2a890 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x83f31fd2 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x84019aff poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x840ec85a snd_timer_stop +EXPORT_SYMBOL vmlinux 0x8441a1ef generic_removexattr +EXPORT_SYMBOL vmlinux 0x84655ecb pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x8466e7c5 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x846cba00 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x84969977 rt6_lookup +EXPORT_SYMBOL vmlinux 0x84989bfb sg_miter_skip +EXPORT_SYMBOL vmlinux 0x849f8bef nand_scan_ident +EXPORT_SYMBOL vmlinux 0x84a69fdc vme_slave_get +EXPORT_SYMBOL vmlinux 0x84ad84a7 param_array_ops +EXPORT_SYMBOL vmlinux 0x84b17e24 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84b974fd inet_put_port +EXPORT_SYMBOL vmlinux 0x84e9105f __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85096a86 vfs_create +EXPORT_SYMBOL vmlinux 0x8517f773 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x851b6cfa tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x8549a651 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0x854dafc2 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +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 0x85799e33 nf_log_unset +EXPORT_SYMBOL vmlinux 0x857cb948 fb_show_logo +EXPORT_SYMBOL vmlinux 0x85885914 pci_find_bus +EXPORT_SYMBOL vmlinux 0x858c77c5 block_write_end +EXPORT_SYMBOL vmlinux 0x85a6097a d_move +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c93db6 inet_offloads +EXPORT_SYMBOL vmlinux 0x85d219e4 dquot_alloc +EXPORT_SYMBOL vmlinux 0x85d595f1 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x85d899ab xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f8ef9b __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x862eddb3 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865182b0 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +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 0x86b4a4ac block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87003790 fence_init +EXPORT_SYMBOL vmlinux 0x870faaf8 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871f8cc3 dma_supported +EXPORT_SYMBOL vmlinux 0x872e7d91 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x8745c54a udp_ioctl +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8799f6bd __blk_run_queue +EXPORT_SYMBOL vmlinux 0x87b60ee1 __get_page_tail +EXPORT_SYMBOL vmlinux 0x87d03dfe max8998_write_reg +EXPORT_SYMBOL vmlinux 0x87d5e325 simple_getattr +EXPORT_SYMBOL vmlinux 0x87dcd34c param_get_ullong +EXPORT_SYMBOL vmlinux 0x88031995 bio_chain +EXPORT_SYMBOL vmlinux 0x88207f3d md_done_sync +EXPORT_SYMBOL vmlinux 0x882df4e5 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x88409a42 cdev_del +EXPORT_SYMBOL vmlinux 0x88469b9b tty_port_close +EXPORT_SYMBOL vmlinux 0x88520a47 of_match_node +EXPORT_SYMBOL vmlinux 0x88536a11 clear_inode +EXPORT_SYMBOL vmlinux 0x88679fb2 generic_write_checks +EXPORT_SYMBOL vmlinux 0x886bc76f mempool_resize +EXPORT_SYMBOL vmlinux 0x886f9814 netdev_state_change +EXPORT_SYMBOL vmlinux 0x88779269 __block_write_begin +EXPORT_SYMBOL vmlinux 0x889b7276 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x88a457e9 get_tz_trend +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88b4ef84 update_region +EXPORT_SYMBOL vmlinux 0x88b759fa pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x88c0d6e8 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x8917ed2c devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x89238e8d input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x893316eb keyring_search +EXPORT_SYMBOL vmlinux 0x89335d92 param_ops_uint +EXPORT_SYMBOL vmlinux 0x89ad4310 tcp_req_err +EXPORT_SYMBOL vmlinux 0x89cc4692 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a2fc49f proc_symlink +EXPORT_SYMBOL vmlinux 0x8a369cfe ip_setsockopt +EXPORT_SYMBOL vmlinux 0x8a422f01 sock_register +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 0x8a68879a netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8250af save_mount_options +EXPORT_SYMBOL vmlinux 0x8a89a0ca cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x8a8a2ffe i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa92a54 eth_header_cache +EXPORT_SYMBOL vmlinux 0x8af9dd1c omapdss_find_output_from_display +EXPORT_SYMBOL vmlinux 0x8b333700 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b4bf8a1 dquot_acquire +EXPORT_SYMBOL vmlinux 0x8b5e5904 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b76d921 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8bc283d5 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x8bc9e51e inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x8bcb5210 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x8bd194d6 pci_find_capability +EXPORT_SYMBOL vmlinux 0x8be6ce5d ps2_init +EXPORT_SYMBOL vmlinux 0x8beeefc6 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x8c3d6ad8 __pagevec_release +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6d3f38 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x8c705b8c edma_clean_channel +EXPORT_SYMBOL vmlinux 0x8c748230 d_genocide +EXPORT_SYMBOL vmlinux 0x8c832932 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x8c836b00 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x8c867fa9 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x8c8cbc8d create_empty_buffers +EXPORT_SYMBOL vmlinux 0x8c8f9001 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x8cb5bc1b filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x8cbaa24b lro_receive_skb +EXPORT_SYMBOL vmlinux 0x8cd7c17d get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cfc5b10 nand_scan +EXPORT_SYMBOL vmlinux 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8d083ad3 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x8d097290 skb_tx_error +EXPORT_SYMBOL vmlinux 0x8d134c39 idr_replace +EXPORT_SYMBOL vmlinux 0x8d2d16fd mmc_start_bkops +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 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8d8db9b4 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x8d9edd8a pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8ddcbe08 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x8de53950 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8de94e33 blk_init_tags +EXPORT_SYMBOL vmlinux 0x8dead291 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e018df2 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x8e046f55 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x8e050cae param_get_string +EXPORT_SYMBOL vmlinux 0x8e089bf5 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x8e20b796 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x8e242cd3 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x8e31223a dcache_dir_open +EXPORT_SYMBOL vmlinux 0x8e75fbe6 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8eba6fd8 default_llseek +EXPORT_SYMBOL vmlinux 0x8ed43093 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x8ee6a692 d_path +EXPORT_SYMBOL vmlinux 0x8ee77f7f ppp_channel_index +EXPORT_SYMBOL vmlinux 0x8ef44276 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x8efb5117 mpage_writepage +EXPORT_SYMBOL vmlinux 0x8f0fccf8 inet_del_offload +EXPORT_SYMBOL vmlinux 0x8f39f3f3 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x8f579c30 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f8537f6 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x8f98b01b bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8fbd16c5 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fd735e0 dev_add_pack +EXPORT_SYMBOL vmlinux 0x8fe11c74 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x905640c4 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x9097435d of_device_unregister +EXPORT_SYMBOL vmlinux 0x90a96266 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x90c49a12 simple_fill_super +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90efb1eb xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x9109423b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9149d7b1 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x9149f5c9 noop_qdisc +EXPORT_SYMBOL vmlinux 0x915480c7 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x9158d8aa blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x916b1d51 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9186b64f dm_kobject_release +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91c58cef dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x91c90fd6 __bread_gfp +EXPORT_SYMBOL vmlinux 0x91e98088 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x91fac800 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x91ffcd2b kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x9212ccff dss_install_mgr_ops +EXPORT_SYMBOL vmlinux 0x9219da0e snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x926a4088 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x9276ce28 edma_set_dest +EXPORT_SYMBOL vmlinux 0x9287886c snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92cc15cc dev_get_by_name +EXPORT_SYMBOL vmlinux 0x92d8aeb2 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92ec5d1b dispc_mgr_enable +EXPORT_SYMBOL vmlinux 0x92f28a70 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x92f784e3 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93110965 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x9316b5cb framebuffer_release +EXPORT_SYMBOL vmlinux 0x9318f291 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9326a6cd jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x933373a1 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x93509dba pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x9351d5a3 fsync_bdev +EXPORT_SYMBOL vmlinux 0x935d6533 d_alloc +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937c28a3 mount_pseudo +EXPORT_SYMBOL vmlinux 0x9382c040 inet_frag_kill +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 0x93e4b820 ac97_bus_type +EXPORT_SYMBOL vmlinux 0x93e71ac1 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x93e9fac3 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x9411c7f6 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x9413ff03 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x9427f6dd of_get_property +EXPORT_SYMBOL vmlinux 0x9469118c phy_attach +EXPORT_SYMBOL vmlinux 0x946efbfa __wait_on_bit +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94af886a setup_arg_pages +EXPORT_SYMBOL vmlinux 0x94b2590f vme_free_consistent +EXPORT_SYMBOL vmlinux 0x94c8aca3 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x94d3d4e1 lease_modify +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x9500f42e dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x951013b6 omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0x9520dbf7 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x9522071c fb_blank +EXPORT_SYMBOL vmlinux 0x95361e76 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x953d2405 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954eea2f of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x957791b8 nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x957a0d9a replace_mount_options +EXPORT_SYMBOL vmlinux 0x958eb0ac xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x95920235 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x9595d363 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x95c85623 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95edcda5 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x96031651 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x960e7930 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x9610b0c0 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x963a55c7 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x963c4981 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x966fa9db __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x968774f0 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96b4efe3 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dce98c resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x96fcafb1 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x9706df79 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x9709e7f0 phy_start +EXPORT_SYMBOL vmlinux 0x9713cb2a block_write_begin +EXPORT_SYMBOL vmlinux 0x97190971 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9736a84c unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x97377385 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x97393f13 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9757ceda snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x975f94f5 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x9791147e arp_tbl +EXPORT_SYMBOL vmlinux 0x9793c93a dispc_mgr_setup +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979cfaa4 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x97c387d9 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x97cc2308 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x97cfbf76 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x97eaa0fa snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x97ec26ae kset_register +EXPORT_SYMBOL vmlinux 0x97f7d5c2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x9804f3a9 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x98190660 phy_device_register +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98233711 file_ns_capable +EXPORT_SYMBOL vmlinux 0x9841d024 add_disk +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x989078fd mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x98c76f07 dquot_drop +EXPORT_SYMBOL vmlinux 0x98d7b6ea phy_disconnect +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98ef8991 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x99242a7a scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x992d1c02 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x9934ea45 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x9936a51a __napi_complete +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9958b914 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x995de928 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x995e3bac vme_register_bridge +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9982933b kmem_cache_create +EXPORT_SYMBOL vmlinux 0x99838daa __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x998e9210 may_umount_tree +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99b6fc3f phy_register_fixup +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d61525 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x99e42978 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x99e79780 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x9a0ee8ef blk_start_queue +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a42c141 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x9a623142 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x9a75bc6a blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a859491 address_space_init_once +EXPORT_SYMBOL vmlinux 0x9a8eb17c mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x9a90abb6 sync_blockdev +EXPORT_SYMBOL vmlinux 0x9a99d9ed generic_readlink +EXPORT_SYMBOL vmlinux 0x9ac06321 skb_pad +EXPORT_SYMBOL vmlinux 0x9ae1b00e mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aec8290 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x9b255a66 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x9b29fd7f fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x9b3208d4 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4ced49 keyring_clear +EXPORT_SYMBOL vmlinux 0x9b58f92e snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x9b5fe5d3 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc3836d tcp_check_req +EXPORT_SYMBOL vmlinux 0x9bc6126a param_get_byte +EXPORT_SYMBOL vmlinux 0x9bc64fcf free_netdev +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bda4bb4 edma_set_src +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c101dba tty_name +EXPORT_SYMBOL vmlinux 0x9c3e8216 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x9c4944ab _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x9c595fdb nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0x9c5ff888 mount_subtree +EXPORT_SYMBOL vmlinux 0x9c64748c tcf_hash_create +EXPORT_SYMBOL vmlinux 0x9c6f8b83 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x9c7895cd cpu_user +EXPORT_SYMBOL vmlinux 0x9c7f0db3 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0x9c8995ad __dev_get_by_name +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 0x9cb66730 skb_make_writable +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9cc9286b mpage_writepages +EXPORT_SYMBOL vmlinux 0x9cce1a71 stop_tty +EXPORT_SYMBOL vmlinux 0x9cff7316 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x9d075a36 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3f6fec netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x9d40553e alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x9d47717a thaw_bdev +EXPORT_SYMBOL vmlinux 0x9d47b69a nf_log_packet +EXPORT_SYMBOL vmlinux 0x9d53ee19 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d8036c5 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x9d9b737d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x9dab259a pcim_pin_device +EXPORT_SYMBOL vmlinux 0x9db98246 touch_atime +EXPORT_SYMBOL vmlinux 0x9dc58bd0 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x9dd451c1 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x9ddd5de1 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x9def9ff3 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x9df8b647 bdget_disk +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e01d626 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x9e03ba02 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x9e060c01 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e22097a fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9e22d3e0 done_path_create +EXPORT_SYMBOL vmlinux 0x9e3efbbd request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5500a1 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x9e5e6df0 simple_setattr +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e6c75f0 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e811c4e blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x9e85ee27 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x9e891504 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x9e8b7eac iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x9e93da1a snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x9e99fb54 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x9eb96650 mmc_free_host +EXPORT_SYMBOL vmlinux 0x9ec551e1 skb_seq_read +EXPORT_SYMBOL vmlinux 0x9ed0dbcd serio_close +EXPORT_SYMBOL vmlinux 0x9ed37401 snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x9ed37914 vc_resize +EXPORT_SYMBOL vmlinux 0x9eec961f register_sound_special_device +EXPORT_SYMBOL vmlinux 0x9f0ad95d __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x9f1235af dma_async_device_register +EXPORT_SYMBOL vmlinux 0x9f198f02 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f5ac4b3 security_path_chown +EXPORT_SYMBOL vmlinux 0x9f5b8780 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x9f823cea dispc_mgr_is_enabled +EXPORT_SYMBOL vmlinux 0x9f84aaaf dquot_file_open +EXPORT_SYMBOL vmlinux 0x9f8a2cda block_read_full_page +EXPORT_SYMBOL vmlinux 0x9f8c9308 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fbdb657 _dev_info +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff0f546 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x9ff775d8 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00a2323 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xa00eb15b ioremap_page +EXPORT_SYMBOL vmlinux 0xa01b178d sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xa0400134 complete_request_key +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 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06250c4 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa06e9912 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xa0786e64 audit_log_start +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa07f13c3 mpage_readpage +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa090bcc2 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xa0914484 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xa0aae687 imx_ssi_fiq_end +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ba9e34 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa0cdb650 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xa0d94993 scsi_device_put +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 0xa11ab9d5 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xa11f22aa mdiobus_scan +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa130d3fb snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0xa1354c04 sget +EXPORT_SYMBOL vmlinux 0xa13986ae inet_select_addr +EXPORT_SYMBOL vmlinux 0xa139f157 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa154dca6 md_write_start +EXPORT_SYMBOL vmlinux 0xa171c9b7 napi_disable +EXPORT_SYMBOL vmlinux 0xa192813b idr_for_each +EXPORT_SYMBOL vmlinux 0xa19a2eb5 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xa19d49be serio_unregister_port +EXPORT_SYMBOL vmlinux 0xa19f6ec5 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xa1b16ab2 simple_dname +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1be1185 security_path_link +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d0a7d1 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1dd3ec4 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa1f2b8f8 iput +EXPORT_SYMBOL vmlinux 0xa1fced84 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa21fe7d4 nf_log_register +EXPORT_SYMBOL vmlinux 0xa22ea84c d_alloc_name +EXPORT_SYMBOL vmlinux 0xa241bb64 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xa2643c3a param_ops_ushort +EXPORT_SYMBOL vmlinux 0xa26cd8b9 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28b79ed fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xa29bba76 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa29d55be try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xa2b3c56c blk_delay_queue +EXPORT_SYMBOL vmlinux 0xa2d4e4b1 vfs_symlink +EXPORT_SYMBOL vmlinux 0xa2d66249 vmap +EXPORT_SYMBOL vmlinux 0xa2eee85b blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xa305d53d security_path_mknod +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa31e44ba edma_free_channel +EXPORT_SYMBOL vmlinux 0xa31f2fd1 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xa324bb97 cpu_tlb +EXPORT_SYMBOL vmlinux 0xa32e9164 __netif_schedule +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa33bd62a bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xa33d630a get_cached_acl +EXPORT_SYMBOL vmlinux 0xa35444e4 dispc_write_irqenable +EXPORT_SYMBOL vmlinux 0xa35afd2f pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xa362badb ilookup5 +EXPORT_SYMBOL vmlinux 0xa362dec8 sk_net_capable +EXPORT_SYMBOL vmlinux 0xa370140c delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3860f62 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xa39a123a fence_add_callback +EXPORT_SYMBOL vmlinux 0xa3c76449 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xa3cea8ea sync_filesystem +EXPORT_SYMBOL vmlinux 0xa3f034db path_put +EXPORT_SYMBOL vmlinux 0xa3f1d17b pci_enable_device +EXPORT_SYMBOL vmlinux 0xa3f5ae54 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43df1fe scmd_printk +EXPORT_SYMBOL vmlinux 0xa43f873c register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xa460eb6b get_task_io_context +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4644ecb __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa470a8d2 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xa47bbe95 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4b62139 pci_dev_put +EXPORT_SYMBOL vmlinux 0xa4c4ae74 padata_stop +EXPORT_SYMBOL vmlinux 0xa4c80ab5 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xa4d93c0a generic_ro_fops +EXPORT_SYMBOL vmlinux 0xa4f52e39 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xa4f8e1b3 dst_release +EXPORT_SYMBOL vmlinux 0xa4fee2ab inet6_release +EXPORT_SYMBOL vmlinux 0xa5145e48 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xa53919e8 blk_finish_request +EXPORT_SYMBOL vmlinux 0xa53d6b14 sock_create +EXPORT_SYMBOL vmlinux 0xa54ae61b pci_disable_msix +EXPORT_SYMBOL vmlinux 0xa54dc388 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56fc1e9 seq_printf +EXPORT_SYMBOL vmlinux 0xa573c347 pci_clear_master +EXPORT_SYMBOL vmlinux 0xa579fe65 pci_get_device +EXPORT_SYMBOL vmlinux 0xa5806baf pci_bus_write_config_dword +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 0xa5ca3fe2 prepare_creds +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5e669c7 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xa60e6f80 get_fs_type +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa61f58df jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xa6367143 mount_single +EXPORT_SYMBOL vmlinux 0xa63ac3e3 shdma_cleanup +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa64e8ded d_lookup +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65815cd tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xa658d5a0 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xa6625226 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xa67374f0 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +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 0xa6b0285e jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6c0abf2 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xa6c874f2 phy_suspend +EXPORT_SYMBOL vmlinux 0xa6cc7d65 dev_warn +EXPORT_SYMBOL vmlinux 0xa6f54c6e I_BDEV +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7029512 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xa7095080 page_put_link +EXPORT_SYMBOL vmlinux 0xa70b43ed netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xa71e0744 nand_correct_data +EXPORT_SYMBOL vmlinux 0xa71fea3e snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0xa72be792 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa759f2c1 param_ops_string +EXPORT_SYMBOL vmlinux 0xa7634725 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xa7c613d2 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xa7d03abe devm_release_resource +EXPORT_SYMBOL vmlinux 0xa7de475e tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xa7e57c15 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xa8181777 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82b3368 bdi_register +EXPORT_SYMBOL vmlinux 0xa840ab37 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84f10b9 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xa85891f4 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa873270b blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xa87995d8 blk_run_queue +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8cacd6f alloc_fddidev +EXPORT_SYMBOL vmlinux 0xa8d0a7f9 d_delete +EXPORT_SYMBOL vmlinux 0xa8e4f0dc nonseekable_open +EXPORT_SYMBOL vmlinux 0xa8eeb5ac dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xa8fdbdb3 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9187236 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xa95da145 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa96f5485 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa977da39 snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0xa978afd6 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xa98ce4f0 md_integrity_register +EXPORT_SYMBOL vmlinux 0xa9975a15 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xa9975b7f dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xa9ae0f80 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xa9af5724 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9ccff05 pci_get_class +EXPORT_SYMBOL vmlinux 0xa9d2f3f7 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xaa08cc79 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xaa11ba50 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xaa182340 inode_change_ok +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 0xaa8db420 __check_sticky +EXPORT_SYMBOL vmlinux 0xaa991699 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xaaa8cb85 scsi_register +EXPORT_SYMBOL vmlinux 0xaab586a0 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xaac74205 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaaeda1aa tty_port_put +EXPORT_SYMBOL vmlinux 0xaafdc147 tty_free_termios +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab03e577 snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0xab2df9ad dev_get_flags +EXPORT_SYMBOL vmlinux 0xab4eeb20 unregister_key_type +EXPORT_SYMBOL vmlinux 0xab554d5d _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0xab5a62ac __scm_destroy +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 0xab750fd2 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xab7603e7 imx_ssi_fiq_start +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab87914c deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xab8e593f ip_getsockopt +EXPORT_SYMBOL vmlinux 0xab965a8f swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabb3cd17 filemap_fault +EXPORT_SYMBOL vmlinux 0xabc480cf netlink_set_err +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd02842 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xabd7d673 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xabe24b1d tty_write_room +EXPORT_SYMBOL vmlinux 0xabed04dd phy_init_hw +EXPORT_SYMBOL vmlinux 0xabf08a4e key_invalidate +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +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 0xac3fd8fb skb_queue_head +EXPORT_SYMBOL vmlinux 0xac4376dd xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xac48ac97 tegra_powergate_remove_clamping +EXPORT_SYMBOL vmlinux 0xac6ceb59 flush_old_exec +EXPORT_SYMBOL vmlinux 0xac9c3468 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xaca5b6b9 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc732bf ihold +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf7b0f6 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad43ae2a xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xad4c8d26 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xad536c00 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xad5e1158 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xad74c15e jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xad755577 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadb7b5c2 d_set_d_op +EXPORT_SYMBOL vmlinux 0xadce7f42 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xadd47e82 kobject_del +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae16e0bc kernel_getsockname +EXPORT_SYMBOL vmlinux 0xae17507c inet_sendmsg +EXPORT_SYMBOL vmlinux 0xae3406da snd_component_add +EXPORT_SYMBOL vmlinux 0xae496953 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7b5701 snd_pcm_new +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae99e0fa seq_open_private +EXPORT_SYMBOL vmlinux 0xaeb83476 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xaebf6160 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed3458c snd_jack_new +EXPORT_SYMBOL vmlinux 0xaee7468c eth_type_trans +EXPORT_SYMBOL vmlinux 0xaeea1c61 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xaef18856 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xaefedc53 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xaf1cb744 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xaf1dbff3 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xaf319ee2 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf71b28c sockfd_lookup +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xafe274b9 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xaffb5a7b ns_capable +EXPORT_SYMBOL vmlinux 0xb00be0a3 end_page_writeback +EXPORT_SYMBOL vmlinux 0xb03d6fe1 eth_validate_addr +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 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0aa777e inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xb0bf3f96 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb0d4a7e3 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xb0d6e556 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xb0dc4cac xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0eba17c uart_register_driver +EXPORT_SYMBOL vmlinux 0xb0fbc122 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xb108411c vfs_writef +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12c47f0 __sock_create +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12fa362 single_open_size +EXPORT_SYMBOL vmlinux 0xb13a0b54 scsi_init_io +EXPORT_SYMBOL vmlinux 0xb14d2d87 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb17953b8 set_device_ro +EXPORT_SYMBOL vmlinux 0xb1a56b96 dev_err +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1b6d4a5 twl6040_get_vibralr_status +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 0xb1d8067a unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xb1d9aabd lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb1dba6f4 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xb1df5afd __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xb1fe5f47 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xb202c2bc bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xb20e5294 md_register_thread +EXPORT_SYMBOL vmlinux 0xb2198bce kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xb219b216 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xb2228227 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xb22d75e9 blk_free_tags +EXPORT_SYMBOL vmlinux 0xb23d8111 sk_alloc +EXPORT_SYMBOL vmlinux 0xb2419554 shdma_chan_remove +EXPORT_SYMBOL vmlinux 0xb2446533 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb271c3b8 sk_dst_check +EXPORT_SYMBOL vmlinux 0xb279aeea snd_timer_resolution +EXPORT_SYMBOL vmlinux 0xb28179c5 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xb29329ab pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xb2965d71 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xb2b7701d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d94ee8 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xb2dc23a9 dev_notice +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb312c7e3 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xb3206f1f vfs_write +EXPORT_SYMBOL vmlinux 0xb3258cca dm_put_table_device +EXPORT_SYMBOL vmlinux 0xb32b6bfd xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb349f85f inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xb35ebde6 new_inode +EXPORT_SYMBOL vmlinux 0xb36797d9 irq_set_chip +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 0xb389f60c serio_interrupt +EXPORT_SYMBOL vmlinux 0xb395ad4e __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb40c1c19 tegra_ahb_enable_smmu +EXPORT_SYMBOL vmlinux 0xb42305a8 snd_device_register +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42c7cd3 km_state_notify +EXPORT_SYMBOL vmlinux 0xb42d447a bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb461d7ef __dquot_free_space +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb479868c sk_free +EXPORT_SYMBOL vmlinux 0xb4817531 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xb483d267 vc_cons +EXPORT_SYMBOL vmlinux 0xb48ac352 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xb49a13eb register_cdrom +EXPORT_SYMBOL vmlinux 0xb49d1e9f skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xb49dce4e md_cluster_mod +EXPORT_SYMBOL vmlinux 0xb4a0f6ee snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0xb4b1917a dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xb4b1d294 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xb4b3c2e2 vm_mmap +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4efc61f tty_port_hangup +EXPORT_SYMBOL vmlinux 0xb4f4cb4d simple_open +EXPORT_SYMBOL vmlinux 0xb4f7e73a udp_seq_open +EXPORT_SYMBOL vmlinux 0xb5044801 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xb50c916d blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb51a0983 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xb522ead2 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xb52826b2 down_write +EXPORT_SYMBOL vmlinux 0xb52e9812 iov_iter_advance +EXPORT_SYMBOL vmlinux 0xb5684e29 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xb5711663 lookup_bdev +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5775fef inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xb57d5b6f seq_putc +EXPORT_SYMBOL vmlinux 0xb581e336 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xb58636f8 __lock_buffer +EXPORT_SYMBOL vmlinux 0xb59c8742 dev_mc_add +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b3402b path_get +EXPORT_SYMBOL vmlinux 0xb5bd1f32 dquot_scan_active +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 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a42dc3 tcp_poll +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b0ec50 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xb6ce550b register_gifconf +EXPORT_SYMBOL vmlinux 0xb6d3daf1 qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xb6e08e9b of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xb6e4970e inode_permission +EXPORT_SYMBOL vmlinux 0xb7228569 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xb7260265 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xb74345bf scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74b616b gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xb74d6abf con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xb75634ab __elv_add_request +EXPORT_SYMBOL vmlinux 0xb756741e pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7823e2f dispc_ovl_setup +EXPORT_SYMBOL vmlinux 0xb79c82b3 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a71942 bprm_change_interp +EXPORT_SYMBOL vmlinux 0xb7a975ba __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xb7b0e3aa fb_find_mode +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7c70e0d nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb82ef283 proc_set_user +EXPORT_SYMBOL vmlinux 0xb846ffcc call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xb850fcd5 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0xb853cbc6 seq_pad +EXPORT_SYMBOL vmlinux 0xb8601e0d pps_event +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8c27818 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f18903 uart_resume_port +EXPORT_SYMBOL vmlinux 0xb8f44b18 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xb90be72c dev_addr_add +EXPORT_SYMBOL vmlinux 0xb91e68f0 bio_endio +EXPORT_SYMBOL vmlinux 0xb930b308 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xb933ce6d sk_filter +EXPORT_SYMBOL vmlinux 0xb9357df9 scsi_print_result +EXPORT_SYMBOL vmlinux 0xb9411da7 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xb948387b netif_rx +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb974ce04 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xb9a6c6da blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9ce586b param_set_short +EXPORT_SYMBOL vmlinux 0xb9e3f403 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba3f709c dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ae097 enable_fiq +EXPORT_SYMBOL vmlinux 0xba5afef2 vme_irq_generate +EXPORT_SYMBOL vmlinux 0xba7d870a __mxc_cpu_type +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbacddfac generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xbace5f6b dss_mgr_disconnect +EXPORT_SYMBOL vmlinux 0xbad09085 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0xbad6c4b1 bh_submit_read +EXPORT_SYMBOL vmlinux 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL vmlinux 0xbb006a7c scsi_host_get +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb16aa52 set_blocksize +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb47dc78 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb8dd5ac tegra_io_rail_power_on +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbbd45e0 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xbbff96b4 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc2da2dc bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xbc33067b mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xbc3941b3 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xbc5af03e arp_create +EXPORT_SYMBOL vmlinux 0xbc6569a5 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xbc80f0e7 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xbc95631c in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xbcaa8e5e ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd6d909 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xbcdad041 pci_match_id +EXPORT_SYMBOL vmlinux 0xbce7ff16 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xbcef17c8 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xbcf09c5c follow_pfn +EXPORT_SYMBOL vmlinux 0xbcfcd503 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xbd17c6de gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xbd3356b0 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xbd72ecb4 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xbd817745 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xbd87f030 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd929f78 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xbd9f827b nf_log_set +EXPORT_SYMBOL vmlinux 0xbda01b49 phy_find_first +EXPORT_SYMBOL vmlinux 0xbda5fab5 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xbda672d0 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xbdca0824 dst_discard_sk +EXPORT_SYMBOL vmlinux 0xbdcdd069 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbdec4d08 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbdf840b1 console_start +EXPORT_SYMBOL vmlinux 0xbe04e53b inode_init_always +EXPORT_SYMBOL vmlinux 0xbe09f409 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe0f8431 downgrade_write +EXPORT_SYMBOL vmlinux 0xbe184096 pipe_lock +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1c17b9 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xbe1ca1a3 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xbe1ceed3 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xbe32d11b arp_xmit +EXPORT_SYMBOL vmlinux 0xbe3947a0 of_iomap +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe6ff3b3 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xbe7965f1 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xbe8860a8 dispc_mgr_go_busy +EXPORT_SYMBOL vmlinux 0xbe8fb90c dispc_mgr_get_framedone_irq +EXPORT_SYMBOL vmlinux 0xbe98b764 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xbec57322 inet6_getname +EXPORT_SYMBOL vmlinux 0xbede05f1 dquot_commit +EXPORT_SYMBOL vmlinux 0xbee01030 input_allocate_device +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef62c28 bio_reset +EXPORT_SYMBOL vmlinux 0xbf1509a0 kill_bdev +EXPORT_SYMBOL vmlinux 0xbf26b73a security_path_rename +EXPORT_SYMBOL vmlinux 0xbf2b220c ata_print_version +EXPORT_SYMBOL vmlinux 0xbf693449 snd_pcm_notify +EXPORT_SYMBOL vmlinux 0xbf75ea6c tegra114_clock_tune_cpu_trimmers_low +EXPORT_SYMBOL vmlinux 0xbf7c736b nand_lock +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf8d3c2a padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa58e06 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xbfc56725 devm_iounmap +EXPORT_SYMBOL vmlinux 0xbfcbc0d2 stmp_reset_block +EXPORT_SYMBOL vmlinux 0xbfde036a ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xbfdea823 mem_map +EXPORT_SYMBOL vmlinux 0xbfeb8690 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc01e31a4 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xc02a63b8 __vfs_write +EXPORT_SYMBOL vmlinux 0xc034ffa4 tcp_child_process +EXPORT_SYMBOL vmlinux 0xc05119fe sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xc05e1a1a pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xc0621471 register_key_type +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06afd56 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xc074fec0 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09c04a7 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0acef7c __page_symlink +EXPORT_SYMBOL vmlinux 0xc0c0e777 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xc0ca1dee da903x_query_status +EXPORT_SYMBOL vmlinux 0xc0cf95f9 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0xc0dcef0b xfrm_register_type +EXPORT_SYMBOL vmlinux 0xc0df3a69 blk_peek_request +EXPORT_SYMBOL vmlinux 0xc0e659ba elv_add_request +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc1259a96 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc130b1b6 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xc143bd9f blk_end_request +EXPORT_SYMBOL vmlinux 0xc1537802 skb_store_bits +EXPORT_SYMBOL vmlinux 0xc1678a5f xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xc1698196 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xc1785e38 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xc17be114 edma_assign_channel_eventq +EXPORT_SYMBOL vmlinux 0xc18ae3d9 lro_flush_all +EXPORT_SYMBOL vmlinux 0xc1a4e526 make_kuid +EXPORT_SYMBOL vmlinux 0xc1a6e235 __break_lease +EXPORT_SYMBOL vmlinux 0xc1ad00ae nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xc1bb3295 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xc1d59f6a __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f01208 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xc1fd1828 single_open +EXPORT_SYMBOL vmlinux 0xc1fe35d6 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xc2081a83 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xc20bb83e bio_copy_kern +EXPORT_SYMBOL vmlinux 0xc21321f9 of_translate_address +EXPORT_SYMBOL vmlinux 0xc21ca0df kernel_getpeername +EXPORT_SYMBOL vmlinux 0xc224322d tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xc23d115b vfs_getattr +EXPORT_SYMBOL vmlinux 0xc254c2c7 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xc25b5800 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xc2670c4a snd_seq_root +EXPORT_SYMBOL vmlinux 0xc2802f50 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xc2835813 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xc28f232b dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xc2a7115f key_link +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2bbec12 skb_copy +EXPORT_SYMBOL vmlinux 0xc2c74bf8 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xc2d5d290 blk_queue_physical_block_size +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 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc31753c3 tegra_powergate_power_off +EXPORT_SYMBOL vmlinux 0xc31c197c genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xc3257085 security_file_permission +EXPORT_SYMBOL vmlinux 0xc33e5d8d seq_file_path +EXPORT_SYMBOL vmlinux 0xc34e8851 phy_device_create +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc3689dd4 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xc389bf8e skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xc38c6d65 netif_napi_del +EXPORT_SYMBOL vmlinux 0xc3935baf scsi_dma_map +EXPORT_SYMBOL vmlinux 0xc3bd1775 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d1fa4d edma_alloc_cont_slots +EXPORT_SYMBOL vmlinux 0xc3d7e8ae ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xc3f29b96 genphy_update_link +EXPORT_SYMBOL vmlinux 0xc418cd07 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xc41d2e72 __register_chrdev +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc447a71d put_io_context +EXPORT_SYMBOL vmlinux 0xc4526266 inet_getname +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49d94b8 input_grab_device +EXPORT_SYMBOL vmlinux 0xc4bf4850 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xc4c670f2 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xc50c2535 build_skb +EXPORT_SYMBOL vmlinux 0xc50f23cb sg_miter_start +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc553a958 input_close_device +EXPORT_SYMBOL vmlinux 0xc56dc251 vme_slave_request +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc58fb9c6 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59dcd75 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xc5a2ea6e seq_lseek +EXPORT_SYMBOL vmlinux 0xc5e527ff simple_transaction_get +EXPORT_SYMBOL vmlinux 0xc5f200bf neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xc5f988df tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6155922 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63c73de mmc_release_host +EXPORT_SYMBOL vmlinux 0xc63eee32 netdev_alert +EXPORT_SYMBOL vmlinux 0xc6512305 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xc66fa6a6 ida_remove +EXPORT_SYMBOL vmlinux 0xc6930cf5 snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0xc69df8e5 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xc69dff1e uart_match_port +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d9a8aa netdev_change_features +EXPORT_SYMBOL vmlinux 0xc6de77b4 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xc6f5fc1f blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xc7061f9b send_sig +EXPORT_SYMBOL vmlinux 0xc7062f4e mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7404c0f scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xc754e3dc dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc75afc42 dentry_unhash +EXPORT_SYMBOL vmlinux 0xc7765516 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7821726 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc799b2cd serio_open +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79b6ce3 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7aa8d79 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xc7ab4086 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7c5ccb9 do_SAK +EXPORT_SYMBOL vmlinux 0xc7e141ea tcf_register_action +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc8034909 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xc805db65 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xc80faf25 loop_backing_file +EXPORT_SYMBOL vmlinux 0xc81466e0 pci_release_region +EXPORT_SYMBOL vmlinux 0xc816f58f security_path_unlink +EXPORT_SYMBOL vmlinux 0xc819d07e seq_read +EXPORT_SYMBOL vmlinux 0xc819d730 __bforget +EXPORT_SYMBOL vmlinux 0xc826ec11 scsi_execute +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 0xc86ad77e snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87b45ba input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc89056a0 snd_cards +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89cf526 register_sound_special +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b7b1d6 shdma_request_irq +EXPORT_SYMBOL vmlinux 0xc8c0ae04 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xc8f74e6a register_console +EXPORT_SYMBOL vmlinux 0xc8fc2874 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xc90c81d9 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc93a2f4d edma_free_cont_slots +EXPORT_SYMBOL vmlinux 0xc9572d6c neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96ce881 inet6_protos +EXPORT_SYMBOL vmlinux 0xc9725aee pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xc97a3e45 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xc984b39c mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xc98b73a2 seq_dentry +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a1e14f pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9cb1abe jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xc9df8a09 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xca065f02 put_tty_driver +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca302f19 dev_close +EXPORT_SYMBOL vmlinux 0xca358f2d snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xca39bc7b nobh_write_end +EXPORT_SYMBOL vmlinux 0xca421eb8 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xca5239fa pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xca52f145 contig_page_data +EXPORT_SYMBOL vmlinux 0xca667f03 poll_freewait +EXPORT_SYMBOL vmlinux 0xca6f73c0 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xca73a896 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa9e99f inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xcac7bcee abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xcaca5e44 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xcaddbd7e edma_set_dest_index +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb15c8a4 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xcb24d932 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0xcb2f2a37 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0xcb304d24 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb68e372 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xcbaeb0eb inode_set_flags +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc7800e blk_recount_segments +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd348cd tty_hangup +EXPORT_SYMBOL vmlinux 0xcbda216f generic_setlease +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbed4cbf get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xcbee6439 ida_simple_get +EXPORT_SYMBOL vmlinux 0xcbfc33c4 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xcc00b2c1 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0xcc13d371 proc_remove +EXPORT_SYMBOL vmlinux 0xcc16e4d6 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xcc1e7b01 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xcc24749f filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5712e9 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xcc6430f6 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xcc67f268 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xcc6d300d tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xcc6d590d snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xcc731cca elv_rb_find +EXPORT_SYMBOL vmlinux 0xcc8322b5 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xcc8b3773 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xcc9b1069 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xcc9e4353 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xcca7511b ip_ct_attach +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccdc3621 tcp_prot +EXPORT_SYMBOL vmlinux 0xcce2806a reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xccf232ff xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd285512 __d_drop +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd7c8d08 omap_dss_find_output +EXPORT_SYMBOL vmlinux 0xcd7e0625 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xcd7fe479 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xcd812990 snd_card_set_id +EXPORT_SYMBOL vmlinux 0xcd8afd1d ptp_clock_register +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcdaec799 register_framebuffer +EXPORT_SYMBOL vmlinux 0xcdb4abd7 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc49e19 lockref_get +EXPORT_SYMBOL vmlinux 0xcdc95a9c netpoll_setup +EXPORT_SYMBOL vmlinux 0xcdd6d18d vga_put +EXPORT_SYMBOL vmlinux 0xce158f16 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce493e1f scsi_print_command +EXPORT_SYMBOL vmlinux 0xce4b9958 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xce540b8e dma_pool_create +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7b793e uart_suspend_port +EXPORT_SYMBOL vmlinux 0xce9686fb jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xced5f26c try_module_get +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef5d5cc vme_dma_request +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcefcf1fa generic_delete_inode +EXPORT_SYMBOL vmlinux 0xcefe5e86 netdev_err +EXPORT_SYMBOL vmlinux 0xcf0a645f sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xcf0d3f8f pcie_set_mps +EXPORT_SYMBOL vmlinux 0xcf1cfa27 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xcf21e9bf sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xcf27ac4c mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xcf5279a1 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xcf562f49 dm_io +EXPORT_SYMBOL vmlinux 0xcf5c82e5 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xcf646238 ipv4_specific +EXPORT_SYMBOL vmlinux 0xcf83bec4 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcf9904b7 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xcfc09a62 inet_listen +EXPORT_SYMBOL vmlinux 0xcfd0af4a fb_set_suspend +EXPORT_SYMBOL vmlinux 0xcfde53a5 ll_rw_block +EXPORT_SYMBOL vmlinux 0xcfebc6ec input_unregister_handle +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xcffc27f7 vfs_whiteout +EXPORT_SYMBOL vmlinux 0xd00cc739 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xd019c6ea tty_register_device +EXPORT_SYMBOL vmlinux 0xd01de559 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xd02497d4 mntput +EXPORT_SYMBOL vmlinux 0xd034105f lockref_put_return +EXPORT_SYMBOL vmlinux 0xd053c7e5 pci_pme_active +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08d0aeb bd_set_size +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +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 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd13ce570 led_update_brightness +EXPORT_SYMBOL vmlinux 0xd1506f47 dev_uc_del +EXPORT_SYMBOL vmlinux 0xd151adc6 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xd15e1333 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd19d0a72 page_readlink +EXPORT_SYMBOL vmlinux 0xd19fe1cf blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd1a2591d inet_ioctl +EXPORT_SYMBOL vmlinux 0xd1b73132 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1c9fbd9 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1dc6516 seq_release +EXPORT_SYMBOL vmlinux 0xd1e79cae fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xd1ec943b dev_mc_flush +EXPORT_SYMBOL vmlinux 0xd1f5070c inode_get_bytes +EXPORT_SYMBOL vmlinux 0xd1f51935 __module_get +EXPORT_SYMBOL vmlinux 0xd2076dbd xfrm_state_walk +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 0xd259e440 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd26ba18e sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2a1bace del_gendisk +EXPORT_SYMBOL vmlinux 0xd2a52d11 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b05d93 bioset_create +EXPORT_SYMBOL vmlinux 0xd2bdfa2d d_add_ci +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e6dba1 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xd3000c1a mmc_put_card +EXPORT_SYMBOL vmlinux 0xd31263a4 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0xd31984ca truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd31f4ee9 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xd3390009 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xd33e41cb max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xd3576865 __inode_permission +EXPORT_SYMBOL vmlinux 0xd3633482 netlink_capable +EXPORT_SYMBOL vmlinux 0xd363a014 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xd376b34c blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xd389e8c7 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xd391a57c secpath_dup +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3cb4bb5 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3e0787c neigh_parms_release +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd45a64ea make_kprojid +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd4716a47 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xd4ad8659 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xd4caa96c abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xd4f4abcb sock_no_poll +EXPORT_SYMBOL vmlinux 0xd4f7cab0 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xd4fdb406 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xd4fe3763 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xd503ade8 iunique +EXPORT_SYMBOL vmlinux 0xd51000c4 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xd51b0bab submit_bio +EXPORT_SYMBOL vmlinux 0xd539bd39 pps_unregister_source +EXPORT_SYMBOL vmlinux 0xd53cf931 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd54f87be ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xd5505abc ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xd571bb73 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xd57974b0 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xd58f6a2b security_path_mkdir +EXPORT_SYMBOL vmlinux 0xd599a179 sk_common_release +EXPORT_SYMBOL vmlinux 0xd5baae0d genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xd5c43160 sock_release +EXPORT_SYMBOL vmlinux 0xd5ce9188 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xd5d6010e snd_register_device +EXPORT_SYMBOL vmlinux 0xd5d932fa xfrm_input +EXPORT_SYMBOL vmlinux 0xd5e3f06f input_open_device +EXPORT_SYMBOL vmlinux 0xd5ea0df8 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd6043c5d mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd628c274 wireless_send_event +EXPORT_SYMBOL vmlinux 0xd62a25fc module_refcount +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6418349 snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64c9cff padata_do_serial +EXPORT_SYMBOL vmlinux 0xd6560837 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xd67e3a69 register_sound_mixer +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6bf2cc4 __brelse +EXPORT_SYMBOL vmlinux 0xd6dbe936 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xd6e0e927 devm_request_resource +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f6da76 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xd7220568 import_iovec +EXPORT_SYMBOL vmlinux 0xd72bc3d3 ata_port_printk +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd743e751 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xd74d87d0 inode_init_once +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 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7aa926a snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0xd7b3a695 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xd7b6c5b2 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7eaf976 snd_device_new +EXPORT_SYMBOL vmlinux 0xd7fff6ef security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xd8050f2a seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xd831d4fb skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xd8391697 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xd83eef3e fb_validate_mode +EXPORT_SYMBOL vmlinux 0xd8460db7 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd874f3f4 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xd896bec1 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xd89efc3b mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ae09c8 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xd8b0b488 dev_alert +EXPORT_SYMBOL vmlinux 0xd8b1b153 bio_map_kern +EXPORT_SYMBOL vmlinux 0xd8be0e59 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xd8c0d5d3 netif_device_attach +EXPORT_SYMBOL vmlinux 0xd8de2ce0 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e07265 do_splice_to +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e82ca9 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xd9010782 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xd902b705 setattr_copy +EXPORT_SYMBOL vmlinux 0xd928c4d5 do_splice_from +EXPORT_SYMBOL vmlinux 0xd92e2e97 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xd9396ed1 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd961b072 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xd96a1b6f of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98dc283 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xd999847f blk_get_queue +EXPORT_SYMBOL vmlinux 0xd99ad579 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xd99cc1f0 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xd9a2e1dd sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xd9cdc7fc tcp_init_sock +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xda0550e4 request_key +EXPORT_SYMBOL vmlinux 0xda2afe25 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xda33af4a set_bh_page +EXPORT_SYMBOL vmlinux 0xda3a7445 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4ceb51 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xda70f441 blk_init_queue +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda815278 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xda8a846e locks_init_lock +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa3d6f2 set_cached_acl +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdabc4053 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xdabc9152 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdb05d261 snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb43a8fa pci_dev_driver +EXPORT_SYMBOL vmlinux 0xdb4418e2 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xdb4bbd0b put_filp +EXPORT_SYMBOL vmlinux 0xdb505217 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xdb52b004 nand_unlock +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb730a98 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb78aca0 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL vmlinux 0xdba9ef0c pci_set_master +EXPORT_SYMBOL vmlinux 0xdbb830ed sock_wake_async +EXPORT_SYMBOL vmlinux 0xdbfc3020 init_task +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0ade69 snd_timer_open +EXPORT_SYMBOL vmlinux 0xdc1455e2 iterate_dir +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc589930 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xdc5c6297 videomode_to_omap_video_timings +EXPORT_SYMBOL vmlinux 0xdc777f70 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xdc8d87c1 of_dev_get +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdca2cc95 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xdca9ed48 edma_read_slot +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb453bf xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xdcb5d634 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xdcf6b03f passthru_features_check +EXPORT_SYMBOL vmlinux 0xdd004481 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0f99d3 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xdd114569 pci_claim_resource +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 0xdd6d1ef8 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xdd7ca310 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xddbd8188 dss_mgr_enable +EXPORT_SYMBOL vmlinux 0xddcc9771 snd_device_free +EXPORT_SYMBOL vmlinux 0xdddab4ba writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xddde6756 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xdde29124 shdma_reset +EXPORT_SYMBOL vmlinux 0xddef71eb devfreq_add_device +EXPORT_SYMBOL vmlinux 0xde2bb41b security_path_symlink +EXPORT_SYMBOL vmlinux 0xde2f344b remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xde3e3bc9 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xde4a5036 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xde5ade14 snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0xde7e45ee blkdev_fsync +EXPORT_SYMBOL vmlinux 0xde84cd9d blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xde872a8e __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xde8b3aac rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde999b8c sock_init_data +EXPORT_SYMBOL vmlinux 0xdeb3274e jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xdec13ec3 inc_nlink +EXPORT_SYMBOL vmlinux 0xdec78f03 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xdecd15d5 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xded4e074 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xded61b88 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xdedd2bd9 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xdee3f3cb pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xdf203b3f jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3eff0f dump_align +EXPORT_SYMBOL vmlinux 0xdf512f3e set_nlink +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf77a9a3 dput +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf945fb9 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xdfafc4cf locks_free_lock +EXPORT_SYMBOL vmlinux 0xdfb2e6c2 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xdfbb1dec make_kgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfdd63dc pci_reenable_device +EXPORT_SYMBOL vmlinux 0xdfe93ebc __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xdff3a3df netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xdff4b887 set_groups +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdff96576 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xdff9bcab snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0xdffbf2b2 down_read +EXPORT_SYMBOL vmlinux 0xdffdbf17 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xe02d09fe alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe0445c4f tty_vhangup +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe054ad29 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe069dc45 vme_bus_type +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0869dae elevator_exit +EXPORT_SYMBOL vmlinux 0xe08def4e udp_sendmsg +EXPORT_SYMBOL vmlinux 0xe0943426 padata_alloc +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe0a00a9b ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xe0a123a7 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bac689 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c3c246 submit_bh +EXPORT_SYMBOL vmlinux 0xe0d4a08d snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0xe0f44de5 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1219fdb rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe134572f swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe17b3d43 ip_defrag +EXPORT_SYMBOL vmlinux 0xe19ad1c2 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xe1bdd3e7 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xe1be0262 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xe1d03aa7 omapdss_output_set_device +EXPORT_SYMBOL vmlinux 0xe1d76734 from_kuid +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe1f99d6c scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2084474 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0xe21011e4 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xe21e19b9 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xe2288519 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25d99f5 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xe271abb6 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xe285fc30 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xe292fb9f gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe2954b00 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2acf3f6 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xe2ad434f iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xe2ae6af6 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xe2d0cf61 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d716e1 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f1136a genl_notify +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3017626 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xe3022715 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xe3047273 key_validate +EXPORT_SYMBOL vmlinux 0xe31195b9 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xe32f4dbc audit_log +EXPORT_SYMBOL vmlinux 0xe3509305 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xe35abb08 freeze_bdev +EXPORT_SYMBOL vmlinux 0xe36842c7 ip_options_compile +EXPORT_SYMBOL vmlinux 0xe3773701 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe3b53566 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xe3ca5c61 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3ffb9c6 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xe4031385 udp_del_offload +EXPORT_SYMBOL vmlinux 0xe413be4a memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xe4272edb jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe43ef51c block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xe45bc1d8 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xe46c2452 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xe47a9f4e __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe4a41d84 bdi_init +EXPORT_SYMBOL vmlinux 0xe4afa87d thaw_super +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4d3ae23 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xe4e6b727 key_revoke +EXPORT_SYMBOL vmlinux 0xe500295d ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xe506bbe2 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xe52284b7 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52a7014 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xe5445af6 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe545f74f neigh_event_ns +EXPORT_SYMBOL vmlinux 0xe5548899 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0xe567b65c __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe56b62f3 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xe57361dd __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe573991b __serio_register_port +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5806188 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xe582f13f get_mem_type +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59eaab7 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xe5b4a54b __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xe5b72105 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5c93140 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe609096f tegra_sku_info +EXPORT_SYMBOL vmlinux 0xe63a4634 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe64bbc7c pci_bus_put +EXPORT_SYMBOL vmlinux 0xe6550ecc locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe694fff8 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6a025c3 omap_dss_find_device +EXPORT_SYMBOL vmlinux 0xe6ade2aa tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xe6ca8c76 page_address +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f3e7bf xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6ffd248 genlmsg_put +EXPORT_SYMBOL vmlinux 0xe7075b97 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe70c5ffd simple_link +EXPORT_SYMBOL vmlinux 0xe71d4562 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xe7288f81 user_path_create +EXPORT_SYMBOL vmlinux 0xe737a69a flush_dcache_page +EXPORT_SYMBOL vmlinux 0xe742d037 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xe7715281 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xe77c41df nf_ct_attach +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7aed7df blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xe7b42aea xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7bcd401 key_put +EXPORT_SYMBOL vmlinux 0xe7d1b0c4 snd_timer_notify +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d73325 request_key_async +EXPORT_SYMBOL vmlinux 0xe7deab09 blk_put_request +EXPORT_SYMBOL vmlinux 0xe7e15910 dispc_clear_irqstatus +EXPORT_SYMBOL vmlinux 0xe7eb01cc twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xe7ee4a4b ptp_clock_event +EXPORT_SYMBOL vmlinux 0xe7ef0368 sock_no_bind +EXPORT_SYMBOL vmlinux 0xe7f59e16 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe80eb97a key_reject_and_link +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe836e68f simple_map_init +EXPORT_SYMBOL vmlinux 0xe83a900b input_get_keycode +EXPORT_SYMBOL vmlinux 0xe85d1ca0 security_mmap_file +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe88e9042 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe898230f mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xe8987153 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xe89c0e4b eth_gro_receive +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8b9a3d4 mx51_revision +EXPORT_SYMBOL vmlinux 0xe8b9bbdf md_update_sb +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8cfce09 tegra114_clock_deassert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0xe8d50971 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xe8edc5b8 dquot_operations +EXPORT_SYMBOL vmlinux 0xe8f5d4fe i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xe90163b7 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe954093d swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xe959be60 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe9658ed3 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xe9722cec mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xe9a2704b vm_insert_page +EXPORT_SYMBOL vmlinux 0xe9a7a94f unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xe9a82d42 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xe9a8463b nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xe9b4dc2d neigh_seq_next +EXPORT_SYMBOL vmlinux 0xe9be808d lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xe9c51310 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xe9c9456d dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xe9c9eef0 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xe9ccfcd3 ioremap_cache +EXPORT_SYMBOL vmlinux 0xe9db7ebf tty_port_open +EXPORT_SYMBOL vmlinux 0xe9e028ed netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea195ee2 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xea1f5b88 samsung_rev +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea8907db dst_alloc +EXPORT_SYMBOL vmlinux 0xeaa9d034 mpage_readpages +EXPORT_SYMBOL vmlinux 0xeaca9470 mutex_trylock +EXPORT_SYMBOL vmlinux 0xeae4d488 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb12cce8 ilookup +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb261526 phy_connect +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb499aa9 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb565e1b clk_get +EXPORT_SYMBOL vmlinux 0xeb7a40ef tty_register_driver +EXPORT_SYMBOL vmlinux 0xeb7aee93 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xebd18deb sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xebd8f5e7 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xebe5d07e inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec175e41 key_type_keyring +EXPORT_SYMBOL vmlinux 0xec18ebf3 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec568378 udp_set_csum +EXPORT_SYMBOL vmlinux 0xec70b6cf qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xec94f7af param_set_byte +EXPORT_SYMBOL vmlinux 0xec9e0972 sock_rfree +EXPORT_SYMBOL vmlinux 0xeca2615e of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xece0cd19 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xece2c060 input_flush_device +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xecfb8a86 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xecfcef61 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xed0684cb jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xed2ecc9e dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xed50099c lock_sock_fast +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed61c5ff mmc_request_done +EXPORT_SYMBOL vmlinux 0xed79fb79 input_release_device +EXPORT_SYMBOL vmlinux 0xed7fcf9a jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed99a495 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xed9db62e blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb32d1f qdisc_list_del +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 0xedfcf88b __sk_dst_check +EXPORT_SYMBOL vmlinux 0xee15a2b1 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xee17e59b devm_gpio_free +EXPORT_SYMBOL vmlinux 0xee215db0 alloc_file +EXPORT_SYMBOL vmlinux 0xee21e498 dquot_get_state +EXPORT_SYMBOL vmlinux 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee3fa11c napi_gro_frags +EXPORT_SYMBOL vmlinux 0xee3fd92f pci_read_vpd +EXPORT_SYMBOL vmlinux 0xee533bcd __devm_release_region +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee7afd19 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9743ce filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xee9c3647 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeed546fc security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef05dc49 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xef0c4c91 netdev_info +EXPORT_SYMBOL vmlinux 0xef0c738a sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xef21c6ae tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xef2fdc4f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL vmlinux 0xefb92f09 ip_mc_join_group +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 0xefd7505f pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xefdb206a i2c_register_driver +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00f6972 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xf015e8a2 bdget +EXPORT_SYMBOL vmlinux 0xf01ce85d snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0xf02a02bc of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xf0390c21 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06c303c omap_video_timings_to_videomode +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0cb7c04 dget_parent +EXPORT_SYMBOL vmlinux 0xf0dbb2f6 vme_irq_free +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf1038da6 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf119a884 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xf12595d0 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xf130e787 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xf1365079 pci_bus_type +EXPORT_SYMBOL vmlinux 0xf1389218 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xf13a4b33 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xf13e4059 seq_puts +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1505e2b find_lock_entry +EXPORT_SYMBOL vmlinux 0xf1758262 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1b46c5d tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xf1c4dcf7 scsi_unregister +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e0b260 edma_set_transfer_params +EXPORT_SYMBOL vmlinux 0xf1e2d684 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf1ea82a8 skb_clone +EXPORT_SYMBOL vmlinux 0xf1fdbbef simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2135d62 textsearch_register +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf25336d0 cdev_add +EXPORT_SYMBOL vmlinux 0xf2591d59 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xf25bb7c6 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xf27a08dc generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xf27d8e0e snd_timer_continue +EXPORT_SYMBOL vmlinux 0xf28777b2 input_event +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf29b11bf revalidate_disk +EXPORT_SYMBOL vmlinux 0xf29e37af peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2d4405e mmc_detect_change +EXPORT_SYMBOL vmlinux 0xf2de07f5 serio_reconnect +EXPORT_SYMBOL vmlinux 0xf2f37ee7 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf331fa7a fifo_set_limit +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf36d82b4 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xf374ee91 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf379ce1c key_unlink +EXPORT_SYMBOL vmlinux 0xf385fc6f vlan_vid_add +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 0xf3a19ba1 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xf3a2f43f blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xf3a4f6cf __neigh_event_send +EXPORT_SYMBOL vmlinux 0xf3b1e84e omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xf3bf2d1e tegra_fuse_readl +EXPORT_SYMBOL vmlinux 0xf3c1756c input_register_handle +EXPORT_SYMBOL vmlinux 0xf3c2ea3d pagevec_lookup +EXPORT_SYMBOL vmlinux 0xf3c39d49 input_set_keycode +EXPORT_SYMBOL vmlinux 0xf3cd8bcf snd_info_free_entry +EXPORT_SYMBOL vmlinux 0xf3e2b186 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +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 0xf44b497b jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xf44be33e PDE_DATA +EXPORT_SYMBOL vmlinux 0xf44dabd3 snd_jack_set_key +EXPORT_SYMBOL vmlinux 0xf454a134 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xf45ecf5b remove_proc_entry +EXPORT_SYMBOL vmlinux 0xf46dd282 init_net +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf49b7957 kernel_write +EXPORT_SYMBOL vmlinux 0xf4a25033 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xf4a61bd9 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4daa4ed scsi_host_put +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f71fc3 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xf4f83bca param_set_uint +EXPORT_SYMBOL vmlinux 0xf517514c kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf540c082 finish_open +EXPORT_SYMBOL vmlinux 0xf545545a mdiobus_register +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf55dcbac sock_wfree +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf5714122 softnet_data +EXPORT_SYMBOL vmlinux 0xf5b02d57 pm860x_page_reg_write +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 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf65140f7 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xf66d2b26 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xf6751731 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf68e57ac km_policy_notify +EXPORT_SYMBOL vmlinux 0xf69496c0 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xf695365e bioset_free +EXPORT_SYMBOL vmlinux 0xf6b4c192 lookup_one_len +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d9aaf7 amba_device_unregister +EXPORT_SYMBOL vmlinux 0xf6d9de36 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f3cef6 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0xf6f60cbc cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fd666a __inet_hash +EXPORT_SYMBOL vmlinux 0xf7007b52 find_vma +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf7271948 edma_set_src_index +EXPORT_SYMBOL vmlinux 0xf730667d dev_uc_flush +EXPORT_SYMBOL vmlinux 0xf7451eca __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xf7474acf pci_get_slot +EXPORT_SYMBOL vmlinux 0xf7515091 kthread_bind +EXPORT_SYMBOL vmlinux 0xf7566ae9 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xf757d9e4 migrate_page +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75e9f94 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xf75fca05 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xf77c9ca0 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf79c8012 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xf7a422eb misc_deregister +EXPORT_SYMBOL vmlinux 0xf7a64cc4 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xf7aaeddc ida_init +EXPORT_SYMBOL vmlinux 0xf7cc2b54 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81d59c6 dup_iter +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf833e2a0 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xf835666e snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0xf84cce98 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf85253c6 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xf853bbca omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0xf86691d6 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xf89ad85a param_set_ulong +EXPORT_SYMBOL vmlinux 0xf8cc8616 iget5_locked +EXPORT_SYMBOL vmlinux 0xf8d56886 md_write_end +EXPORT_SYMBOL vmlinux 0xf8eee90f omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0xf8ffa22f fddi_type_trans +EXPORT_SYMBOL vmlinux 0xf90f2f19 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xf922854f scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93bdba7 kdb_current_task +EXPORT_SYMBOL vmlinux 0xf9427374 dispc_request_irq +EXPORT_SYMBOL vmlinux 0xf95ed268 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xf95ef7f6 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf96b6d16 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xf9853448 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xf9a21d57 give_up_console +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ba82da blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xf9bd7832 follow_down_one +EXPORT_SYMBOL vmlinux 0xf9ca92b7 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xf9cad418 pci_iomap +EXPORT_SYMBOL vmlinux 0xf9e70aa8 generic_getxattr +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f4c87f phy_drivers_register +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xf9fe36b9 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xfa03dfed iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xfa1b3619 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xfa4834fd tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xfa5271f7 inet_sendpage +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa5cbca6 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xfa6876da blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xfa798f9e kmap +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 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae9819d scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xfafd81b2 freeze_super +EXPORT_SYMBOL vmlinux 0xfb086e1f of_match_device +EXPORT_SYMBOL vmlinux 0xfb199b59 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xfb26737b ppp_dev_name +EXPORT_SYMBOL vmlinux 0xfb37b2f6 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xfb561149 snd_power_wait +EXPORT_SYMBOL vmlinux 0xfb66d4be pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6d9a03 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbbd2a3f bio_init +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc8564c crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xfbd03132 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xfbd6bc33 kfree_put_link +EXPORT_SYMBOL vmlinux 0xfbde4328 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0xfbeba30a xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xfbf2504b get_empty_filp +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc2c6e9c capable_wrt_inode_uidgid +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 0xfc4a29fd __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc8675fd ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xfc9acdcb pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xfca95dd9 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf63353 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfd1778 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xfd00b961 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xfd1d9754 omapdss_find_mgr_from_display +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd382365 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xfd41bbb2 param_ops_bool +EXPORT_SYMBOL vmlinux 0xfd4c3b3d pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd5ecbc1 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xfd6c035c kill_pid +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 0xfda8a10b vfs_fsync +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfdaf3306 vga_client_register +EXPORT_SYMBOL vmlinux 0xfdd7172e __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xfddf7ab3 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xfde302e6 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xfde5b8ae flush_signals +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe0d5b95 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xfe1b2307 irq_to_desc +EXPORT_SYMBOL vmlinux 0xfe1b32e5 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xfe1e37ff tcp_make_synack +EXPORT_SYMBOL vmlinux 0xfe2c4db4 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL vmlinux 0xfe4d4c44 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe73082c get_phy_device +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe930388 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xfeb41331 inode_init_owner +EXPORT_SYMBOL vmlinux 0xfebf8d6e skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfefb6077 edma_alloc_channel +EXPORT_SYMBOL vmlinux 0xff064fee gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xff0749fe nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xff19548a alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22920b omapdss_register_display +EXPORT_SYMBOL vmlinux 0xff2930cf __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff52c02b dev_printk +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 0xff82d76a sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xff8cbb1f idr_destroy +EXPORT_SYMBOL vmlinux 0xff8f5dc2 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xff94b2a7 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffbefa6f abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xffcb54fc pci_map_rom +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 0xfffd322e kiocb_set_cancel_fn +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x075ecd16 sha1_finup_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0xfb7dba58 sha1_update_arm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x05bad37b ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x27936af8 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x7cfe2b5c ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x7ffd75e7 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x943854ab __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xb75c3ad1 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xda4f41ba ablk_exit +EXPORT_SYMBOL_GPL crypto/af_alg 0x11f4dfb6 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x2fff861c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x391de5be af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x4e52cb5a af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x7df5c5b0 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x93ed2bfd af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x9f806592 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc37ca917 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xf8ed29d6 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xff3d190d 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 0x90d76756 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xec2697d4 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x34aed9f5 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x3573376c async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x54b7b563 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x77952c0f async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x1bbafc52 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x4fb1d69b __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x96565935 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9b537def async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x0e3f617b async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xe2291eab async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x9c26d078 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 0x9067bf54 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x0b08301c 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 0x084466ed cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x20b4af35 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x2d8fcb2b cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x488c941f cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x6499c1b0 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x6ef8b2b5 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x7b2eb1d7 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x82a39a7a cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x9f13ba69 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xfb9dd70c cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x53c57c28 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 0xa46c1b93 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x0969c339 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2b8a3673 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x89f5e19b shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x91bafb5e mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa09a4a85 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb0dc5584 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb89bac52 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf8fcb037 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 0x13cff5ca serpent_setkey +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/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xf3d6740a twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x581701a3 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x3e94680d __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x47250bb1 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 0x02d976d5 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0acf3ae8 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1f99c786 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1fd271e2 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2a485dda bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x51e13fe8 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x52d846cb bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x61aa181e bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x622f2cab bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6da95770 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x71dab9ae bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x78a4dcaa bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7cd67b2d bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8c60ce34 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8e82cf74 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8fd505fc bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x947d19ad bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa6a7d329 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa7e5b7aa bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb60b77be bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb6c0b128 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbab70f76 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc2552dc5 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfb0aef17 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x03f238de btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x0ad05a02 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x152e373c btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xb696decf btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xbd41c6db btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd264e68a btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x2f4434af btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb5ed645a btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x37ea2b48 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4876c1c3 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5e4f57e8 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5ee92304 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6544c165 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x74b1fab5 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9a79577b btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb2c9e446 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb5702c2c btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xca9d0cc5 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xcc1db9e6 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x13141c4f 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 0x174268f3 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x6c0531ee dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbfa78f9a dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc117d08f dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc90b3fa9 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x10c42b97 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x49f2f26f hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x5802b583 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0e3a24eb edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0fe2b086 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x26eacf68 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2a4acd58 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c40d4fe edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x30d754de edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x32a92025 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3db38e9d edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x42252309 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x479549f5 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4ecf2409 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x53f92a49 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x61a1a854 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6526b4c2 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7271e4e5 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8041f809 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x862d2663 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8b1ab3e0 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8e2fd375 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbf75e392 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd5e9735e edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd85b3786 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe00070dd find_mci_by_dev +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 0x2b79f93f dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xfc390ec6 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x077f81b3 drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0ee6f3a2 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1a92900e drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2edaf801 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4a24d47a drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x62e72832 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6592c62f drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6a7702ef drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6b372b34 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x760e1604 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7b65df57 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x845b0f4b drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9115b7f3 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9ac03762 drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb80bf3d2 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb9bfc055 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc51ce2d6 drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe5da2ef7 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xea85912f 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 0x6879bf14 drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x7f87d2ef drm_fb_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xa4460e65 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 0xcc337fd5 drm_fbdev_cma_restore_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xe0cae3fa drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x58e1a39a exynos_drm_subdrv_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x6a0e6d7c exynos_drm_device_subdrv_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x783df753 exynos_drm_subdrv_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x8bb66ae7 exynos_drm_subdrv_close +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x8fdf8942 exynos_drm_device_subdrv_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xb9962133 exynos_drm_subdrv_open +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x01d26552 imx_drm_set_bus_format_pins +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x05691d0a imx_drm_set_bus_format +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x0e82b0b2 imx_drm_add_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x14a7424d imx_drm_encoder_destroy +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 0x5f056ff0 imx_drm_crtc_vblank_put +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xc2e91194 imx_drm_encoder_get_mux_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xd652b5a4 imx_drm_remove_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xdd4b3a91 imx_drm_encoder_parse_of +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xed9ab05a imx_drm_connector_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x91504ee8 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x98fd9ebc ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xbea3629e ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x02e62fba ipu_dp_enable +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 0x0d28541d ipu_idmac_wait_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0ddc950e ipu_dump +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 0x114f47ad ipu_idmac_channel_irq +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 0x15ec2ba5 ipu_di_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15ff551b ipu_ic_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x162e8c67 ipu_cpmem_set_stride +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x194b7ed9 ipu_dp_disable +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 0x2424c9a6 ipu_csi_is_interlaced +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x27dc74a4 ipu_idmac_select_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x29a4130d ipu_idmac_get_current_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 0x30e29d34 ipu_cpmem_set_yuv_planar +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 0x318df1e4 ipu_idmac_channel_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3394f9ba ipu_cpmem_set_yuv_interleaved +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3af7e3b7 ipu_cpmem_interlaced_scan +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 0x3fcdd4e6 ipu_module_enable +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 0x4e4afbbc ipu_module_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4efac6d8 ipu_cpmem_set_format_rgb +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 0x55dbf53d ipu_idmac_buffer_is_ready +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5bd32097 ipu_set_csi_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5f9c08f2 ipu_cpmem_set_axi_id +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 0x656e5844 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 0x73767330 ipu_cpmem_set_rotation +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 0x7818f85a ipu_cpmem_set_image +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7851c4d1 ipu_cpmem_set_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7b40987a ipu_cpmem_set_fmt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7cc0a9cb ipu_cpmem_set_format_passthrough +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x80f49e45 ipu_ic_task_idma_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8275824e ipu_dp_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x886c35aa ipu_smfc_map_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8d3b3582 ipu_cpmem_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8df78124 ipu_wait_interrupt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8f7c7844 ipu_idmac_enable_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9058e289 ipu_smfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x941a07ad ipu_idmac_lock_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x951a09d5 ipu_csi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9715b390 ipu_cpmem_set_high_priority +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 0x9b30057c ipu_idmac_set_double_buffer +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 0x9fc7294c ipu_dc_enable +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 0xaa6a534d ipu_cpmem_zero +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 0xb75c63aa ipu_idmac_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb8b4a7c9 ipu_idmac_clear_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb8f0fa3d ipu_idmac_enable_channel +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 0xc0c7fbef ipu_dc_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 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 0xc9589882 ipu_di_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 0xca1a439a ipu_csi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xca9b2f98 ipu_cpmem_set_block_mode +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 0xce307c40 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 0xd5055dd9 ipu_dmfc_alloc_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd53f0428 ipu_srm_dp_sync_update +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd8de3732 ipu_set_ic_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdbb9d5ca ipu_smfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdd719bc5 ipu_dc_get +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 0xe802226f ipu_cpmem_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1440dc1 ipu_ic_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf30058ef ipu_idmac_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf438e7fe ipu_cpmem_set_yuv_planar_full +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 0xf7f70eae ipu_map_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf8420012 ipu_dmfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf9ed222e ipu_dp_set_window_pos +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x08a06a39 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0a01ed1f hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1a453831 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27edebe7 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27fd57cd hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2d08efd3 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e8a624c hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31717478 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33f0976a hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x38718da1 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4b581807 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x539ace59 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x55db0928 hid_add_device +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 0x640cdc03 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x661b36ad hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x71d7ddff hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x765cc6b3 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7960edf6 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7b5df751 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8238aa63 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8921f6df hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ddbb92e hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x983b2dd9 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x99e9096d __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaf350d99 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb44d5259 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbaf2ed6e hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbed8383d hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5879a01 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcc359d40 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd1c9a075 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2c11548 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd7874aa1 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe7f40498 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x5bd58dce roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x003cbdc1 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x818d2ec8 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9a07ae7d roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xbccfb394 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd9c8b374 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xea2e8c32 roccat_common2_sysfs_read +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 0x45288f50 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x42c37794 ssip_slave_stop_tx +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x74cb80d2 ssip_slave_running +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x898e0ca3 ssip_reset_event +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0xa7475945 ssip_slave_get_master +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0xc7006bb0 ssip_slave_start_tx +EXPORT_SYMBOL_GPL drivers/hsi/controllers/omap_ssi 0xf96d347d ssi_waketest +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x089ed3ec hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x28be09d8 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2d89330d hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x306ccada hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31a5d525 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x479fa715 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4bfad037 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x55d38650 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5ee81a97 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6a20b539 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7ac45e99 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8815d021 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x887f67b0 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9c3924a2 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xafa08d55 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb26e5ad0 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb82ee3e1 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf50423f4 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 0x0a6cca9d pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x20c13262 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3eaa95d8 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x48bc7ade pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6b88e514 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6d782533 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6d888599 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb8c812cb pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb9bb33b9 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc10ae4d3 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdebe684c pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe84fd994 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xed7bb51f pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf254c1f2 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfec4db42 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x168d88af of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x1f2f902c hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x2b0a37df hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x3c68d8d0 hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x5798ec1e __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x86983600 hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xa8c40b1f __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xf6250c1d hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xfde7c761 __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xfdf351d1 hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x097da590 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2d14aa99 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x56fbafbf 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 0x6855d247 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7ebe2b09 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa067551e i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc966ba6d i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xea6dcc0c i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xebd8c505 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xba77d292 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xede8c4a9 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x8f1870c2 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xf7433b7a i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1f97825a ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x28653086 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3aedd092 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4b819ff1 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x65c203b6 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7ab48233 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa1534a3b ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xade20cd1 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf7d7a926 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 0x5a936ad7 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5a9f4eff adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x76d8e5f4 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9587c68b adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9baa137c adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa36eb6c3 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb2f5b59b adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb78a1157 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcc77fbf4 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd099764a adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd3b934b4 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd786c164 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x043e773b iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x144fa524 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x194c93e9 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x19911b1a iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x20500374 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x20b66cd6 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x226e3638 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x23748608 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x24ebbc6a iio_buffer_put +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 0x48c4e89b iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4b36f6c1 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5f79ffe1 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x60e77f6b devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x632f4016 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x776fb57e devm_iio_device_alloc +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 0x931a5a36 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x97f535af devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9808ce39 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa527ce6c iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3507cb9 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb4c7f19a iio_enum_write +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 0xd0844b9b iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd4964833 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed3819d9 iio_channel_release +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 0x019f92f5 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x821786b4 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x82d8a282 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 0x0eb062ee cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xd2a05915 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x12119f95 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x41a5006a wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4a55255c wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5b480355 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5f21fbe6 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x76d65e84 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x78c988bf wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7bbb1c91 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8669e7b6 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8e35e622 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x938bfb78 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc6afd7f0 wm97xx_reg_write +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 0x0726dbdc gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x189a1e06 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x19e2ea29 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x226d4c0a gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2435d39e gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2f69cb8f gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5a5a9657 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5b89d107 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8b7ecca4 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3f8062b gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc4e78cb4 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc9e62179 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xceb0fcdd gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4b2d6f5 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe9e0ba0f gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xed5e02e2 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf25cc232 gigaset_stop +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 0x225eceb3 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2576c610 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 0x5cc884a5 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x65c028ea 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 0x7e9ce463 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x81df5eb1 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8e474e71 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9e438908 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb56cf14b dm_cell_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-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0fd83190 dm_bufio_client_create +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 0x2567a1fa dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2b58b935 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x30e6844b dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x67c12863 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xba123e5a dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcbc6476a dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd0e4e4ec dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x36130bf2 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xae34860e 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 0x0d7303a1 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x15e098a4 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x295893d5 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x36d1bcda 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 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 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 0xf00ff203 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf25b07bc 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 0x42d1207a dm_btree_lookup_next +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 0x79db3473 dm_block_manager_create +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 0x1e5872c6 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3c0c3cae saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x67e2baed saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x73062367 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x75c8bf80 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7f6268a2 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xae3db6fe saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb38acf8f saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb8d887f4 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf3ad02f5 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x09eac0f2 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x18d2eccf saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x68b38b0b saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x7356aa43 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x83218efa saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xae8a10ba saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfbd851d9 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0ab98701 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0b015a73 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x161a18b3 smscore_get_board_id +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 0x3e57a258 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 0x5be90f92 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6e647615 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x71c50e53 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x86c44728 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9642badf smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9e901826 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa37d9e74 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa79a1c95 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbcb20313 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbf7c02d2 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdfcf4c7c smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe09ae4f8 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf0499d1e sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xfd1bc668 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x50555afe cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x241c93be 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 0xac6e8f6d cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x031daa3c mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x03318718 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x04c60612 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0a8b535e mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2d04f999 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4b0fbb48 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5785947a mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6543505c mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x787d7ae2 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x891871cc mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x96a85350 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x970adc3f mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa8ba708e mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbbe0ca29 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbf561b32 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc15fd809 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf3991c2f mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf855d811 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfc12ca4d mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0166e412 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x04f1aa0b saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1a9fe62f saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2853e309 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2afe6358 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x440c300d saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x44ec20ba saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x490a7f93 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x52454e36 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5579868a saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6508054c saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x745aa3da saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9b33e1a3 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa7c5921d saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa7e349c1 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa8473b2c saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc0387663 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc401696e saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc6fdbf64 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x22de17e1 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x34719255 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x39441040 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x55981d14 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6ea7f675 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xabd3bd95 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe2b80f30 ttpci_budget_deinit +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 0x1c1debcc xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3adab222 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 0x48344125 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 0x647fbc4b xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x911cb6bc xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xc2394f4c xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe14bc845 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 0x91924175 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x022bd2cc radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x0cbd231a radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03d36f61 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x15106141 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x19049dcc ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4213dd01 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x466db9eb 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 0x5757e0ba rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6883bb20 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6a6041e2 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x87329dcb rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x94b2721f rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x991abc77 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9e432da8 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa367515a rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa89da55e rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7dfd6af rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc31a4476 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe7b2d0e8 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xed92794c ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfd6529aa rc_keydown +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xb33f43ef mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x724b7c3b microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x616253a4 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xb5fc4f3c r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xdfc88d15 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x287b00f5 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x85492c9e tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xb65b1221 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x53cdd7f4 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x9112e398 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xba2a3cd3 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xa5f56719 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xff6d4f21 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x714e854e simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x009ae067 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x00f20db3 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x03df588a is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x10c62c25 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x14cdd3ec cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x199940fc cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1b5c8a05 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x299266e6 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x34aa346e cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x56e69d19 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x62e89f3d cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x68f6a9f7 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6cbdbaa0 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x81b45b4c cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8abb001a cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbfae4b94 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xca04b871 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xea2d68ed cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xea57b18a cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xee097f27 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x01268281 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x7100e111 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x09f6a490 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0fddfb9c em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1ddbb6f8 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x52b6466a em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x53ce8090 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6bc0f4d4 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x79054b09 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x88389bb5 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9ba1f7bd em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xac8079bb em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb0535c70 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc8558963 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc87d6b7c em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc9bc640c em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcab27162 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf8ec1ee6 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfb0e9c9c em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfcf496e7 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x069e98b1 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x1a21f823 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x7a15a421 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xb7101617 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 0x045badbc v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x4ed99730 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 0x8682687c v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xebe07707 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xece7f67c v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf17f747c 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 0x47d904c4 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xdcda16a2 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x06c9ceeb v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0f307d03 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x12547d7e v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x177bfad1 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1847073e v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1ebd1f13 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x33c61919 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x36aeae5a v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5f6660b6 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6c0e1b3d v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6e049288 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6f9778f4 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x70fcbbf1 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x79d306c1 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7a9b8b53 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7e4dc1f1 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8ce45932 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8e44eadd v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaaa9304e v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc9f4e9f0 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd199b0f9 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd916fe70 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe2996d09 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe718ffd7 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeb881ede v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xed6f64fe v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf19c4fb1 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x05bc79c3 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x07000d39 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0a58caa9 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x192a40b5 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x197c53f2 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x25e3bebf videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e867415 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x419b6d83 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4e141f80 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6289dc3b __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x65b9c12b videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7b780004 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x800f871c videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x81309dc4 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x84833cc5 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8fcdc102 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x925b60cd videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xad2fd36c videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc884e6e8 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd3b3805d videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd41dc587 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe08d52f2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe86d7bc1 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf5c5d775 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x2fdb36ff videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x9a743990 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xba0c4b90 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x198302ba videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x71dffecc videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x98badbda 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 0xd4b53cde videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x05247ed6 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x80f3226d videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe9135b83 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x06675b67 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0738201d vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0cea1893 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0e096556 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x142f2057 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x186e9476 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1ac63c7b vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x205dd47f vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x21e8f0ed vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2ba5b74f vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2e23beaf vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2eaa9874 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3bcd87be vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4c7c26aa vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4c80a794 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x510ebbce vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x51aa0591 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x59c055ad _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5ffb096e vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x60130295 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x718b9f40 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7b19d423 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c14bb6b vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x97de4dd4 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9c3231a6 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa85a384b vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb4a47c65 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb7c32a94 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbbf65c01 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbd0d97ae vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbd971e61 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc35a29df vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xca92790d vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcbcab413 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcfdc9560 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd998f0f1 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf0dfbbb4 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1ec76ac vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfa8498b4 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3350c8aa vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xd285c729 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 0x0f70bd1f vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x1c36156f 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 0x07d6d182 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x1df95f92 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xe10acf0b vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xf83990b4 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xa4cc30e1 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0444fc5a v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15abf538 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1b773fe1 v4l2_device_unregister_subdev +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 0x25448b18 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x321644e9 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d3bb56a v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44c3990a v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58e623fc v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x653f9436 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6bbb0beb v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6c2ea5dc v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6fa2cd1e v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x75ff2634 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8cd21ec6 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8d1d8f66 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9762d314 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa556a88a v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb4083399 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb4e52420 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc62b0961 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcba3041a v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xced7b91e v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcf4618ce v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedeafe00 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeeab471b v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1950cda0 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x27c98eec pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe8200907 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x19ab8e0e da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1b976cbc da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x431fe848 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7da0b81e da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xe2588445 da9150_reg_read +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 0x5cf74d72 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x8a24abe8 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xff91263d lm3533_write +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 0x32cbc7d0 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x5369b43c lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x8d8981b6 lp3943_update_bits +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 0x1a73a2f3 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x21c5244c pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x31f03a46 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5032ca40 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x90b3ac8f pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9ef106a4 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa365e3ce pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbbb4344a pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd5d2f1df pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe6ff6a16 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf293278d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x3ca546c3 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xcac9048c pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x3e03aae6 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x58bd364b pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9bc04e3a pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdae7ec0b pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe9a4841b 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 0x09f31291 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x19402376 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1fd7f4b0 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2760f929 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x296b7edb rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2c61aae2 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3f719d11 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4369ad01 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4e22a0d5 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x80bb2f09 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x88140929 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x91f3892c rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9b935f8d rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa76ce2ac rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa9d2cbbc rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xad921e5c rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb659e385 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbbea7da2 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc3715065 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc4845e0e rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcff0fb40 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd939b717 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeea048c7 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf54eeb74 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1b7cfb67 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1d23a31f rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4781d4a2 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x600a5eb5 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x69cc8f23 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7366eace rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7a508d14 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x88fc0282 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8c867a86 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa245714b rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xaf76b95b rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xda6eb221 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe11f71b0 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x01663322 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0555e1c3 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0ad22398 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0c7bc9f4 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x10ea99ce si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x19c62bd0 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1c8b9a0a si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1f867f03 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x25662b0c si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x297ece58 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x37963095 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x386a3159 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3fedc4b5 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x453d6e76 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x475906cd si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4af138ee si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x58b5dfba si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5c789623 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x73ee3370 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x772fd8a5 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x80ef12ff si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8262408c si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa120df1a si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa249382f si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa8af8aa9 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa9fe6e1a si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xace266b6 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb3e2c0ee si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbd56212 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd7eb89b7 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe19a7558 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe8229000 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe9c5d593 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfee8732e si476x_core_cmd_fm_phase_diversity +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 0x1a17988f am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x41e4da07 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x50de8a21 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x6e10baf6 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x1e7f30bb tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x744a717d tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa97ae32b tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xb06ef48e tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x0acb1392 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x1a4c9cae tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x7891f197 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xb6a59308 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x4ab1cd49 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4ed50771 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc290b295 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xde887d02 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xec56fdce 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 0x1637697a enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3af8751e enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3fe314d0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4d770a07 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x584dee4f enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x76126136 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x81e6276a enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9edd3f52 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x01078200 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6315583d lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7f2f73ce lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x822b8f4e lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb5067a86 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xdc644279 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe953b2a8 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf79b33d9 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 0xa163e047 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xc6cb420f dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xc89b4ecc dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x00e1ec19 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x3fc8c9f1 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xfdffc98f cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x1497d635 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x6ac59de5 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe76e19b3 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x8eb2186a cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x09ef2bdd cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xa75c397a cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf8a1ae72 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x2acf0a3e brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xae969045 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xb46767ae brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x65c2400a sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x4213700c onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x4e2fece0 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xeafed685 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0cf815b3 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1a5622c8 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x28214d25 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x35918511 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38194b34 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x39acfd64 ubi_leb_erase +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 0x646d373d ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x67c4039b ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9d7cc564 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb71e04b1 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc7cedd4a ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd0e0c398 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe44e2ab0 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf6ca30ee ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3e433af7 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4e1649af c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x71a79fa0 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x83449b3a alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa6d42e34 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xceb27295 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0085d1f9 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1674d8e7 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1fae22d4 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3caec49d open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4626ee33 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5aed8a2a safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x623ce8e4 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x62dcec57 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x646e90bc free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6963a5b9 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7928c6b0 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x83e05b59 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8fc8bf4d alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9468d09f can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9a9d204e can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdd473624 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xefd2c0da can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf84fb236 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2caaa31c register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x3ec9102e unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd8167131 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xfb48d74d free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x45f20276 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb13a0ca4 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd0516ec4 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfaeaa652 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xd8f63e25 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xe1976443 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02b89216 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03721e35 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x039eb6ed __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0515ad01 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0536666f mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x057bdb84 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0820df89 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bbe97be mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x110354ea mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1123db0c mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1174f443 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15c9162c mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19ad1866 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e2452aa mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f69fc8a mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x202e7adc mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2589b49a mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x263285cc mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28adb508 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a929ac4 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c45d879 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c809e27 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2de06dde mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33626137 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3533546e mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3770387e mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37bf484e mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3851e1a7 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x394af597 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b8ea863 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cdbc29e mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40cf75aa mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x443c74e3 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x448df104 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4624d10c mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47ab5dd4 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x486a0072 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ad9c34c mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4afcccc4 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b2b569b mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bc0bbfb mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d4c38df mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53d1a0f6 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5788b5c4 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x586edab2 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5eadf90a mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60cf836a mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x648c7cf0 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x671c2e69 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6dc543b6 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6deb8493 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6dff34d4 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fa2be32 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71b3cfd6 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73d2fb6f __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74a9db2a mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x761dda94 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76de41a4 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x779b6f68 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c65d326 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c805e7c mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7eb12132 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x801ad707 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80e353c5 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81fa5d8c mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82f5c58e mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x848723ac mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84c15a35 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85a8198a mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8af36574 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c03881a mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8edd0e6f mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8efa32df mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x909301a6 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97059d5f mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c2cf8f6 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ca3a76c mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9cae8d99 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e2e1fb6 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1f7c6ee mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8ef2a64 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab41cabb mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab4b15be mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac24a29f mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaead70e0 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf63c0b3 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0cf1b9d mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb10c9a08 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb18a9b5a mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4981b7c mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8214d33 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb911c21c mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbce50547 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd8bf681 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf26287e mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc17231e2 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1e220d1 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4268c53 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4f3711f __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc6338e26 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc94346cc mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9afb7aa mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd118c5e8 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd52f6c14 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9552eff mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda270fe6 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb83e7fc mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd14f7ff mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd91f5e6 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3690b75 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe375cf44 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe54dafd7 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5f26e0d mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8bad3fb mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9168d01 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9f2a9b3 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed0c600c mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeee0e92a mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1975543 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3128b87 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf419da21 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd4942d9 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffd4f2ef mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x06b47921 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f68e8cf mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23d3fca6 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x364991b5 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c3c90d7 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e76032c mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ffda9b2 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x400ceafe mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40c108a5 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4234d92a mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x44dba7a0 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x47efe12b mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4848a3fb mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57182842 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57d54127 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58345a3b mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6256cd95 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6271e5a5 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72b162c7 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75d78e4e mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f080107 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x97e1eac2 mlx5_query_port_admin_status +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 0xa7428ece mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7c68879 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa9cb7068 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad98a590 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0dd013c mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1191d3e mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3f880ab mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd0ea3b35 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe180a2d3 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe986e06b mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea199330 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf37c2797 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe81ad69 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x758af655 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7b5e50d5 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x9c6e2a53 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd424beac stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x7083c936 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x8fe9d601 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xfb6dc617 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0b1b461e macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1a762be6 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x359800ec macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6dcd98cf macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x9648e54f macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x85986b50 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x113157b6 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x11f31b34 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa7f03c0c usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xee5a6453 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3c9816e9 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x408f1024 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6230b585 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8994171f cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa323de9c cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa3926661 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb9f3cf48 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xcebae102 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfc626d08 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x01efa2d5 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x412f6eac rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x66bc61d1 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6b55d047 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xecc831b5 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf7cab627 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x11bd15c8 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x176bb0a3 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x17f529b7 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1e6b1201 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x367dde53 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4bea19de usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4c105101 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5d34c513 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x65d3c2c5 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x77446c15 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x797964bb usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7acf9ba8 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e0bdc0c usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x83eb4b65 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8636d5f8 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ccc44df usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x954bac0d usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9d483bcd usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb066925e usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb55c01c4 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc1afcddc usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc4889377 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc5e0bfc6 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc898fff0 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb837fe6 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe4382ead usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe838e81f usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeeaa7ffc usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf2176324 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf3ed4a60 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf7c6392c usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf922b099 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x2a876942 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x38879ba7 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x5e4a16a0 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xcbdc8bc8 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x348d2149 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x37a53bd9 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x42962a39 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5b240baa i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x756b4ae8 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x84923c37 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x84eb9cc6 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8a4c6b77 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8ba48368 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8cf59fa4 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 0xb1b6e5a1 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb5b67054 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb6ea4c26 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc9cedf5f i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd4c006fc i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf4e6bf0f i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3e8aa2aa cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xbdc4f73c cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xe3bb73da cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xe9ed80d6 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xe8cec3df libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x269bdd87 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x54f55e41 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x78353901 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb3915072 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf67d5ada _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x021048e4 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x02dc1b4c iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x194202ee iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2da391c1 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3507cb2c __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3c8571d9 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3f0b9a6d iwl_remove_notification +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 0x60c3edee iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6282639e iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x65300e15 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x72d192ff __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x80826dad __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x89c2693b 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 0x92e64568 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x97d10e4d iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9f4a0e24 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9f7789d4 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa4d2ee5a __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa5e3537a iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xac26f271 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcd9cfb23 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd9d5f708 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe11f9eaa iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe2b027b6 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xeb4f9e6e iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5032a20 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf77fc965 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x040669f6 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x170c9277 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1d8f279a lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x370c93d4 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6d6cd9b6 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6e6ba546 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8b38643f lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8cc1337b lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x960bb449 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb5d177ff lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb65cf83d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbba781b3 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc2b95d81 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc8efe750 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd83e4c80 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf16579b5 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x17f774f1 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3152ab27 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x86a3febb lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb1981e0a lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb3fef810 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb8a4158d 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 0xf07c0569 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfbc168e5 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x03f824f4 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0ec8c5b8 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1606ae89 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1d8430bb mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2470e88a mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2be1c9d5 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x307567d3 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3184c688 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x45091d46 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6e5818ba mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x70e25fa5 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x94c43d73 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa4e5ab29 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb3c18c3a mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc8c26f08 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xeb0591c4 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf21b8c4f mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5c4fd6b5 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x842fbd5e p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x902bf3dd p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x91c50cfb p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9842226f p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9f4c6e43 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa5b32ea6 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe681af05 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xee1a9c2a p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x51a70f08 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd84245e1 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xe60a8d9a rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xe9481970 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x07292ff6 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x086d0a54 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b540c51 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1077bb70 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16267be4 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1ba042ec rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x23a45a43 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2a35a942 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2dc3277e rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x31476a99 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x45989e73 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5042124f rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x51704258 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53e15e4a rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e2860d5 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x66292ed8 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x697abfaa rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6cac69dd rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x73875962 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x75f1386a rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7f9e40cd rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7fc493db rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x975eed6e rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa0d06276 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa88f6df3 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaebe1782 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaf60fc12 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbd31ba31 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc71991b8 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc9fe6adb rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xca15e196 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd385e2e9 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd965dc92 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9a85a16 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xecc3da54 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2287f10 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf80a819c rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfca615bf rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x01618563 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0e3253b7 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1c28fa77 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x287cc6e3 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4e0f700a rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x60f3d3c7 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8442112b rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c5909b rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xae1b00fb rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbd8cb751 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcffbbd10 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf0637695 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfb75ca4a rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x11dad0fc rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17caa76e rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17cc43cf rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e695ca0 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ff5ca9b rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x262d23f1 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2ed1b24b rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f4dacdc rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x341ae8f1 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36d26566 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46148ff7 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4c15fe49 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ea25eeb rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x543f74ea rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5442bf81 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x58ce0984 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5c901b87 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60dbf86b rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x62082e07 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x625a7c03 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x705c9a91 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x717bc713 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x72034804 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79549a46 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7b64c16f rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f6a964a rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86240265 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x95c27c7c rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xacc3bfad rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbd47bb6e rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcb0d254d rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd44aa29 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd3351795 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd49cdfaa rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd97ed9eb rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd99ca3eb rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xda1270e3 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdafb426e rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdd7733ae rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xde393d80 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe59dc1f0 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe8cf2484 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe9f38a4b rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf2c911aa rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf9fb5528 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfb06ca35 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0d22a948 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x172c4ad0 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xc7f85992 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe90c3583 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf67ae5ee rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x19b54482 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x4ee2adf8 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7f3510a8 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb0b861b4 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0f2529f1 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x16697760 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1ed2a0b1 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2c1c387e rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3073a678 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39be2a6e rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3d9380bc rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x490ef2cb rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5eee8f36 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6c031baf rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x707dcf04 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x70fd9d85 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8d9ba958 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa9a8a698 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcfb0007a rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe9385fd7 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b8be63a dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89378fc1 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x93f1f2ea rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9f385e3d dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x13fbe965 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1d1aa1e4 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x288bd20b rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2a6eecea rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2c31f2fe rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2f7d41b6 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x362ff25f rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3c08d581 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x532b5b7d rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x539f0953 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6f6e1324 rtl8723_phy_rf_serial_read +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 0x71dec939 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x783a6cfe rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7e1f2c2d rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7e5d3a9e rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8069f62d rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x80bbb345 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x85f086c1 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x864499be rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8aabd346 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x92838a10 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa56bd9d0 rtl8723_write_fw +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 0xb18a36b9 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb6bf34b4 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeac389a3 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeb0bffc1 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf2eea750 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x17366283 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x194b75fb 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 0x2d882d91 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x398af490 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x573d65ea rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x626143a0 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6e4a159a rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x83d9d9e0 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x884951aa rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x975502b3 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9da7efb3 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9e6226dc rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa012ade7 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaae49a1c read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd42db0ab rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd6596e0a rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf1247dea rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf811203a rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x3fb3bcde wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x6ef71ff2 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb1ed14f5 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x045ee454 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0d7d3680 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0f2b215c wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0fd65fe3 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2b41104f wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2d7c6f35 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x31336788 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x41fe63b1 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48daeeff wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4974b5c8 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4a9f1efa wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4e02a894 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4efb546f wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5029bd21 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53b99c80 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 0x5c152ac0 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x67aa1cb6 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x680cd14a wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x718b37e1 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x73d00d8a wlcore_boot_upload_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 0x783ee889 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x858be0bd wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85ef3ce7 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8d9107a7 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x935d6739 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x996fc336 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x99e3a56d wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa203ef60 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa517f3f9 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xadd11a5d wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb017a527 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbab1866a wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbd1e7769 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcb2aa3e1 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5e68efe wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8988dd0 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd412c5d wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdffdec73 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe209c4b7 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe3a49c24 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe752c533 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee512665 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf8b5549e wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x029e61bf nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x7c1aa41a nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xb8f78926 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xffe83025 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1a3c6ff6 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5c070b81 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x64558a03 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa7618a24 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xad0d99dd st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb4405d10 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcb7ef7ee st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcbf269f5 st_nci_disable_se +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 0x8c589f77 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc3f33cad ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf34182ac ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/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 0x0f3dc6b1 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x23b88cc0 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x75053ab0 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x11370569 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x13e4b3f0 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5640e5f1 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5b888659 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd6a8a3e5 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x18149219 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x44ce8e21 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x575427c3 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5cd1a13f wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd152972f wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd80b2020 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xfe2436bc wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x00ee9386 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02c6f027 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d4807d1 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f997a95 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1e15a77e cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2075247e cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x209646e0 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x23dfd7f7 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2df34b08 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33523c0a cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x35d4cdce cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3accf380 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3d830160 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4259554d cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x443f74bc cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4950b63c cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b080d20 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52fcd9aa cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57fcc8cf cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5ad1906b cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x69aa583e cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6ea5bd82 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6ef45dfe cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f78719f cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x734c4d1e cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x73c8b96e cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x74c7532a cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76cdf431 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x793bd082 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b61b7ff cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8166674a cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x883e5918 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8894750c cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8ae209e0 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9070ab1a cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x93d862c0 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f5970ae cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0803834 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb83012fc cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba84fb56 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc0df1d84 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcc70ad4f cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd3341a06 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfce09dd6 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfd748667 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfe14fd6d cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8d51b2d0 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x90b0b71d scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa57da1f0 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc6875d14 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xccc46b17 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xda00cf7d scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xf8bbda09 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0a3df0a6 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x10c2c203 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x25468e41 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x26629186 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x33e3bd20 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x40aa89a0 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x46681abe fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x55a76bcf fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5837c6f5 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x81e8c9e7 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaca0c66b fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xae437c0d fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaef77e1b fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xec278f65 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf2aac432 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf9ef0b74 fcoe_start_io +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 0x0b322bd0 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0f1616c5 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x114222fe iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12a4c246 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1403035d iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d4bd991 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2ba403c5 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3041ec6e iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3168a504 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37bbd5f9 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37cef6c4 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3a6e6115 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c393cfa iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3eb90d8a iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3f64e856 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x45474046 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4d2316c6 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5aa0d35b iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5fa852a0 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5fc8a060 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x63919562 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6ac062c4 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x76f5c518 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7fe42ae7 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x970be6ba iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa6b7cfb2 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab552bd7 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb28f254d iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb2a8bfdc iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb51c7b6d iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb587808e iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb5ce7f15 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xba69ad64 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc592458 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc790ce84 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5dda114 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe2fafe04 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3028e35 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3237698 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeda34d4d iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1b7bb0c iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xffe8b88c iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x03f2431f iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x10621e71 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1ea5fe69 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2a0e5b03 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x38d6e1db iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3ada6b33 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4c2e46ca iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa32c6ebb iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb217c7e4 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb936ceca iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbea7e0f9 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcb49131b iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd4a62b06 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd9ca8078 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdab81b82 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdf370228 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe159f9e8 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x060b0683 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0bea9af8 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1dabefcb sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x25684a37 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x34e78d2a sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x43dc90dc sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52104ab6 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5418c484 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x760e634c sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7a4df365 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7d0a0302 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8ab6230f sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x924edd24 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa7137d2c sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xad215118 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb40a173c sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb079949 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc2452726 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb34a955 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd24cc948 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe14f0fed sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe83d5a59 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe92f8b41 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xea92871a sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0fbe9022 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1087f80d iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x118fd871 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f6a1a99 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x210e7e76 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24848c0a iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2afa14b2 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2bbaf4e3 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x32078b6f iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34551403 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3e25a014 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3fff1c25 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47cbe98a iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50890f0a iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6407203e 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 0x7bc8cc08 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7eb770f3 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x909f0943 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x97476fa3 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c8cf759 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9d164400 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa0256265 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa1f2eae5 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa664625c iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa6f2cae4 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8008a17 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb1983d72 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc63dd7f8 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xccd20e2d iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcfedd65d iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd382644c iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd8510540 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd89d122a iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdf070aa4 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdfb35668 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3f5657f iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe5b8a071 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xea18e8a4 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf8bcd4a3 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc4ef99f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x353a7b1f sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x47a136e4 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x9f74e736 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xadbe4d08 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x53bf3c8f 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 0x42542e61 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x48a7aa7f srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6312a0f0 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x913eafc9 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xddf97443 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xe554e97c srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x2a39dc91 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa3128b9a ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe5c2effb ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xfe36461b ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x13a63ce4 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2e9d05aa spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4100a58a spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x43f95fb7 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbc6e1228 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x179cc781 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe24755f0 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xedc4f945 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf8b62ed8 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 0xfa537771 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x01d2eafe comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x02f8e1f6 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x069d3d1d comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cf68099 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0ea72dc4 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x14309f98 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f5f6c90 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21c54d95 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x28ac7b4f comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2ab090c1 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2ac13dfe comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2d9ed9e7 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4d4b5250 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5b581634 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5ffd65f6 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x70a1a582 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x887e0a0c comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8b0b8366 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9024f2f9 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9bf64150 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa410720c comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa8893e9e comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xabefddcb comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb343dafc comedi_buf_read_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 0xbb665bd9 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc63b9884 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd36ae9f8 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd6a0f250 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb93e262 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdbd862b5 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe1189d4b comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xea99b2bd comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf3d2de0a comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf98fc208 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfd142903 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x34c1be63 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x35bbc65b comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3bcdc1ee comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x957574cd comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xba0aa0bf comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd904c0bd comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe7c23f0a comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xf30b7008 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x1de5c29a comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x428f1573 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6394ed25 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x79668a46 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7bce96b9 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x8568c560 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 0xab55a64b addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x29e83995 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xd8cd4ad1 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x26753fed amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x00ef2e5b comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x07b30083 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0841ee15 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0bc85973 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5270f496 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8674f3bc comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x919e95aa comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9d306a87 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa7e78bbd comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbf0d40ed comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc572e952 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf3fba012 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfa819bc7 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x94106451 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xd18e6263 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xdafe2213 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x851b33bf das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x067152da mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x14de5bbd mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1e9617e7 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x287f460d mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2fced5fa mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4e3070e7 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x56d735da mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x579da887 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7f8fba05 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x80079ef0 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x88b57932 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8d423c78 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa39db0d3 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaa68a0ba mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xac386c8c mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaf0752da mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc6d3da64 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xce2329fd mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdb2be616 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe179b70a mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfec590f5 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xa8ad6586 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xc2dccba4 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x026d85e5 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0c1c5270 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x25d2358a ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2c99a9ef ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x698edfe9 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb4205bca ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb674420a ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xefdef91e ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x2d758f27 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x32e4d39d ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5625f30e ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5a348ac6 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xa7d2efbd ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf85d3a5b ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x300fefab comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x68675e52 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x75251297 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x79133083 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8118208b comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa1ef917a comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd6c715b6 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x18df7c9a adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e3f3d48 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e8619a4 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x53b67366 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d64ba3f lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5144b5d lustre_sysfs_ops +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 0x0ed88f98 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3bae3d3f synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3d9e3c32 spk_synth_is_alive_nop +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 0x474737b7 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5167593c spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x61094032 spk_synth_flush +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 0x95f1f57c synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9f364cde spk_do_catch_up +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 0xcab6a3d2 spk_serial_synth_probe +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 0xf01c9efd spk_var_show +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x586ab72f uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe6e7917b uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe8effef8 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x08a06273 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xe1437067 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x1fc7c969 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x8fbd9450 ci_hdrc_add_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 0x10e37226 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xabf9a191 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb9c945e4 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc33434b0 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xda318894 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe66be4d4 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1167174c gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x12597842 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x13bba6f2 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2e97da88 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x451630ae gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x48f913e5 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x49cb0f92 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7eb6c892 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x824407e9 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 0x9924fca0 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa0fb537a gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xae68ff34 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd9838f23 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe31407af gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf889ad6f gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x30d5bfd0 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x916ce938 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 0x0517a6a2 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x25bad284 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x78bd43eb ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x00d60397 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x04dbb9b2 fsg_show_cdrom +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 0x0af5648f fsg_lun_close +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 0x217fb422 fsg_show_removable +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 0x53946eb5 fsg_lun_open +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 0x61edf892 fsg_show_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 0x8a32f03f fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 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 0x9a4e3a51 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9c72e281 fsg_store_file +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 0xaa78b50e fsg_common_remove_lun +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 0xc8672d8d fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd24986b4 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 0xdb93e470 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 0xee5210bd fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xef3b29cb 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_rndis 0x0299d98b rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1ddd5bd5 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x28e198bc rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3b91049c rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3da563fc rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5190b68e rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x60e47a46 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x67b84aa3 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xaef4ac28 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb067ae35 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc6d38b12 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcdeb9dac rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdde94f78 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe40c5ac0 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe8022cb5 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0408e0e4 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x06407ea7 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x12fbf03f usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x28026cda config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3ac90db4 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3b8c3f35 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3dd6df54 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4e007147 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x767b7bc5 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7f384140 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x860af4d5 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x86d0cfe5 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8b870847 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xab7869f5 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbcfd2918 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbd2ffca2 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbdc93c57 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc7ec7bb9 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcb1a2834 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcb1eb241 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcf8864ac usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd52a81b7 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe1234115 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe8940a97 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeafb4eb2 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeec5b0f8 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xef04db5e usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf54fba01 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfa27152d usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x21b1d7b5 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x5c55f167 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3817119a usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x553d6dc7 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5c492346 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7775eaa8 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x786e2c1f usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7a30eb84 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7c12473c usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x96a6562b usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf3a34ead usb_ftdi_elan_edset_empty +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 0x86e323c6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0x388cb86c tegra_usb_phy_preresume +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0x55181d67 tegra_ehci_phy_restore_end +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0x7f2dfb6b tegra_usb_phy_postresume +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0xd7628b43 tegra_ehci_phy_restore_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x1efed833 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0b450f7d usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1952a7f7 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x28492d09 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x37cb748f usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5368fb60 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6653db1b usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6729a439 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6b8db5a7 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x73bf0505 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7e4af1a6 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x83687e6f usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x860b6650 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9333bf1b usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa4c675f3 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc0751529 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc8be75ce usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd18f45ac usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd78f47b6 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3961b43 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf6aa989a usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xff2f04a8 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1e8d7c76 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2342c528 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x29059fb8 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2b02ad21 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x325cc243 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3e346d9f usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x42c14907 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x46d88032 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x54ba132c usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6b8ac773 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6c96a852 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x75c490a7 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x79938452 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x95c19bf6 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9b6ab5bb usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9e391f47 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9f3a70e7 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb1b5baba usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc9032a37 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcf99dce5 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe514aa20 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed677670 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf55f8ec4 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfa784afa usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2b40de9a usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x37b839fd usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x63bf7ab7 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x68bafeca usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6efc95df usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x72c1a8fb usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8353fc9c usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8683243b usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9b877518 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb592707e usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc97184a8 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdc6058cd dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x14b805e5 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2ae6a4f0 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3e1a53a3 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x72039926 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb1111c0d wa_create +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 0xce5cc19e __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd84e4f7e wa_dti_start +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 0x13b60959 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1d837a3d wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x22c0ade9 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x285bbe0f wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4310c99c wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6e179a52 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8dedfd57 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9689ca47 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc0b49fc1 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc6a316e1 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcc5cef61 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd27271c1 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd956b624 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf91b0486 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x2ced9429 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x35612686 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xf58c289d i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x1c776f4b umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2563dc80 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2989d426 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3566f705 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x462ed470 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb634db1e umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd08c4b9c umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdc89489f umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2297af7d uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x233ed3e8 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2b58fe0e uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x300e693b uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x30204d93 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3286617d uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x35dd1b7e uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x392d1346 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c578df3 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4608a5bc uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x48c3abc3 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x59c6a208 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5c47507e uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x60af9bf3 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6ae6f1cd uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d0aa918 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x79aec74d uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7bbf2659 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8361dabc uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x866c015a uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8bd2405b uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8d7e911f uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9e4189bb uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa4de690b uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0a99988 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb2b822ef uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf89ffe1 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc1e4e6c8 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc39c17ee uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xca6d8987 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd12f9479 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd26535b9 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2abcada uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdb5fa1e5 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdbfeebb4 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdfb09fd5 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf16e081b uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x4fe527bd 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 0x98ca0d0e vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0xa435f29d vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5409ffc5 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6760bd9a vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x8160db41 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x84ca592c vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x8724c9d7 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe33926c8 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x14764e9e vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x95c9cbae vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0bb3fc8e vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32bcc5e8 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x39f1d865 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3ef05183 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x418abf1c vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x471ee2f0 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x48a1a8af vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4d4d8cf6 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5304c4d0 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x546befee vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5ea7b308 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5fdb99d6 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x71660f45 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8a8f19a1 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8c478d18 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaa3da9e5 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaf1c6682 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2ad3efd vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb50c0ee2 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb6ea6ef9 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbb94616a vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc13a8176 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcce086b9 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd1936055 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd6e9d02b vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe713c891 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe95afa5d vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe9c6740f vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf17f97d9 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf5436cd7 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0f0515d4 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1709817e ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x300f40f4 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x735b8125 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x77cb51e4 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd5e61096 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe2473e4f ili9320_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0261d6ad auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x06da1b91 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x541ec4a7 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5de0884e auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6518ba2b auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x77516687 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9bb6d0ee auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbd0e7a0f auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd6853856 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf363b67d auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x86d151fd fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x71c18dcb fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xa0e5504f fb_sys_read +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 0x4f25a92e sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xa49a7edc sis_free_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 0x6c0c16b2 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 0xd2f79261 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xfe3d11c8 dlm_posix_get +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4a3b17ea lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5df0ef29 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x62d7cbc2 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x68045639 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6e114ee8 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x91234e1e nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xead5f6d4 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01cacdbc nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03e3e5c7 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03fac2c4 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x084197a4 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08e364e7 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b2b21c1 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e041ffe nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f19a813 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ffa9921 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1428b3cc nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16f40adb nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17bfba73 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18f41aa5 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a70c1d2 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b69139b nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ebeb9be nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x215541fa nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2175fce5 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21bdb0e1 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x236641bb nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24df13c4 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x269015e3 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x272a68d5 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29684ca4 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cc0290c nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cd65acc nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30ad4f42 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30c877d7 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32900f09 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33f3ad79 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35356197 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x388a4c15 nfs_force_lookup_revalidate +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 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43c9ac0f nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48d9db86 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48e87439 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x494b113d nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b26d9ec nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b81d715 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d6e8c78 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4df88338 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x502585f9 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51973529 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55b7d981 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58bcfc32 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a5284a1 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c1d44bf nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cacb7b3 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dcd72e3 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65665887 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68b40245 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d6a732a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6daa8080 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e231805 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6eb098ad nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70cd89d3 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7857d2a3 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ba13206 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c61f1be get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c7b4083 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c8d34aa unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8069411e nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8463c928 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x861d32cd nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87558051 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89412178 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d5c29af nfs_sb_deactive +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 0x927b261e nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98d8e5e9 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9dafc310 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ec3fea7 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa06d3271 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa11c072b nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa14cb1ab nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2538426 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2c8c81c nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa424c38f nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa69b0f97 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7ed206b nfs_pageio_resend +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 0xa9770952 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab8bed60 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xace63630 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad2d9dbb nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaea106a0 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2aa27f5 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3130f5d nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4d62795 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6abce31 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb91eea0d nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9fa3ee3 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdfbafa6 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe98407c nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbefd1505 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc105d8ce nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3bed395 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3fcdd3e nfs4_dentry_operations +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 0xc6591274 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7f0699a nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8285233 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8e34a45 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb050d1f nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2c7ee62 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3b4735f nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4d167d1 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5d9d290 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7780369 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd82bd98b nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd83e4ae9 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc528893 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd2741d3 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd83007c nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf334b90 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf992cff nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0c15e48 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1de7440 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2078c61 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3b4d12d nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe49d3d33 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4cd5a1c nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9f52526 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea007711 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeadc9dd6 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb86fd1f nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf16d3795 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2396210 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc27a39f nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff786013 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xd3d8806e nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x012c7928 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x02bf89cc nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0996e9d3 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0bd765e5 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c1fe460 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c9dfe12 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1555f300 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19eb6ef9 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19fb4b59 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e6bdc03 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f596957 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24e0361d nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a63ad2a nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x350285a6 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e57477e nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40536a5a __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x445df5b1 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ac49a3d pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e1378af pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f3a07c6 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f7affd2 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5891bba0 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5bac553d pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e0a730d pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f1608c2 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6141a363 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x64f5dc53 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68558307 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a64a11c pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6d91d308 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6dc237ae pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6eae1208 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71df9950 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ba5bdfd __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c0340a0 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8065f470 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x80fba0c1 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x899f13d0 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8a659f1a nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91c5c278 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9412612f pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x964a5b25 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99821c83 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99b01f6c pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa5904b73 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb587f177 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4425a4c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc5e9b34c pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb6358ae nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcfb31871 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd44b0bfe pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd890b0b7 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9af064d nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda3d9ef0 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xddebed92 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee5720bb pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeeb36407 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeecda7b7 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8b42d1b nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf9bde9da nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x0d3110a8 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x65416e01 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x00cc799c nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x54634ba5 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 0x267703ee o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x46096672 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4b36d52d 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 0x8ba2101d o2nm_get_node_by_ip +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 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 0xeaa00137 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf08f484f o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf7e8fba1 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x07913047 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x128fe0f5 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1d859334 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 0x9861f9dd dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9f746e02 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xba1598f1 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 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 0x05e035af _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 0x5b252da5 _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 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0x90721106 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/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 0x222fd419 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x57308832 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x338b99e7 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x559160a5 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x56ac624d garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x66e60f80 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8dd0c17a garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xa92eb24f garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x402e3d2a mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x77e03e7e mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x7bfd13b8 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xc4baf521 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xdf3f059b mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xf752e4b1 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x67ec45ee stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xded23d46 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x7152f1d8 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xbdf76cf5 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 0x68605193 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 0x03738661 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x460293be l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x512274dc bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x74e87d6a l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8b83ee93 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa11a8a4f l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xcedf8b24 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf1986531 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0bb31a01 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6026f529 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7da68a77 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb1f1535e br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd3c0f6f4 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd8ce9cef br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe483a592 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xef9273b2 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x17d1882e nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x6f55fe4f nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x01aa1ccb dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0ea40377 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x13e40425 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14b80968 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x17e4c807 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x396e333d dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cecf635 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x55980974 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x56ad4e8e dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5a8f6a6a dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5b42211a dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5db8d575 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6600fb9d dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x675ddc2a dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x68107e27 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x71df656d dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e04732c dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7f4e925b dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x81d4f57c dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8a209ec4 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9d3862ea dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0596156 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbb62d800 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3f36684 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc47561ad dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc873a57b dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xccc30757 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcfbdee11 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd88ac80d dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd942e3ff dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe6716bbd dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf1be3a38 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xff5b7331 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1a39c08c dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x227ac0b2 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x312d28ed dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x592b55ef dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x67126891 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6baa2ebb dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x5fed3fc9 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x681057a6 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x815eed71 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xe826a70f ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x090b2619 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xaa768b6a geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xd4d2c20f geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2e92cad3 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb9af19b0 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xbab596ea gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc4512db7 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xf5768fe6 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x14c63741 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x45e34010 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x67ee609d inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x828b960b inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x890e72fc inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xbeeefcb2 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x08696426 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x187257c4 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1f700526 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3cc51006 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6f381aa1 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7adfb0f7 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8f96a22e ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa766569a ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb5247a61 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc6133ea8 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd7d62b3e ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdfb1894d ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe80b66a4 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf0e5ad5f ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x27f22911 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xfaad6667 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 0x715853f5 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x9616aab4 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa3365969 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xacb068cb nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xdec9927a 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 0x7aa055c7 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 0x047c938e nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3d4246f6 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4ec8fd7a nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x83e89bcb nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe04459cf nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x046a6608 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x03cbaf13 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x26dff6a5 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x80f6b1f2 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x96e6d422 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf2cd1cbe tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x6764019c setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x7a5c1a16 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xd21c9d3a udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x14dfe15d ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4bec7495 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7447e533 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xcef253cd ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd239872f ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x1cf0ed70 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xd9fcc1bf udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xdc37f930 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 0x18c8a508 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x28aa69be nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x5c8787ee nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x89f0ca1e nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa1962ba7 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 0xaf2781be nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0531f71e nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x1bb62b0f nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7ee8b1f6 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x9c1ec0c8 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xfebf6d96 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xb1238718 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e901b2e l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x22ccad85 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x234f6cf4 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x26789d7d __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x47f41f2b l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x55372f69 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x574cc0dc l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x586afd8a l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5bf35a8b l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5e3d7ace l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x61964074 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6c3219c4 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8c63e1b6 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9dc25cce l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf0fc8500 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf571c291 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x8528900f l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x267b6ab5 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x35ecbcf4 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4eefdc38 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x56d64ae5 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58ae86b8 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5faa4173 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x71ea7e7c ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x92c65c4a ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x959a738d ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x98e19de6 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x992c9c5e ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9c0eaef3 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xae394ce8 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xae5e3437 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc1b1f359 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc64b5f1c ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0b640fb7 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x13a704c0 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x23845847 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x246f6090 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3611e433 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3d42d916 ip_set_get_byname +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 0x8152f13f ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81e2c380 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8c6077ea ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8df88935 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8fe9c365 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa5ab7569 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb7022c93 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe2a7df10 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe98414fb ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfc1f9ab3 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8e32ec47 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9d5287e8 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xda525cb5 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe5166a93 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07465d46 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07cfd8c0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09d8e820 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0db4103c nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0df4101f nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0eefb441 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x12ca7c6c nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14025166 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x172fe34d nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17b4b236 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26a81fb9 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2aa982c0 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e7f983f nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x375c728d nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e9b2ca9 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x416983a0 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4283a9cd nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x49f7e4c9 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54b02028 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x560c9235 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5677d8db nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x573887b7 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5894a3d8 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c0b0e7f nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c55f796 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5faabffa nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6698b6f2 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66cce8d8 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d6bd865 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71a1c51a nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x775a3887 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ec4a62b nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c0e8367 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d05704c nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dcd9a45 nf_ct_tmpl_free +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 0x94493c67 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f2234c9 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f59d912 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9fcc5511 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0cfbaab seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7a4b553 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa877c2e9 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa8a889d5 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa94bc66e __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa962bc3e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9b82e87 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaba280e0 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaccd5232 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xadd7a605 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xadfa3793 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb49649b4 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5084092 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb37a18d nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd61f97f nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf61a228 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf761bd1 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0fcc6da nf_ct_seq_adjust +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 0xca574a1b nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcc6204f0 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0549ec3 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd430dbfa nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbf1f900 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf7f3a97 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0031363 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1b1cd41 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe262fc41 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2d7a0f7 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3eb44ae __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4308727 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4a00712 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe91976ce nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5e814ae nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf91cba55 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb915ae0 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfcaa80da nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff1a6bcc nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff5426b7 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x98cc01eb nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x6b4b9927 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x89401622 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x215e6d6b set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x272bf804 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x31e0a9ff nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7566d979 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8ece9e49 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbc72a621 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbf7265ba nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc936a6d8 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc96c76ff set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf4f70c82 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x9347559c nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x27022efa nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x5f2cc052 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9e92933c nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc0bc4c2e nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x5ec7a4e2 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xffc811a6 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x12db26c5 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x35b86051 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5a1be12d ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x85f32dd2 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8ecf9ad9 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbadaa047 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdcf7d1e5 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x82b76d6f nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x336a682b nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3c33b1d2 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3e63b2e1 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x4f8b9d8a nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8717dff7 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 0x104de9d8 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x29d97c19 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x30d460bb nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x63f0a644 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x84415ce9 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa58ac3a4 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xda4c98c4 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xeda1cbd3 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf3f0212c nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x8f7ce240 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xfe927d37 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 0x8b3059d3 synproxy_tstamp_adjust +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 0xf8a24cd3 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0409b375 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x12f17959 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x242be5bb nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4bcf1d88 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x529923e6 nft_data_init +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 0x69542cf8 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6a194984 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x71a863a3 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7b7ebddd nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7e802046 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x813928df nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x95d605e7 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaccae41d nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbd145457 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc5099919 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd763cbe4 nft_register_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/nf_tables 0xee2a01e5 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0307de68 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x38da65bd nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4244fe10 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x50f8f557 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa5b460e3 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xaac1ad92 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd15f21f2 nfnetlink_alloc_skb +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 0x4a834007 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xda115d04 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x4bb3880a nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x28f1e9a1 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x722f375e nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x98889e91 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x0469afb9 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x0e7d2c12 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x127b693a nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x44153700 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x553428cd nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x75c98ea3 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2ee3397a nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x5e54e1e1 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x662a2f03 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x8617184b nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xb1b11eed 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 0x0c96e521 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x10c99055 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x297d1511 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x374cf2a8 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5a6dd992 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x64d2712c xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x70fc1e24 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b73f60e xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa641567e xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb80c4f0a xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbe4bb607 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc2be86cd xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc4235ca5 xt_unregister_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 0x01c14052 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x97c4123d nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xe29277a9 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x81010a03 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xb3b16bff nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xcc0da905 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0c66351f ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x228936bb ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4e693895 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x609d0e84 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa23b3437 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb98162f8 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd8c97d7b 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 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x31bd9bc3 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x35f02bb5 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x39d4238a rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x41dd999f rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4711cce2 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x4b4462b2 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x4b4ef5b8 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5c15d725 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x5ea004a5 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x63eee4c6 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x726861b0 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x863059e7 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x8a95fb93 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x96e77cdc rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x99187983 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x9d6c6877 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xa4c3df37 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xb7d48acb rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xc0242dfe rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xc215d65a rds_page_copy_user +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 0xd479155e rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xe7076605 rds_inc_init +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x36029346 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xef797196 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 0x7d2e6ad2 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 0xd28e5a85 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xfd31c977 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x013a7ad9 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x055f4214 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05694a8c rpc_clone_client_set_auth +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 0x09652f21 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a3f6ddd rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b388e90 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bf034a7 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x122d6bdb cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14c3a58a svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14f60ada xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1644c719 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177aa427 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b143622 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d3171db rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1dc08392 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e1874fb xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f65fe52 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20c1b8bf put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x223508e7 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24a2bb87 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2559953e rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x257cba29 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x258f1be2 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x276d4637 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x281c26ab svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x282d9fa9 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28f6df68 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2906e995 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29d51818 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c05065f rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d82980e rpc_uaddr2sockaddr +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 0x301f053c rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31378ce9 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3150c744 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32c0652c rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35c7a6af xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36d8813c svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3977a7e5 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a9dc872 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b96a491 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be97fa1 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bee2754 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cd036d9 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d510027 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d78c447 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40e6bb31 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41bc377b rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4357d486 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44f05e8f xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46c29220 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47d36df9 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4b5329 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b0ca016 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b393a13 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b5b706b xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d431822 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f5df5b7 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x531073e6 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53538b9e xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x562949aa xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56567869 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x569d20e2 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5726b680 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5757da83 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58821a78 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59ea139a svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a473090 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5abb88e1 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5898be rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bb5053e rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f1aeb7c rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60163c13 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60be4603 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62061d1f rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x671d9c9e svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x673f52ec rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x699395ff rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69dd3e51 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b62ff8e xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c3bda1e xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d7faaec xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d95740a xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ec9198c svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70c972b2 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73eef41d rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75f38754 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76a7e6ba rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77a5141f rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ca6ebf rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x785cf65d rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a999841 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b501d3e svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7befec50 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d35c141 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d91f49c sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e1a0e43 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f56445c svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fcba07b xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8386f61c svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x843a2727 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8541d446 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x867f5114 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86b1db61 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87dbcccd xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89b88f1d xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a8ed38f rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ac95a03 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c587c6f rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x915255a2 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x917416bb xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91c86e3f rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95660cc9 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96002b20 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96c2bcb8 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x973c0aa9 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x976212f3 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98004495 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98d302e3 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a1fe4de xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aba8785 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9eeb0892 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa09616e4 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0a629b0 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2011b0d svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa31312f9 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3787702 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa498b256 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5adf6fa rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6ce49bb xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7f857e0 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa805dfa8 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8307192 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa964b73b svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e2d45b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabfa6699 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf21b9f9 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb06939f5 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb07100f0 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb39efeb0 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3f13833 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb618440f rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb786e227 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb914e3f5 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb92d30a3 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9bb931c svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbac987c3 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe9815c4 svc_create_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 0xc18608b1 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc26cddfd svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc593c0cf xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc88383d3 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8d6df67 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb2a4c9a auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb6034da xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbac8074 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc8714a0 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd01e2ead rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd10d0e6f svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2173cde sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd29f21f1 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4c51529 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5c28f19 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5e866ba rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd64a1d1f xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7de9c91 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd865115d svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdad627b5 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbc890d5 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc451bcf rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc5968c3 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddf559ed svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfa870fe svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe34968ce rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe34d1b62 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3f8d701 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4f8eb92 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe515377c svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe90c9fa8 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97470a5 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9e2dac7 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea0b9f64 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaf920d3 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb886f4f svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebe44f19 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed66e9a8 xdr_reserve_space +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 0xf0096f4f svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0b45fd7 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf786c841 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7f19547 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d55c00 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9e66978 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc123cb4 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd4c0c13 rpc_protocol +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x11cf8687 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 0x2b081f68 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x306d49c2 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x33fd95a0 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x35be7ae1 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x403142a6 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x494f1e59 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59ba20f7 vsock_insert_connected +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 0xa578862d vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb9bf441c vsock_add_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 0xdf497594 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf1702771 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfb602477 __vsock_core_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x06e3a074 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0f174b08 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x283e5f3c wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x33420f9e wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4daf0915 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8b721d92 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8eaead30 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9247c9fd wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x978ef969 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x99d54ad7 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbefb1f3e wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc8f2fc62 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe69261bf wimax_msg +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x24e755a1 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2a3a3486 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x38e3fc0c cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x39c19aee cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4974e159 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6c70a9d0 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x76c98886 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8bc89765 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x912fc470 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xabd6580b cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xad43acc4 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcb3faba5 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xffab958d 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 0x1b19e48a ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5b2dfe64 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9094d14c ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xbad77998 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x4e9ee8f7 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xe3335f70 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x076f61f4 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x081a9009 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0f012de7 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1dacff29 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f13e63d snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x223ba256 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x22828e1e snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x27a0fbc4 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2d747b09 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x32a3c66c snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x338319b7 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3631325e snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4d1d5267 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4e01af6e snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x504329a2 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x511e9410 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x55d1b659 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5642ea31 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5696f878 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ae4326e snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f0f0dd4 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67fbec9d snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x68dd2149 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6a1ad233 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6b694c00 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b6a6a55 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f3d41e5 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8408b277 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x857f8d47 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x85f79135 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x860b59d2 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a550026 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x90ff4449 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x91396862 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9155d9ac snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa314a2f6 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa720e36b snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9eaeaf7 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xac4243b6 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad439c31 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xadadfa7c snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb04ef5cd snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb770ab46 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb77fac8d snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbc6217d4 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbc873bb8 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc0f67f35 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc244dd0e snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd4f8838e snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd6a1a835 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd81a9561 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd832f372 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdaade4b3 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3934e85 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe497d0e6 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xef6ad8bc snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf1906b2b snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3df71a5 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4a9b628 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4b1c9b4 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf5b3b316 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf8711216 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd710deb snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xffced9e6 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x06a439cc snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1e764fc5 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x71c87958 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x74d35c99 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa7e084d3 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xcd6fd3ff snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x009e61ff snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0241f5b8 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x033dd340 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x03c8ea07 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06316af1 snd_hda_register_beep_device +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 0x0ac37e70 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10509b36 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1462a844 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15096d9c snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15ab90b0 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15c2cd87 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a27aa5d snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1aa0b7c2 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b37be31 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b8bee4e snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c1f0d51 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c3184e9 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1cd2864c snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1dd1d7b5 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1eff5518 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20a50e6b snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x214e7f13 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21aa5754 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x252791f1 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x255b89b6 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2812a7ef snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x290a588c _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x296b6ba4 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c68399a snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30a43849 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33c7ffac snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36ca1cec snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x389df0ec is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c6fd5f7 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cbe5974 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fa00659 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4259c8f5 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x427cc71d snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4310150d snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43309779 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bb45707 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c53a0eb snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x523f73c3 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53bc4945 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54525024 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54a1b87f azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5502de20 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55af56c7 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5759cf09 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5767c106 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5993530e azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5abe659a snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ad5728b azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c6b7cbe azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dd8a5f9 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6408acda snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65a3275b snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6adead24 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6bf81fad snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e0996d5 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6eb7a226 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fa209b3 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x706bcf3a snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x714f8bfb snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73decf44 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c15a602 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8647c84b snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86ab99e9 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x874bcab5 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8796013c snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d2c4067 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90a92f3f snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90d3879c snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94197ee0 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x944ceae4 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ae77e5a snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b072d06 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b829e8d snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9be42fa3 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9dfc8932 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 0xa505ccb2 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa72d0d5d snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa839f26b snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9cf7f23 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9d29e61 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae0dd4dc snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaebec0ee snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0597777 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1a4b60d snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb45de104 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8dd83e0 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbba6156e snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbd09f36 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcd80473 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbdbda40e snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbfc5493c snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2f6fe87 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3218bf3 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3947d14 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc572df89 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7de7033 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9a557df snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9bf0c12 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb8b423d snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc58638e snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf390683 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd308a66e snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4f7e613 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde506f4a azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf57f111 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe08deab6 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0feb3ff 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 0xe1ddc101 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe30f6e7a snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe707b292 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe75363c8 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe76a6533 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe90eed90 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea019dde snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xede95279 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0939875 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6380bcd snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9ad43fc snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc3f3695 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdd1d4f3 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x119f3c8d snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x123e9440 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x18b66ea5 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2108f4a8 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x33969bb4 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3d9a19e8 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x538d4d88 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x58c030ba snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5c58aa31 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x671fc80d snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6b7cf3f5 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6f46ec4a snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7c47f0b5 snd_hda_get_nid_path +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 0x9382cb3a snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x971bf2e2 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa551dac0 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa7f00663 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbe70a4d9 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc94fb039 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe0ed9182 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe57b7faa snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x39208170 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 0x9ea8b49a cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x4f32f877 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xdeea67c6 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x4555d103 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x6c203ce0 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x735740d3 cs42xx8_probe +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 0x9ba137ad es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xe953c062 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x6adf0d20 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x0e2e5709 max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x3407448c pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x3eaf6f55 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x44de5153 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xa9ecf18d 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-rt5640 0x8729cb0d rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x9172a967 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xab620141 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0x0a1a2376 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 0x599af696 rt5677_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1406b3e3 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1e3dbf7d sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x2eb7c059 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xea7b15fe sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xffde8249 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xd870347d devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x041062c9 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xc9742895 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x08fa8586 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x393a0576 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xf8f62acc ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x042656ef twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x343aa598 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x43e725a8 twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd7731e32 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xe63db509 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x0880a46c wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x10211e11 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x37da8828 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x552b163d wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb1aba388 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xcde70bc4 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xdab36a0a wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xf43b682f wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x0a43f515 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x20965644 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x318403d0 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x991eb0ed wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x92f214cf wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xac80ff16 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x819bf97a wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x9459697a wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/davinci/snd-soc-edma 0xf562c9bd edma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x622bb3c6 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x75a97e7b fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/omap/snd-soc-omap-mcpdm 0xc14a3054 omap_mcpdm_configure_dn_offsets +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x1b935898 asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x5649ffe2 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x9fe38e16 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xb9f32aeb asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0x9d55b2ce 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 0x6860a1b1 samsung_asoc_init_dma_data +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0x8799b712 samsung_asoc_dma_platform_register +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x2fed0ada tegra_pcm_platform_register_with_chan_names +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x6dc192a7 tegra_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0xbd91e2d2 tegra_pcm_platform_unregister +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 0x002e025f line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x196d9092 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2094f76b line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x42316939 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6237d472 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x681c0bb8 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x71c8550d line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x83216c1a line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ac1a284 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa59332f1 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xad38fe12 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc7c2315e line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe3a1fa68 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf01dc5bf line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xff93954c line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0010c802 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009d7f56 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x00aca48d netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00b3f6bb __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x00e8965a tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01051814 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012d62fe da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x016d227a of_get_nand_on_flash_bbt +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 0x01acbccf thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x01c1ae60 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e12462 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f36042 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x0201791b blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x021855d9 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x0220a1d7 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x0232e125 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x023350b9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x023b06c6 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x024cf560 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x027380d8 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x02a5154d powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x02b70af8 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x02c22f6a da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x02e8c4d3 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +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 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03694146 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x036bdeda device_create +EXPORT_SYMBOL_GPL vmlinux 0x03785798 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03cb971b serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e4b393 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x03e82280 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x03ef6645 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x03fce95e srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x040a7fee sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x040f4121 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x0415fbaf snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x04230d4a sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x0429139f iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x042da606 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x045c915f dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04777f2d crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x04801299 rdev_clear_badblocks +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 0x04a46146 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x04a9dd3b usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x04b2c777 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04ea5cdf __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x04ee3ed5 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x050a8017 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x05152a37 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x05164efa tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x05196788 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05542702 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x05750e33 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05cd61e3 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x05e49cdf nand_release +EXPORT_SYMBOL_GPL vmlinux 0x05f8f236 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x060a5581 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x06139440 find_module +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06367b11 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x0646d619 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06501128 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x06798c1b ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x06918629 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x06920b08 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x06afb5ff blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x06b85eed blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06e54102 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x0713e910 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x071a8e41 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0724b395 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x072bd77e bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x073e2494 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x073e7ed3 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x0749b364 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x07585abd ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x075ad949 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07684a40 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x0785e372 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0799e2be pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07c8307c rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x07d6591f thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x080ecb1f __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081e14f9 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x082a9636 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x083a7851 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x083d5e8b regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x0881ca27 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x088867b8 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL vmlinux 0x08d1e742 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x08ed4959 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x08f8fd93 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09179919 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09202083 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL vmlinux 0x0924f54b smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x092f892e snd_soc_dapm_kcontrol_dapm +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 0x0953aac3 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x0958637c list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x09959f66 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x09986d26 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x0998fcca debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x09c2d313 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x09c83ad8 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x09e2dd48 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a14d2d8 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x0a57d451 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x0a804312 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x0aaaf4aa __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x0ab69337 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x0ae43063 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x0af0e242 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x0af9f33a devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b5b0b7e snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x0b71bda6 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b962f74 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x0bb0682f ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x0bb23171 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x0bba74af power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bece254 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c20d00e md_stop +EXPORT_SYMBOL_GPL vmlinux 0x0c2b2f42 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3191d3 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x0c41b2a7 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0c449ce5 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x0c480a27 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x0c7464b3 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x0c8ca59e attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x0c93228a ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc41003 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x0cd5d7bc __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x0d01c326 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x0d050fec ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x0d17cfbd ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x0d1dcacb regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d25cc22 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d755f53 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x0d7768dc bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0da58202 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0dc0d4ca of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x0dd8db2a irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddba570 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x0df2b88f device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0dfc770d xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x0e0c960f unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x0e0e354d regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0e28ffbf skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x0e618596 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x0e8f35db regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0e90c414 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x0ed0ce8f snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x0edcfd93 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0edd0d43 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0eef3cb0 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x0ef8503c ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x0effa854 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0f0b76c8 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x0f12adea pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f4b792c snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x0f5adf13 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x0f65a719 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f91fc15 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x0fdc192e gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x0fdf02bc device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x0ff9af09 cpdma_ctlr_int_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x10025ffe of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10173f84 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x1034a5f1 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x1050d27a hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x10564143 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x1073f2d6 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x10771e69 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x10af0464 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x10c5a97d usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x11025677 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x111d4bf9 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x111f7933 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x1120ac99 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11aa4357 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x11af737d set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11d90b58 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x11e49a4b md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x123af189 input_class +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1251811c regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x1256fb03 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x125c59aa driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x125d89cb usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x12688bf5 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12a72c53 lp8788_update_bits +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 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1326653f usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x13381458 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x134b31c8 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x13541047 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136673be of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x1373a10c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x138bad47 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x139f739e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x13b60b79 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13d311a2 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x13e1fb5a pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x140c7415 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x1423ce7d fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x1424de5d tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x1434ca76 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x1440cbc9 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x14432da0 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x1443b846 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x145e2acd snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x1477827b bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x149a4973 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x14ae08fd pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x14d07fd0 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x14d6560d gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x14e7af08 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x150c9fba of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x15150048 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x154d5801 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x15622daf default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x15687d00 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x15830569 sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0x15868cdb raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a003d5 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x15a527d1 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x15c23202 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x15ebe74f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f59ab1 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1618850e adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x16458c7f bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1647121f __gpiod_get_optional +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 0x168c7931 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0x16988c87 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x169b828f usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x16a6738e register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x16d22d80 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1717a05d omap_get_plat_info +EXPORT_SYMBOL_GPL vmlinux 0x172f3541 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175c743b regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x17671a52 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1768df6c ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17a24262 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x17bee29c sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x17cdad5a snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x17f1eb4d usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x180d2feb x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x18147acb relay_close +EXPORT_SYMBOL_GPL vmlinux 0x1821903e of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x18329aab omap_dm_timer_request_by_node +EXPORT_SYMBOL_GPL vmlinux 0x1845b826 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x185bd6a5 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188deb68 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x18a3d39c crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x18ae990b mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x18b7acd3 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x18b8cf31 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x18c3074e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1924247c device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x192441c6 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19426904 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x194a377c dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19732f76 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x19762de8 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x198aef50 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19928635 mv_mbus_dram_info +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a49e03 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x19a8367c vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c1d6ce virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x19c765d3 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x19f57d05 pingv6_ops +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 0x1a292791 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x1a3de084 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1a57c671 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x1a5c573f sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x1a618cc5 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aaa8b4f pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad378ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x1b0192e2 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x1b01cb87 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x1b149ba7 ip6_sk_redirect +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 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b553439 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x1b55442e snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0x1b6c148c exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1b71123a crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b8b94c4 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba3e439 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x1bb5fc26 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bdd78d6 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x1be1c65b device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x1bf7b68d cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x1c0debea omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0x1c1f601c snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x1c222e7f watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1c459660 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x1c47dbe9 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x1c546fc7 skb_to_sgvec_nomark +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 0x1c719265 skb_cow_data +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 0x1c95f734 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x1cd2e06b kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x1cd47d3a pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x1ce2a878 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x1cf561dd deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x1d070b2a fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1d11cda4 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x1d2122a8 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d230444 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x1d25cf73 omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0x1d2d6b61 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x1d4cfa43 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d599bec regmap_bulk_read +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 0x1d8e6bfe simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x1d9719d5 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x1da085fe rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x1da2ff03 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1dad3d8f inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1db701d3 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x1db87b3a sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1dc225ea unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x1dc65b49 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x1ded78ce serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x1e015ab7 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1e0424d3 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x1e15faa3 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x1e1a3cd9 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x1e1c837b cpdma_ctlr_create +EXPORT_SYMBOL_GPL vmlinux 0x1e544486 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x1e56ad6c mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e6cc653 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e7135ba cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e990152 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x1eaed5c9 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x1eb51262 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x1eb71192 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ed05495 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x1ef79bb1 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1f09918f fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x1f121cb0 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x1f27f7d9 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x1f32928e iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x1f3910ad blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x1f3d9080 zap_vma_ptes +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 0x1f59df2d ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x1f608105 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1f678469 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1f6c370f rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1f78804c snd_soc_put_xr_sx +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 0x1f91b8e6 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x1f957574 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x1fa8f908 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x1fb9c165 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x1ff6c8b8 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1ff89be7 ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x1ffbd738 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x200efa48 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x2019e83f kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x20446636 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x204fbd44 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x2054d14b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x207b78ad crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x209f8949 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x20c2c63e usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0x20d0dd71 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x20dfc76e dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x212b8878 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x21339779 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x214aaef4 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x215bd51d wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x2178612c pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21a71ba6 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21ae3dd5 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x21f25546 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x21febf58 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x2216c1bc task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x222eea5a clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x223bca43 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL vmlinux 0x225f1a7e devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22893ad6 cpsw_ale_control_get +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229c8e2b ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x22b17d8f ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x22c00d3f device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x22c5090c mtd_lock_user_prot_reg +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 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x2322f563 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x23389200 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x237a8dcf sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x237d1ecf platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2382c106 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x23860809 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2391cca0 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23d00708 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x23dfddae balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x23f5cad0 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x2408e208 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x24231c4e pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x245da6df snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x2467e3c9 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248bc4a3 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x24903065 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x2491c46e mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x249e1096 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ad8856 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x24ae4aba bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x24c1ebf6 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x24cced74 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x24d3eb66 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x24e735c4 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f26626 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x25426c3d tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25483e27 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x255d43bc tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x25629fe1 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x256531f1 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x25713fac regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x257896ad mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x258450fa cpsw_ale_start +EXPORT_SYMBOL_GPL vmlinux 0x25a2a107 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x25abbceb of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x25b4ac84 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x25db0ff6 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x25dc93ca phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x25e4fa8c btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x25e6e8ed md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x25ed7e02 user_update +EXPORT_SYMBOL_GPL vmlinux 0x260cf26c deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x261433b8 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x261a26eb ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2635ac2d skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x263d1ca1 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265c2b0e usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26791c78 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x268ac59f devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x268e5ea0 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26b8c39e balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x26ba4008 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x26c35ccb ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x26c519fa usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26ddc2ce ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x26e02ba4 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x27076b72 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x270c4a83 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x27239446 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x273c7b01 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x274c279a device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275e9220 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2760fd01 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x27702d6c ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27935b01 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x27b87ffa sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27dd0be5 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x27e39f08 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x27ecb7e9 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fcf57e device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x280995d7 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x280df1fd snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x28284a06 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283fb850 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2855c941 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x285bf314 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0x286b707d pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x287d1ef3 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x28a4996f pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x28ad0375 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x28af5480 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x28b0b243 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x28bf667e led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x28cdb7f2 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28e003f0 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x28ec2cd6 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x2913b7d7 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x29163ae6 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x291daa97 component_del +EXPORT_SYMBOL_GPL vmlinux 0x292a1fbf shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x2947875c regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x29493c3d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x2957c3b5 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x2992f9b6 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x29aa2456 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x29dc1238 usb_hcd_poll_rh_status +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 0x2a1dffc5 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x2a45caa4 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2a5a78ee crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6c1eb8 omap_dm_timer_request_by_cap +EXPORT_SYMBOL_GPL vmlinux 0x2a7bdc6b anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x2a98f16a sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0x2a9aa1ae device_move +EXPORT_SYMBOL_GPL vmlinux 0x2aa68a39 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x2aac9116 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x2aae43f7 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x2ad8f234 tegra_pinctrl_remove +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2ae34b4b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2ae64720 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x2ae9510d component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x2af6b764 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x2b04136e ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x2b238dba gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x2b25a82a omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x2b25eecd max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x2b2d6da3 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x2b433790 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x2b5f0dbd snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x2b78434b mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bbc0419 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x2bc6163a sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0x2bcb63d8 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2bcd1bf7 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x2bd15641 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x2bf67928 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x2bf87811 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2571fb wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c5cef50 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c73eaf6 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c87ecff cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2c910a1c crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca3e8de fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x2cc7589f platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x2ce0d70a dummy_con +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 0x2d067cd9 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x2d10bc94 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d55a138 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0x2d55ade2 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d61dd91 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x2d648769 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x2d6677e7 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d846e3e i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x2d985de6 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x2d99d899 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x2da80e2d led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x2da9daca sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x2dad9b05 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x2db78493 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2db80ebe usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x2dba90fd gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x2dbb0e28 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x2dd9e201 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x2ddb5bfa key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x2df38a36 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2dfdac98 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x2dfe50de flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x2e03259b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2e1b19c6 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x2e1dcb1b rt_mutex_lock +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 0x2e3627b2 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x2e70347b snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x2e736a3b rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2e742b00 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x2e7970ff of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x2e8d3487 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e8ee8eb of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2ea41f81 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x2ea5c77c regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2ea64c51 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed71054 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f0830d8 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1bf2bc blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f551c4b omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x2f7b6833 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x2f873637 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x2f89ffac devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2f910293 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x2fb4c37c crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x2fc7b541 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ffca346 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x300ce740 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x301b1a26 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x302647fd devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x3026e9a8 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x30308cf6 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x30316136 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x30631542 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x308bf907 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30be6b95 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x30cbb026 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x30cd0212 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30f8afa0 mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x31061eb7 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311cb175 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31516056 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x317bc605 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x317f9cb4 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x3187af2d omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x31ab6409 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31ce274e n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x31eb530c bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x31f49a2d of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x321cd7da ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x3255bcc1 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x325799a7 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x328e4ea0 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32ca580f bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x32db8bad of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x32f3027c crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x332035ad wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x33205722 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x332674b9 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x333bb5ec pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x3352b1f5 spi_register_master +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 0x336d2c22 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x33758efe uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x3375acb6 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x33838613 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x338978c7 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x338ca032 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x33a090a7 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x33ac2a38 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x33b46199 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x33b62c0a virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x33c8f2cd cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x33dfd9e2 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x33e2f18c ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x33eb776f driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x340c716f ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x341db57a ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x342055f5 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x34260705 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x34402e59 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349247d1 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x3498ff36 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34ac5c70 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x34e4e8f7 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x34f4dd2f of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352a70f8 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x353adb88 omap_dm_timer_set_int_disable +EXPORT_SYMBOL_GPL vmlinux 0x35457d6f of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x3551aee9 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x356ffc13 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x358c9274 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x3595502b spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x35b21774 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x35b9f525 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x35c72458 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x360688bf regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360aae88 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x361ef911 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x363ef8e2 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x36546af1 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x3663499a dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x366da828 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x369b41b3 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0f6e4 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x36bb5df2 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x36cbbd9f wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e114aa _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0x36e6ff06 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x3707d029 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x370ac584 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x371c7f45 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x3748ef76 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x374f9861 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x377310ec blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x37b52b40 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x37df7f97 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x37fb33d4 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x38090b2f pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x382aef34 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x38394c30 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x384fcaf9 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x3858857e ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x386573b1 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x386b6a44 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x387ba2b2 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x387d9490 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x38947499 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x389adb5e wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x38a70386 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b700f2 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x38b956bf get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ea11d1 omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x38eeed85 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3906430d crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x3918eb76 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x39274f66 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x393dc37a task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x393e43ed led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x39455147 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x3969a98d sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3978fc8b wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3981c137 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x39b52895 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x39c3a3ca dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f3f868 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0x3a082506 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x3a0c315c mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x3a2460f1 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2e6dee device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x3a32a380 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x3a41ec89 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a52bc32 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a779ab9 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0x3a8d18f2 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab7326c crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x3ab897d1 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad8d591 snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x3adb3901 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x3aea5b7d dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x3b04f6d3 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x3b1f168a i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x3b3a5cc9 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b48bb49 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3b7f218c device_add +EXPORT_SYMBOL_GPL vmlinux 0x3b80a1e5 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x3b85810f usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x3ba485cc sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x3ba75da3 snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x3bb16495 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x3bbcf657 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x3bc17534 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x3bda5a4e sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x3bf0082e pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3c20881a kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x3c4098ee devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3c6593c8 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x3c7cc48c __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x3c7d6f55 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c8ce2fe of_genpd_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3cbf42d2 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x3cc4b3a0 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x3ccc00f9 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d020988 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x3d02b88a bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x3d0a0353 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3d2e3e8e inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7756b7 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3d79568d regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x3d9f03c9 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x3db464c7 crypto_mod_put +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 0x3dd8c432 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e03c6fb md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x3e13317a pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e410620 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3e46be99 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7b23ac gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3e7c5468 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x3ea66f0a pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x3eb84c9a omapdss_of_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x3ec2751c __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x3ee26c5f dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x3ef478d9 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f156161 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3f1cbcf7 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x3f1d8035 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x3f2f912b wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x3f598d9b of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x3f6c8ad5 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x3fa6949f da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x3fb386e3 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fd55c42 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x4022e1c8 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x4027633d __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x4036fc46 sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404d8603 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40748831 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x40887572 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x4091581b blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x40a236ef regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x40a75d90 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x40abfa54 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b450b8 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x40c7eafc dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x4137e61d subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x415bcda9 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x41678b48 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4186c290 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x418fd8ea of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x41b07cd0 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x41b77ff1 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x41cf6bec iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x421c2ccf driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x421d71b5 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x42202087 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x42369c53 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x423cd24b tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x4245a9fa usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x42750d90 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x4280b4c0 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4283768a snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x42906840 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x4290f5d4 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x429a74a7 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42b8057b mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x42b8ffd3 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x42b95498 sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0x42d5017a pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x4305b50d regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x430b4b94 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x431b8d57 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x432516c0 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0x43438141 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x43629e56 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43aea5f2 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x43e901ca pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4402393b ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x440fd905 arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x4411779d of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x44132e2a mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x441488eb regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4424d7e1 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x44410dac of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x444a456a crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x444c79c9 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x444dac72 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448c459d shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44fa6ddb pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x4508c44a pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x451befcb rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4529274a sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x452fc46a snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x45555f95 snd_compress_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 0x4583a714 cpsw_ale_control_set +EXPORT_SYMBOL_GPL vmlinux 0x45847763 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x459074ec inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x45b27f03 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x45ba1367 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45de36a7 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x45e294f5 regmap_init_i2c +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 0x463378e6 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x463732f6 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x463f7ae3 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x465e5be2 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x46658ec1 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x466cff1c ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x466f4107 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467e8cce pci_reset_function +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 0x469471e9 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x469e8d1e snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x46d10d34 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x46d42b42 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x46d877ff ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x46e4811d ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x4711bcdc pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47257886 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x4730e986 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x47459b71 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x474b6ecf cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47704bf9 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x477f1ea7 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x4782f690 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478ebdd9 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b0d809 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47ba2e85 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47ed9409 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x47ee9a6b noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4873cdbb kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x488acf8b wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x48e7a4e3 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x48ef292e rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x48f7ab21 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x491dd557 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x49313bfb sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x4938acae cpsw_ale_destroy +EXPORT_SYMBOL_GPL vmlinux 0x494f21ef ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x4968de50 snd_dmaengine_pcm_pointer_no_residue +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 0x49b2f794 usb_mon_register +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 0x4a013855 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x4a0cfca1 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x4a4d8b5d fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x4a54a077 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x4a5da18c skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4a63f3b2 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4a6672df debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x4a8c02d7 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x4a951b85 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x4aa0c010 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x4aa46694 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4abcf5a6 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x4ac182c2 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x4adb8262 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4afc8112 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0x4b197e13 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4b32144f ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x4b37b696 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x4b88b6df trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x4bafcdd8 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4bdfc7b1 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x4beb41ae xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c49d668 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c6a37b6 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x4c763e62 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x4ca515ac snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0x4caf4f17 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x4cb82010 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x4cb85e43 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x4cc8096e tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4cd33c40 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x4ce862b7 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d153ed7 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x4d238bf3 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d3c3e97 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x4d5a27c3 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x4d7fc605 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x4db9c350 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x4dcd26b7 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x4dd739fa tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df7b604 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x4df9dab6 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x4e0041ac led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e05bc04 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4e092b21 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e21b45c usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e3fe4de of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x4e442ec4 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x4e5240ec regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4e5ca164 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x4e6592f7 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x4e7c4c9a inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x4ea48763 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x4ead8950 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x4edf6943 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x4eea6443 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4eeb52e6 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x4ef3f8ce dev_pm_qos_remove_notifier +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 0x4f1eee5a nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x4f3ed4e6 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0x4f4be4dd crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x4f528498 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f864a4c vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f9bf06b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x4fc2413b snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x4fc7b4d0 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd71d46 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff6b50a rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x500b3637 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x5010c020 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x503ce93c blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x503f16dd kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x5040b2e7 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x50746eb6 blk_unprep_request +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 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d24a3b usb_hcd_pci_pm_ops +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 0x515527ac omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0x515dedfe bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x519f4741 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x51a25343 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x51ae44a2 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x51c83835 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x51ef95fb wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x52015f3c regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5213a767 usb_udc_attach_driver +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x524d9726 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x525362a7 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5277486b disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x528fa3a0 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52b193bf pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x52c0d5d8 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x52d20b6f i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x52e90e6f posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x5303c7a3 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x531b183d __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x532d7c0a pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x532efce2 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x5331afa9 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535bcea9 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x53603642 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537c5916 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x538a39a0 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x538dbdc0 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x53adfae2 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x53b693d7 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x53b6b3d0 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x53cb2800 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x53cdd4d2 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x53e0d03c snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x53e3280f br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x53e3ea3b ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x53e7cc6b mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0x53fed58d snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x54143a7c pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541c3e7c devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x54376f43 tc3589x_block_read +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 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x548b1d1d sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549a75d5 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x54a1e15a srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x54bf3909 ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x54c4a97e crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54e135cf of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553e90f7 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5551123a device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5554b675 cpufreq_unregister_governor +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 0x55834eec __of_genpd_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x559703e3 ehci_cf_port_reset_rwsem +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 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f04c21 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x56036f25 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5634a5d8 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x56350145 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56471caa snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x564aec1e __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +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 0x56e8a115 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f1eb35 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x56fad1f5 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572bf0d3 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5731d4c2 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x57377e36 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x573aa5b2 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x5741da70 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x574b4fb0 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x575fe001 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x57723cb9 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x57837793 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b0a0e2 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d6d443 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x58026384 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5804248e ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x58063ede srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x580927a6 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x581195fb mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x581c2938 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x58597c38 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x586949e0 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x5884ee38 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x58854eb5 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x589529b6 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a64220 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x58c122b2 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x58c3cf63 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x58cd0b77 snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0x593c07f4 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5945d390 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x596d9cdb crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x59a1288d register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f3cf81 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5a28446b cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x5a353d8b virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x5a47e91d pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5a5c872a tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x5a5def82 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x5a5f5262 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7d2b2b ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x5a8f213c cpdma_ctlr_eoi +EXPORT_SYMBOL_GPL vmlinux 0x5aabe6ce debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x5ac4d438 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5acf6567 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x5ae0fae4 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x5afcedcd sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5b0de2d0 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b15823e devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x5b1c985f perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b2379e2 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b470825 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x5b48f66f da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x5b4b56be unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b5ec9e7 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x5b7c81c6 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5b7f769e sata_link_hardreset +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 0x5bdf13cb dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x5c2455c4 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c3f64e6 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x5c47f72f omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x5c4ab84e snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c699af6 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x5c6a7ae0 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x5c6be60f usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x5c7920d5 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x5c89f053 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x5c9b8cd7 class_dev_iter_next +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 0x5cfce7ec call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5cffba4e sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d153a7a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x5d44c87d platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d70300d mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0x5d7515cc dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x5d7fd325 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x5d83ade7 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x5d9a6c76 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dc2be88 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x5dd7323d snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x5e1b3220 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x5e21ee9d serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x5e240dae regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x5e300e37 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x5e37ec2b devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x5e37f42c sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x5e4f80c8 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5d3412 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x5e6b319e devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x5e6cfef6 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5e701f94 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x5e80c68c crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x5e925497 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x5ef88589 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x5f0ab919 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5f0df4dc snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x5f115e75 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x5f1df950 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x5f323d31 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f331546 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5f54ab27 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x5f72dda9 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x5f74f8d0 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x5f7af932 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL vmlinux 0x5f803014 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x5f914c1a ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x5fa1ca97 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x5fc3562d device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x5fe485c8 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x5fef2bcf ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x60071580 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x601741a2 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6034676a devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x6040366c vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x6041dab3 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6057ab48 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x6062393a sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x6062d1dc public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x6074bc18 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x608fbf31 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6095bfd2 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60b2767a snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x60c0297f usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x61061f2f crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x611efb90 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x61352da9 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x61448d0c cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x616e1e2a fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x61a2f8f2 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x61a85e33 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x61b54f21 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x61c6c9f2 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x61cc0877 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x61d56336 component_add +EXPORT_SYMBOL_GPL vmlinux 0x61ee93d9 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x61fc5083 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x620cfa29 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6210299e scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x622171b2 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622e3ffe __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x62342199 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x62361336 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x623ecdb6 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x62618705 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x62a7132a input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x62e69505 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x62ea2c8e ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x62f37378 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x62f5d46b regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x62f96475 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x62fd5c39 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63281b99 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x63627f8c regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x6367093f register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x63808916 register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x6385585c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x63888fdd gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6392990d thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x63a5a760 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x63b62527 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x63bcd9f3 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63c8b50f get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x63cd73b0 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x63d25e13 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x63d6c709 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63db2894 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x63e7dcb2 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x63e9314d regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x63ed9544 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x63f09adb nl_table +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x641e4836 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x641fff18 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x6422cdf4 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x647732ea of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x6490b8af tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x64ad7947 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x64b125db tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x64b337d0 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x64bd30c4 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0x64bffccc of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x64df9196 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x65125b65 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x65208ec2 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x654697e1 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x6551522b spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x655fcb8c icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x6593bcde pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x659d9ebe ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x65af1ae8 mtd_read_user_prot_reg +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 0x65e19b9c power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x65ece40c crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6637ba5a ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x66674450 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x666e89fc platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6670fecb regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x6679adcc snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x667ecfe4 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66a02b10 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x66af75a4 snd_soc_of_get_dai_name +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 0x6703ea76 omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0x6710efc2 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x672fcb05 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x674099c5 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x676e1cf1 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x677002f4 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x677cfe08 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x67810e13 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x67839949 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x6784b517 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x6784d258 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x678cb25a mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6799ca73 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x67da0645 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x67de511e __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x67f745f5 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x68077369 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6808c5e4 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0x681e0435 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x684a6d20 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x6856d535 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x689749b6 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0x68a532c8 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x68b2d00e regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x68d13f3a kick_process +EXPORT_SYMBOL_GPL vmlinux 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL vmlinux 0x69148d1d irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692b0692 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x6940494c usb_gen_phy_init +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 0x695ed00c inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x697038bb __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x697731c9 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69e67f16 omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0x69fa1227 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x69fea0ff led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x6a05c700 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a18b5f8 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x6a441db8 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5dda3c platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x6a5f31b2 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a7d95d0 dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0x6a886030 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x6a8d5d03 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x6aed7e4a hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b31b0e4 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x6b3951cc dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x6b438d68 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b440e4a pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x6b45e902 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x6b4add7a ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x6b5e9efc __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x6b69f7a8 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b834aaf thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x6b87d9e9 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x6ba259c6 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x6bd2ca4e ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x6be1177b get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x6be9ace2 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6bf16cea irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c204dd0 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c20fd5e usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x6c21d1ef __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6c41f075 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c51b99f con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x6c79d155 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ca172bf irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +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 0x6cdab8a7 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x6ce9e3a7 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x6d12a567 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d424356 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x6d868672 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6d9e6969 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6db77456 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x6db9fe6f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x6dbc66a8 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x6dec7ed8 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x6df830d5 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x6dfb0d30 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x6e03609d blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e1ba2e5 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x6e3abcec ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x6e3c9c78 put_device +EXPORT_SYMBOL_GPL vmlinux 0x6e3ebdfb pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x6e4cc6bd device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8c9365 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x6e92eb36 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6e977ef7 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x6e9f0c21 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x6ec18645 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x6ec80784 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x6ed043d2 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6edaa6ac usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f4232e0 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x6f4fc859 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6f50c28b mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x6f514909 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x6f66deb4 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f6a543d ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6f84cbd1 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x6fa6b213 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fc3258e regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6fcc0d81 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x6fcd9aac usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x701bf23b regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x702b13c9 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x702e9155 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x70308353 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x7033c0a4 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL vmlinux 0x70388264 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7063da7d wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x706820fb ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x70701552 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x707bf649 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708669c6 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x709179a9 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x70957b40 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x70b53ef9 snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x70b8e2e5 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x71008581 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7104f675 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x710a1f9b tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711f84cf usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x713b8a14 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x715a9bbb tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x7161f947 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7167b666 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x71786f09 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a85af3 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x71b30efe snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x71d05454 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x720b358b regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x723d1225 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x724e387c dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72563f5c dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727c4a96 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x7291019b __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0x72a527eb do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x72a5baf1 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x72aa0071 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x72d9727b mtd_point +EXPORT_SYMBOL_GPL vmlinux 0x72ed14e1 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x72ed89d3 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x730b71ae irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x73493c6b reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x734bc99b sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x736c93e8 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x736fa238 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x7383c21f thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x738c2d2d pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x7399b337 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x739a72e1 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x739ca4a9 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +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 0x73ecf39b of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x7402f2b9 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x74203c11 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7424684f snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x742b6124 md_rdev_clear +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 0x7466668d unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x746a9f6f tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x746f1eff usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x7479c6e6 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74b39fd6 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x74b56e3b ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bf932a of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x74da35b1 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x74ef0d4f sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7523e214 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x7526bc8e vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x75562846 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0x755f1ba4 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x7581e8eb of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75b80ad3 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x75d2ae76 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x75e0c491 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x75eaf0e5 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x761e0aca btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x7622b63c driver_register +EXPORT_SYMBOL_GPL vmlinux 0x764669d4 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL vmlinux 0x76596360 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7689bd97 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x76968e02 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x76b3b6ef snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x76bd3278 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x76c41e6e rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x76cff277 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76f746e5 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x770f4cf5 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7722e260 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774fbcd3 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77699a6e uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x776ac0bf ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x77731bd8 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x77b80c8e pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x77ea2319 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x77f85b07 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x7833f1bf max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x7859b31d of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x78682c9c netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x78803a30 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x788a43b3 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x78a4f50b serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x78abf251 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78bdacf0 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x78d17d01 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x791cd552 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7927c5c6 __clocksource_register_scale +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 0x7973c981 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x79825488 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x79abd6ba regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x79c126b2 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x79c528a9 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x79c61e86 skcipher_geniv_init +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 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a4c1dcb vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x7a57aaa7 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7a850d30 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7a8b79c1 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9b1568 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae22ce1 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x7af49bda __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1cca67 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b5781bb __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x7b7492cc fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x7b9167a0 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x7b96cb48 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x7babaad4 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x7bc295a3 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x7c1e50b7 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x7c208f74 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7c21418c blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c3635ec usb_string +EXPORT_SYMBOL_GPL vmlinux 0x7c5d1e6f amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x7c5e5351 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c7da8b7 regulator_enable_regmap +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 0x7cbcc710 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce05cdd of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf6770e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x7cfa9647 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x7cfe7a21 cpsw_ale_stop +EXPORT_SYMBOL_GPL vmlinux 0x7d118dda of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x7d1a3f73 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x7d42a4a5 snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0x7d46ddfe clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x7d4cfcda __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d977b0d ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db21987 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x7dbb1ac6 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de473cf snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x7e0476df fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7e1dae20 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x7e382a42 yield_to +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 0x7e863432 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x7ea23ecb dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7ecfff80 snd_dmaengine_pcm_trigger +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 0x7eeb9ba3 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x7ef9a6fe tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x7f0f2c0e ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x7f1e5c8f pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x7f345145 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x7f34972a register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x7f57da46 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x7f7b87aa aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x7f9cacb1 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7fa6638f spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7fbb5711 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x7fc38705 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x7fd0e83e snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x7fd20462 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7fd21589 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x7fd682dc irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x7fea1403 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x7fec0172 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x7fee0888 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x7ffbd550 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x8003e583 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x800483f0 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x801019cf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x80109421 max8997_bulk_read +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 0x80786a1a sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80aeb5ef crypto_lookup_skcipher +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 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d77855 cpsw_am33xx_cm_get_macid +EXPORT_SYMBOL_GPL vmlinux 0x80ed9f8f trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x80ee9039 of_clk_add_provider +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 0x811a0df6 disk_part_iter_init +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 0x8156498c fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x817a4616 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x8193ea28 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x81d8a6f4 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x81f300fb serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x81fc6922 imx_pcm_dma_init +EXPORT_SYMBOL_GPL vmlinux 0x820e3a4a exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x8229cdf0 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8230d4c5 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x824f141b exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x8264db03 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x82731c92 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x8296e7c7 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x82a12017 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82aec144 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x82aec14b dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x82b285fa srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x82c11128 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dd6e42 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x82edc12e rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x82f129c7 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0x82fbb20b fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x830c6f94 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x8318e0a0 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8322b602 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x833c3655 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x835a1d38 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x836abff0 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x837ef585 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x8399cf55 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x83a63fec devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x83cd321d regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x83d35261 snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0x83d9af3a ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x83e7532e nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x83f256f8 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x840d2d33 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x842d2b81 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x846efdeb wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x8476c83c blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x84852f72 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x848bd0fb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x84ba3fe6 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x84c461eb input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x84d50011 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x84ea1f60 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x84eb0ce8 inet6_lookup_listener +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 0x853c355c ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x855f5286 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85a3ac0d ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85db55d5 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x85e9cb4e pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x85fb4e66 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x85fd9e63 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x86006164 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x861b305d crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x86278e5b event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +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 0x868a652f pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x86a5dbf7 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x86d422f7 shash_ahash_digest +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 0x86fa35f0 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x870f6864 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x873ec4e0 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x873ef10e snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87503f0a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x875ac3a1 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0x879bfa9d ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x879deb35 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x87a9e21d __module_address +EXPORT_SYMBOL_GPL vmlinux 0x87b2d858 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x87b7b049 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87bfe1b8 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x87d84b3d usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x87eda5f3 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x87fa1ba3 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x87ff8e39 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8803e895 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x8804706b snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88131975 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x886b4e89 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x88745bf7 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x889c303e cpufreq_unregister_driver +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 0x88c11575 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x88c8da9a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x88ca6253 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x88cca14d filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x88ccaa5a ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x88ce21bd usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x8904c539 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x890e9dc3 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x891cbb0b tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8934c113 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x893a66d5 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8968d425 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x8977f3a1 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x89a2d63b omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0x89b856b2 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89d01cae fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x89fa4094 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x8a172351 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x8a28da97 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a599e60 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x8a624308 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x8a6553e0 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x8a765ffc usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x8a83b0bd devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x8a86cb8d adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8aa1d5bd usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abe1298 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x8ac57073 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x8ad26308 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x8af5479d ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x8b11816f omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b414b32 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x8b5b544e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b7a0851 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x8b9148c3 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bbaa14f dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c3786b9 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8c3926d7 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8c52b316 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x8c62d2a4 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7e1d26 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8c806949 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8c97b2e3 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x8ca5bf27 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x8cf0c6ba dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x8d01c2cc pci_vfs_assigned +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 0x8d34a007 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x8d36c165 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x8d57a7b5 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x8d5cc6db sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x8d698b3f snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d6b604e __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d8187af get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8dab00d0 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x8dcb3f07 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x8ddf613c da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x8deda141 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e3d8cd3 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8e7e9b59 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x8e82cb07 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x8e9272e2 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8ea50f71 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x8eb28289 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8eccc91d ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x8ee8d3bb subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x8f014bf5 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f0c039e sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8f13eb3e snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x8f1dbf43 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x8f310168 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL vmlinux 0x8f3195b1 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x8f3bb721 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x8f4a82d5 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x8f572f38 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fbdf3c1 of_dma_configure +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 0x8fe14956 of_css +EXPORT_SYMBOL_GPL vmlinux 0x8fe1f3c6 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x9006fe91 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x901b836c gpiochip_find +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 0x90480bb5 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9064e69f max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x90741e2a nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x90819300 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x908eec3d tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x909102f9 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x90912a94 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9091332b class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90b2e18c of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x914e9028 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x915dda8e devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x917ecae8 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91ab3c89 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x91b086ed arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91c9382c virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x91dd5497 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x920419d7 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x9210c499 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x92196e4b sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x921b2ddb tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x92239bd6 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0x922dcecb regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x927515d3 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x92801349 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x92926584 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x929bd0e1 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x92a67532 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92be2ddc fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x92cf87a2 xfrm_audit_policy_add +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 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x933fefc6 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x9374c4ae regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x93a461a4 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x93d9a6d5 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9432fc87 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x943b6000 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x9455a0f9 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x945bb332 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x9483b3d4 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL vmlinux 0x949fcbd6 mmput +EXPORT_SYMBOL_GPL vmlinux 0x94a7f4d4 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b2e6e3 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x94bb38aa key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952ab364 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9545374b spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x95468018 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x955af1eb synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95753dcb fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x95838017 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x9586a6ed cpdma_chan_get_stats +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x9592e370 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95cd3aa4 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x95e6061c rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x95e6f939 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x95ee9c67 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x95f3ab61 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x95f92978 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9637005f ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x963789e3 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9661085b crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x9679cb32 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x968cbe1a tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x96919667 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0x96d19f0d __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x97420799 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97776cd4 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x977f7b10 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x9780fabc wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x97a9bce3 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x97b29da6 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x97bd0215 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x97c652b3 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x97c7a5f3 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x97d8886d blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x982a346e of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x982fc3eb iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986c77a7 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989cdf05 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98f08fb6 bsg_unregister_queue +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 0x9939f72c pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x993d044d ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9970fe2a ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x9972acaf spi_alloc_device +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 0x9988492d ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x998ec656 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x99ba1777 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x99cce713 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x99efcd0f crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x99ff7e26 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a10ea8d crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a13779f gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x9a34a486 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9aa589 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x9ab6c34d pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac38fb0 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x9ae7f141 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aef218a pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x9b02c5dd dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x9b21127f dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x9b38f8b9 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x9b3bbb97 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x9b526e89 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0x9b5600be fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x9b5bb59e component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x9b7597e0 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x9b78cc07 snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0x9b8165e7 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9b84ceb0 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x9ba79b23 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x9babec92 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x9bb22d69 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x9bdb1a08 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c0014b6 __of_genpd_xlate_simple +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c4587ca rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x9c77c98d devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x9c79dcc8 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x9caae4bd uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x9cb1bf00 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc8454e ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x9cd74892 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cf6992b debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x9d065acd ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x9d2a41d5 usb_hcd_unmap_urb_for_dma +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 0x9d7f4f29 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x9d80d208 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dcefcd3 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x9de30ed2 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9dfc77cc irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e0248e4 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x9e152cf9 snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0x9e31a37b srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9e351434 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e61501c devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9e650369 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9e67b2d1 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x9e79bef8 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x9e811001 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x9e9c882f tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x9ea556f8 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9ebe97cc posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x9ed545c1 virtqueue_enable_cb +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 0x9f0add0c irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9f27aa5d sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x9f3a6ec0 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9f66d15a crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9f693c86 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x9f746f54 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x9fa52153 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x9fb9c7ba ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x9fc02a22 omapdss_of_get_next_port +EXPORT_SYMBOL_GPL vmlinux 0x9fc04f8f get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd813a8 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fe99708 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x9ffa476a snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0xa013a9cf init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa01bff36 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xa031287b pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa047acdb ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xa05871f6 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0930752 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xa0b595d6 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xa0ba3f81 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xa0c95815 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa0d5d4e1 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xa1040a44 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xa10dfc30 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11dc793 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa164a99f usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa16fc1c3 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xa1885af1 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1bdfba9 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xa1c59dc2 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa1ce4fde blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xa1dbc0b0 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa1e00d1f sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xa1f52c3d scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xa2678fa5 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xa26b2f45 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27c51ca omap_pcm_platform_register +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2a9b50f tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xa2b5a897 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2ea8c21 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xa2f1c0a2 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa2f29e19 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xa3088712 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xa30e3f0e file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xa316e447 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xa333a007 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xa3346665 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa36f7bd1 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xa376d6d6 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa37a2f7a ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xa37ca017 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xa380bfe9 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa397fe9c pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c52fae pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f0dd8e ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xa3f3c68a sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xa3f8874b dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa4137553 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xa42e4340 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xa42fb250 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xa43664a0 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xa44ded73 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa494e46a iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xa49615e1 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xa4a70339 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xa4b25b3c devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xa4b93224 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xa4bf68f5 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xa50b6bad fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xa522d754 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xa52a4c75 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xa52c06cd devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xa5449d2d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xa5468872 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xa55b3221 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xa57f1fb1 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xa587ca15 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xa5ca7568 gpiochip_add_pingroup_range +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 0xa60173c8 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xa620e007 soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63c2a65 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xa651120d inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xa65578d0 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xa665a042 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xa68f1f4e dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa69a76c0 snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b76686 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xa6ba28ac power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa6bf284a syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa6d9adfe fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa71c60f4 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa71f2bad ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0xa74eaead wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa78ee74e xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xa7a3aab5 usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa7d8ea75 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7fa661b irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xa7fa7456 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xa81dc814 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xa8254efb ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0xa82bb607 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xa8460dfa component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa87663d4 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xa87e1925 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xa890a31c scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bb6bc6 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8c9af33 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa8ca25b0 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xa8ce5b2f dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xa8d02e9d of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xa8dda97f usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xa8e98132 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa8ee2b21 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xa8fdc7d2 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0xa8ffd4ac ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xa905843c ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xa9117a3e __of_genpd_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xa921ed04 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa9263752 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa92e6625 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93e7096 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa94478d8 mv_mbus_dram_info_nooverlap +EXPORT_SYMBOL_GPL vmlinux 0xa947ad3a tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xa9602f2c sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xa9670a1d rhashtable_init +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 0xa9904ccf crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xa992c0c4 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9bf8de1 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa9c5cc83 skb_zerocopy +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 0xa9ea078f xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xa9fb41f6 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xaa1e95a2 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa4a7dc0 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaac16c96 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xaae47c9c device_rename +EXPORT_SYMBOL_GPL vmlinux 0xaae5ecf7 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xaaf712fe ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xaafae933 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xab20289d __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xab25369a arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xab28e516 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xab51b72e __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xab5988c6 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +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 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabdd790a wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xabe7013b inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xac03ac39 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xac0ff562 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xac1dde3e __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xac23cfa2 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xac2bd262 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xac2d9857 md_run +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL vmlinux 0xac6f7ae3 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xac70cb7a pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xacac7a92 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xacd4054e xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xacd7883e power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xacdea2f1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace4662a ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad08028a snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0xad1decb3 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0xad274249 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xad275497 omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0xad382b5f vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xad3c96c3 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xad3d723d crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xad4ea345 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xadc0e641 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xaddbe59f snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0xade26e15 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xadf5a50e virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xadf63489 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfe60a2 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xae031b03 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0xae079b9f ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xae212f55 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xae39af3e genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xae3adfb7 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0xae60b006 device_remove_file_self +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 0xae82ff57 device_property_read_string +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 0xaea62db3 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xaeafebe6 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xaef5501f ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xaefc626e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0xaf031951 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xaf039dc0 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xaf06553d cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xaf2a0359 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf54dc63 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xaf7003b1 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaf7ee9ef pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb0016137 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xb0128a78 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb01383a2 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xb0187119 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xb02baba8 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xb02ee64c regulator_get_current_limit +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 0xb06c00f4 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0xb07575b5 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb07df779 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb0a6bcfe snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c56427 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xb0cdcb24 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xb0d56c9c ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xb0eca891 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb11337c6 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb115387a crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xb1217b3b omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0xb123f4e0 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xb125ceb2 cpdma_control_set +EXPORT_SYMBOL_GPL vmlinux 0xb12fd5e0 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1527318 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0xb1608cd7 user_destroy +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 0xb1c51839 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb1cf2ae1 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xb1d1ee24 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xb1dd1a53 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e49040 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb1fcc076 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xb2184723 omapdss_of_find_source_for_first_ep +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2251600 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xb22f23f8 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xb232987f devres_add +EXPORT_SYMBOL_GPL vmlinux 0xb250f6c0 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xb257c27d devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb270a72c dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xb28badbc devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xb299e3d3 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xb2abd0e4 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xb2ae0fdd blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xb2af74c3 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb2d3c7ac usb_set_interface +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 0xb2f2401e pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xb2f2d98d of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0xb360ed45 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xb361cb27 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xb3c2b576 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xb3cda3c1 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0xb3cebdad amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb3f127d4 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb3ff1352 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xb42541f9 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0xb4259697 omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0xb42ff73a snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xb4321bc1 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xb447d222 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb469f2bb devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb47063c3 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0xb487932d __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xb4952613 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xb4a574af ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb4b30c11 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4cf0322 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4e6dca5 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4efad09 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xb4fbf7da trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xb5142581 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xb5155b68 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52d8a83 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5452eeb platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb5742da7 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59e7d15 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b3af20 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb5be30ff pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xb5cba789 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5d911fa crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5faef5a vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xb6218304 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63a10f5 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xb6982053 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c0fe6d pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb6d13838 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb6d24c4e usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xb6dfed65 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6e2801a wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb70f0ecc wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xb7111f3f relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xb7280dcb sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xb730e71b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb7443169 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xb76e8cd2 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb77cb0a8 cpdma_chan_submit +EXPORT_SYMBOL_GPL vmlinux 0xb78c0376 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xb7b12fe8 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb7c4b3eb vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xb7c5e6af ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8081110 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xb80b2202 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xb81352b5 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xb816d0b2 ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0xb81d7b0a dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xb82566eb omap_tll_enable +EXPORT_SYMBOL_GPL vmlinux 0xb82b2c95 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb85cbf19 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xb87c063d serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xb894c791 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xb8b53fa4 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb8c30c02 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb928ab3c fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xb95dc753 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xb96716d2 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xb96fc72e gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xb9aeea79 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0xb9b87b78 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bfbb3c tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xb9c3accb dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9ce34ed swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d4d5e1 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xb9dfe1c1 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xba23e919 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba43abe2 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0xba4f3c39 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba8cb2d5 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac75f4d tps65912_clear_bits +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 0xbb28edf0 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xbb4e956b mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xbb54485f clk_register +EXPORT_SYMBOL_GPL vmlinux 0xbb626093 pci_rescan_bus +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 0xbb99b8cb get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xbbb09459 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xbbb0d875 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbbbbddfd devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbe29d8f single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xbbf52d27 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbbfa9650 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xbc000306 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xbc4a0e3a security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xbc562059 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xbc5c3b44 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xbc5cfe5d blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xbc65021e i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbc662233 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xbc727ca7 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xbc7987dc sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xbc91e1f5 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbc9e19e6 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xbca7f219 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb4ffe0 omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbcc77dd5 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xbcca2740 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdcb880 thermal_zone_get_temp +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 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd405128 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xbd4c7d8b pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0xbd4d5bd6 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd68f713 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xbd6df27e ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xbd73b23e usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xbd816a28 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xbd9d8dad ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0xbda3b45f ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xbdc06ec8 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xbdc87cc6 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xbdcd1570 unregister_wide_hw_breakpoint +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 0xbdf0595b crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbdfb0702 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbe0d073b __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1f9bb7 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbe28c69a arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xbe472d55 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6df87b mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xbe8041e3 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbec62f06 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xbec73900 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0ffdd5 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf1cbe51 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xbf366a58 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xbf995587 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbcddf8 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfbed9c6 regulator_bulk_unregister_supply_alias +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 0xc0056d4d __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xc00dd21c digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xc01411e2 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xc01def47 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xc0244b66 omapdss_of_get_first_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xc032c21e __put_net +EXPORT_SYMBOL_GPL vmlinux 0xc0356b33 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc03a654b memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0xc05c7f13 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xc05fe1d2 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xc062140e pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xc065881f ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xc06a9d49 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc06bbb35 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0877dc3 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0ce8bfd mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0de39f2 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0ebab5d devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc0eff36a vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc0f744ed iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xc10abbaa wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xc142d5c5 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xc15989ec __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xc159cbbb disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc173a441 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17e0afa irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xc184c889 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc19bdfd1 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc1a26d58 mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0xc1a3f1e8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xc1b8fa95 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xc1bced6a cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc1bef247 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xc1c8639d raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xc1eb6320 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xc1ed455e mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc21757d7 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc25134f4 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xc26a8374 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a14484 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc2ca976f i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xc2d31b66 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xc2d75ff1 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xc2e1501f __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2ec25d9 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc2f37006 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc31913ac driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc321a51a user_read +EXPORT_SYMBOL_GPL vmlinux 0xc327f398 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc32e5e12 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3585164 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc35c270b mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xc36103d5 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xc36eff83 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc394cf40 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xc39d59c4 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xc39f026a of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xc3b10b1b ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3be5577 of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xc3eac715 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xc40ac024 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xc41e0178 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42b9219 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xc451b42b transport_remove_device +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 0xc48e9fa7 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xc49d8cc1 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xc4a570d8 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xc4b3bef6 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xc4bb15ae imx_pcm_fiq_init +EXPORT_SYMBOL_GPL vmlinux 0xc4d14932 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xc4d8d550 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xc4ecb23c snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0xc50a89cf ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xc53b74c7 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc54dcd86 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xc56988da imx_pcm_fiq_exit +EXPORT_SYMBOL_GPL vmlinux 0xc57408c3 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5770678 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xc57d2715 uprobe_register +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 0xc602bd49 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61d7a8a mtd_write +EXPORT_SYMBOL_GPL vmlinux 0xc61d92f3 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xc61f63f9 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc6200a73 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xc62bd0bb max8997_update_reg +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 0xc669eaa7 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6810e93 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xc6846d7e cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL vmlinux 0xc685c037 cpdma_check_free_tx_desc +EXPORT_SYMBOL_GPL vmlinux 0xc6930343 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xc69578cc cpufreq_generic_attr +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 0xc6ab9885 mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0xc6ac1e7c snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xc6af012c lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6e8562f ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xc715ecf9 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc7168974 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc758632f snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0xc79514e4 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xc79f9b04 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a33bdb snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0xc7a89eeb sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d6c497 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xc7dd4b67 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc812d350 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xc814bfa1 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc829578b unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xc845b11d stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc8713043 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xc871daa4 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc8762fe9 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc88b9a3a skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xc88d703c attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc897bfb6 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b8c2a8 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0xc8cfd92b snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8fe740b ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xc900d229 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91608b5 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9655e11 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9d4d20d apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xc9e03073 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9eeecf6 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xc9f978d2 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xca053d68 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xca057fef devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca0b05b3 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xca11b396 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xca17c839 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xca1d65f0 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xca517707 pinctrl_utils_add_map_mux +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 0xcaa642b1 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcabfea6f usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xcadd40f6 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xcaf07c6b cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xcaf70231 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb256a48 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcb382f3f modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xcb3cfbf1 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5f345d shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xcb6ca878 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xcb7c265d smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xcb84ca34 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0xcb9970cb crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcba0847f crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcbaf9fd4 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xcbe482e1 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc00dfaf snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xcc3ab81d ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xcc5fb0c3 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xcc81bde3 device_register +EXPORT_SYMBOL_GPL vmlinux 0xcc84cf39 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc9678c0 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xcc99d829 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0xccc3bb7c inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd4bac2 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xcce072de device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xcce501ab cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL vmlinux 0xcd045fee bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xcd06cc8d thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd166350 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xcd30feb6 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xcd32fdb4 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xcd475155 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xcd552a71 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xcd55d51b of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xcd7427c5 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcda4351a mpc8xxx_spi_rx_buf_u16 +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 0xcdcf89ce kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xcddea0ef mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xcdea8b1e nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xcdef051a snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0xce084f0c wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xce54db1d devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xce5f20f8 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce71e97a cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xce741d14 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xce800696 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0xce87faee snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xcea307a4 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xcea77ab4 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xceac2230 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcec926f0 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xced2f6cd get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcefda1a8 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xcf014988 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5ba849 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xcf91a72e snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0xcf99d949 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xcf9e2a17 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcc80d5 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd01fb999 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd056296a ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06cece2 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xd0825e61 cpsw_ale_create +EXPORT_SYMBOL_GPL vmlinux 0xd0840827 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xd0935256 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xd094fee7 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d3de34 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0e46de7 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd0ee2c9f mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd0f0a575 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xd0f8c6dc aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd12ff0ba shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xd1403e44 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd162175b amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1b9b16c __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xd1c146de devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd1e3f920 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f3832b lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd1fec6e4 kern_mount_data +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 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd218c803 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xd23c5529 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xd26b25c8 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b44776 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd2c38c6f ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xd2de7533 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd2e2168f snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xd2e234d9 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f51f35 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xd3178315 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xd31f0b51 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xd32b3db0 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xd330d318 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd34626d9 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xd34a9d04 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd36737ff usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xd377b3dc snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xd37fd5a4 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xd38fc5be crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xd3942edb sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xd3db457a get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xd3db9506 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xd3edb479 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4083bd1 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd40f06cf dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c2f38 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd47ff421 snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0xd4a6b939 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd513232b devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd513525d sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0xd51f43c8 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd53a4be7 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd568a81a fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd583f5ab scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xd58582fa of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd5a8e733 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xd5a96ee4 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0xd5b17bd2 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c31288 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xd5c3d56a tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd5d4e4c2 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61019e8 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xd65d3dc0 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd693bd2e devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xd695ab34 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xd6a970e1 bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0xd6c7ceb4 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xd6e2ead6 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xd6e309d4 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xd6f27a8a usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xd703a6b2 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd73c4ed6 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xd75c529b bio_trim +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 0xd79dcf60 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xd7c6bc1e class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f2f2e7 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xd804e3cc virtqueue_add_sgs +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 0xd869b8b8 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xd871f8b9 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xd8746e85 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8a15df7 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd8b1c074 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0xd8bafe07 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xd8d51602 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0xd8e3c171 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd8f86558 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xd918af68 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xd92cbc88 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xd92f4540 sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd94ebf60 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xd95050a4 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd956dab3 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xd96b88c6 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd96bc1ab kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd99413c0 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xd9a157be crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xd9a99f89 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0xd9afed0d snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0xd9b60d3e sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xd9bb1d94 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0xd9e297c5 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f9a251 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xda13fed0 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xda223d8b pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xda2719be device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xda310477 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xda6f1723 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xda8e7a46 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xdab44680 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xdad1c1f3 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf0ee51 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf611fa reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xdaf6f23a usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb34664f ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xdb6d209d tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdb78b8a5 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb945146 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdba109a7 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xdbaec31b shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xdbb4e39c skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xdbebdd87 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdbeefc44 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc133ca2 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc1d287a thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc4abf61 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xdc4b8e08 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xdc52766d omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc851b8c bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xdc8526ce dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0xdc894860 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc994c10 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xdc99d18c devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xdc9d57dd da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xdc9dcbd5 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca28947 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xdcc4407c pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdce97949 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xdcf1c3cd iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xdd0bf88f inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xdd0e514b usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd330f2f cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd576718 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0xdd5925b5 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xdd6751cc uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xddb25156 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddcd6987 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xddd1d45a pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf0fcfb devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xde014781 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde0c42cc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xde28b085 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xde51a2c5 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xde6559b6 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xde69139e pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xde7bfbe4 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xde962f96 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xdeab9167 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xdec9562e tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xdee52fb9 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf22dac0 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdf2ee010 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdf34eb7a iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xdf3a4355 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xdf5cfcc8 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xdf5d937a mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xdf6ce23e hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xdf83456b wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xdfd2b544 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xdfe1616a ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xdfe27a13 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0xe00549e8 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe008731e put_pid_ns +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 0xe0655d52 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe06e4157 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe07783df inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe091218e sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe0a2dc00 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe0a70212 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0cef797 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0e1887b bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xe10719ff blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xe11cf2ab sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xe13c34e3 blk_mq_unfreeze_queue +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 0xe17dab5f ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe188a338 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xe1976987 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xe19e526b regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe1c06ba3 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe1c5b224 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xe1e6342f uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe1e9b791 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xe1eb985f omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xe1fbbefb tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe2016824 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xe20776b8 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xe20a398c trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xe23cc123 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xe23f41ba of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xe26a3f1a ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xe2759ea3 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xe2774049 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2965a1b usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xe2a5477b sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe2ac9fca ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xe2da6649 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xe2ebc610 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe311f57e spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xe32098e8 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xe35bf2bd pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe3619ae8 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xe37c1970 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe388b178 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0xe3897ec7 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xe3a96140 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3b01213 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xe3c79d87 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xe3d17d17 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xe409c133 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xe41c01bb ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe44858f7 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4747136 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49ccbbf device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe4b62fbb snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe4c19a0f regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xe4c21fbd scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4ddcfc9 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe4e4513b posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xe4e873ab ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe4eab307 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0xe4f84183 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0xe506f1cf sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe5071dcc extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe540170a __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xe544b3ac sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xe54cf90e subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xe5642942 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5a39942 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xe5d66b4c aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xe5dc7868 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0xe5fc9ae1 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xe63c2e63 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xe63da148 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe66b5945 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe6776f71 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xe67c3f4e devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe6979a0a ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xe6c59026 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c8f8f7 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xe6cf0bd2 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe6dcee45 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xe6dfc6c0 device_del +EXPORT_SYMBOL_GPL vmlinux 0xe6e170a5 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe72f8312 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe73b0f2c ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0xe7465786 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe74f0b65 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe7664cb3 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76fee13 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7aa1a54 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xe7be6ca7 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xe7c5494d bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe80af31e regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8399268 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xe8443704 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8551376 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xe857764e snd_soc_set_ac97_ops_of_reset +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 0xe8759395 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xe89f7e5b regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe8b6374d of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xe8b790ea posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xe8c4e054 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xe8e5df69 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xe8f47e01 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xe901053a class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9494aab sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xe949b454 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9612a2a omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0xe967569d get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xe981b092 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe987f1ec device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe989d4d6 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xe9919816 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe99439bb usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe997a768 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe9a821a9 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xe9b377db regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xe9cdaf76 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9da5ef3 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xe9eae425 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xe9ed7e09 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xe9fb9df5 split_page +EXPORT_SYMBOL_GPL vmlinux 0xe9fc5ed8 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea351bfe spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea43355b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xea447be9 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea59e846 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xea5d8e87 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xea7024f4 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xea7d246c __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xea9076a0 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xea987d2f usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xeab3f9d1 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xead5696e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xead72941 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xeaff98a3 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xeb1a55e5 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xeb1be484 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xeb1cba13 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xeb263b80 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xeb2dc2e2 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0xeb418921 cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0xeb434e82 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xeb49bc30 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xeb4b7c0a xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xeb60d844 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xeb665162 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb999e97 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb7e578 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xebc34b67 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xebcbd144 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xebd90eeb gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebed15e4 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xec1168e8 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xec16eb12 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2d0094 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xec2e501a __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec40c06b crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xec41327c fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xec7ff40d clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xecb3b1d2 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xecc313a3 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xecc5ad2f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xeceb4292 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL vmlinux 0xeced96a7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xecf48957 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xed02c337 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xed0d42c7 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xed10f409 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xed1a57fe ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0xed1d551a gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xed3a760d of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0xed411f24 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xeda8cfcf sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0xeda951fc usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xedb8cafa snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xedb8edae power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xeddb342e devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xedf7570b led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xee1d7224 unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xee3dea49 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xee5e82d5 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee879cc7 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL vmlinux 0xee965c4f tegra_pinctrl_probe +EXPORT_SYMBOL_GPL vmlinux 0xeec68d97 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xeed0464a pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xeed9a5d1 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xeee0a98d pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xeee0bd98 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef33786a queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xef351f89 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef49ed3a pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xef603540 ahci_platform_enable_regulators +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 0xef9f3123 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefd78ab5 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xf0023402 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf0078b4e usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xf0081e18 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xf015fb2d tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xf024cae9 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xf0320902 skb_to_sgvec +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 0xf0b4f823 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xf0e81b60 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf1551cee free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xf160fdef pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xf1668efc usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xf17631b2 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1891a7a scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf18dcddc da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xf1b2bd8c inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b3deb6 mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf1bb1c78 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xf1bba0fc virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xf1f16c9e unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xf1f7d0ce blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xf1fc1937 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xf20a5cfc swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xf215a92a skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xf219f670 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2284b8b usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xf22be89f regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf22c8298 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xf23b77ed snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xf23dcebb regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xf24b8eb6 input_ff_erase +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 0xf299942c ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xf2b8d77a netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xf2c78b02 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xf2e23b55 wm8350_reg_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 0xf306c4bd hvc_alloc +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 0xf3388b4e __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf33f38b1 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xf34c7ad4 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xf358da4f dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xf36bbeb3 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf36e84e9 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf398dd9b pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bb2a05 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3cd544d snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0xf3ec53cb perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f4b8f5 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xf3ff4611 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf43b6056 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xf44640e0 wm8350_device_exit +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 0xf49b336c snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf4a72b62 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0xf4aa00b0 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xf4b236b7 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf4dc8293 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0xf4e2db27 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xf4ecedb4 regmap_update_bits_check +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 0xf503753b relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xf5119854 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xf530feb8 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf5408b27 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xf5449c8f debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55787f6 cpsw_ale_dump +EXPORT_SYMBOL_GPL vmlinux 0xf575cd1b vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xf578449d ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xf57a8440 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xf590492b musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b1af1d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xf5e97078 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0xf603453e __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf6092e7c gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf616f921 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf6240ba8 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf628a9df __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf647aac2 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xf674abf6 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xf682d575 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xf6a90be1 get_device +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 0xf6ef210c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xf74f2d9f crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf76740bd rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf7961bd7 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf7c7a56a ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xf7e876ad crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xf81017bb of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xf810cdfa sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8368e6a ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8737faa devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8767239 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf87c26f5 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf884b2e5 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xf889a4c6 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xf8bfdb34 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf8d56a7e transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xf8e01784 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f9f53e ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xf8fdf9dd regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf91afe1d nf_queue_entry_get_refs +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 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf97a20a2 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b4a663 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xf9b56870 blkg_lookup +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 0xf9e81f4a pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xfa07f4c8 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa171cc5 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa343908 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xfa413a01 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfa80387b register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xfaaf0adc snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0xfab28290 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xfab9d44e pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xfaf56822 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xfb0c90df fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xfb126c59 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0xfb2fb043 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb374174 pskb_put +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 0xfb9e4981 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xfba79c00 ata_cable_40wire +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 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc209507 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xfc5634f1 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xfc5691e0 pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0xfc5c26c1 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xfc626b3e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfc679bb2 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xfc680bda md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xfc7d487d bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xfc870537 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xfc8f5482 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xfc921952 ahci_sdev_attrs +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 0xfcb6a455 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xfcc536b0 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce928d5 omap_dma_filter_fn +EXPORT_SYMBOL_GPL vmlinux 0xfcf2e951 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfd311a4c gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xfd41c7ce btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xfd60bf3b usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfd677b6f sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfd7770c9 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7a5159 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xfd93acd7 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xfd9778ba debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xfd9b660d unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xfddc0605 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xfde1a33e klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xfdf30136 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe009c06 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xfe0f721d spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xfe31d71a regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xfe45ed6f handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xfe5009bd blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0xfe57ec1e snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0xfe7453fe extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xfe794e3f pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb5cbed usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfec94ce6 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0xfecd4cfe blk_end_request_err +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 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff29d88a ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xff3bd71f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff7f409b devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xff89fb6a cpsw_phy_sel +EXPORT_SYMBOL_GPL vmlinux 0xff945ffc snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xff9e5252 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xffab70ec add_to_page_cache_lru --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/armhf/generic-lpae +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/armhf/generic-lpae @@ -0,0 +1,18420 @@ +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 0x4858f94a crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x7406f6f9 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 0x295fae78 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x7db971d5 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xea42be26 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 0x10d274f2 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x19a6b361 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x26b44993 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x464fca04 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x73e623d9 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x7b470406 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x9476b7db pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x96455a1d pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xaaec3c4a paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xcbe130a7 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xd3043250 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf99736e0 pi_write_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x7fc86081 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 0x369bd0a8 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 0x4247bb09 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x47faec74 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 0x768076cb 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 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 0xdeeafa4e 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/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 0x13a8037a st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x2c509aab st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x60b94cc5 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xfc7a79b0 st33zp24_probe +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x501d3693 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x5dba8e59 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x877091ef xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x0feae08b dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x3bc81cc6 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x6c284131 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x6fb95b15 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x81cd8f25 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x91971b50 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/pl330 0x6f5befb9 pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0x5a5d07d5 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04914e75 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x08f95f6f fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x179a4782 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1bb3fe3c fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x220dbb8d fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x27f3fdf4 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x345609df fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x39be4274 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x447bed40 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x623cdcc5 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x67c6d053 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x72e4aebb fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x782bc1c3 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7f54de72 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8030b5a7 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86be3474 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9b15a8a9 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9f08546a fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb158fce1 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb1a68f5e fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb2be9558 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc8e9a877 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd0c463c3 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd36d2ec4 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe51be481 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe7f2244d fw_iso_context_stop +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 0x03f4d7ef drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07565ea6 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07e7b7d3 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08f7256d drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x090b0772 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x091c985d drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0983a977 drm_crtc_vblank_off +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 0x0bfac119 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c18d8ff drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c3ba73f drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c499bab drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c4b49c3 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d7a2eba drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d8a9c7e drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f4d032a drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f8f1a96 drm_match_cea_mode +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 0x108b03ff drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11521214 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11628c4b drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x125b2cd6 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x127f34d1 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13211eb9 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a16e82b drm_modeset_drop_locks +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 0x1acd6eee drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b62a4ed drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1df07555 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1df25fc2 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f45c8bc drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f9bdd91 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fd28173 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x203eee89 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2196145a drm_legacy_addmap +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 0x236865a7 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x245f778a drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24de41b4 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x253d3fe0 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26a9a94f drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26b367d4 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27f5f929 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x283a0ce6 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f8eddf drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b8179de drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cf040e0 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2db12d32 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e002763 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e22fc1c drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e40f610 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fe3d125 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x317b6395 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3213812a drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32aceb55 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33ff8074 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34151e09 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34f790dc drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x366f026e drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36875777 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x382e412a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39933913 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39f7940b drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a8a7a29 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b57b038 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b6168f9 drm_mode_connector_attach_encoder +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 0x3c0e26dc drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ce5f9a5 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ddf9cde drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e614673 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e6de61b drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40fd0468 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4131374c drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41566a44 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x416560e6 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x421c2ecd drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4495ab5e drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44dac0f0 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45749331 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4780b305 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48cd4517 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48d95ec7 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bb6a063 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4be8835f drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fe915de drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x525703e1 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5296186c drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x541100b3 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541cfc drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5483d576 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54aac984 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54ce4a34 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55521b47 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x564dd486 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58fe144d drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5904e6a1 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x596860fe drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59fc1f45 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a00835d drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c4e9cd9 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c4f068a drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d88a858 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dd4b079 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6069de3e drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x612ed44b drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61544477 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62acd90d drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64bc2b1a drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e75a2c drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6596777a drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6628afd4 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x664c155a drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x664ebb81 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x666bdfa0 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67b25338 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69b6315f drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b2b57b7 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c1e2efd drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f7b586f drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fa0fa0b drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x709a753b drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71a8e0ea drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72b66b54 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7379cd51 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73916ee8 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73b74651 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7459d3d7 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7539e221 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7828ea06 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78f1c9b2 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x798acf9e drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a13d0ce drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9fbf85 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cffeb6e drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dc86484 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e1d9986 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ee66fb1 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81e5446e drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x829d11ad drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x843cfd07 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8485b0bb drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85fd3a07 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86e13aeb drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88ae97bc drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88c70953 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89f7d553 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a52b6c3 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b05b46c of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b0b5f74 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b49b0a2 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ba947ea drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cb25382 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ded4ecd drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6be94b drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f73efe7 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f83ba0e drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x905ffda5 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91e699eb drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91f38332 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 0x968cc819 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b583b2a drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b9da9ec drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c68f7a5 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d33c251 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d94f576 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9db5a19c drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dcf01b7 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ec32ec9 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fc6a629 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0ebc12f drm_legacy_getsarea +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 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2bc4ed5 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa38fb44f drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa454dafa drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4ae8584 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa50726b1 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa647ef97 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa66b985c drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7693f65 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa882d775 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8a50c84 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8d95190 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8f3e46c drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabdfd9e8 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac27bec5 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad5cd8ff drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadd35c9f drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae37ca47 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf07eb47 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb07fbb6e drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb122221b drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb162eb72 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3bbbd2b drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4e040f3 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5b57b01 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6250f74 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6ea382e drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8afc8e7 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bff482 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb94f482d drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba837b9b drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba8f3786 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbfdbea0 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbca55f36 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbeba9b4d drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbee2172b drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf882b43 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfbc55fb drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfdfe9c2 drm_framebuffer_init +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 0xc1c412a7 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2384950 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc50b1eec drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5c83ff6 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc69084f6 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6c70af9 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6e15177 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc91c0844 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9cfff16 drm_crtc_send_vblank_event +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 0xcc9d3741 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd5ec7be drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdd5ffe9 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfad5c51 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd228a703 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd27d8fff drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4876603 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd56c3e9d drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5919807 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5cac805 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64afb6f drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6ebcdaf drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8b88ee0 drm_connector_register +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 0xdd99c8da drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde12eab0 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde6136a0 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe03dc5e7 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0adde70 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe25d3ac2 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2937bb3 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe40f7478 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe70310d1 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8073f63 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8d7e2ce drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe93e5c0b drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea5f40a3 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaef7d7e drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec2582e9 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee38e9d4 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf26b758f drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2898d0f drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf298a7db drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf349c3d8 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4851663 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf49f914c drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d81758 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf60a7536 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf76fcbdb drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7760901 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7a41d3e drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf830de54 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa398933 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa74908b drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb1d3255 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfba80693 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc2b1777 drm_put_dev +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 0xfd2dce5b drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe0791c8 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe6f6761 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfec87550 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfef51a1e drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff3b75c9 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00a8ebaf drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x014a3a00 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05d455de drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x068367af drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09d276ad drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a1c0d73 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b1a44dc drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b53a9e3 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13837795 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1665cf51 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x183549d4 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a5a1767 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a8f1651 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21cf3cd9 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23e0b4b5 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x245e99af __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x253f83dc drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x281c47c5 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bb376ba drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x309af26a __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x326caf5d drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32d60dde drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3379ae4d drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37bb6282 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x383c27d8 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c3ef954 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3cc4f0b2 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f4120b9 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42b12afc drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x458502d2 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x466fff46 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4751af1a drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x482712b3 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a2bae1e drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b5e3ee1 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f35fe6e drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x517bd663 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51acee95 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5591a5e5 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x570ec65b drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a151802 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d6dce8a drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f0eceda drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f1ba3d7 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60bb05ca drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x613966d5 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61ad1010 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x663352ae drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b36833c drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bcc8a10 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x717d0605 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x720d3c6b drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7398d263 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7414fd27 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x741f5736 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75229883 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x755b8921 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75994c5b drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7823b27e drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79e39a32 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7eaba1ef drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x832bfef4 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85ca6b56 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85ea4cc0 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87b01f61 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d55f8ce drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fb7c29d drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91647027 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b87020b drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f8d461e drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0dcaad5 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa217f145 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa297ea86 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 0xa58d3a82 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa655cfd1 drm_kms_helper_poll_disable +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 0xa8f0a9e4 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa98fb0fd drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa2d4238 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabdc43b3 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb49ddef9 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6349b68 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbde029d9 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc833fbc8 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc957bb25 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca32ef5f drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf29277d drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0ddee62 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0fe8684 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd210d9ce drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd30a963d drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4a2533c __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4a98a9c drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4fb3635 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8917948 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdcb18fad __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd24a167 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfc9f253 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1620b30 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe19dfbc2 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2bd38a6 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2c4dcf3 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xebe176e2 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefa9f259 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf62f703e drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6b0b7c7 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6b93122 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7ad2c09 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf869ab7b drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbedef58 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x038b224a ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04943589 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x06f71560 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f3f795f ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1082af18 ttm_tt_set_placement_caching +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 0x153de70c ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x177448c3 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1794b69f ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17df55b9 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b0abafa ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x26b19cde ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x270bc6ff ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x36bf4e3e ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x39461015 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3da53d2a ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x43bcf232 ttm_bo_validate +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 0x4a999d9e ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b10623c ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x54f776dc ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5520988b ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x58ec8a26 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5b987ec2 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c266f8b ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x60fdebcf ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62cf7a3d ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6aac7d0d ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c0ec969 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6dda36f6 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6dfa4623 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7c1a5396 ttm_bo_kunmap +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 0x887778c3 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8aab8a3b ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8af6c3c9 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9142cc9b ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93a70290 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x953f34b2 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d74f598 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa5fbcfc5 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae1487ae ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae87b61d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb2d5dce ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbbe601be ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc897599 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc0581cb4 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc968d68f ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9d34728 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcad1fd26 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcbf117d7 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcccf857a 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 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd17dc489 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdad2f8bf ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe2fb949a ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe756cc65 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec0abda5 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefc4df0d ttm_vt_lock +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 0xfffe04e6 ttm_dma_tt_fini +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 0x3974648c 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 0x082ca468 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x4dedc602 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xb1a402f4 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x6fb2c613 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xfb9acab9 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x53f63dc5 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x00533ead mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x398dfbb4 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x40557ada mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x434a2e24 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4b45940e mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9baa065b mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb296c2a8 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb713078c mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc9b4d0da mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcdb0a41d mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xceaff12f mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd16406c8 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd1bd057c mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd66e8979 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdd2a1a24 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe30ef396 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x7b490f79 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xd20651b4 st_accel_common_remove +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 0x19ef1647 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3b66079c ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x6c9708f7 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8aab0563 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xad96337d ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x0db0f06e ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x506a1140 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x672e3350 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x03c88d7e 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 0x20e79176 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x29b4de12 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2b137c43 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2b485fae st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x44b0367f st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x49cede3f st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x563ebec0 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x57dc759f st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5acb8ef8 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x732c6b6b st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7d70021f st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbafc1300 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbcf0219a st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc6d3f123 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x14140bb6 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x66ebc257 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xb6b1f401 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x82155182 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xd8ebf75d st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x1c08760a adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xb7df7e97 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x12081dce iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x38a23085 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x40b5940d iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x50c522cf iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x51c72bea iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x56ecd0fe iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x57c13e1a iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x7693964c iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x7a83d5e2 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x8bcde589 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x93afa9c8 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x99b251a4 iio_device_register +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 0xae3a97db iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xbaab9534 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x7f369a34 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xabe7f400 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x080fb896 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x4460ebb4 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x7f2a8024 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xc91f2e10 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x01ebb4dd st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x540c0d6b st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xb909d76a ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x26ff8014 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x562dfe6f 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 0x3915e438 rdma_copy_addr +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 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x04a6dc78 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1ad7e33e cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2286ebc8 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2a449d4c ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2f1f7003 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4a542e78 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x64cbd613 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x64dc41f8 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x654a7057 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x66c002d6 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76883f29 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9c502926 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaf453212 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb4e55dff ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbb73e001 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbce9fa9f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf7faa8f1 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02846aa9 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x09ecedc1 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b14145e ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0cea84de ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d0184a8 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1030fb3b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1211c661 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15015e87 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17afe7a7 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d9bbb51 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1eab1d69 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24a46453 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26b0df72 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27656a91 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2aef01d2 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32e80626 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x334a2786 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x379b026a ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a4c4cbf ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f719731 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46c25c9a ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4adb2df4 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4fbcfa18 ib_create_mr +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 0x5339fd94 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x558ee235 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x593fe9a5 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a631444 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d0f03bd ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d410a89 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d8fd67a ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6051654a ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68d091bc ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69d2bc93 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b00e11f ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6de71c9b ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e2e44b5 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6fcc3211 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72e231e2 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x735dda61 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d385d9c ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x885cf015 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88698f0c ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a0d5a30 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e38fd08 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x912ed865 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x933c2256 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9936ec6f ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99adb515 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a19046c ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a3c363a ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e748b75 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0211f6c ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa108c5dd ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa126e48c ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa12c30c4 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa41ced7d ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaebc38d3 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0625873 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb81d04fc ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8737bbb ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8c822aa ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba448201 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd3b4cd5 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc124acb9 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5e7e4b5 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc62b6659 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc858d0ec ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc72799a ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0626127 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0a2a28f ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd438b9d3 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7796461 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd927e89d ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9923cd9 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9fbb360 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda47a4c9 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdadbc201 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde1a681e ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe10b5758 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeaed0918 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec124ece ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec1cd1a7 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa83ff3d ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe7cddb6 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x05259810 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x157d183a ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1ff06950 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x377e5be8 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x42c23718 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x44dfc4a8 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x55787ec5 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6fc55f73 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x81293671 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa74ea2b6 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xacf2c88b ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd5124680 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xffe44818 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4763f5f0 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7366cb9b ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x736f0a78 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8a03a03d ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9e7aad54 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa423e939 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa8208bbe ib_sa_get_mcmember_rec +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 0xf4fc574b ib_sa_path_rec_get +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 0x133a9b02 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x255c56cf iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x48b8c11d iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x49092809 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x608761c8 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 0x6eac1c39 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 0x946f8c2c iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9bd09d20 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb52f040f iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcc6efc7e iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd81b8b4a iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd8b90402 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xed66f956 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf49c9a59 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfc72bc1a iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x006c4415 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0418ba6b rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x05029094 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0b1a42a4 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x129839e5 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1b1712fe rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1c4d998a rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x247cd3ae rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x42979217 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x63d6d0be rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x72c21a41 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x768893d7 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x84574a64 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8a29513d rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8b7638c5 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa27f5099 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb531674a rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbcf4cd1a rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbd17dd17 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcdff5e87 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdd17f95f rdma_create_qp +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0c09c2a1 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x28b89a55 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x50ca0caf __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x95398ae2 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa73df58b gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbd63cfca gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc2a9da19 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc658fc38 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xcbd69a8b gameport_start_polling +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 0x849d14c3 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xff6b1ef7 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 0x1e1aba07 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x28b8e9dd capi_ctr_handle_message +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 0x4645a329 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50fcbf60 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5a906234 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 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 0x92c4cc78 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x96588221 capi20_put_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 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xba543533 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbd3e9663 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbd7e169f capi_ctr_ready +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 0x080d243f b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x09d9b971 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x12dfd4a7 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1b380744 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3182ceb0 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3e478be0 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x55d352fc b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x57113e1a b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x64dd96e4 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x69058f97 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8c5c9fe4 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc194cf89 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcbac007e avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe61f1946 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe9e352e6 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0477decc b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x273bc0b7 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x31e47d85 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x50743a61 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5d482eb5 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x945e949e b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdbe12c1c b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xed9e6c36 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xefff955f 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 0x1c9ac0d2 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x44bb9aa7 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7b6189c9 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xd8dd2f54 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xbc506591 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xcc4f9e05 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x0cb6a802 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 0x08d82a48 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2062d2e5 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x388781c8 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x904811f8 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd1922582 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x09ba92aa isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x710be1e2 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa64c37bf 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 0x00fdad46 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0eb6bc87 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0efa511c bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x18eea286 get_next_bframe +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 0x27bc7cf4 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x32b39ba4 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x38a24a28 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x523b8c28 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5d19a933 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5edbc974 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x62443342 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6abee27b recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7e44ffc7 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8167f6a5 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9263aa77 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9687e0bb mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa815e38c mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xababa4ac bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3148119 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcbcfa5e9 mISDN_initdchannel +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 0xe6b0b1f6 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe7a15fbb queue_ch_frame +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_core 0xfee31433 get_next_dframe +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 0x00b1039b omap_mbox_restore_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x309eaf33 omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x3998169d omap_mbox_save_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x4231d13c omap_mbox_request_channel +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x890cb099 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 0x6a5c0931 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x77b25ea7 closure_sub +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 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 0xc2bccfe9 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe355df30 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 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 0x05f79f6d dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x23c6f9fa dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x7b17d09f dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x7e149d9f dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x180abfbe dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x22962cff dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4c6c9fa8 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x808c7a58 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9fc4a31e dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xedba5e6f dm_exception_store_create +EXPORT_SYMBOL drivers/md/raid456 0xd1bfb330 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x18df7bed flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3105b16b flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x53057faf flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x58175f09 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5b632e81 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x69371824 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6ec9ffe5 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x72ca0a7e flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x91c60ecf flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa28b2084 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc1c355cb flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc9441a37 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf057f101 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/cx2341x 0x0c6e8e41 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x137b6bd0 cx2341x_handler_set_50hz +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 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 0xe5401c37 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xf0e127df cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xdb651e0e cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x7c557cea tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xae55e65e tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x071c54c2 dvb_frontend_suspend +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 0x1cd96cc0 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x344908d4 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3652fab1 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3656cb10 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x39c87fc0 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x43816534 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x489fac82 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d7e6b3d dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x61d6b5e4 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x629f9d31 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x633cc97e dvb_frontend_resume +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 0x76fd718a dvb_frontend_detach +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 0x8905b2c2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91aa4d48 dvb_net_release +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 0xa6a22aef dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa8079a04 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaa0897a5 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb4569ba3 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb89dbefa dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf10214f dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd011aa45 dvb_dmxdev_release +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 0xdb2e653b dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb9bbc42 dvb_dmx_swfilter_raw +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 0xeb8ce6e2 dvb_ca_en50221_camready_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 0xf9c23ab9 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfee9393b dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x5d98f4af a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x6c43a1f1 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xcdd0b7ad atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1be94488 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1beb14a4 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x700663e6 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7daaf7e1 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8c89b0d5 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x97098c75 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x989ada81 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd70264fc au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xefe5f26d au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xcc8d12ab au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xabea0e46 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x7f2bfc8f cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xe5dc9140 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x40fe1bbd cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x7c0437ce cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xf34db012 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xd125e653 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x64164703 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x7e1f9617 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xafe54923 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x9fa8f798 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0f7f818d dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5ce2f80b dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x94e4ef78 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xce363f24 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xf1f32365 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2113af88 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x43cb2ac1 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5b5b2202 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x60c8da83 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6453d02f dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7de4b75d dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa79c0306 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc5e2eb6e dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc6ba7679 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd4951db1 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe0e3d42f dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe2206c39 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe2317f6f dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf31b19e4 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf62986f9 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x24b51285 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2ee71631 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x36931dde dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x37cc952b dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x92251241 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf8681398 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfef8c164 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x52fa2ddf dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc7172005 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xf50e7e37 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xfcd6b02c dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd08f02e3 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5218d3d8 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x72153cb4 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbd9b518a dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xdde2bbba dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xec519f78 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xfbdc7c35 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xdeb545f8 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x52556f8e drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xc165d3a1 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xd300d1b7 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x8bc7927d dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xea26e026 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x63946ca0 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xf9ad7bef isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x8dcb0401 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x0155fef3 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xcb551d39 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x6fed85f4 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xa2fa4887 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x89452832 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xc88b6f66 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x68fd590e lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x6858660d lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x2957a8ee lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x6c78549d lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x13bf8d54 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x61d10bbe m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xe4437cc4 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x5990776a m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xc927a795 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x64413f2b mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xa77f97f5 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xad44c7bf mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xac4c8274 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x201c45cb nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x0257720b or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x8bc4ab37 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xa057f748 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xf557310d s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xb4a6b98f s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xe1f28e14 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xc296da93 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x3e78b7f2 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x09cc2dc1 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x512b3a20 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x7000bb41 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xa904d4c5 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xfad3550d stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xd4d2a062 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xddbd9e67 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x2dcf3157 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xb440a983 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x14880c23 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xc26a09c4 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x685be744 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x57f89895 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xa189a77d stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xe5860242 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x73cf015a tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x97b5ce0a tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x51c028c0 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xc1aeb1c9 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xd3502283 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x7f22727d tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x08cfaa9b tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xbe30c140 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xa628fcd8 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x386e97de tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x47522116 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x592b6ad3 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xb2b549d8 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xe0d1aa92 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xc3fb8d5a ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x0e0cead9 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xcbd0c588 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xda82f99d zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1c296340 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x3c384362 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6bb7ef9a flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xafdde11c flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc0e1c3f0 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe5ff6e95 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xecb4d4b2 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0e898335 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x57881533 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xda4e711a bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xf37d17d4 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x14baaca8 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x513087e3 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 0xf429956c bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x00273e84 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x09ccccc8 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0e81ceb4 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1f6f81a4 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4415f00a rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x679b0205 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9b0d94e8 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xaf8c1a99 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc0b90631 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xa1b0404b dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0fb322a2 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x18c32006 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x5462eaa9 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7e82329d cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x84d94cd2 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x95b263cb 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 0x0747f4a3 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x08189e60 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x52bf181a cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x646730c4 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9a19fa9a cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9e06f3f8 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xba1de1e3 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x09abaacd vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x1f1e94c3 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x3ce8609a cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x61edcce6 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc3d0bbea cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc7bbef37 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x25ecdab9 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x29da22de cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x36e93584 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x5f10cf91 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x629e8584 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc378c597 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xcae927a1 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x01f7fb83 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x141035ab cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x29dcb397 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2ebb6f43 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3730470a cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x405ad6c9 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x48f977ec cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4c38347d cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5cf78fcd cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5dae1431 cx88_risc_buffer +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 0x79bbc538 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x83396054 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x978ec33c cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa5d1bda9 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa9116431 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb7c70720 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc95b0b0c cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdb77d89a cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe8b167a4 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfe650f0f cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1511b621 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2ce0e04a ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x477b0eae ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4e46e5bc ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5da5e8a4 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x60a4efb3 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x674d8fa8 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6993d3d5 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6f0c00fe ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x859b760d ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb052154c ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb6b87545 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc7f635b9 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd13b8f95 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe4715d72 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xef28d965 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf664691a ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x017a6cfa saa7134_ts_unregister +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 0x1c6c864a saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x299c6e8e saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2a7027dd saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3346c9f5 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x44322b81 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5c52011d saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcc4bd14f saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd7e1f0cf saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe7fb0386 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf1c7c990 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfc8810fa saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x8fa5270a 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 0x2d95be50 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x333b68ee soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x42d6ba89 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8e08d520 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xaebcab75 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe32bdcea soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe5ca399f 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/platform/soc_camera/soc_scale_crop 0x4a1fa629 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x5346750a soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xa2eab8cc soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xb392cff5 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/radio/tea575x 0x1d40ee20 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x40729cd9 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x67875b81 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x69e9505f snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x79b3ce8f snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x82b98dd3 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc2030947 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x21d2f0f1 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x29ec1bcd lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2a20842a lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3d1e4515 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5922a15b lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6e5e6ecc lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7cae3db3 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8f4ac541 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0x0cc444f6 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x26037b9d ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x251bbf59 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xd2d5a47f fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x15ed2226 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x220a6bbe fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x3fc375bf fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x0fd547a5 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x42c89603 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x73f352e1 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xf03b5415 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x8665f490 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x4d4ef1d6 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x33d8a3b8 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x55215e5f 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 0x074300e7 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x16b3e6b8 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xf0f38518 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x5b716f00 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x8178448f cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1642cec8 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2165d18b dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x49329632 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x51c0e639 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x63626676 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x67f966f8 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x7ca6b1e2 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbd31f4a9 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdb0c663e dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0ef1ccbb dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4cb9692b usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x63d53e9e dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7c81b2fe dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9ea0fcfc dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb0f6d717 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbdf7bcd3 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 0xe627d12d af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0c66d454 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x15ba1891 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1805c2c0 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x19111008 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7fea766c dibusb_rc_query +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 0xc06ea011 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc62fc4c3 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc9cb7f96 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdb8e49e9 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf346f115 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfbbc7110 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x45f05391 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xc794c769 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x068eeae5 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x228f94ba go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2b28eabe go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2e70e4cb go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x52dd7e27 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x775fd0f7 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x776e63d0 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd4537e5b go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xff6677d7 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x29f94b13 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3055e772 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x802ad018 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8993cfd4 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xbf45b9e5 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc11691bb gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd8aea0ae gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf0791bad gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8ecf8e46 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xe159cb62 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf8e05bec tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x88afffc9 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa368fe03 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x0edafff1 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 0x6e483191 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xd397e902 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x576d90fd videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5a6c8ba1 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x92475881 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbac889a3 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd9e52a37 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xeb68564e videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x7e97a53f vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x5061cfee vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x6536bcd7 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x960edc2a vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xb4e4ffee vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xbc46ca32 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd34a8c49 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01cf2d08 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x020b2bea v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x07857881 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0ad1a4c2 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0ca60516 v4l2_ctrl_new_std +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 0x171c9f2f video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18cf020e v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2294601d __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x24447824 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x260f5b85 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x265b363e video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ac62be6 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ed53552 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x34ad1f12 v4l2_ctrl_cluster +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 0x3c5c4a51 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ea7b065 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45272376 v4l2_clk_disable +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 0x4a3e6c13 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ae58e6f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x609deff3 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65069eb4 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x676337ea v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69f79a1d v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6acd9198 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6ccda168 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6d7575e9 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e192af9 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7031913d v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x70ffcceb v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71ad24c0 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76b3cb26 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76ca61bf __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77070162 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77f00ab3 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x789f44f5 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e889bf3 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f3bcedc v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f4ab40d v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f8e6168 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x818f7f4b v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x898d112b video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c2c6295 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x970448ae v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9806c35b video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x983b4cf5 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a63b836 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9b9c414a video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e44c630 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e901cb7 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa613fbb9 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7593db8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9f5662b v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb31d1904 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb54bfbf8 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb82c2891 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcc82653 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc2d4a186 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcacdaf1d v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0a24256 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0c014a8 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd37114c9 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5c8cbbf video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdaf4a06a v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xddfdf615 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe7ede1c8 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe8dda238 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec6f2211 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xefa4707d v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6d92412 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa6426d8 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe5c14c1 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe8c84f3 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1f4a51d5 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2f938d7e memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x412c78e0 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x41a21f03 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7314f9ab memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9ed4695d memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xad7980f9 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb61d3ff6 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc435eca9 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcd37f474 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd227b72d memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xee255b93 memstick_new_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x086991da mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0c7e70ca mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x29501580 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2950274c mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2a7c1552 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x408597ec mptbase_sas_persist_operation +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 0x5e28a4ef mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x68fb5cd8 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x691a2241 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6f12d92a mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7297be56 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x73c5a8c2 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x75b67950 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7749d5d9 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7b516981 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7cd0f9ff mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8255b8b9 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8af18fe7 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x921b0912 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x94f330df mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9539af8d mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9e4e193b mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa8709565 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xad55e537 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb66cab6d 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 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe31571ba mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeeae101e mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xef0f7ac9 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf176018a mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x024da3a0 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x03b6cf1a mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1c2d061c mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1e487ed0 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x34e67bcf mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x42721830 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x449030f4 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x46896426 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x54076850 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5426028d mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x54f2f7fc mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5860f994 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x75436b49 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7893b0a7 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7da9e154 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7e22f85f mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x89033e63 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x989d49fa mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaf8c2fd0 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb4451aac mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbf540e36 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcfa6dbed mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd8f55ac4 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe4fe7289 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf24e5bc9 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf48fac9c mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf8574912 mptscsih_ioc_reset +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 0x51e6f025 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x7b2bc887 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x80e5cad9 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 0x561b5a28 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x67357078 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa2a7db90 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 0x0c64401d wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xc61ac186 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 0x927e344f c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xfe6aa1fa c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0xd01902b0 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xff164dbb ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x20bae25d tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x345d80c4 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x3a75385e tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x53154bbd tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x59c3adc7 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x63cb9cba tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x987018ec tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xaa3963e2 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xadac7c5a tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xadcae13e tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xde45abbd tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf65177b3 tifm_unmap_sg +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x02f5c87e dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x0d8e2a28 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x919c59b4 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xad9f770e dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x1330e415 tmio_mmc_host_alloc +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x1cb18c85 tmio_mmc_host_free +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x4530cbf2 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7143042a tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x8c171aeb tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xb275fe22 tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2727492d cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4efa6f8e cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x51d00379 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5335f410 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5f498d0b cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x92c1c7ea cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb94e01e5 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x6a3237b7 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x5208ea37 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0x24066892 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xfa10fd3f denali_remove +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x1153143f onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x3113bc4e onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x63e6322b onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb80412d5 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0e317f95 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x58e7cd6c arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7080ca27 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8c89dff7 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x921bc61f arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xabd73a18 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd12b815f arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd555b941 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe977233c arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xec13592d arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x10fad859 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x5518fd4b com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xfa5d7431 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x005f275b ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x050ec4ac __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x28c2618d ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3108fcf5 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x39c6b3c3 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3d28ce75 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x895ceeed ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa5fa941d NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdd691926 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf64bf50e ei_poll +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xc9f3d84b bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xc5659d8a cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x02b8c6cc dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1a4203f2 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x351ce653 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x37791dd4 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x399e531e cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3a4c9b13 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3b5950e7 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3b9d394c cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4b0bf617 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x53d8e214 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5aa6e8a8 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5d563b28 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x622dacca cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9a6c1a3f t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xabf7ce13 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb7c0cd6e t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09675de7 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0b9041f6 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c7b42e7 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x192fdfa6 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x249e5650 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2e3bb5c2 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31c9213c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x33555d5d cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x37211379 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x44987f11 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4ddd7e5c cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x63c0f7d1 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x662e3238 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x674aa958 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x679a06d7 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6820ae82 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6dd0d735 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7014a26e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x712f045a t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x74d74b2d cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x89482c50 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8b6aa8ea cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x923d8c45 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0c21417 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa10b8cfd cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaef3b9d2 cxgb4_read_sge_timestamp +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 0xe1a9e053 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe1d5848f cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe6eb5159 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe9b7c8b0 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf0d15847 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf5c33891 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfd537ad7 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x19d3514f enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x3fd50875 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 0xc6a46c65 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbf3a020e be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xeea9feaf be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x015d1297 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07fd094e mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09bd28d2 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e95d028 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12782877 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b964952 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25cd3e28 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e9fa766 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fd1b5da mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x308a8cf6 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3752347b mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x383b2181 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f5c22b0 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4911a7c7 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a8328a1 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c68cbe2 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e1efffd mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a22f30e mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x740887c5 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x777726e2 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7dfccc50 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f675838 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82f92afe mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ce1d3ee mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92e7ff6a mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93b7182f mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93b8567c mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae65e9e8 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb30f55cf mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7b4df68 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2172cb0 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc70e45e8 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc863c1c2 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf599c5f8 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf92a86ad set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9d1ddcd 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 0x21ceff63 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28317fc0 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d5c28e8 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33c8ffad mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39f0d5f5 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fc65d9f mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e871e73 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x774478a0 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a52015e mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c5c59d3 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ef311cb mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x812cfa8f mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x85d7c53a mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x88f544f2 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x890522c3 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x926d789a mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x954f4828 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96746916 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x97ce50e6 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3d0fbb1 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa530a649 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa34d134 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xadcb02f8 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb30ddf05 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6e1d020 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc40d7c75 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc699ce7e mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb40e5e7 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb8d952b mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb070c96 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 0xeb764f66 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec510095 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf18c020a mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4250c52 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf85b44f4 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfafa0033 mlx5_core_detach_mcg +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 0xfd0d8e07 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3e94441c hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5b63aa25 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xaa5a8502 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe3798092 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf582beaf hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0343a314 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x084ba4ec sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3927223e irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4b3bf7cc sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x768927f8 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7cd1a948 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x825c5c83 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x925804c2 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfc56c1cc sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfd9d67bb sirdev_get_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 0x04c6a197 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x28bafe21 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x4829981c mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xb7a279ab generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xba870da3 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xd948e91f mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xebe8ee46 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xf9fc7fd9 mii_check_link +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x2448bbf8 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xd77e3053 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x678e2247 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x732dc097 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xb001f009 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xef64ba15 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/sungem_phy 0x228e6391 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x034f2f52 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x053d686a team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x088465a9 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x10e9df51 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x637551cc team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x8e26d926 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xda069679 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xe19534fe team_modeop_port_enter +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5b439364 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x9fd20856 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xae1e0a4f usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x141e67fd alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3481643c unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4430874f hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x639e1a1c hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9b662b52 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9e08d7a5 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc549f172 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcfe2a834 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xef899391 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xefe4b125 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfbb4c3ec hdlc_open +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x74801292 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0af2a065 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1a1e1d6d ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1dd81ec2 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x39cec4c6 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3be5a730 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x45e03dc2 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x460daf5d ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6ffa5304 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb86e9472 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc5631425 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc69be832 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe6c88311 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 0x0245f681 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x27a443df ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4fecd80e ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x73a82231 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7ff5b2cf ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9faf9968 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaddf038d ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbc48bc08 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc920a60f ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcd286ddc ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdbcba877 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1f572573 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x33bbe2e3 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5a0a95a7 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x60314c63 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x669f7c01 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 0x88a2e9bf 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 0x94ffe706 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa293fd3c ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb2e3361f ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd5ed7d44 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0cf3c91f ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0e875c63 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x14d70095 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x20b7ea19 ath9k_cmn_spectral_init_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 0x48225478 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4a45b437 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x596ad31b ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x60ed95e2 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x66099072 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x685bb9c6 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x68d261f0 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x739c332f ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7400d4eb ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7ac4b702 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fea9989 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa5f45422 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb497da4e ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbc0f6aad 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 0xdbdde862 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdbf89357 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe1836b49 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xeff80a65 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf542070e ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x002ff78d ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00cc56e4 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02f4a33b ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0344b77d ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04226ad0 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0703cb61 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bbfc2a3 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bd8b326 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11e663de ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11fe269f ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1684f468 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16a2b51e ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ae5d022 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c5ffbb6 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d35559a ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d8ce9c7 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dfb6b59 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x206436b1 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2064ca35 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2112a153 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x252b1d59 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c29f00a ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ee5cb11 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3057cf44 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x379a476d ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3884458d ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a60da03 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a6ffcb9 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3cd96fd7 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3cf9dbe0 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ee418a5 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41b86597 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45bf1a33 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47782dd4 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4dd14da1 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a0bd201 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f9587e7 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6061299d ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60a4804a ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64d7235d ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65b73ded ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69742b0b ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d4be988 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72bf8b85 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7941bd55 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7979ee71 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7cd8603f ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d0f966d ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f164a17 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x802cb40a ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8126c482 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82bbf786 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83b37050 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8683e735 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ba71280 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90f73f4a ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x911470cf ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9515fe6d ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96075317 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x970d8b5f ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x972c6b29 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97b2b075 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9843c16d ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9cdbd3dc ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ce7175c ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa088aec1 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2a889ae ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5bb3e0e ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8a2c9f8 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9200a0b ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab02c223 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabcf70fc ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae1b7a90 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf291956 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb15cf007 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb64b89fc ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8825a2b ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb88f2dda ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8d939cf ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb90237fb ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc9642b0 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc08621be ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc2937e73 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4cfd38a ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca608bf8 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbdd6cc3 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd938151 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1b13ee6 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3a8f14a ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5518d44 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9667543 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb97b296 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbb3cc15 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7c510ad ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe83c4392 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee55195a ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeea25ca0 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0d120c2 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf29c6b71 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3093207 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf39b5b5f ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf64a785a ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc27432c ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff1fb2f5 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x28462daa init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x39b01373 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xd6cd9c5d stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0a0e7866 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1629f059 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1c3c7938 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2d71cfec brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x43c355a3 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4ab64122 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x609dbc09 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x61fb03b7 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6cf13799 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7536d9cf brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x86821047 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcd36fd74 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf58a0fc6 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0324ead5 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0fcdb540 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1a8cf86d hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x24a0ded9 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x339769c1 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x377e7018 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x47476438 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6105a765 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x72313252 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7dd05964 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x81772396 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa0e64f34 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa8c78b31 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb171f540 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2302b57 hostap_80211_rx +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 0xbbbb19be hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbf7d7867 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc3b3597a hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc6b8797b hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xce386c79 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcfc755b6 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd6b5a219 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf2f4bb3e hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf373d38b hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf9100297 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x165205ff libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1e539ed8 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2111a194 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x246f96c7 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3ec2f107 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x427bcc8b libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x57564c2f alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5d88bf2b libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6024fb8d libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6b47ceb6 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7aa947ee libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7bab0261 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x95d8d448 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa2b27464 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa3cdb335 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb09714ce libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb443efd8 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbeffa33b libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbff575a6 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe3153f88 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf0810df6 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07401009 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x076eb137 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ee91a45 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0fca8df4 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x113b951c il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11748780 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1393b1be il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13f4dab6 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x145e0aef il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14ffc8d4 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18de8dac il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a8a509c il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d77f2d5 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ecc99ba il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25cb1f65 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x264963a5 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a0bdd80 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2be983d6 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e85e443 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31fd9e8c il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x342f6064 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x364596f0 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3881a03b il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x391bad46 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ff61849 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x409811d9 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x409c61d1 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4160504d il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42c7858a il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44656a90 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x47029447 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aed2e16 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d48d161 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f4b059a il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x511caf44 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52300ea3 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dc9ab83 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62d31808 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x664061f9 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6795834c il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b9564df il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d48f279 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6df8e76d il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x709a7827 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71b1618a il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x72f091f5 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x74e26e3b il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7711eecb il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x790ff33c il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79835a43 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d920e35 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7dba113f il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x810b5832 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84210966 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8adfbc4e il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d142815 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90dd8302 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93538506 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x962d4356 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96be005a il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x972e57ff il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a1c1ebc il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b2eb93e il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa17b4cf4 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa30a8421 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa35896d7 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7c5e045 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabc30cc0 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb301859d il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3d6fc06 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4e2993a il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb81b756e il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbcb81505 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc16790bf _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc61d7491 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8e01923 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc9e7c340 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcdef0f2c il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4072443 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4b255e3 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd80b72fa il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd812f7ef _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd983758a il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb98dee7 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xde165c73 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf9a9165 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0e8b5b7 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1b0a1b4 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2985a5e il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5a43dc3 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6f87733 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7ecd922 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9065cb9 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb2a247d il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb327ed3 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1221a86 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfefb43bc il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff9e98ee il_setup_watchdog +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 0x32593aae free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x34589975 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x36fb7184 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3d04ebf3 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5bfb0c47 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x65dc43d6 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x754587a3 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8252912c orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9a7efd96 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9cab6ec3 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc4b7f5a4 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcdf0a099 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xced318a0 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd1ac706e orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd42cf82c orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf437e49f orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfd3dba9a __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xc61fdfab rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x08db6ec6 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x20b0abc9 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x29ff3cb9 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2c508a70 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3521874f _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3bc5dea1 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4332dc6f rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x47a1de7d rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4da144be _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x616085dd _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6568bfd4 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7024f1e9 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x71bd31ef rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x747ca7cd _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x776ca041 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7ebebb28 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x82339834 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8357ffc8 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8c126bd3 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8ef7d3f9 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x918292ca rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x97a71b3f rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e177882 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e2810c4 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa0c75932 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa6f4c794 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 0xbc750d8f rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc1e69ebf rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc4230eb7 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc49318a1 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc5db83ff rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc891c555 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd8acc7c6 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdad3bdbf rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdd2b8570 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe1f77bc8 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe6398f5c rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe83820ff rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf3cc1d9a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf46bddfc _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf67b3235 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x26382bd1 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x5631bdb0 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x89d4a6fd rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xd029541d rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x1f139975 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x43631dfd rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x9cc50a37 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xe042c23a rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x143d1a38 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x169b4c43 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d0f25d2 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x20eaa619 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x22329eff efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x31ff2dcb rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x36adfaee rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3e97f84d rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5275b091 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x60fb12c5 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x61821b73 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x63759bc6 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x72e2776a rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x74355eda rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7de8d298 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x908d6c16 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9aa219ca rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa089b334 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa521dfb1 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa6f9916b rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa7cef915 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb082d0c5 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb71eda2a rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbaf31a71 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc758a234 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdeec1ee0 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xebaa2bbe efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf2ff00af rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfdecf602 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xff1d7514 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x15384bd2 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x4a64d55e wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9cd94697 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd5c37ec9 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0xeaa388b0 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xecf38b1e microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x5d6fcf93 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x917f8f71 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x9f362498 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x6e8a3d53 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xe1068041 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1008f3b4 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x38916f25 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x40cd19bc ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5fc86fce ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x60637a84 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6489787c ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6afa3b48 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6ce4c0f1 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x87064ba2 ndlc_open +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x00b633e3 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0673ca5c st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3220c4c3 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x34b9a853 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3ec86b5f st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x42882961 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4d3fbf3d st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x615747bc st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7fc76191 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x861aeab9 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x86289099 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9a0d3af0 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa52159f4 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xccefaadd st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd6681660 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xff9aa675 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/ntb/ntb 0x13fac010 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x223516a8 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x7cca0f99 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x7e4c6566 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x9da950ab ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xab2d3690 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xd96d810e ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xeb4fdc6e ntb_clear_ctx +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x4b3ec263 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x7bc5a6a0 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x06f68e47 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x0d8be59a parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x13c5769f parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x18fb57ad parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x1aa5b40f parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x2c80939a parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x367c44b1 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x396c02b5 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x444e9385 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4a5a2256 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x57e4a6cd parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x5a3b225b parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5d667a18 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x62c98b56 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x73b8d9b5 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x8ad50e5f parport_write +EXPORT_SYMBOL drivers/parport/parport 0x8c007e09 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x8cfc07b7 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9c7c6d60 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xa1a30c27 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xa6bb88e2 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xc68bd09c parport_release +EXPORT_SYMBOL drivers/parport/parport 0xc72ded7a parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xc87951bd parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xc9ca0d26 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xcdded030 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xd11c2762 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xd5bf3785 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xdb119226 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xdc48e003 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xe82d2840 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xf613cbe6 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport_pc 0xb1e05ab0 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xf13cf177 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0x2cb2804a iproc_pcie_remove +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0xc46b187e iproc_pcie_setup +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x26e26798 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3a86cb75 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7f82b6ef rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x97b35f5c rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb18b4057 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xcafe3c19 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xcdefeb24 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe4c1e30f rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf9ca8dd7 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfb52e5ae rproc_add +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xe1d04972 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x22f04bb8 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x33fdd52f scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x3604aed1 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xac86b37e scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x01210595 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1998591a fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x45cfd127 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4ca3f801 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4e5c66e8 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5237b7bf fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x648b3719 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb118ba75 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc93be4f4 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd1965e98 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfaff1336 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfb30a18c fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x02539d63 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06bc4311 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x18d1f215 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x19697e61 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e0ad0e0 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28bb9794 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x366f31c4 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x40c95c98 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x440564b8 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4a078b1f fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4af578b4 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4d1d114d fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f27ee96 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x58a515e1 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x60b5b0da fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6241a09e fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x63107930 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66fabc54 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6779ed3a fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x68271f2e fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x691e3185 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6bdf2e41 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x78747736 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x78caf298 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ce6ed82 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x86ddd7aa fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x957211fc fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa165481f fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaa466a54 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf29ce5b fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf835142 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb50c4252 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb58176f6 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb6a482ee fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf7b7c1a fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc6ee1d14 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcd7eea2f fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xce458cd7 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4f5b31d fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd519500d fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd5d034bc fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdaea13cb fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5cac9ba fc_linkup +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3d97ee9b sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5a981718 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x6bf45c0a sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x758f1e5c sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +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 0xa81d6c92 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ee701ab osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x11cfe79f osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x21d47c18 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x29462a79 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b7465d0 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f896868 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x41b9c786 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x41d56479 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4eb12061 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x524f1590 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x627c0857 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6af4c9d8 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6d665693 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x70b58267 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x733b31c7 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7956f874 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x79ce748f osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7a2b13b5 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8767adca osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x926972ea osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x96d6ef9b osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9bf125e9 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9dfd35cc osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa30a66b0 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa4882f25 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa659bfb2 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaacd4236 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaddbd7d2 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbd0f1c34 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xca9f46b9 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xddadde12 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe32e9506 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xed29aece osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf60c3c63 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfb5ed01f osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfcf4dbff osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/osd 0x200f1b1e osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x21d07a9d osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5465de5c osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x639c559e osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa187ae81 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa5d5be58 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0108b7e0 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x09bf231d qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0be53f10 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3596f2fa qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x789e9d01 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8c9934b7 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8f4791f5 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x905ac4ea qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb38e9eb1 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbf834dac qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe8e38288 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf4b013a6 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/raid_class 0x54061b80 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xc753c764 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xe98c629a raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1525d277 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x188ee550 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2b66727b fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2bcd0503 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x621b15b4 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6e76548c scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x930643b6 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb00da037 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb65e587c fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb83c2b32 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd693d3f7 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xda856bcc fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfb810d04 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x129c24a5 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17d45d28 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x29dbf5c8 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2ac6f849 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2bb2fb14 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3a395716 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3c253d53 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3d6a9de7 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x475fa311 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4ece5e9a sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6093cfc8 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x647d65fb sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6d4a67cf sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x84ca175a scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f793062 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x99e7decd sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9a208396 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb4ebbd51 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbd51fde2 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc8ba0865 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcc03e4a9 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd650633d sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xef7b0d38 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xefece5ce sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf8a026b4 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf9712029 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfa2a0cce sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfc9e848c sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1f1be363 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2d22faed spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa48d86ae spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xeddd3834 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xfb22ef0d spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3e9709e7 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x43807643 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x5123a1f3 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xed5b3689 srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2831a8c6 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x49ab2668 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x7d7861a1 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x89ec4d57 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xac603e02 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd5267157 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd8b9ce5d ufshcd_runtime_idle +EXPORT_SYMBOL drivers/ssb/ssb 0x0ce9fe9f ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x10fcf60a ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x11d4040d ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x315b136a ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x31f08f37 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x335bb23c ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x37221e31 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x43d916f2 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x452469bf ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x544aa572 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x55fe59fd ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x7a6abb1c ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x7a8489fb ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x82fe3cbf ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x8a5e1984 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x908ee62a ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xaeb39ca4 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xbeb93dcd ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd8ab7dbb ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xdd6d4d61 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf2cc5674 ssb_clockspeed +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0ebe1b13 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x18543729 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3817f483 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3ba9dac7 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3cd11754 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x45f3a445 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x49838456 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4b2d6565 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4f51278f fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x57b8b93d fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x721686d0 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x748f6418 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x762224a9 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x91dd749e fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x943cb5e6 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x982520fa fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9b142ba6 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaf530f2b fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc7bac42e fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc87df91f fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xca35175b fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdb7e8c93 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xea877088 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf4731e51 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x5d97f0e9 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x9ffabc31 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x70a4717f 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 0x0855f57b lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x14e24ce4 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1516a2b4 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x15d3f922 lnet_sock_accept +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 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4499a68f lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x47d8fce2 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x54862160 lnet_sock_getaddr +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 0x62e77ac5 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 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x75e337f4 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x826f2d0e lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x91ea1f0d lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x95bdb87e lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa05ad13f lnet_kiov_nob +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 0xb653c9d8 lnet_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 0xbc75ef4c lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbd4e06d3 lnet_sock_write +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 0xd5c75f6b lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd60d38da lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe273e1d7 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe34feaec lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe95a5969 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf6d88655 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfb77787f lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x0de6bf81 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x29f44876 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x367674f2 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x6f65dd94 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 0xdc1f3a21 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdcf64f51 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 0xf7e03000 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x2ac2c9b2 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3134369a fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x50a3638d fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x770b70a4 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xbbb50366 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xbe8bd81b fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc873c039 fld_client_add_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 0x056e58bb libcfs_kkuc_group_add +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 0x31b2faa0 cfs_hash_debug_header +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 0x4f8c72eb cfs_hash_debug_str +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 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 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 0xe32dc4c6 libcfs_kkuc_msg_put +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 0xfc6acc2c cfs_crypto_hash_update_page +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 0x501816dc ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x549a0f4a ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x747e7035 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xf8e91f10 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x040ddc9c lov_lsm_get +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 0x5533fc34 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x886b06d5 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa1bb4b29 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 0x0017c96a lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00544393 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01bec444 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01da6d8a dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x022dba12 lu_env_fini +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 0x043117a6 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05878283 llog_backup +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 0x078fd122 llog_setup +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 0x08676c3e cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a1d666c llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a499b28 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0af2a8c6 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bedbfa0 lu_object_unhash +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 0x0cff3b90 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d1fe572 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d7652ca lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f2c41a2 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f2e30fe cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10b1f600 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10cbeddf obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11276269 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x128f20e2 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12f9c891 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15c4f04d cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15f9b8d3 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x163898cc cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x165f0b8d lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16999f3c cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16b114c6 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x184cb49a lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18ac3a87 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x190bda25 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x196d6938 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1979d32d cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19f42455 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b46cdb1 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b5fed28 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c715d75 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cb29fe7 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc487c7 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d4506a6 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d67a71f llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e03e065 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f33d361 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3dfb0d lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f9b2138 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fc75c5c cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20437539 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x208dee98 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x215404a9 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x227caa01 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x228d90d0 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22a6f9bc cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22c38483 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2338c8ef class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x239665a3 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2523e181 cl_io_commit_write +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 0x262ac614 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26956ae0 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27008302 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27c1545d cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28ce1e30 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28ced38f llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29bfb254 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a126a81 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a1d613d cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a507eb4 cl_lock_unhold +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 0x2b524319 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b59cca2 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b938158 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2badb522 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bffbfc8 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eb87daa cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f9d3e05 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2faf5322 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fcfc111 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3006595e class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3086fc9f cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30cfd53e cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31fa2945 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32417130 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34ab99a2 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x356da2ce llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35a83a80 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x363da1f8 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x366e3954 lprocfs_alloc_obd_stats +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 0x38758de2 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3902b061 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39978e64 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b144efb cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c407f18 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c822057 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d49051c lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e93c241 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4007de83 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x403650ec llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40cc53be lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41450d70 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x414f3340 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x415e3b42 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41713a8a ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41814c0a lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41fcce93 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4289231d lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4367a0ae class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43fc1c28 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4466d98e llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x446df23d cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x465d0a38 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 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48b2e80f 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 0x4952167a llog_create +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 0x4a91a821 cl_req_completion +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 0x4acbcc7d cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cc11631 cl_req_page_add +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 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50511476 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50f1574d cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51d31e3c class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52f626d9 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5438f4f2 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5443fcce cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5464fcd9 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x548b2352 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54ca3c8a cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54e75240 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5527d229 cl_lock_release +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 0x569bbcf4 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56b9d56c lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57d8480d cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5812be4a llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58dbdf2e lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58fd68a8 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x591288b8 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x597196d8 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x597a8f76 cl_lock_extransit +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 0x5b14f50f class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bb6cb35 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c4fc135 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d7d1160 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5db6ea0a ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de01627 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5debb822 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fc1a6c2 cl_lock_closure_build +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 0x6037879c cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x610478b4 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61948d5f lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62215622 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63644707 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63be0098 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63db8846 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x642be05f obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64f64225 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x655f1f9f lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66d03aad lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x670bf448 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6731d186 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 0x6752991a class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x680a8ab7 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x689b60a7 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6927bed5 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698c5087 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69971341 ldebugfs_add_vars +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 0x6a3f08a1 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa48e1a cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aae244a llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6acc8d28 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b7e3d4f llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb37bdb dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c15c423 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c653cdb dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6caaeb51 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d8ae2b7 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d8afefe dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dc3cc31 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ead5ab1 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70110317 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70b8a1a6 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72bd4d1b cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73ce1b9e cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7480e265 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74aa95cf lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74ea7a55 cl_lock_descr_print +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 0x75f1233b dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76d8be2e cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76f0ac36 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77283fbb cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7756e1bb cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7758ec7d lu_site_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 0x7890d67c lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78f010f9 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x793dc932 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79472f41 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79b67561 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79e96697 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a9d0a9a llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd82eda cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bfc0a33 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d0b2354 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e02807a lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e3ddcf4 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e519d6a class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ee05bd4 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7eeefd2f dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80121e41 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x802eb595 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8065a7cb lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x808c061b cl_lock_closure_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 0x82414c4e cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82d65022 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83566b9d cl_page_list_own +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 0x84db739a dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84ee9726 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d40144 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85dd61f3 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86904434 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x882dba83 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8858c3b1 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88a4409f dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aafb68d cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8af36c58 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b3eea4c lu_object_fini +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 0x8beca608 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c0f55e8 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c5d1777 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c7c5383 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8cbf6f67 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d5e4bca cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f0bb2ad class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f161083 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x902c82a6 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9083e832 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c584cc class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c8d327 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9170db64 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92f30625 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9303b9b4 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x933e2d8e class_add_conn +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 0x949765b8 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94c7138c cl_lock_hold +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 0x95be79f5 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95f7e64e cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x976adea3 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97859e08 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9789a937 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9870fce9 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b37df3 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a45c5ed llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a604ddc lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b58afcb lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b8f24e8 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b909233 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d13406d llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d58bb68 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dee72b4 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e00f079 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fa6d5b4 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fdd461e cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0062e64 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa058e33b llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0b200e8 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa146349c llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa183a310 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa20da2ec cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa27c568f cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3fbc89d cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4335379 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa47a2e12 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa53e3ab3 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa58bef4b cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5cfec08 llog_declare_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 0xa6c7d82a llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6dbbabe class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa862d221 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa95d62f6 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9e1b4ad lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9ff3c1c ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1b776d cl_io_end +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 0xaca7fd00 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xacd45fd4 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadec2ee8 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf29f28a cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafd1cf96 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafecba12 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0ec286d lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb116c4d0 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1337aa5 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb141ee3c cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1bdf42c cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb26ad9c6 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2cfd129 dt_record_write +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 0xb4abb470 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb58246d7 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb58e63f9 cl_lock_mutex_get +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 0xb7840c33 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb920cdfd lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb95763ec lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9dfa513 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba11e71e cl_page_lookup +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 0xbb6d2b52 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbc057f1 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdafd44c lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdbdfa65 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe02fd31 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe36b224 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9e695e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc119c809 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1447088 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b9a319 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc218ff85 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc40de35b cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4526383 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc61adafc class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc74b9d85 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc81827bc lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8904c73 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dd0072 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9ac12e2 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9e37b61 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9faa817 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca0b88c3 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb930b52 class_conn2cliimp +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 0xd0103eae cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd06306dc lu_object_invariant +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 0xd1552238 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b7fcdf class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1c073f4 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd315c3f9 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd34489ff class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd62dd641 cl_page_cancel +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 0xd82f1452 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8a05531 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd94212be lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9f5bc1f __llog_ctxt_put +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 0xdc1f5061 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd4062cc llog_cat_close +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 0xdeb40076 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf27251c lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf3a1ab8 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf4b46f1 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf623799 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf6f701f cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf868be9 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf89243f lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0702676 llog_cat_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 0xe318f522 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4d301d1 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4e83110 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe54a1f07 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe692bc11 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6b9bf42 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6ef9bfa lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe77df143 obd_exports_barrier +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 0xe91b03d3 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe95410f7 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe96d5f3d cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9de4c5d lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb525f1e obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec924928 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee22eacd lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee271585 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee44a1cd lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeee3d8ba cl_lock_user_add +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 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0cab9a3 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0dd9232 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0fa193f lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf141e625 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf356a368 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3902b9e llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf39adf7f cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf56f1c5b cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60e9bc6 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf762494d cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf793b83e class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f42641 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9377c13 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbbd1399 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbd942c4 cl_page_gang_lookup +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 0xfd30546b lu_site_init_finish +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 0xfdbb77b3 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe5e70e3 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe87ef81 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfea8a369 cl_page_unmap +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 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 0x033c6f11 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04abf0bb req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04d90797 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05d6a26e ldlm_lock_put +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 0x082d427e ldlm_namespace_get +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 0x096af63b ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a497e8d __ptlrpc_prep_bulk_page +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 0x0aecc7b1 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b64aabe ldlm_pool_get_limit +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 0x0dfbe228 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e0942c2 ldlm_resource_get +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 0x1309d1ae lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1341480d req_capsule_set +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 0x14a4f036 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14f22278 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x157f2cbc ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1729f3cf 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 0x17cdc3a8 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18371ec0 ldlm_prep_elc_req +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 0x1a6b80f5 ldlm_destroy_flock_export +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 0x1b0afbab 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 0x1c748a97 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 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dd41981 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8246e8 ldlm_lock_change_resource +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 0x1f81ae67 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1fbcff78 sptlrpc_gc_del_sec +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 0x21aa1cb6 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2353371c __ldlm_handle2lock +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 0x253ec734 req_capsule_has_field +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 0x289a4e52 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29a2b99c client_import_find_conn +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 0x2c2b4d90 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c8a503a ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2cbffbdb sptlrpc_enc_pool_get_pages +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 0x2d66378e ptlrpc_error +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 0x2e753a37 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0d6e82 do_set_info_async +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 0x2ffd55f0 sptlrpc_gc_add_sec +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 0x3075fb50 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x320c149b sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x327544e6 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33ca6c6c ldlm_cli_cancel_req +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 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 0x3a915648 lprocfs_rd_pinger_recov +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 0x3b12a181 ptlrpc_buf_need_swab +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 0x3c2302c1 sec2target_str +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 0x3cc1e818 ldlm_lock_cancel +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 0x3e075e86 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e15f29c req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f498ec1 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x400788da ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41b89525 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41e0849d ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x430f8f16 ldlm_blocking_ast_nocheck +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 0x4372d00a ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43820a70 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x439469ff ptlrpc_request_free +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 0x4430087a __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45cb4ed9 ldlm_namespace_dump +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 0x48da312a ldlm_pool_fini +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 0x49902de4 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a7fc244 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ba6416b sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4bb9b8df req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ccdfb0b req_capsule_set_size +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 0x50065acf ptlrpc_request_bufs_pack +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 0x51a7487e target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5298afd6 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 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5459c8c2 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x545c9aff ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54a7effd ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54b1f5bd ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57b0f9bb ptlrpc_hpreq_handler +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 0x5a2e980a ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b0467a6 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b1b3ccf ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5bf2e319 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c283893 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c515265 ptlrpc_obd_ping +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 0x5eaebf88 lustre_pack_request +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 0x5fe9d0cb ptlrpc_wake_delayed +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 0x6238c664 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62d23611 sptlrpc_req_replace_dead_ctx +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 0x63e61e3e sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64f4abb4 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66108be1 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x663a721d sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66407f8a ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6687d1a6 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x680268dc ptlrpc_reconnect_import +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 0x697e8a72 ptlrpc_cleanup_client +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 0x6bd1e08e sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6cebe7d0 ldlm_init_flock_export +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 0x6d99428a req_capsule_fini +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 0x7002676e sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70c004d6 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x718a22c5 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71e41045 req_capsule_server_sized_swab_get +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 0x73bb6b97 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7494000f ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75f8a33b sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b9ec4e req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x777dcdb8 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x781169b4 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78a1fd7e ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78cc01eb ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7953a460 ptlrpcd_alloc_work +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 0x7c5f9c69 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ce276aa ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d02eb74 ptlrpc_retain_replayable_request +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 0x7d997961 sptlrpc_cli_ctx_expire +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 0x80c6d826 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8139984f ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x819ec047 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81c8b05a ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81fa6d56 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8282ed08 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84ddde44 ptlrpc_save_lock +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 0x8773fd7c sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87cd6404 lprocfs_wr_ping +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 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 0x8d8d3d62 ldlm_lock2handle +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 0x8ee8bb69 ldlm_register_intent +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 0x9063928a ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x906c224b lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91a5ecd5 ldlm_cli_enqueue +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 0x929a70b7 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92d50341 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9317ad54 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x934cc6e3 ldlm_pool_init +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 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 0x97448d19 ldlm_pool_shrink +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 0x9897f3c7 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98b52162 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9956d4d4 sptlrpc_import_flush_my_ctx +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 0x9a8b56c4 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b7fb332 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 0x9c3257f5 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9da90ba4 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e7e10ac ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9eefbea1 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa07a8796 ptlrpc_resend_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 0xa457ec4c 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 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 0xa829a61c sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa85a1aee ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8a6ebe9 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9975e24 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c2c8b8 ldlm_init_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 0xaa14913f sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa2f1e29 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabd064ce ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadb78627 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xade8473b ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadeb82d9 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae0568ac ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaeb19f5b ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaefa9cd0 ldlm_pool_set_clv +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 0xaf73ca02 lock_res_and_lock +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 0xb3950e22 client_import_del_conn +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 0xb5edafc6 client_import_add_conn +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 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb96dcb8b ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba34ba63 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba46c513 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbac1879 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd4d2a15 sptlrpc_cli_ctx_get +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 0xbe82e712 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbeb7e023 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbec3f1ac ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf4e020c llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfa47e5e ldlm_lock_downgrade +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 0xc0d5eb77 req_capsule_server_grow +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 0xc2cea009 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc34eb5f4 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3a139c1 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3cb0e26 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc43e75d7 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4691b33 ptlrpc_nrs_policy_unregister +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 0xc66e4978 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc75aa71e ldlm_resource_iterate +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 0xc809fc82 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8314f9b ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc848a531 ptlrpc_recover_import +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 0xca7ef487 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb122a8c ldlm_pool_add +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 0xccda64a2 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdc32a93 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdde2fda sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce7a60d3 ldlm_replay_locks +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 0xd0d043fd ldlm_enqueue_pack +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 0xd456b72e req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd49a2c3c ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd51fb50a ptlrpc_unregister_bulk +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 0xd7443368 req_capsule_client_dump +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 0xd951ecae ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9dd00ac ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9ede01e ptlrpc_fail_import +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 0xdd3248cc ptlrpc_set_add_new_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 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 0xe02a8483 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe053a0ee ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0726ed3 ldlm_prep_enqueue_req +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 0xe1b11963 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe32df50c sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe38f3fb9 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe393cf35 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4b94122 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5d14f23 sptlrpc_svc_ctx_invalidate +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 0xe64614bf ldlm_namespace_put +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 0xe95bdc1c _ldlm_lock_debug +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 0xed14693b ptlrpc_register_bulk +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 0xef5e982d ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefcbf3aa ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0029104 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0a8a942 req_capsule_client_sized_get +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 0xf2904f2e ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2c7f793 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2cbf613 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35dc26e req_capsule_client_swab_get +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 0xf46424ec ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5446cb2 ldlm_cli_enqueue_fini +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 0xf636238f ptlrpc_prep_req +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 0xf7bc566b ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf833f198 _debug_req +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 0xf95b64d5 lprocfs_wr_evict_client +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 0xfad110dc ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc09ffa2 ldlm_cli_cancel_unused +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 0xfc50d3fe sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd868607 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfea70e44 ptlrpc_nrs_policy_register +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 0xab16b285 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x01e1a1c3 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a95e393 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e191f51 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x11038ffe rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x23dbb1a9 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28e28bbd rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b68a940 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x33c3c757 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x33d40e49 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x35fe7583 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4066fa26 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x416be352 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x46a0af18 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x479a6442 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x526da10d rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x54d3fc12 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5738f96c rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x59fe70ba rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6092573e rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66431c39 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x69decf65 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7ee06342 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x836571a1 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8aee9d15 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d0eb816 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x91d94566 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x944feeb8 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x98248ff2 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a5fa4c6 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9aacf5f9 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9aff96b4 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9f3d0ed0 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa0f16367 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa59febb0 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa697d0ef rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8710589 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa94ba82 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xace033f6 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaee4714b rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb35c8eb8 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb365f0d0 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbb2256d3 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf734882 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc25cf060 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcaf6d7ca rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde4a9074 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe0737c98 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe0aca67d rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xee5c9b42 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa50e6f1 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x07bb2db1 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0e8c99b7 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1452120a ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2223f856 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x29be20b7 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x29c6eaf7 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2a9a61e5 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x317dcf80 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x35f46bce ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x408028e7 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x440b12c0 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x47c9634b ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f00a920 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50cb93f0 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5381ee9e ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5626752a ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56bb1ca7 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x69712e95 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a3478d5 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x70f7f856 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x720b1ff8 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7679332b Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b52dba1 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x80dd61c6 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8488a1af ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8b9cacf7 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8d0c70d8 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e428807 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8ecb9f02 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x91ba21b2 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9222304b ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92dfa099 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9ab4571f ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa41a5a2a ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xae6e606e HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0b57298 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb70b6602 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9dfa584 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba2c8563 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc044e4cb ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1e6ec35 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xca35bbbe ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7564077 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xda5864ac ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xda642ff5 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd67ab8b ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe1754919 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe4d23dc0 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf1473926 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf34bc497 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf40f4ed9 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf951a99a ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa7888ee ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa965081 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x03b1f748 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0caf3f97 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x10d35c17 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x168d31fd iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1837d6ef iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x229983ec iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x23b6d366 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3257bb7c iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3911022c iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3a512046 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4ac1db8d iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5548af76 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x564e0ef7 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6d770d55 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x86ba4791 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9b34995e iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa134a932 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa562b01e iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xab975352 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xac3fdfd1 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbbadce2f iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbf901716 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf159286 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf76e1f2 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd2070826 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd6ac8bde iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9a55d51 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9fee704 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/target_core_mod 0x001cea7c passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0d7c9c67 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x0df36f71 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ef60229 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f27a72d target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x10188420 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x12d204c8 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x15bf8bd5 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x19a585d0 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x215aed83 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x22dd2aef target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x2919af39 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2cb3958e transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f2ae2c8 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x37a5f0c2 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x37b91e05 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f69e49c sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x45e8c3a6 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x4bf594ac transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x50598374 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x51fed327 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x528e3d22 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5793f36d core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e137104 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x619406fd target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b3048d7 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x7911c71f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ba0bf0e transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cd4c3f1 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d9d1d44 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbbf268 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x82207a97 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x8372e49a transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8bf7acca transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d9ab21e target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x9248e44e passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x95d4151b target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xa3fa601f target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xab8bf938 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xadc78add transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xae8e4c56 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf32fe9d sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5ab6595 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb651fdc1 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xb969b275 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcf9acae sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd1fe191 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd8d3ff1 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc47c1329 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xc75d20b1 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xcaa6c083 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf55eeb1 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2707750 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd77d3850 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7fc5fdb transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb39323c target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfc7cdfd transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1700d25 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xe3e8e6c0 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe448e111 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xe50fd97c target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6403ff5 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xea06864b transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xee462c4b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf6aca10d transport_wait_for_tasks +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x746023fb usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x0ccefbe3 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x236835ce sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0a63f63b usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0a84c863 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x11b840c7 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2e87150c usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x55e5a823 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6d01d950 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9d31cd07 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa006b15d usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xad0beaf1 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb26b9273 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xce595b60 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf9b84a52 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x36eff8e4 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xfc8d67a4 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 0x09481986 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x32483831 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa7d84b6a lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xbcd4d8e2 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 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x7c033cda svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8d1cc132 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9886366c svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa7facd41 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb9de7afd svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xcca01f22 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd0b8184d svga_tilecopy +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 0xdcd62907 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xf35a2a28 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x8b07d28d 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 0xda786fc1 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x54787f7b mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x6d666172 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xbdc5c649 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xfffbd1f2 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x0c775daf matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x34762e4b DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xc2d3d61d matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xd2d7ed9e DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xc300f76f matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x3fc092be matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x010a0897 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5cc949f0 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x6fd18788 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xdf364851 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x3493f846 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xbfe76b92 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x0b0402b1 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x225179c1 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x5add3c2b matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x5e62b130 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf5063641 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x215dbf86 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 0x0f21b8a4 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x3ee4b040 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x98102360 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x9c18feb0 w1_remove_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 0x13e42f5a extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x23f00152 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x24729b68 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4fd625ac ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x5b417c79 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x749113b8 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x9ffc63a4 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xd1ee454f ore_read +EXPORT_SYMBOL fs/exofs/libore 0xd2fa4932 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xeef7c331 ore_check_io +EXPORT_SYMBOL fs/fscache/fscache 0x0d34a8a7 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x11a24237 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x192e0400 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x1a3ae4f6 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x1f2e960a __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x23cab330 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x2c4b3e7d __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x342b8895 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x35a09205 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x364df33a __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3b7f6046 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x3d40a7de fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x3d859ff6 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x45de6329 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x550f80cf __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x630a76c0 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x65a16c11 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x6b7a59d5 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x6fa6f6e4 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x735c3096 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x781be2d2 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x7a8258af fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x7afff5f9 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x7ca74ea8 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x81c87d73 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x9e588609 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xca8181e0 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xd6baa13a __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xd6d8bb43 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xdbd3e04d __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xe1c5d35f __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xe9aee776 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xedf42af8 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xef230e9e __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xef8c6297 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xf10a768e fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xf434287a __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xfb113fca fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xfe9a1a1a fscache_withdraw_cache +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 0x1868aa80 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xd5ddddcb lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x5e2dd3af register_8022_client +EXPORT_SYMBOL net/802/p8022 0x6bd3955b unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x78e5df35 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xa5952889 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x1729d653 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xfcab77ad unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x074205ef v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x0cbc9e18 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x176a24f9 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x19cdf289 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1a6e60eb p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x1e0ea50b p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x1ffe7fa5 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x376d5838 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x3c94a2c4 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x431873d2 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45946329 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x4bc70779 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x5c447ce7 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x605e108f p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6c2a1e07 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x740e757b p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x7fec5135 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x81456122 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x8b71031b p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x8e1aae50 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8e51233a p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x92258f1e p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9ce58e4f p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xb05a302f p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xb96e1f25 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xba4801c2 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xbc884b70 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc20a767b p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xc3253f1d p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7abc737 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xd3b89047 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xd6230db3 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xd89f63c8 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xd966f8d6 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xd9dc49b9 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xdd2e779f p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xe4fb1e2e p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe732b7e8 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe7feded9 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf1609f11 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xf1d8cbc7 p9_client_fsync +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 0x2b0b6a9d atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x3f97ca59 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x6d5f4851 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xd262d650 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x0ceef3e1 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x14c8b0ac atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x196ada38 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4172c95b vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x57cdc986 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x6c1ef03e atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x85a4b0dc atm_charge +EXPORT_SYMBOL net/atm/atm 0x8685d975 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x8dc71808 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc9da146f register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xd938398c atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xdd6aff3f atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xe4bdedc2 vcc_insert_socket +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 0x3473c7fe ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x45614d45 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x6602bb73 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x7c45ebbc ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8cace280 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xbc187614 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe0070a2a ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xe5d6290c ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02ae3503 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06b11408 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0bf95834 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x17fdedf8 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x180a335f __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x202a6fea l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2100027c l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2b55dd66 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x328741b9 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37f459d1 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3d71816f bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x443d15af bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4521dc14 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48a6bc55 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4ab23edb bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c93eca3 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x550a5a11 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c9e49ca bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6bec33d2 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7ca2f1dd hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d29c5ba l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7dbfcb56 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7f5ff7c1 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x82fbdf2f bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x87db28c9 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c99fdd hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9645dbae hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb22121a0 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb4f435f9 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xca88ef32 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xce5757c3 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4537a8a hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd57fe555 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xed149c3f hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa4d4d92 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa4ffd31 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfb3c5e3f l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfbad941f bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfc4989e6 hci_register_dev +EXPORT_SYMBOL net/bridge/bridge 0xeefdb30e br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x0dcfceea ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x46da9515 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe69589f9 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2224e9da 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 0x922f43fc get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa3d45aa4 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xc0172db9 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xdf41975f caif_connect_client +EXPORT_SYMBOL net/can/can 0x26aac91c can_send +EXPORT_SYMBOL net/can/can 0x32f83635 can_rx_register +EXPORT_SYMBOL net/can/can 0x4496331c can_proto_register +EXPORT_SYMBOL net/can/can 0x9cb29daf can_rx_unregister +EXPORT_SYMBOL net/can/can 0xab06f125 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xf8cf88d1 can_ioctl +EXPORT_SYMBOL net/ceph/libceph 0x01beadca ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x02c8325d osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x04a875f9 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x05084588 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0a65902e ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x0daabc8f ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x10e84ac8 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x133050ec ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x16d70124 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x1ab9ee81 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x1f0e020a osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x20aaa98c ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x256ac61b ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x264061af ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x2769ccc1 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x2943826b ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x297e93de ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x2ac9ed37 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x2accfa92 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x2cc93a67 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x30d9547e osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x345a6603 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3780c890 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x37df30a3 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x398a6973 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b55a093 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x3bba4988 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x3db143a8 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3f0376f9 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x3f324242 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x41dda2bb ceph_monc_got_mdsmap +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 0x496de893 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x4db6f205 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x50fd92e5 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x56f51a33 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5d33f200 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5e1d6119 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x5f498485 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x616d6a85 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x69fab869 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6e7c4fce osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x7002f5e5 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x7a368466 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x7b0b7522 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x7d73eb44 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x7e639c8a ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x811f296b ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x825e7b23 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x826018c2 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x860e0899 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x8a39d995 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x98162d6b ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9ccdc221 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9d3cc3ba ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa0eddc7c ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa4750b7d ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xa6109544 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xa6c2450e ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xacbb3533 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb11ec36a ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb5f573e7 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb6cebe74 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xbab91354 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xbf2b7672 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xc12b2020 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc68862c2 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xc69de62b ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc889616a ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd07b47f2 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xd10a873d ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4326e8f osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd748b1cc ceph_monc_stop +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 0xe2fbadfd ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe6c965e7 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xefbf471d ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xf43513e2 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xf55748df ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xf7847c2a ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf8254761 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xf9d91711 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xfa0e8be1 osd_req_op_extent_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xa8acbb2e dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xdd7ad9c2 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xb1626164 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x18748d14 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1f5898b7 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4dce3eac wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7ecf3f76 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbe529e29 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe1e8cdd2 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x9fddfb82 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf8192659 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x0c2f5555 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x0e8dbaa6 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x13aa5a20 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x40a8d290 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x488ba204 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf034367d ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x2477f770 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x8f49d05e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x92604dd3 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xbe86ea4e ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xc8181cdd ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd55f5574 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x13d0355b xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x9221e538 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xdaf41586 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2d8f2d81 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x7868ff02 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xabcf45ef ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xccd01dbe ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x090a2f80 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x1a9c17a0 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe29b49e3 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x5b7597b8 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x864224c5 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6476a78d xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x97c50554 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x059f241b ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x71c61c7a ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8ffeedc4 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x99572ea4 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa0977115 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa818378e ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe54c70f5 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf648a08c ircomm_control_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 0x0dd7c52e irlap_open +EXPORT_SYMBOL net/irda/irda 0x109fc39d irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x11757078 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x13623289 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x24d9097c iriap_open +EXPORT_SYMBOL net/irda/irda 0x2d7b94e2 irlmp_data_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 0x3cb060fc irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x3d089330 irttp_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 0x4c742f6f irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x5693d34a async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x5d47a9cf alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x6492e28c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x675d37ea irlap_close +EXPORT_SYMBOL net/irda/irda 0x6913c2c9 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 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x731cec71 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x73ebef02 irttp_open_tsap +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 0x83e9ea3d irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +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 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9a30e602 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xa9d35b69 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xb2c13d34 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb80a10b8 irlmp_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 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 0xc88fa116 iriap_close +EXPORT_SYMBOL net/irda/irda 0xcf3c7dbc irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xd3134956 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xed1516b8 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xf4ac6f5e irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xf8229ba0 irlmp_close_lsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0xf5386585 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x5b1e986e lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x6a04dfb8 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x9742a8dd lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x9db64b2d lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xe3b5994c lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xf1280573 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xf32aff41 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xf3b6ee4c lapb_register +EXPORT_SYMBOL net/llc/llc 0x053cde45 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x09694cba llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x0d49c98a llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x168bba1e llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3f586020 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x9218f73a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x9ed6dbb6 llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x0700ba8d ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0965caf9 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x0b66a01e ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x0d85da67 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x11cc57d5 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x12a39cd8 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x14b765c6 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x15bde9c3 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x1a052f21 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x1aec5958 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1c5328e2 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x1cdbe1b6 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x1cf198e9 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x1daa6115 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x267de46e ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x26daee4e ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x28992d57 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x2d3fdbc6 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x2d86c974 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x2ec0eca9 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x316f768d ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x37d48330 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x38949e22 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x3f097b73 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x42936c3a __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x46245ba9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x494530ad ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x49519ebc ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x4a244630 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x50d275ad ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5c6ab88b ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6022ba46 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x73c6aadf ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x7632fb23 ieee80211_beacon_get_template +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 0x790ecd1c ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x7b5e37ac ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7c61fcdd ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x833bae8f ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x89efdb20 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x8f7599b8 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x94438848 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x95448994 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x96ff8192 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x9e84e6fe ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xa22492d1 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xa878f5f3 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xaa06c1c1 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xaa1abc46 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xaafbb0c9 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xab774e68 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb068f801 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xbce2ad5c ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xc01965de ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc17f06a0 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc46dac97 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xc6d50978 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xc80fd231 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xc83f81b1 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xca23d8ca ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xcbf1a577 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xcee55864 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xcf52b6df ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xcffc00a7 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd39dd52f ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd69de903 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xdd59476f __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe3a1bee4 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xe4597f2c ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xe782163c ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xe83dd380 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xea051c05 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xea4de6dd ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xf366f177 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf9d3a524 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xfc2a6c62 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xfc934edf wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfe2e616d __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xff85d1ac ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac802154/mac802154 0x0960c684 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x12a08763 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x1ec2ebe3 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x25d2b519 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2b8df7b8 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x537aaa10 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5bca7219 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x724b0e69 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xc43d40d4 ieee802154_unregister_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0f073c3a register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x28a66900 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x310d63c9 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4dcba430 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x55b6c0de ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x65824f78 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x79c81ea5 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x803c3704 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x87a99bfd ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8a70bd49 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8f53cad1 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb093ed71 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc22fbbbd ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf9538d7f ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x4a5ae3f2 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x7e2f1e1d __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa67e8222 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x6382758b nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x70922244 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x84390191 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x9a6c39dc __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x9ba07432 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xbd4e1318 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/x_tables 0x16b78899 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x37bb2d12 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x4345018c xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xb230aa9f xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb63e9cb5 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb6ea0d80 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd1032edc xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd2b46a78 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf800ddcb xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xfb06ccbf xt_unregister_match +EXPORT_SYMBOL net/nfc/hci/hci 0x01d36816 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x06aedd46 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x100ee3f5 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1c150944 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x239cb378 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x28026ac4 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x3ef9c6c8 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x5dc86b3f nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x60fb9731 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x85220514 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x95d5db98 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xae3c63d2 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbff68582 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xc7e56eaf nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xd5dfa454 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xee635216 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xf1167e27 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf2efce6c nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xfe3ef114 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x2c7ac89d nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x38299d8d nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x5a74b5b0 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6496b07f nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x65d34dee nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x667de920 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x690ff8d6 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x6d9b434f nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x773c457d nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x7bc8bdb2 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x86a68fa2 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x8726866f nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x99871481 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x9c4d5b64 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbb8ee32b nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xc3f77b73 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xd48700e7 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xe100a93a nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf1653447 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nfc 0x002d7c1a nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x0770bc23 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x0b15127f nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x256ff1cf nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x283dd762 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x373e6cfa nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x3d1856ef nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x51f5093f nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x524941bf nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x63790aa0 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x705cffcc nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x7ecdee8f nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x891b1ad3 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x962b7afe nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xaa010439 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xd643b161 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xd6e35044 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xe3261796 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xe87b8daf nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xe9c0f77a nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xf14ca514 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xf67b8f19 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc_digital 0x53e707ee nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x56188c6b nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x5b2de96e nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xce265b55 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x31f39252 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x629441b5 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x738c4720 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x9391b366 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xa3b5bc7f pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xc351cdde pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xcda914e4 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xe1edc4a5 phonet_header_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x09d31c09 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x15080239 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x16cfe773 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5426841b rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x63ad2020 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6a0cc4cc rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6c03d177 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7ecc83c2 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x855fcf45 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x909a8039 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x90cd22c7 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9bc8a00a rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd427c2ee rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd8617672 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xea41c09c rxrpc_kernel_reject_call +EXPORT_SYMBOL net/sctp/sctp 0x7f31b64d sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x17a2bfdb gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x38740c90 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xd491a38f gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x337f0493 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x4157518c xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x4cd98872 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0xbd45e6de wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xc4475b63 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x01750f72 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x077f8064 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0aa3d110 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x0bea0f39 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x0c970435 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x0cf2bb3f cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x120ae9bf cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x194032b2 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1aae93d7 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x1b15cae8 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x1bcf924b cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x20c31f59 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x216c5edf __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x21cb78d2 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x227675ac cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x2360b2eb __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2548abdf cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x25832b61 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x2acbacc4 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2c086cc1 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x2fc6b611 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x31d3e81c cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x334cfe66 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3b3eaf13 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x42334c2c cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x46fe3076 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x47323efa cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4de7bc1a wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x54c93b70 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x54e84ec5 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5b1dabb8 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x5cfecc21 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x5d0cb114 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5db013a6 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x631d8ed0 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x65087fac cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x67d2a0d4 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d257e37 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x70482c8f cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x7af150a1 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7b9f12fc cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8080a15b cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x81a50c8e cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x845380dd wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x845396cc cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85e24c65 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8cd9fba9 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x8d362510 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x9348b8ee cfg80211_assoc_timeout +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 0x9b3ef310 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x9ddd8c50 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x9e94cd27 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x9ee88fc4 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x9f6291b7 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x9f7637a4 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa0322dc6 cfg80211_del_sta_sinfo +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 0xa75404fd ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xab5a5aa5 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xab82543b cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xaf557426 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xb0da441e wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xb5d88fc6 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb68a50c7 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xb9a84c27 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xbc63f053 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xbdfc2052 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc08f3883 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc0d40d9b cfg80211_rx_mgmt +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 0xca210e72 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xcba9416f cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xcdd9167b wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xd2e618f6 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd341f3df cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xd38eab83 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xd3f64280 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xd62401e7 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe5199c8f wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xe74cf8d6 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xeb8a1aa6 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf24e0042 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xf71da087 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x54f9fee6 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x6e0dffa8 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8c579481 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa3d8e420 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc81c4845 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xd677090c lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x91dc4926 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0ea76b47 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 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 0xe1012139 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe3c70ef6 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 0xf54551bf snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x193f9802 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 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 0xa674c10a snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0xa385ffec snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0952c93c snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1e94879d snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x27407017 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x34a59698 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x48925bb9 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6bb63de6 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8808c612 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x890821dd snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9142d16a snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa17c4ec5 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb174fed7 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb5aa2650 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc6681adf snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdb7a09c8 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdceb3117 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe60ef7d9 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xeb0808ef snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xeb4a33bf snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf070a737 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x2fd23563 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 0x161c1d5f snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x20f32c37 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x262c834f snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x68db7928 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x85d3ee7c snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9d393078 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa6da5692 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd2d33f78 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf0264ec2 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0d5c5656 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 0x47f406ce snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x58b6c200 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x59c2a77d snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x68199334 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8e31e046 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa9ec8cc2 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xaf0c13d1 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb42245ed snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x10a861f2 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1a0c5e70 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1b86eeff snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1e5f9a62 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2a174680 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2ab5be81 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2abd6823 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4409b2ac fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x483d7c91 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4b6d5e66 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x56e93588 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5f098422 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x60962bf3 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x612dbf42 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x72709a67 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x76cc86ff avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x80c68d23 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8863c67b fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x93ddc5b5 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x97b85225 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9c8b1ad0 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9d722836 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9ef85885 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa8563ff1 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc0f7e5f1 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc569c811 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd334799c amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd3cc102d amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd7951e50 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe3fb12e2 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf4efe43c amdtp_stream_stop +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x38411d77 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xa09b6f6d snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x562de422 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x60860efe snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x76e07545 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9d370c6d snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc44d2c70 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc966c190 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xca701ada snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe98e8ee7 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x2974b45c snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x38dc5510 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x67372fc3 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x72ca233c snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x10d01c00 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x8105e6c6 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x0f919993 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1ef43c7c snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x3c82bc51 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xadb9057b snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb21d5434 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xeb932464 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x0a177b70 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5195d049 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6fb7da6e snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7123808b snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa7dd918d snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xcf48dc30 snd_i2c_device_create +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x04a89a71 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0c242432 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x107b4dab snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1563de34 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2106d5d2 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2182a9d6 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x372e3900 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3d4f1840 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x51e8bbb2 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x68715017 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9c273966 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9cff10e2 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xaa6f22cd snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc04a71e1 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcdabd84e snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xced268e6 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xda354a83 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x16478c16 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x57fc23ee snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6e198957 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x72ea9214 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x81c37241 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9f50ed14 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcc7f142d snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xda5d5c43 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf343aa3b snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd2fa680d snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe044c294 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xf3851b99 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x06a14987 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0b85c200 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2bae0476 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5a312062 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6eac0c68 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x826f5a66 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x82e5bd96 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x93b74f82 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb0ca3205 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb1d96244 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbe6b74e5 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc11df8a8 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc8f22aeb oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd0eec80d oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdecf80e8 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe54b131d oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xeb85ef8c oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xed144efa oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf7f9466a oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfc0e8c68 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfcc731af oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x055964b3 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x204c3826 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4df9ebdb snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x62d84103 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb907a1fa snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x4c09df5f tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x750f4c8a tlv320aic23_probe +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x255c6bb4 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4f61fe96 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 0x77436ad0 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x7f933bd4 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xbe143a9c snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xff2e28ec snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x062e9cab __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2182050d snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x29435193 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6e6bf8b1 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa0101320 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa8c8c087 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf5f7b78c __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfe82ef4c snd_util_memhdr_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x402f4a86 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 0x000b2b60 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x003c4909 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x003fa7a1 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x00412fc4 snd_component_add +EXPORT_SYMBOL vmlinux 0x009616ac jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x009b70b0 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x00a4ff0c __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x00ae765a touch_buffer +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00d95bd6 key_unlink +EXPORT_SYMBOL vmlinux 0x00dcb32e xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x00ecece0 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0103f101 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x0110138a register_sound_midi +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x011c174c tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x0148928a of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x014dcdd0 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x01510788 should_remove_suid +EXPORT_SYMBOL vmlinux 0x01558fed tcf_hash_create +EXPORT_SYMBOL vmlinux 0x0164424b cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0177429c skb_free_datagram +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x018940a4 dcb_getapp +EXPORT_SYMBOL vmlinux 0x018aa574 kfree_skb_list +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 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x0235b57e scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x023baef5 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x0255210c filp_open +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x027352af inet_put_port +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x0285d431 generic_make_request +EXPORT_SYMBOL vmlinux 0x028925e7 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x028c105f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02d24459 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x02d6b484 eth_header +EXPORT_SYMBOL vmlinux 0x02e610c3 mdiobus_read +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 0x030d7652 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x032dd9ec kthread_stop +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x035497fa inode_get_bytes +EXPORT_SYMBOL vmlinux 0x0358b29e sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x03635439 edma_stop +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x039f04df elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0x03b1da07 snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03ba585a udp_add_offload +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0445bf53 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0459c8de inet_frags_fini +EXPORT_SYMBOL vmlinux 0x046358ff dev_mc_del +EXPORT_SYMBOL vmlinux 0x04663689 phy_driver_register +EXPORT_SYMBOL vmlinux 0x047350df vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x0476b542 key_task_permission +EXPORT_SYMBOL vmlinux 0x0482dc85 tcf_em_register +EXPORT_SYMBOL vmlinux 0x0487ab44 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04c481b9 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f9ff91 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x05082654 snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05277c7a pci_get_class +EXPORT_SYMBOL vmlinux 0x0542b9b6 snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0x054a6dd7 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x0560b3c1 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x056f00df scsi_register_driver +EXPORT_SYMBOL vmlinux 0x05729ef0 nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x0592bc1b free_page_put_link +EXPORT_SYMBOL vmlinux 0x05a7163c shdma_init +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0618f2ac of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x06221b4d genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x06268f82 user_revoke +EXPORT_SYMBOL vmlinux 0x062871d0 padata_alloc +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06511a18 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x06607f92 dss_feat_get_supported_outputs +EXPORT_SYMBOL vmlinux 0x066a76b4 md_update_sb +EXPORT_SYMBOL vmlinux 0x0674932c i2c_verify_client +EXPORT_SYMBOL vmlinux 0x06796100 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x069593cb vfs_whiteout +EXPORT_SYMBOL vmlinux 0x0697fc27 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x06aee2ee serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x06babaa0 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x06cc6578 scsi_add_device +EXPORT_SYMBOL vmlinux 0x06d81fba vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x06f513b2 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0727319a __skb_get_hash +EXPORT_SYMBOL vmlinux 0x072d0f74 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073bce87 edma_write_slot +EXPORT_SYMBOL vmlinux 0x074acc77 wireless_send_event +EXPORT_SYMBOL vmlinux 0x075285e9 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x075d84c9 ata_print_version +EXPORT_SYMBOL vmlinux 0x076c80b3 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x0785026d __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x0794ea35 xfrm_dst_ifdown +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 0x07b624e8 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x07bc58a2 lro_flush_all +EXPORT_SYMBOL vmlinux 0x07c8c943 proc_set_size +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 0x07d4869e blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x07d915c0 dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL vmlinux 0x07f0e5d3 kmap +EXPORT_SYMBOL vmlinux 0x08045b13 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x0816ed2f skb_find_text +EXPORT_SYMBOL vmlinux 0x081adb0a of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x082a1b35 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08515e83 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x085768c0 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x085e1906 sk_wait_data +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x08b07349 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x08b3adf8 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x08b794a1 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08ec92f7 netdev_update_features +EXPORT_SYMBOL vmlinux 0x09121ffc qdisc_list_del +EXPORT_SYMBOL vmlinux 0x093df22c nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x094b0382 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099b6e0d blk_init_tags +EXPORT_SYMBOL vmlinux 0x09b14f88 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x09c0da67 vme_bus_num +EXPORT_SYMBOL vmlinux 0x09c1dc36 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09d0bcdc dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09dcf6e4 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x09fb8639 finish_open +EXPORT_SYMBOL vmlinux 0x0a03db1e of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x0a05cec7 neigh_for_each +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 0x0a34108e skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a45e0dd nd_device_unregister +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a4d3e06 add_disk +EXPORT_SYMBOL vmlinux 0x0a5c522a km_report +EXPORT_SYMBOL vmlinux 0x0a7f773c lock_fb_info +EXPORT_SYMBOL vmlinux 0x0a83e51e xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x0a85c7f7 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x0a8ab3ad eth_mac_addr +EXPORT_SYMBOL vmlinux 0x0a912850 drop_nlink +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa62051 netpoll_setup +EXPORT_SYMBOL vmlinux 0x0aaa7d87 tso_build_data +EXPORT_SYMBOL vmlinux 0x0acbb9dc mapping_tagged +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad90fb7 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x0adc7ef0 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x0ae0db3b generic_file_open +EXPORT_SYMBOL vmlinux 0x0af068af vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x0b037f37 generic_readlink +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b32a5ae jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x0b32f4e2 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b6a1d8c mdiobus_write +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b99abb0 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc428f0 icmp_send +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd27027 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x0bd7442f dev_get_flags +EXPORT_SYMBOL vmlinux 0x0c2c626f bio_chain +EXPORT_SYMBOL vmlinux 0x0c33da7e nf_log_unset +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c54b5b6 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6605b3 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x0c97b3a9 skb_clone +EXPORT_SYMBOL vmlinux 0x0c9cbd04 i2c_use_client +EXPORT_SYMBOL vmlinux 0x0ca02a92 invalidate_partition +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 0x0cbacba6 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x0cd6e696 unload_nls +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d1018b9 omapdss_unregister_output +EXPORT_SYMBOL vmlinux 0x0d2c86d9 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5ca7aa devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d80a3d9 dst_release +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db1c45c genphy_suspend +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dce2a8c iterate_supers_type +EXPORT_SYMBOL vmlinux 0x0ddb2ec9 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x0debad95 new_inode +EXPORT_SYMBOL vmlinux 0x0dec21be km_query +EXPORT_SYMBOL vmlinux 0x0def2ffd generic_setxattr +EXPORT_SYMBOL vmlinux 0x0def5605 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x0df86df8 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x0e11c43f ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e818a7e unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x0e824b8d __sb_end_write +EXPORT_SYMBOL vmlinux 0x0ea392d2 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb714ef pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x0ebb4abe ip_setsockopt +EXPORT_SYMBOL vmlinux 0x0ebd2229 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed03257 kill_block_super +EXPORT_SYMBOL vmlinux 0x0ed1e9e3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x0ef4fbf2 udp_seq_open +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f107e70 generic_write_checks +EXPORT_SYMBOL vmlinux 0x0f14b57f generic_perform_write +EXPORT_SYMBOL vmlinux 0x0f2e8a9e pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x0f478b85 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x0f4bfe3e tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4fcd94 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x0f5c38b4 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6eb2f2 omapdss_output_unset_device +EXPORT_SYMBOL vmlinux 0x0f72f3aa km_new_mapping +EXPORT_SYMBOL vmlinux 0x0f96ced3 udp_set_csum +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fae4b3b dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fcecbab pps_event +EXPORT_SYMBOL vmlinux 0x0fcf4e62 __breadahead +EXPORT_SYMBOL vmlinux 0x0fd29057 __getblk_slow +EXPORT_SYMBOL vmlinux 0x0feca202 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff29d24 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff6f47b tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x101a48c1 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x101b5fb6 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x1031888f mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x103d4de0 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x10497ca9 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x105a6ecb md_finish_reshape +EXPORT_SYMBOL vmlinux 0x105d47a0 generic_error_remove_page +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 0x10a644bc blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x10ba1541 mmc_get_card +EXPORT_SYMBOL vmlinux 0x10ca458d delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f7d645 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110a683d __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x11300faf param_set_long +EXPORT_SYMBOL vmlinux 0x113cae9b mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x1143f914 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x11593011 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11771658 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x117d983c blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x11888c1e md_set_array_sectors +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 0x11a63983 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x11d19757 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x11d2bf36 datagram_poll +EXPORT_SYMBOL vmlinux 0x11e512f9 dev_err +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12389415 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x125899ba xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x126d70e7 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x127095b5 simple_getattr +EXPORT_SYMBOL vmlinux 0x127ee7a3 inode_init_once +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a9d65b blk_delay_queue +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e3e8df pci_set_power_state +EXPORT_SYMBOL vmlinux 0x12fef4f6 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132f5ca4 blk_init_queue +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x134ba781 netif_skb_features +EXPORT_SYMBOL vmlinux 0x1369f641 netdev_info +EXPORT_SYMBOL vmlinux 0x1389220e phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x138b2acf devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x13928352 of_device_register +EXPORT_SYMBOL vmlinux 0x13c15f73 write_inode_now +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13deaf11 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x13f3494a pci_bus_put +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143762a3 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x14421a2d inet_csk_accept +EXPORT_SYMBOL vmlinux 0x145d0d25 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1466270c sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x1477e3db snd_jack_report +EXPORT_SYMBOL vmlinux 0x149289ac nd_integrity_init +EXPORT_SYMBOL vmlinux 0x1495607a dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x149b7a68 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14ed4b2f request_key_async +EXPORT_SYMBOL vmlinux 0x152b1275 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x154213fb __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x15428e2c vme_register_driver +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15586999 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x1560b352 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x15a15706 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x15ba113d inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15ed64db phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x1601fc26 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x16218448 d_delete +EXPORT_SYMBOL vmlinux 0x1625b0da elevator_alloc +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163468a8 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x163b7624 shdma_chan_probe +EXPORT_SYMBOL vmlinux 0x16766435 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16b1426f dcache_readdir +EXPORT_SYMBOL vmlinux 0x16c6fcdc mount_bdev +EXPORT_SYMBOL vmlinux 0x16cb11cd tty_port_hangup +EXPORT_SYMBOL vmlinux 0x16cf5c7d of_device_unregister +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16f218d4 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x170ce367 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x170fe8d7 inet_bind +EXPORT_SYMBOL vmlinux 0x17341121 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x173aa995 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x173d04a0 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x174bf993 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x1750d49e pci_pme_active +EXPORT_SYMBOL vmlinux 0x175a8700 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x1770853f __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x1784f057 dispc_ovl_set_fifo_threshold +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17a4831e tty_devnum +EXPORT_SYMBOL vmlinux 0x17a73e21 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x17aeec5f wake_up_process +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b18729 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x17c70957 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x17d6e470 inet_frag_find +EXPORT_SYMBOL vmlinux 0x17debcef lro_receive_skb +EXPORT_SYMBOL vmlinux 0x17f73cd9 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x180b0bdb blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184614c3 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x187f4ad0 seq_read +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18946cd6 md_error +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 0x18b4819f rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x18b74105 module_put +EXPORT_SYMBOL vmlinux 0x18baeb3c to_nd_btt +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18de0ec1 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x18f2b5d1 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x18fabf6e km_state_expired +EXPORT_SYMBOL vmlinux 0x19389c7e phy_device_register +EXPORT_SYMBOL vmlinux 0x19397c7f pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x1942af47 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x19486e7a bdget +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x1966703f sock_i_uid +EXPORT_SYMBOL vmlinux 0x197d36cb no_llseek +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 0x19b81d1f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c7430a inode_needs_sync +EXPORT_SYMBOL vmlinux 0x19dbce44 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x19e24511 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x19e328aa simple_transaction_read +EXPORT_SYMBOL vmlinux 0x19f28ccd dquot_free_inode +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x19fe8cd0 scsi_register +EXPORT_SYMBOL vmlinux 0x1a09378d of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x1a0ab9c7 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x1a0f8462 vm_mmap +EXPORT_SYMBOL vmlinux 0x1a139f99 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x1a14396f dqput +EXPORT_SYMBOL vmlinux 0x1a1e5256 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x1a2cf5c2 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x1a43fb2f skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a55a105 d_move +EXPORT_SYMBOL vmlinux 0x1a64cfb3 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x1a65312e vfs_link +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a73e68b tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x1a7be615 bdi_init +EXPORT_SYMBOL vmlinux 0x1a81ef06 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x1a98af86 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x1abd80f3 single_open_size +EXPORT_SYMBOL vmlinux 0x1acb57bd xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ae46e46 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x1af9fbec mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b23a209 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x1b2d6d2c qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0x1b60bd78 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6ba656 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x1b7da428 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8a9a9d snd_soc_alloc_ac97_codec +EXPORT_SYMBOL vmlinux 0x1ba3f364 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc457bc arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x1bca6e3b dquot_alloc +EXPORT_SYMBOL vmlinux 0x1bdeca8c jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x1be50613 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x1bf667a9 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x1bf70af5 arm_dma_ops +EXPORT_SYMBOL vmlinux 0x1bfdbf30 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x1c02d341 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x1c08b715 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c151e47 user_path_create +EXPORT_SYMBOL vmlinux 0x1c271863 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x1c2af6c9 led_blink_set +EXPORT_SYMBOL vmlinux 0x1c3f77db fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x1c5a0b34 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c666526 vfs_unlink +EXPORT_SYMBOL vmlinux 0x1ca3b0e9 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x1ca4b085 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x1cab4249 sock_i_ino +EXPORT_SYMBOL vmlinux 0x1cb4c329 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x1cbd977e __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x1cd78fe9 block_write_full_page +EXPORT_SYMBOL vmlinux 0x1cede5bb blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1cfdec91 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d1c7e36 __blk_end_request +EXPORT_SYMBOL vmlinux 0x1d3a4534 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1d432b35 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d56f77a flush_signals +EXPORT_SYMBOL vmlinux 0x1d58a4fa xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x1d5ac805 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x1d7265cc pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x1d76bd57 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x1d78dc5e simple_release_fs +EXPORT_SYMBOL vmlinux 0x1d7b0483 dquot_initialize +EXPORT_SYMBOL vmlinux 0x1d8318bb ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x1d9d1ffa tcp_splice_read +EXPORT_SYMBOL vmlinux 0x1da137bd create_empty_buffers +EXPORT_SYMBOL vmlinux 0x1db6a30a dss_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x1dbb5ea0 is_nd_btt +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de3b870 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x1dfbc4bc rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x1dfce956 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x1dff1252 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e06d32a dev_change_carrier +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e473d4d map_destroy +EXPORT_SYMBOL vmlinux 0x1e610dfd ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6e4b8d set_nlink +EXPORT_SYMBOL vmlinux 0x1e731f05 sk_common_release +EXPORT_SYMBOL vmlinux 0x1e95cfe1 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea1a0ae __genl_register_family +EXPORT_SYMBOL vmlinux 0x1eb6e2c0 md_write_start +EXPORT_SYMBOL vmlinux 0x1eb7eefd bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x1eb8ecbf ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x1ec52a10 __scm_destroy +EXPORT_SYMBOL vmlinux 0x1ed5ee2a snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1ef1388f invalidate_bdev +EXPORT_SYMBOL vmlinux 0x1f0618dd tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x1f157a1e iget_failed +EXPORT_SYMBOL vmlinux 0x1f2336fd pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x1f24f52f crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x1f5a015e input_allocate_device +EXPORT_SYMBOL vmlinux 0x1f7bab55 snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x1f7c58ad set_page_dirty +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f8ae854 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd057f0 mmc_power_save_host +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 0x1fef3311 do_truncate +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20011ab5 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x202002fd dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x206020da napi_complete_done +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2088a3e3 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x20a7730a gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20fb4727 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x2141d028 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x21535197 sk_net_capable +EXPORT_SYMBOL vmlinux 0x2168acc1 neigh_destroy +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x2172a9e6 phy_device_create +EXPORT_SYMBOL vmlinux 0x217430e9 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2189a0ce sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x2198c13d param_get_ushort +EXPORT_SYMBOL vmlinux 0x21b45d2b vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222fa684 lg_global_lock +EXPORT_SYMBOL vmlinux 0x2232a8a5 mempool_free +EXPORT_SYMBOL vmlinux 0x2251f431 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x225dc89d xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x22611f70 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x227fb92d snd_pcm_new +EXPORT_SYMBOL vmlinux 0x227fc9c0 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x22830711 edma_clear_event +EXPORT_SYMBOL vmlinux 0x2292d66a key_type_keyring +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22f1fe8f max8998_update_reg +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x23007868 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x230eb823 write_one_page +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232bb497 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x2334194d filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x2339f040 update_devfreq +EXPORT_SYMBOL vmlinux 0x233cbad2 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x2343b82d skb_pull +EXPORT_SYMBOL vmlinux 0x23507a11 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x2381aae6 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x23976584 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23ade2ab __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x23b8b5fc d_prune_aliases +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23dd6926 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240e3485 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x241d74a9 mpage_writepages +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24236c22 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x2423a5ce tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x243d9de7 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2445d4d5 msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245fbc8a mmc_request_done +EXPORT_SYMBOL vmlinux 0x24631368 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x24787e2b vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a039e7 arp_xmit +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24b20af8 have_submounts +EXPORT_SYMBOL vmlinux 0x24ba0dcc set_anon_super +EXPORT_SYMBOL vmlinux 0x24ea7f93 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x24ed24a4 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x24eee491 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x24f59c50 d_find_alias +EXPORT_SYMBOL vmlinux 0x24f9e7d4 get_user_pages +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2532ccc5 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x2539ed3a of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x25540332 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x255d803d ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2580607a tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2582bafb dquot_file_open +EXPORT_SYMBOL vmlinux 0x25a32c92 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x25d669f0 nf_afinfo +EXPORT_SYMBOL vmlinux 0x25e7912b snd_seq_root +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f6357c blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x26216941 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x263692ad genphy_config_init +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2672f545 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x26a49ed2 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c2128c lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x26db12ed tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x26dda2ce mmc_remove_host +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ed84b1 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x27084513 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x272283c1 blk_start_request +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x274e6c80 snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +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 0x27a86aa7 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e6014c of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x27e70782 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x27f4def6 load_nls +EXPORT_SYMBOL vmlinux 0x27fab7b6 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x28033129 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x2803eedb pci_claim_resource +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2821235a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x2834ac2f netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x286b49c2 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x288f7f3c register_qdisc +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28ab87dd ilookup +EXPORT_SYMBOL vmlinux 0x28acf99d force_sig +EXPORT_SYMBOL vmlinux 0x28b39e2d pci_dev_put +EXPORT_SYMBOL vmlinux 0x28d73ef1 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x28d8e305 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x28f4378d param_set_invbool +EXPORT_SYMBOL vmlinux 0x28fc263f tcp_shutdown +EXPORT_SYMBOL vmlinux 0x2926e773 devm_release_resource +EXPORT_SYMBOL vmlinux 0x29311901 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x29327100 __check_sticky +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295f37b6 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x295f636d omapdss_register_output +EXPORT_SYMBOL vmlinux 0x295fb79c __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x296ea328 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x2972ba32 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x29762886 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x297e05f1 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x29a360a0 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x29b13163 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x29b27316 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x29bb692f rtnl_unicast +EXPORT_SYMBOL vmlinux 0x29c5bde6 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x29dba6d2 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x29e1b020 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x29e959f6 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x29edbb72 __napi_schedule +EXPORT_SYMBOL vmlinux 0x29f02012 tcf_register_action +EXPORT_SYMBOL vmlinux 0x29f4c8d9 ns_capable +EXPORT_SYMBOL vmlinux 0x29f88445 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a38e18f pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a80d353 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aaa3308 dev_warn +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2aad57ad generic_block_bmap +EXPORT_SYMBOL vmlinux 0x2ab78d20 bd_set_size +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae23098 phy_suspend +EXPORT_SYMBOL vmlinux 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL vmlinux 0x2aef4a4b sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x2afb9f96 drop_super +EXPORT_SYMBOL vmlinux 0x2b098645 d_rehash +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0d8078 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b20e593 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b5b7888 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x2b77249e pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bcda30e empty_aops +EXPORT_SYMBOL vmlinux 0x2bd80b68 bh_submit_read +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2c5bc7 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x2c2cf417 sk_alloc +EXPORT_SYMBOL vmlinux 0x2c345e6a kill_litter_super +EXPORT_SYMBOL vmlinux 0x2c47552b devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x2c5e9963 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x2c6245ba tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c86ab02 reservation_object_add_excl_fence +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 0x2c98d916 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x2cafbb02 snd_pcm_notify +EXPORT_SYMBOL vmlinux 0x2cb7930b param_ops_int +EXPORT_SYMBOL vmlinux 0x2ccd1115 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2ccd7ce3 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x2cd04cc9 pipe_unlock +EXPORT_SYMBOL vmlinux 0x2d040c39 of_device_alloc +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1be924 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d50edcd __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x2d536296 input_get_keycode +EXPORT_SYMBOL vmlinux 0x2d5fcf21 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x2d5feb94 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d75ceee inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x2d770676 dispc_mgr_go +EXPORT_SYMBOL vmlinux 0x2d7c72fc tcf_hash_check +EXPORT_SYMBOL vmlinux 0x2d962c1e input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x2d9e9576 inet6_offloads +EXPORT_SYMBOL vmlinux 0x2da7063e devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x2dc5f2c1 md_integrity_register +EXPORT_SYMBOL vmlinux 0x2dd0c2ea __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x2dd35a2a pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0942ed get_super +EXPORT_SYMBOL vmlinux 0x2e0b47b6 param_get_bool +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3ae640 register_cdrom +EXPORT_SYMBOL vmlinux 0x2e3f8175 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e62b918 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x2e66ffad __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x2e94bf62 dput +EXPORT_SYMBOL vmlinux 0x2eaac35b ppp_input +EXPORT_SYMBOL vmlinux 0x2eae8d25 input_grab_device +EXPORT_SYMBOL vmlinux 0x2eaea2c1 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecd441b fence_free +EXPORT_SYMBOL vmlinux 0x2edbac65 jbd2_journal_forget +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 0x2f0892ae phy_start_aneg +EXPORT_SYMBOL vmlinux 0x2f0a72e6 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x2f0dfbaf scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x2f215d52 sock_create +EXPORT_SYMBOL vmlinux 0x2f33497a proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x2f3c69a5 misc_register +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 0x2f666646 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x2f7221a6 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x2fa71205 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x2fa7beb1 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fd48df7 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x2fe08024 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x301c24d6 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x303096fa dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x3031bc34 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x304ad996 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x30503ef2 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x306ef128 ata_port_printk +EXPORT_SYMBOL vmlinux 0x3071b0fd xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL vmlinux 0x308a4e76 tso_start +EXPORT_SYMBOL vmlinux 0x3095048d nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b9cf97 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x30d39f44 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x30d569ea pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x30de80c9 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30e922e5 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x30ee158d iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x311f4082 snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0x31303cfe dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3156c821 generic_removexattr +EXPORT_SYMBOL vmlinux 0x3164ba0a mark_info_dirty +EXPORT_SYMBOL vmlinux 0x3165e8ec get_super_thawed +EXPORT_SYMBOL vmlinux 0x31683780 kset_unregister +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317a2eec snd_pcm_open_substream +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 0x31d078a9 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x31d36d6a dev_add_pack +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f12b14 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x3277555e sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32907b91 idr_remove +EXPORT_SYMBOL vmlinux 0x32aa173f netif_rx +EXPORT_SYMBOL vmlinux 0x32b7ccfe get_mem_type +EXPORT_SYMBOL vmlinux 0x32cbad73 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x32d52a3d tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x32da0d38 clear_inode +EXPORT_SYMBOL vmlinux 0x32dc0211 uart_resume_port +EXPORT_SYMBOL vmlinux 0x32f149dd mmc_can_reset +EXPORT_SYMBOL vmlinux 0x32f32f6e tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x3305669a gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x3308c86b blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x33109d94 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x3316845e idr_get_next +EXPORT_SYMBOL vmlinux 0x331c5085 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x3329b57b kobject_add +EXPORT_SYMBOL vmlinux 0x3330a47d gen_pool_free +EXPORT_SYMBOL vmlinux 0x333fb757 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x3344b9bd mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x3345cab3 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x334f085a gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x33504702 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x33821d1c ip_options_compile +EXPORT_SYMBOL vmlinux 0x33a95800 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x33ad65d2 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x33c19922 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e7dc69 tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fb00d3 blk_put_request +EXPORT_SYMBOL vmlinux 0x3401559a vme_dma_request +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x34240d20 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x343616b4 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x34559f45 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x345afcf7 proc_mkdir +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3474ad17 udp_ioctl +EXPORT_SYMBOL vmlinux 0x34834770 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x349aa950 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34bdf17e snd_card_new +EXPORT_SYMBOL vmlinux 0x34f13298 netlink_capable +EXPORT_SYMBOL vmlinux 0x34f204a8 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x34f236e5 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34fe4392 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35345073 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356adf63 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x357374f4 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x357bfb44 kobject_init +EXPORT_SYMBOL vmlinux 0x35a5a728 km_is_alive +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35c3001c jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x35cc011b simple_transaction_get +EXPORT_SYMBOL vmlinux 0x35e9d3d6 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x35f16a63 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x35f7003b sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x35fbe2a1 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x36061943 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x362e483f pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x364a609a i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x365ae707 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3661e6e2 fb_blank +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3680623b dss_mgr_connect +EXPORT_SYMBOL vmlinux 0x368f7275 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x369e8395 free_buffer_head +EXPORT_SYMBOL vmlinux 0x36ba6d97 security_inode_permission +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c0f435 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x36f49cf9 __netif_schedule +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x37008015 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x373faa63 try_to_release_page +EXPORT_SYMBOL vmlinux 0x37435d25 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37752386 consume_skb +EXPORT_SYMBOL vmlinux 0x377a4564 kernel_write +EXPORT_SYMBOL vmlinux 0x378256f5 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x378e3d07 copy_to_iter +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37a3f7a1 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e46460 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x38064d36 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x3820db9c ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x384b499e security_path_truncate +EXPORT_SYMBOL vmlinux 0x384bbf16 filemap_fault +EXPORT_SYMBOL vmlinux 0x385782ec d_genocide +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38890da3 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x3890db63 zerocopy_sg_from_iter +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 0x38aa655e inet_getname +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b8658d release_firmware +EXPORT_SYMBOL vmlinux 0x38f48162 inode_change_ok +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x39274981 fb_show_logo +EXPORT_SYMBOL vmlinux 0x3933950c sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x3935d42c keyring_alloc +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393a6b8b xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x394179da vc_resize +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39730d06 atomic_io_modify +EXPORT_SYMBOL vmlinux 0x3990eb03 tcp_check_req +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39b3f387 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39b82499 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39c0e02c pci_clear_master +EXPORT_SYMBOL vmlinux 0x39d673f7 vm_insert_page +EXPORT_SYMBOL vmlinux 0x39febd6d __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x3a19757f dev_activate +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a1cb1b8 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x3a2e7128 register_sound_special +EXPORT_SYMBOL vmlinux 0x3a3a9780 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x3a997058 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ac22f3e reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x3adcf986 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x3ae65b7a scm_detach_fds +EXPORT_SYMBOL vmlinux 0x3b06141e shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x3b0ea799 dss_mgr_register_framedone_handler +EXPORT_SYMBOL vmlinux 0x3b224413 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x3b287127 mount_single +EXPORT_SYMBOL vmlinux 0x3b3e2b56 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x3b5f10d3 km_policy_notify +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b9907aa jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x3b9df1fd abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x3bac1001 register_md_personality +EXPORT_SYMBOL vmlinux 0x3bb10e7b dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bc22b9f netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x3bd7aa6f sk_free +EXPORT_SYMBOL vmlinux 0x3be34e3f tty_port_close +EXPORT_SYMBOL vmlinux 0x3c0ca166 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x3c156058 tty_register_device +EXPORT_SYMBOL vmlinux 0x3c2e330e cdev_alloc +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c446b9a jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x3c4721dd __scm_send +EXPORT_SYMBOL vmlinux 0x3c512fb9 kill_fasync +EXPORT_SYMBOL vmlinux 0x3c5f3272 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc0b4d1 from_kprojid +EXPORT_SYMBOL vmlinux 0x3cc3d636 of_node_put +EXPORT_SYMBOL vmlinux 0x3ccb73f5 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x3cd9a906 param_set_bint +EXPORT_SYMBOL vmlinux 0x3cdf1378 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x3ce49fd3 do_splice_direct +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf4b921 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x3d0d980f find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x3d30409d iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d3d6aef jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x3d4beb1d inode_set_bytes +EXPORT_SYMBOL vmlinux 0x3d5b110e put_page +EXPORT_SYMBOL vmlinux 0x3d5b883a del_gendisk +EXPORT_SYMBOL vmlinux 0x3d61936d __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x3d87a680 of_phy_attach +EXPORT_SYMBOL vmlinux 0x3d8afbcc param_set_int +EXPORT_SYMBOL vmlinux 0x3d917ca5 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x3d95442f uart_update_timeout +EXPORT_SYMBOL vmlinux 0x3d9d1b24 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x3d9f93a7 __brelse +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 0x3df75397 amba_driver_register +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e296160 param_set_bool +EXPORT_SYMBOL vmlinux 0x3e7cabc5 i2c_master_send +EXPORT_SYMBOL vmlinux 0x3e8416c7 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e92edca dcb_setapp +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9e951c touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x3ee89ed8 locks_free_lock +EXPORT_SYMBOL vmlinux 0x3eef17c7 phy_detach +EXPORT_SYMBOL vmlinux 0x3ef24d26 sock_create_lite +EXPORT_SYMBOL vmlinux 0x3f25b69f mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x3f26f543 commit_creds +EXPORT_SYMBOL vmlinux 0x3f3accee mntget +EXPORT_SYMBOL vmlinux 0x3f413e3f phy_start +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 0x3f6b4cc2 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x3f8e2654 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x3f8f3f4d tcf_exts_change +EXPORT_SYMBOL vmlinux 0x3f959ad7 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fc122e8 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x400182dc mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x40026125 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x4013866c tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x401670c0 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x401744b0 contig_page_data +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4054dec2 skb_seq_read +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406b8413 put_filp +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 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 0x40c255a1 kmap_high +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 0x40e7b80d pci_save_state +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40f075b9 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f07e63 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x40f63546 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x412688ea netlink_broadcast +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +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 0x419a2b79 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x41a01e17 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x41b40353 __register_nls +EXPORT_SYMBOL vmlinux 0x41d0bb57 is_bad_inode +EXPORT_SYMBOL vmlinux 0x41d3d6f5 nobh_writepage +EXPORT_SYMBOL vmlinux 0x41e6b983 netif_napi_add +EXPORT_SYMBOL vmlinux 0x41eb11a4 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x41ef4ebe snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0x41f5ae1d nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4218368c vfs_fsync +EXPORT_SYMBOL vmlinux 0x4232f43c jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x423d81ed ida_pre_get +EXPORT_SYMBOL vmlinux 0x423e3a3f sock_rfree +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42540b6f vga_client_register +EXPORT_SYMBOL vmlinux 0x4286a6d0 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x42982e1e vfs_setpos +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x429c4d1e scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42b996d5 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x42bac4b2 dss_mgr_disable +EXPORT_SYMBOL vmlinux 0x42bc6291 kernel_listen +EXPORT_SYMBOL vmlinux 0x42cd8edb would_dump +EXPORT_SYMBOL vmlinux 0x42d08a5b i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x42e5c3dc tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x42ecf546 ioremap +EXPORT_SYMBOL vmlinux 0x42fb0f56 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43066527 snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x43233b43 param_set_copystring +EXPORT_SYMBOL vmlinux 0x432674bd scmd_printk +EXPORT_SYMBOL vmlinux 0x434984f4 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43557c77 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x43626439 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a03874 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x43bd8779 serio_reconnect +EXPORT_SYMBOL vmlinux 0x43e78e11 param_get_int +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4421c4e1 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x443289ce input_close_device +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44429903 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x44706094 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x44784e01 poll_freewait +EXPORT_SYMBOL vmlinux 0x447be5e8 __block_write_begin +EXPORT_SYMBOL vmlinux 0x449c078d snd_device_register +EXPORT_SYMBOL vmlinux 0x44a3bccd end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44ec44d6 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x44f7c91b ___pskb_trim +EXPORT_SYMBOL vmlinux 0x45048b8c inet_stream_connect +EXPORT_SYMBOL vmlinux 0x45125db1 inet_frags_init +EXPORT_SYMBOL vmlinux 0x4517d66f devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x456c47ac ilookup5 +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 0x45b85cea kernel_getsockname +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c9a736 tty_set_operations +EXPORT_SYMBOL vmlinux 0x45dc6926 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x45eac0dd gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x45fd32b6 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x462568fe flush_old_exec +EXPORT_SYMBOL vmlinux 0x4626b829 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x4628e493 snd_timer_open +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462b1c53 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x46322ab1 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x46348353 neigh_update +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x4658ef51 dump_page +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x467daa9b pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x4684b643 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x468cf5bd input_unregister_handle +EXPORT_SYMBOL vmlinux 0x469b5fa6 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x46b82ef3 fb_set_var +EXPORT_SYMBOL vmlinux 0x46c32911 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x46ca246c omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x46d23a00 mpage_readpages +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4716d0e5 pci_disable_device +EXPORT_SYMBOL vmlinux 0x4721bde0 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x472330bc kmem_cache_free +EXPORT_SYMBOL vmlinux 0x472b074d clear_wb_congested +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4749d516 submit_bio +EXPORT_SYMBOL vmlinux 0x475baf11 pps_register_source +EXPORT_SYMBOL vmlinux 0x476a1689 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x476ddc53 seq_escape +EXPORT_SYMBOL vmlinux 0x4782d6a8 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x478459a8 f_setown +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4796ea4e d_obtain_alias +EXPORT_SYMBOL vmlinux 0x47b1a3a6 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x47bcf695 omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x47d0e00e lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x47d5d44a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x47ffd4eb follow_down +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x4842382f __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x4842ed30 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x484c9b4d tcp_req_err +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48638022 __bforget +EXPORT_SYMBOL vmlinux 0x4866677b tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48aec194 dquot_resume +EXPORT_SYMBOL vmlinux 0x48b0d0f4 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x48b75da5 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c6f704 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x48cbd879 get_task_io_context +EXPORT_SYMBOL vmlinux 0x48fddcb6 phy_init_hw +EXPORT_SYMBOL vmlinux 0x49015f18 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x49037175 seq_open_private +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49105dd4 ip6_xmit +EXPORT_SYMBOL vmlinux 0x4924419a phy_init_eee +EXPORT_SYMBOL vmlinux 0x49307e4f scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x493a4577 arp_send +EXPORT_SYMBOL vmlinux 0x493d8087 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x493e8b77 dev_emerg +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x495fce5e pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496e3710 key_revoke +EXPORT_SYMBOL vmlinux 0x49824429 param_ops_byte +EXPORT_SYMBOL vmlinux 0x498e9c6c alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x49973646 netdev_alert +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49ab6c0a snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c1a815 edma_set_src +EXPORT_SYMBOL vmlinux 0x49c2ce1f init_task +EXPORT_SYMBOL vmlinux 0x49d668eb blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a0e84a7 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x4a1238f3 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x4a16fd69 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a68f929 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x4a773e95 skb_copy +EXPORT_SYMBOL vmlinux 0x4a943ad7 bdev_read_only +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acb663f pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad5a291 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x4ad86e81 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x4adf9525 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x4ae199e4 elv_register_queue +EXPORT_SYMBOL vmlinux 0x4aebdea8 tcp_connect +EXPORT_SYMBOL vmlinux 0x4aecb3b9 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b1c2c3e ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x4b1cf0fe invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b1fab3e ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5a0620 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b78933c qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0x4b7cafec seq_pad +EXPORT_SYMBOL vmlinux 0x4b8b19f4 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x4b8cfa32 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x4ba2336e tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x4bada87c registered_fb +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bc53b26 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x4bc71457 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x4bcb93e9 cdev_del +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd0acd7 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x4be682f7 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf281ef seq_dentry +EXPORT_SYMBOL vmlinux 0x4bf87a20 of_count_phandle_with_args +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 0x4c37dcb7 inet_offloads +EXPORT_SYMBOL vmlinux 0x4c458ca3 __d_drop +EXPORT_SYMBOL vmlinux 0x4c47731e abort_creds +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4c8b1cb8 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x4c9fa501 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x4cb4d619 kobject_set_name +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ceab4bc input_reset_device +EXPORT_SYMBOL vmlinux 0x4ceb2872 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x4cf9fb7a __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x4d045a3e bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d3ac3b6 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d522d0c iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x4d5ff978 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x4d7d32c7 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x4d84dd81 dev_close +EXPORT_SYMBOL vmlinux 0x4d867ec3 sk_filter +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4db552de address_space_init_once +EXPORT_SYMBOL vmlinux 0x4dbb7e51 block_write_begin +EXPORT_SYMBOL vmlinux 0x4dc308cb arp_tbl +EXPORT_SYMBOL vmlinux 0x4dca96f2 blk_finish_request +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e0fcb9b dev_remove_offload +EXPORT_SYMBOL vmlinux 0x4e164faf clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x4e2ec226 cfb_imageblit +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 0x4e98e4a2 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x4e9ce9f9 edma_link +EXPORT_SYMBOL vmlinux 0x4e9fdca9 genl_notify +EXPORT_SYMBOL vmlinux 0x4ebfe420 d_set_d_op +EXPORT_SYMBOL vmlinux 0x4ec0ebe5 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x4ed5b495 sock_no_poll +EXPORT_SYMBOL vmlinux 0x4ee1f3be block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x4f08e037 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x4f1c7eb3 nf_unregister_hooks +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 0x4f40fc1c soft_cursor +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f534070 of_clk_get +EXPORT_SYMBOL vmlinux 0x4f53b170 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x4f57ccaf md_check_recovery +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f761993 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x4f7e56fb kernel_accept +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4f94e3a3 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x4f981bbb set_create_files_as +EXPORT_SYMBOL vmlinux 0x4fbe1177 __init_rwsem +EXPORT_SYMBOL vmlinux 0x4fca6aaa __free_pages +EXPORT_SYMBOL vmlinux 0x4fcf56a4 set_device_ro +EXPORT_SYMBOL vmlinux 0x4fd5ec75 snd_info_register +EXPORT_SYMBOL vmlinux 0x4fef75cc omap_dss_find_output_by_port_node +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x501cc321 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x50476ead snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0x504db4db get_tz_trend +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50746622 setattr_copy +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5084bae7 unregister_netdev +EXPORT_SYMBOL vmlinux 0x50882082 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x509f6cf7 fb_class +EXPORT_SYMBOL vmlinux 0x50a56144 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50bf6c0b swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x50d5612e dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e4ab35 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x50f271c6 nonseekable_open +EXPORT_SYMBOL vmlinux 0x51133982 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51614ce4 generic_show_options +EXPORT_SYMBOL vmlinux 0x516aecc8 qdisc_reset +EXPORT_SYMBOL vmlinux 0x51810942 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x51b2cd83 generic_fillattr +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51e90374 start_tty +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520fdcfd edma_set_dest +EXPORT_SYMBOL vmlinux 0x5211ee10 file_ns_capable +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x521db81a dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x52204efa register_quota_format +EXPORT_SYMBOL vmlinux 0x52229bb1 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x52327907 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x523aaff6 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x528560bd ip4_datagram_connect +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 0x52926aba noop_qdisc +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 0x52fe08ca of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x533184d9 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53362436 blk_peek_request +EXPORT_SYMBOL vmlinux 0x534c2259 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x534c340c km_state_notify +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x53610ac5 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x53631eae pci_set_mwi +EXPORT_SYMBOL vmlinux 0x536374ec pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x537fab82 make_kuid +EXPORT_SYMBOL vmlinux 0x53821ac4 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53c27981 skb_append +EXPORT_SYMBOL vmlinux 0x53c35c48 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x53c82267 nand_scan_tail +EXPORT_SYMBOL vmlinux 0x53d1a7a6 __break_lease +EXPORT_SYMBOL vmlinux 0x53ff1c53 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x54177d83 nand_unlock +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54453f7d mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x54767bf3 of_dev_get +EXPORT_SYMBOL vmlinux 0x547ce898 dispc_read_irqenable +EXPORT_SYMBOL vmlinux 0x547f6903 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x549c1a5a fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b34c09 from_kgid_munged +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 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5525cc7e blk_rq_init +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55565a52 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x557bd0e2 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x557cab1e mpage_writepage +EXPORT_SYMBOL vmlinux 0x55a0ba91 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55fab8d5 cpu_user +EXPORT_SYMBOL vmlinux 0x560147fd edma_unlink +EXPORT_SYMBOL vmlinux 0x560e7fd2 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x5625df8f pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x562e4a6f bdget_disk +EXPORT_SYMBOL vmlinux 0x563547ea copy_from_iter +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x563c2e44 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x565857ae led_set_brightness +EXPORT_SYMBOL vmlinux 0x565fe182 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x566bd4e4 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL vmlinux 0x5694741b blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x5696c254 ata_link_printk +EXPORT_SYMBOL vmlinux 0x56a984f6 component_match_add +EXPORT_SYMBOL vmlinux 0x56adf180 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x56bc2f15 dispc_ovl_set_channel_out +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56da13dd xfrm_input +EXPORT_SYMBOL vmlinux 0x56dbe726 tc_classify +EXPORT_SYMBOL vmlinux 0x56e6e376 __f_setown +EXPORT_SYMBOL vmlinux 0x56f74b81 check_disk_change +EXPORT_SYMBOL vmlinux 0x570a64f1 to_ndd +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572f257b __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x5752107e elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577f3b79 bio_init +EXPORT_SYMBOL vmlinux 0x579e07e1 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x57ae9a5f ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x57baeb23 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x57fae90f buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x57fe3a0c bmap +EXPORT_SYMBOL vmlinux 0x580873e5 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x580e8e64 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5830fab3 dquot_commit +EXPORT_SYMBOL vmlinux 0x5832b713 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583a9fb5 read_cache_pages +EXPORT_SYMBOL vmlinux 0x5847e42b inet_add_protocol +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x5857b7cd pgprot_kernel +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x588b34d1 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x58a34567 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x58a5c4fc ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58cb372b netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x59077d42 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x5914f4d7 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x5920c756 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x59321427 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x596b2ccc mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x596cec24 of_get_parent +EXPORT_SYMBOL vmlinux 0x5972a86c proto_register +EXPORT_SYMBOL vmlinux 0x597dd76f ll_rw_block +EXPORT_SYMBOL vmlinux 0x597f4845 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x598960e9 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bed6b0 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d534eb param_set_charp +EXPORT_SYMBOL vmlinux 0x59d68c9d ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59f04341 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x59f3bc40 sget +EXPORT_SYMBOL vmlinux 0x59f48235 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a142190 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x5a517d13 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x5a6cbd51 set_bh_page +EXPORT_SYMBOL vmlinux 0x5ac9a4a1 netdev_state_change +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5ae917e9 backlight_force_update +EXPORT_SYMBOL vmlinux 0x5af92d39 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b03fca3 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x5b0cf10c udp_sendmsg +EXPORT_SYMBOL vmlinux 0x5b110179 snd_jack_new +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b30e2bf dev_get_by_name +EXPORT_SYMBOL vmlinux 0x5b79986e prepare_creds +EXPORT_SYMBOL vmlinux 0x5b95554e dm_put_device +EXPORT_SYMBOL vmlinux 0x5ba5e4c1 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x5bb172a0 mmc_add_host +EXPORT_SYMBOL vmlinux 0x5bb9c42f dquot_operations +EXPORT_SYMBOL vmlinux 0x5bc59e05 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x5bd493a8 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x5bdb37b3 __kernel_write +EXPORT_SYMBOL vmlinux 0x5bf31600 param_ops_bint +EXPORT_SYMBOL vmlinux 0x5bf81535 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x5c27bcee mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x5c3584f7 snd_timer_pause +EXPORT_SYMBOL vmlinux 0x5c4256a5 elm_config +EXPORT_SYMBOL vmlinux 0x5c58828e free_task +EXPORT_SYMBOL vmlinux 0x5c7043c8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x5c7cb026 kfree_put_link +EXPORT_SYMBOL vmlinux 0x5c86a266 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x5c91911a t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cac89b3 _dev_info +EXPORT_SYMBOL vmlinux 0x5cc58a5c kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x5ce85848 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x5cef67a5 __register_binfmt +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfa7873 input_unregister_device +EXPORT_SYMBOL vmlinux 0x5d204fc1 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x5d38ce7e neigh_xmit +EXPORT_SYMBOL vmlinux 0x5d4ff425 seq_file_path +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d5e60a7 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x5d5f235d devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x5d719752 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x5d970647 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0x5da870cf __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x5dbc4b6c snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x5dcf6341 outer_cache +EXPORT_SYMBOL vmlinux 0x5dcfb278 simple_link +EXPORT_SYMBOL vmlinux 0x5dd4af90 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x5dd8fa7b netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x5ddf9b49 sock_wfree +EXPORT_SYMBOL vmlinux 0x5e021b88 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x5e10b870 seq_write +EXPORT_SYMBOL vmlinux 0x5e1d4792 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x5e28ff4d __devm_request_region +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e800a0e update_region +EXPORT_SYMBOL vmlinux 0x5e855fec i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e88cf07 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e96e869 d_lookup +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ede2fa3 snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x5eeae523 vfs_read +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f138bd2 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x5f188771 kunmap +EXPORT_SYMBOL vmlinux 0x5f1d3a3b mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f52523c max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f896e16 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x5fa28a99 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x5fb4ba1a dquot_scan_active +EXPORT_SYMBOL vmlinux 0x5fbbe2a5 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe28295 dev_uc_init +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x5ffc8f59 xfrm6_prepare_output +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 0x602fbb24 seq_open +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60541702 edma_alloc_slot +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6085140f __neigh_create +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 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60eaf8b9 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x60f17ea5 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x60f1c46f __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x60fbdabe ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x6101252e pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61431597 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x6151e4d2 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x615f275c from_kuid +EXPORT_SYMBOL vmlinux 0x6160484e jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6181484a __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x61ab802f mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x61afbb6b register_filesystem +EXPORT_SYMBOL vmlinux 0x61b226e8 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b3dd68 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bab115 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x61e1e3e5 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x61e4ee20 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x61e6fa61 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x620b942f inet6_ioctl +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621c35b9 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x621eb424 jbd2_journal_wipe +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 0x6230384b generic_delete_inode +EXPORT_SYMBOL vmlinux 0x6234ff3d set_disk_ro +EXPORT_SYMBOL vmlinux 0x623536ea kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x62373cbb pci_get_device +EXPORT_SYMBOL vmlinux 0x62597d88 cpu_tlb +EXPORT_SYMBOL vmlinux 0x6267e121 dquot_enable +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6274c1d0 simple_write_end +EXPORT_SYMBOL vmlinux 0x627605aa unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62906c8c unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x62c90697 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x62e58de4 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x62ed65af pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x62ee6979 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x62f2fd95 sg_miter_start +EXPORT_SYMBOL vmlinux 0x62f98dbd d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x62fc07b2 sync_blockdev +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6348606b mount_ns +EXPORT_SYMBOL vmlinux 0x635082d3 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x6356ce3d abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x63604d83 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x63699fa8 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x63823cd0 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x639f50bf shdma_chan_filter +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c8dda6 xfrm_policy_register_afinfo +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 0x64302f12 kernel_connect +EXPORT_SYMBOL vmlinux 0x64342ca3 filemap_flush +EXPORT_SYMBOL vmlinux 0x64469a11 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x644ce825 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x644d09b6 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x64543473 dev_driver_string +EXPORT_SYMBOL vmlinux 0x645faabe sock_wake_async +EXPORT_SYMBOL vmlinux 0x646dfc53 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x646f0ac9 __frontswap_load +EXPORT_SYMBOL vmlinux 0x648f4839 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64999808 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x64a22ff0 dispc_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x64ad81a0 register_sound_mixer +EXPORT_SYMBOL vmlinux 0x64e6ddeb call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x64ff6d1d dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x64ff8935 ipv4_specific +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 0x653cbee2 unregister_nls +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x655a9af8 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x655f285c serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6577484b jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x658ba21c tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x65abf434 ether_setup +EXPORT_SYMBOL vmlinux 0x65b93227 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e504f2 iunique +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x660dbbeb blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x66472b28 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x667eaf34 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x669a7152 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x66a9c872 scsi_unregister +EXPORT_SYMBOL vmlinux 0x66c21441 tty_kref_put +EXPORT_SYMBOL vmlinux 0x66c21c70 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x66c7a99d blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x66d0272b __dst_free +EXPORT_SYMBOL vmlinux 0x66de711e mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x66e5de4e blk_register_region +EXPORT_SYMBOL vmlinux 0x66e86146 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x66eec02a __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x67006e74 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x670d2f7e mtd_concat_create +EXPORT_SYMBOL vmlinux 0x670db3e0 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x67106dc1 inet_addr_type +EXPORT_SYMBOL vmlinux 0x672d0011 param_set_ullong +EXPORT_SYMBOL vmlinux 0x672e85ba input_register_handler +EXPORT_SYMBOL vmlinux 0x6762e468 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x676e92ba vme_irq_generate +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x677c0956 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x679d6fc5 input_event +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67bbd37e qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x67bca68e pagecache_get_page +EXPORT_SYMBOL vmlinux 0x67bd7644 input_flush_device +EXPORT_SYMBOL vmlinux 0x67ccb8c1 key_invalidate +EXPORT_SYMBOL vmlinux 0x67d752af inet_stream_ops +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x681ea455 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x6837c449 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x6846a278 dma_pool_create +EXPORT_SYMBOL vmlinux 0x685aef26 rt6_lookup +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 0x68abb700 kobject_put +EXPORT_SYMBOL vmlinux 0x68b0deb3 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c419a3 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x68de918d fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x694222b9 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x6942deb0 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x69477e67 vfs_statfs +EXPORT_SYMBOL vmlinux 0x6957c9e8 freeze_super +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69792006 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x697d1d2c simple_fill_super +EXPORT_SYMBOL vmlinux 0x69a2fced vme_irq_request +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69c471d9 fput +EXPORT_SYMBOL vmlinux 0x69c4f836 vfs_mknod +EXPORT_SYMBOL vmlinux 0x69e8b1bf override_creds +EXPORT_SYMBOL vmlinux 0x69f2fc11 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x69ff38ab blkdev_get +EXPORT_SYMBOL vmlinux 0x6a02fa6f thaw_bdev +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a20170f __sb_start_write +EXPORT_SYMBOL vmlinux 0x6a2236d0 generic_read_dir +EXPORT_SYMBOL vmlinux 0x6a3f302b inc_nlink +EXPORT_SYMBOL vmlinux 0x6a4aee0e posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6abb9a31 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6ad0b085 sock_no_connect +EXPORT_SYMBOL vmlinux 0x6ad4c0f1 pci_dev_get +EXPORT_SYMBOL vmlinux 0x6ad593d9 tty_name +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b17e376 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1eb216 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b309167 mutex_trylock +EXPORT_SYMBOL vmlinux 0x6b4a2ae1 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x6b5aa0d3 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x6b8c7c3d bio_endio +EXPORT_SYMBOL vmlinux 0x6baeb443 __get_page_tail +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcdb281 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x6bd67029 skb_queue_head +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf7bb5c pci_restore_state +EXPORT_SYMBOL vmlinux 0x6c09609e tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c262255 netlink_unicast +EXPORT_SYMBOL vmlinux 0x6c3eacc4 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5ad0af pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c63f9c7 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c75cf96 shdma_cleanup +EXPORT_SYMBOL vmlinux 0x6c81b241 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x6c86a72e icmpv6_send +EXPORT_SYMBOL vmlinux 0x6cc9a0e4 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x6cd2af12 __elv_add_request +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cf9a4ce unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x6d012f00 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d16a970 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x6d1776bf netdev_emerg +EXPORT_SYMBOL vmlinux 0x6d1c44dd lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d56a127 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d6d1234 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x6d75a23a bio_clone_fast +EXPORT_SYMBOL vmlinux 0x6d8484c0 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x6dab96fb amba_find_device +EXPORT_SYMBOL vmlinux 0x6de13bb7 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df026bf elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df55ee9 mmc_put_card +EXPORT_SYMBOL vmlinux 0x6df56513 mutex_unlock +EXPORT_SYMBOL vmlinux 0x6e0af299 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x6e3f4256 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x6e4044d3 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x6e556541 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e65800b vm_map_ram +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e92de4b mark_page_accessed +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea6116a snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x6ea80793 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x6ead19c8 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6ed0cca5 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x6ed73222 stop_tty +EXPORT_SYMBOL vmlinux 0x6edcd02b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x6ee2dad1 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x6ee58a77 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6f1079da dev_mc_sync +EXPORT_SYMBOL vmlinux 0x6f193b5c vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f334215 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x6f40787b of_node_get +EXPORT_SYMBOL vmlinux 0x6f70ca49 mdiobus_register +EXPORT_SYMBOL vmlinux 0x6f739ad4 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x6f8319e4 edma_filter_fn +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fa15afb nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x6fb74d04 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x6fbca780 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcbe1bc __dquot_transfer +EXPORT_SYMBOL vmlinux 0x6fce7a78 blk_run_queue +EXPORT_SYMBOL vmlinux 0x6fd43b4d kill_bdev +EXPORT_SYMBOL vmlinux 0x6fd590b4 mmc_release_host +EXPORT_SYMBOL vmlinux 0x6fd92952 do_map_probe +EXPORT_SYMBOL vmlinux 0x6fdf6623 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6fe0c015 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x6fe563c1 vme_master_request +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x700bd9a0 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x702be2fd xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x702f2c4f dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x7038db6c of_get_next_child +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x7066f51e nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x7073abfe follow_down_one +EXPORT_SYMBOL vmlinux 0x707d8c51 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7083c5d0 sock_register +EXPORT_SYMBOL vmlinux 0x70a0fe24 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x70c35b66 register_console +EXPORT_SYMBOL vmlinux 0x70dc7484 seq_release +EXPORT_SYMBOL vmlinux 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL vmlinux 0x70e6a5ed mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x70ea959c eth_type_trans +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x711296c7 nf_register_hook +EXPORT_SYMBOL vmlinux 0x7116653b pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x7119db7f omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7133c7bc iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x7142c63c edma_free_slot +EXPORT_SYMBOL vmlinux 0x71621d7f unregister_console +EXPORT_SYMBOL vmlinux 0x7169102e omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717261bd blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x717c550d mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x718f7552 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x71905bcf tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71f68233 file_path +EXPORT_SYMBOL vmlinux 0x721158e4 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x7240e13b skb_queue_tail +EXPORT_SYMBOL vmlinux 0x724b7ff7 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x72622b60 __bread_gfp +EXPORT_SYMBOL vmlinux 0x7279222d flow_cache_init +EXPORT_SYMBOL vmlinux 0x728f9a6c rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x7296d8a2 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x72a533c2 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x72a6b44b generic_ro_fops +EXPORT_SYMBOL vmlinux 0x72b46a8c kobject_get +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72faa356 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x73062b17 scsi_host_put +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7319543e page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x731d19f0 snd_card_free +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73406628 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x734cd5f7 dev_open +EXPORT_SYMBOL vmlinux 0x734eff38 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x7358d38d mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x7359f6fd pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x73660797 kthread_bind +EXPORT_SYMBOL vmlinux 0x7372ded9 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x7386dadd xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x73998736 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x73aa0206 phy_device_free +EXPORT_SYMBOL vmlinux 0x73b7fcf9 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x73e0887c mpage_readpage +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e311ca tcp_read_sock +EXPORT_SYMBOL vmlinux 0x73e5741b __mutex_init +EXPORT_SYMBOL vmlinux 0x73f63438 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x73fed4d3 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x73ff8de3 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x73fff926 sync_inode +EXPORT_SYMBOL vmlinux 0x7409787d kernel_read +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741f4f93 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x74747dcf block_read_full_page +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a70270 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x74ad1bf9 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74df59bb xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ecc86b of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x74f0a37e blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x74f0f42f param_set_ushort +EXPORT_SYMBOL vmlinux 0x74fa022d edma_trigger_channel +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7508e78f alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x75219087 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x7527e947 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x7538def9 touch_atime +EXPORT_SYMBOL vmlinux 0x754e3da4 seq_lseek +EXPORT_SYMBOL vmlinux 0x7566436e security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x756fb893 security_path_chown +EXPORT_SYMBOL vmlinux 0x757b5d0b omap_dss_get_device +EXPORT_SYMBOL vmlinux 0x75850d01 __vmalloc +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75952bc9 cdrom_open +EXPORT_SYMBOL vmlinux 0x75a90348 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75da16d8 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x75eb2fe8 open_exec +EXPORT_SYMBOL vmlinux 0x75f12739 kern_unmount +EXPORT_SYMBOL vmlinux 0x7606b3fb mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x761705e5 alloc_file +EXPORT_SYMBOL vmlinux 0x762312ad dev_get_by_index +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764f9fa8 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x7650a074 __module_get +EXPORT_SYMBOL vmlinux 0x7656043e get_cached_acl +EXPORT_SYMBOL vmlinux 0x76570ca1 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x765750c1 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x765adcdc seq_printf +EXPORT_SYMBOL vmlinux 0x765c1ba5 km_policy_expired +EXPORT_SYMBOL vmlinux 0x766678a4 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x768a166d vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x76a7e347 dev_addr_add +EXPORT_SYMBOL vmlinux 0x76bc6161 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x76c4568d snd_ctl_notify +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d3e68c inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76e30f5c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770acc27 sg_miter_next +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7721101d inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x77218c82 vfs_writef +EXPORT_SYMBOL vmlinux 0x7726621f skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x772bd273 elevator_exit +EXPORT_SYMBOL vmlinux 0x77311d36 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x774582d3 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x77548997 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x77710e0a complete_request_key +EXPORT_SYMBOL vmlinux 0x777ac5be jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x778a9292 tty_port_put +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779f55b9 md_flush_request +EXPORT_SYMBOL vmlinux 0x77a125df devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c401f2 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x77f0c783 inode_permission +EXPORT_SYMBOL vmlinux 0x77f62f6e fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x77fa1a63 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x7810a88b fence_signal_locked +EXPORT_SYMBOL vmlinux 0x7826ede3 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x782d3062 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x7833deb2 pgprot_user +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x78588765 __lock_page +EXPORT_SYMBOL vmlinux 0x7860b3a4 set_blocksize +EXPORT_SYMBOL vmlinux 0x786f8737 deactivate_super +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7884d113 console_stop +EXPORT_SYMBOL vmlinux 0x7888e834 put_cmsg +EXPORT_SYMBOL vmlinux 0x7890e950 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789d7e78 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x78bbd764 of_phy_connect +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x79362de8 netdev_warn +EXPORT_SYMBOL vmlinux 0x7947d362 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x794e7a88 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x7951f7f3 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79958836 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x79a38497 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79ac6cdd cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x79b8e2b9 find_vma +EXPORT_SYMBOL vmlinux 0x79dc35c5 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x79e2632c vfs_iter_read +EXPORT_SYMBOL vmlinux 0x7a1f2611 dispc_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x7a25c242 amba_device_register +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a303999 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x7a321da1 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4ebe75 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x7a570d7a omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0x7a607560 fb_pan_display +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 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab810f6 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aefb995 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b072120 sock_edemux +EXPORT_SYMBOL vmlinux 0x7b07e516 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b244c2b ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b3e72e3 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x7b4ad6d0 security_path_unlink +EXPORT_SYMBOL vmlinux 0x7b5a5f05 dquot_release +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b83a617 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x7b8b1746 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x7bdbabaf __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x7c020504 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x7c08a6ae serio_close +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c143b6b scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c2e57c8 of_device_is_available +EXPORT_SYMBOL vmlinux 0x7c39dbb7 keyring_search +EXPORT_SYMBOL vmlinux 0x7c411d25 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c524eb1 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6cf2f2 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x7c803dc1 __destroy_inode +EXPORT_SYMBOL vmlinux 0x7c8ed291 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x7c96e8ae remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca1ce8d mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x7ca938c5 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x7cab030e elv_rb_find +EXPORT_SYMBOL vmlinux 0x7caeb098 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cd859b4 pci_release_region +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce1acf0 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x7ce94d93 __skb_checksum +EXPORT_SYMBOL vmlinux 0x7cf32f0e sock_no_getname +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7d0049fa unregister_quota_format +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0fc61b dev_mc_add +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1b050b simple_open +EXPORT_SYMBOL vmlinux 0x7d30a161 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x7d4053d3 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x7d4eb317 prepare_binprm +EXPORT_SYMBOL vmlinux 0x7d52cc3b xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7aa379 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x7d877ea2 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x7d8ac0ce scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x7da17a3e inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x7db3134b __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e34435b of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x7e38142b mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x7e3b475a param_ops_short +EXPORT_SYMBOL vmlinux 0x7e4fb5e6 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x7e53b1b6 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x7e567446 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x7e6fa3ef tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x7e953eea mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x7e9e178a generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7eb8cbbd omapdss_unregister_display +EXPORT_SYMBOL vmlinux 0x7ed1e26e find_inode_nowait +EXPORT_SYMBOL vmlinux 0x7ed32b3f find_get_entry +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee7f093 dispc_ovl_compute_fifo_thresholds +EXPORT_SYMBOL vmlinux 0x7ef388aa finish_no_open +EXPORT_SYMBOL vmlinux 0x7f015745 omap_dss_get_output +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03ee9d generic_file_mmap +EXPORT_SYMBOL vmlinux 0x7f129491 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x7f14d2e2 dquot_get_state +EXPORT_SYMBOL vmlinux 0x7f1eb7da udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x7f1f42d7 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2ca8f9 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x7f45bcaf rwsem_wake +EXPORT_SYMBOL vmlinux 0x7f4ffbe7 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x7f6146cd d_make_root +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f783bcd phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x7f887e81 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x7f8e5c73 register_key_type +EXPORT_SYMBOL vmlinux 0x7fc0ab5d tty_write_room +EXPORT_SYMBOL vmlinux 0x7fca5a9d pid_task +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x800e388b dev_remove_pack +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x801bd2a6 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x802a55c2 inode_init_owner +EXPORT_SYMBOL vmlinux 0x8031879c rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x803d497d skb_split +EXPORT_SYMBOL vmlinux 0x804aabdf idr_is_empty +EXPORT_SYMBOL vmlinux 0x804cdf7e unlock_buffer +EXPORT_SYMBOL vmlinux 0x808cbb9d clk_add_alias +EXPORT_SYMBOL vmlinux 0x808ccd2a phy_resume +EXPORT_SYMBOL vmlinux 0x808f96ec genlmsg_put +EXPORT_SYMBOL vmlinux 0x809db36a lease_modify +EXPORT_SYMBOL vmlinux 0x80a32118 locks_init_lock +EXPORT_SYMBOL vmlinux 0x80a860bd up_read +EXPORT_SYMBOL vmlinux 0x80b7e10a tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80ce7b99 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e2e831 param_get_ulong +EXPORT_SYMBOL vmlinux 0x8126b5c2 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x812f6ed9 param_get_short +EXPORT_SYMBOL vmlinux 0x8143743b xfrm_policy_destroy +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 0x81687e3c setup_arg_pages +EXPORT_SYMBOL vmlinux 0x817276da sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x8182c57b __nd_driver_register +EXPORT_SYMBOL vmlinux 0x818a6cb5 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0x819d9aa9 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x81a975c9 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x81b59dca tso_count_descs +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81b7c3ba skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x81bb78c3 pci_request_region +EXPORT_SYMBOL vmlinux 0x81c69de1 dss_mgr_start_update +EXPORT_SYMBOL vmlinux 0x81c830d8 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x81c8dd0a sock_efree +EXPORT_SYMBOL vmlinux 0x81cf6398 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x81d232f8 vfs_getattr +EXPORT_SYMBOL vmlinux 0x81d8607e unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81dcc9f2 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x81fa0cdb devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x81feb64c vlan_vid_del +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82163eb8 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x825064e0 init_net +EXPORT_SYMBOL vmlinux 0x825465d7 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x825f2a04 pci_bus_read_config_word +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 0x828e93ab rtnl_create_link +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c8fe0b get_fs_type +EXPORT_SYMBOL vmlinux 0x82e6913b eth_header_cache +EXPORT_SYMBOL vmlinux 0x82e99ecd security_path_mkdir +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x831396c3 fence_signal +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x834c02dd security_path_symlink +EXPORT_SYMBOL vmlinux 0x834cc402 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x835a6b4c __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x836ff0a8 block_truncate_page +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8375d79d ida_destroy +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 0x83d2da17 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x83d70683 edma_start +EXPORT_SYMBOL vmlinux 0x83e454fb sk_stop_timer +EXPORT_SYMBOL vmlinux 0x83f0f05d pci_assign_resource +EXPORT_SYMBOL vmlinux 0x84144416 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x844323c6 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x84959594 inet6_bind +EXPORT_SYMBOL vmlinux 0x84ad84a7 param_array_ops +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bf39ca dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x84c5dd45 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x84e44160 dev_change_flags +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8525c2c7 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x8534cde3 down_write_trylock +EXPORT_SYMBOL vmlinux 0x8550aa75 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x855147bb reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x8558ba50 input_open_device +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 0x8587c6ae rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x85890f20 vme_irq_free +EXPORT_SYMBOL vmlinux 0x858e7d6a kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b601df dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x85c2805c dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x85d8c283 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e0026d snd_ctl_add +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85fbd9f2 dquot_acquire +EXPORT_SYMBOL vmlinux 0x86069d9e __ps2_command +EXPORT_SYMBOL vmlinux 0x860f1e76 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x86332625 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x8638b184 d_alloc_name +EXPORT_SYMBOL vmlinux 0x864ffb00 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86860195 dss_feat_get_supported_displays +EXPORT_SYMBOL vmlinux 0x868851b8 sk_dst_check +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a43ee2 netdev_printk +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86a5d1b0 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x86ec9479 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87003790 fence_init +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8720483b qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x8725caa3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x87328452 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x87384d97 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x873d9ca2 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x873e3c5f ioremap_wc +EXPORT_SYMBOL vmlinux 0x875ffc8e get_gendisk +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8793a911 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x87ad8768 dquot_transfer +EXPORT_SYMBOL vmlinux 0x87dcd34c param_get_ullong +EXPORT_SYMBOL vmlinux 0x87e1a11b inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x87ee0606 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x8806e3b3 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x8820f269 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x88347728 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x8836880b twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x88520a47 of_match_node +EXPORT_SYMBOL vmlinux 0x8856b69a blk_start_queue +EXPORT_SYMBOL vmlinux 0x886bc76f mempool_resize +EXPORT_SYMBOL vmlinux 0x8871fec1 phy_find_first +EXPORT_SYMBOL vmlinux 0x889588b4 inet_add_offload +EXPORT_SYMBOL vmlinux 0x88a755d1 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88f6a8f1 dev_get_stats +EXPORT_SYMBOL vmlinux 0x8901183f dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x890f6100 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x890ff072 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0x891c9f5f __devm_release_region +EXPORT_SYMBOL vmlinux 0x89302b70 sync_filesystem +EXPORT_SYMBOL vmlinux 0x89335d92 param_ops_uint +EXPORT_SYMBOL vmlinux 0x893fa693 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x8962980e get_disk +EXPORT_SYMBOL vmlinux 0x8967820a pci_find_capability +EXPORT_SYMBOL vmlinux 0x89abd6d4 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b5cc2a submit_bio_wait +EXPORT_SYMBOL vmlinux 0x89b6ae5d blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x89b79908 scsi_execute +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a261fb1 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x8a3c8e8a fbcon_rotate_ud +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 0x8a7a7253 read_code +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a805fa2 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x8a831c7d __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x8a843062 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x8a91a66c build_skb +EXPORT_SYMBOL vmlinux 0x8a93cab5 unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x8a960a98 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9b5260 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x8aa019be pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x8ab25cbd n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x8acfc669 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x8af9dd1c omapdss_find_output_from_display +EXPORT_SYMBOL vmlinux 0x8afc625b send_sig +EXPORT_SYMBOL vmlinux 0x8b26cf6b jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x8b2dc321 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b3c1377 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b601af1 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6640d0 setup_new_exec +EXPORT_SYMBOL vmlinux 0x8b7326e2 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x8b77db93 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8a5704 do_splice_to +EXPORT_SYMBOL vmlinux 0x8b9633c4 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x8bdd5d87 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x8beeefc6 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x8bf4de8c fddi_type_trans +EXPORT_SYMBOL vmlinux 0x8c0a2d93 igrab +EXPORT_SYMBOL vmlinux 0x8c43bf7e pci_map_rom +EXPORT_SYMBOL vmlinux 0x8c595058 cdev_init +EXPORT_SYMBOL vmlinux 0x8c5d973d tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x8c5df721 skb_push +EXPORT_SYMBOL vmlinux 0x8c60bb68 input_register_device +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c705b8c edma_clean_channel +EXPORT_SYMBOL vmlinux 0x8c8676b0 phy_connect +EXPORT_SYMBOL vmlinux 0x8c8f9001 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x8c929968 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x8ca87860 truncate_setsize +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8ce3902a skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x8cea0ec4 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x8cf8c271 da903x_query_status +EXPORT_SYMBOL vmlinux 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8d134c39 idr_replace +EXPORT_SYMBOL vmlinux 0x8d325332 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x8d369caa scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d627df4 jbd2_journal_update_sb_errno +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 0x8d77d433 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x8d7da207 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x8d7fdc0c sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8d9a1215 kmap_to_page +EXPORT_SYMBOL vmlinux 0x8da01265 md_register_thread +EXPORT_SYMBOL vmlinux 0x8da607fa generic_listxattr +EXPORT_SYMBOL vmlinux 0x8dbae14d sk_capable +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8dd4390f blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8df5e3d1 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x8e005d27 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x8e015d45 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x8e050cae param_get_string +EXPORT_SYMBOL vmlinux 0x8e24cfc8 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x8e2b8819 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x8e2e5600 security_path_chmod +EXPORT_SYMBOL vmlinux 0x8e3ea291 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x8e81f02d elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8ea64c1b dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x8ebd9972 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x8ec8d7c5 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x8ed3c70c __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x8ed3f0d6 skb_pad +EXPORT_SYMBOL vmlinux 0x8edbc385 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x8f244882 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x8f2bd007 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x8f338386 d_tmpfile +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f7496de tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x8f777846 shdma_chan_remove +EXPORT_SYMBOL vmlinux 0x8f90c3bb writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8ff8c518 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90399d73 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x906ceb39 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x907c9461 file_open_root +EXPORT_SYMBOL vmlinux 0x907cb903 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x909b8f7a blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x90a6aa2e iget5_locked +EXPORT_SYMBOL vmlinux 0x90b047e9 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x9132c59f wait_iff_congested +EXPORT_SYMBOL vmlinux 0x91463828 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914950cd tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x9165626e ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x9167fa09 do_splice_from +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917d7ee7 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x918febe3 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91afc62a user_path_at_empty +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91e3c395 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x91f570c8 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x91f5fb8e pci_release_regions +EXPORT_SYMBOL vmlinux 0x9212ccff dss_install_mgr_ops +EXPORT_SYMBOL vmlinux 0x9219316e simple_unlink +EXPORT_SYMBOL vmlinux 0x92361661 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x923835b3 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9252c532 snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x9257dc94 nand_correct_data +EXPORT_SYMBOL vmlinux 0x9263b4a2 set_groups +EXPORT_SYMBOL vmlinux 0x926457cf pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x926a4088 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x926a492d scsi_device_get +EXPORT_SYMBOL vmlinux 0x927a6e88 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x927b0af6 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x92828556 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x9283de0e __pci_register_driver +EXPORT_SYMBOL vmlinux 0x92a52828 fsync_bdev +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b04397 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92ec5d1b dispc_mgr_enable +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9300368f file_remove_privs +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9318f291 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9339b47f tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x9345d847 security_path_link +EXPORT_SYMBOL vmlinux 0x93552305 serio_open +EXPORT_SYMBOL vmlinux 0x936fc1cb skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9383cdc3 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x93963a85 dss_feat_get_num_mgrs +EXPORT_SYMBOL vmlinux 0x93b15fc9 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c3632f scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x93d17024 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x93d22990 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x93d44c76 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x93d54c2f snd_power_wait +EXPORT_SYMBOL vmlinux 0x93da46f0 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x93e1f050 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x93ed0f45 netdev_crit +EXPORT_SYMBOL vmlinux 0x93f36e83 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93fdd247 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x941e4cbe generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x9427f4a9 get_phy_device +EXPORT_SYMBOL vmlinux 0x9427f6dd of_get_property +EXPORT_SYMBOL vmlinux 0x946efbfa __wait_on_bit +EXPORT_SYMBOL vmlinux 0x9475f0df netif_carrier_off +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a8c6a4 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x94c21c1b dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x94c8aca3 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94d67c71 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x94d983c2 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x94e4603f make_kprojid +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94f5a5b1 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x94f93970 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x950aebc5 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x951013b6 omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0x953a928d nand_scan +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954eea2f of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x95610e45 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x957cfebf tty_port_open +EXPORT_SYMBOL vmlinux 0x9583240b dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x9590c2ff uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x95a5ae3c __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95dcb888 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x95ee072b block_write_end +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x961299fd gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x9645c8f9 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x966c3e52 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x96838a91 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x968deedd pipe_lock +EXPORT_SYMBOL vmlinux 0x96978649 acl_by_type +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96f6001b pci_pme_capable +EXPORT_SYMBOL vmlinux 0x96fa209f dispc_ovl_check +EXPORT_SYMBOL vmlinux 0x97145aab truncate_pagecache +EXPORT_SYMBOL vmlinux 0x971984c3 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x971adf64 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x971f456d dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9735a316 dget_parent +EXPORT_SYMBOL vmlinux 0x97540ff8 generic_getxattr +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9755fadb udp_del_offload +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x9793c93a dispc_mgr_setup +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979cf31d pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x97ac57a2 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x97af53a2 mutex_lock +EXPORT_SYMBOL vmlinux 0x97b049d8 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x97b82def gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x97bce774 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x97c92cd2 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x97e517ef __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x97ec26ae kset_register +EXPORT_SYMBOL vmlinux 0x97f3ceda ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x97f7d5c2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x97f99fd4 dispc_ovl_setup +EXPORT_SYMBOL vmlinux 0x97fcc671 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x97ff9f2e down_read +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x981c36c0 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x982e340c linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x986f54b4 skb_make_writable +EXPORT_SYMBOL vmlinux 0x98720d52 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x98814223 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x98d35c3a i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x98d5b4e2 shdma_reset +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98ec8c63 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x98ef8991 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x98f7f8fb neigh_app_ns +EXPORT_SYMBOL vmlinux 0x9909021d freezing_slow_path +EXPORT_SYMBOL vmlinux 0x990d6891 netdev_err +EXPORT_SYMBOL vmlinux 0x993000e4 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993fa3f5 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x99486851 fb_get_mode +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9955ce0d __get_user_pages +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 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 0x99cf9968 bdi_register +EXPORT_SYMBOL vmlinux 0x99d223fd tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x99e0a24b __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3c43b6 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x9a42c141 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x9a4dbf9f neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x9a522156 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x9a5e9c83 devm_ioremap +EXPORT_SYMBOL vmlinux 0x9a623142 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a922f46 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x9a953d3d pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x9ac21fe1 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x9ae0868d tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aee53cf pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x9aff3476 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x9b21426e tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x9b2ce5b7 iget_locked +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b55472f eth_header_parse +EXPORT_SYMBOL vmlinux 0x9b653969 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b6f06cb dquot_disable +EXPORT_SYMBOL vmlinux 0x9b707239 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x9b8ef1f9 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +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 0x9bf2fb71 snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4ca4d8 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x9c60bd8d simple_rename +EXPORT_SYMBOL vmlinux 0x9c7088b2 skb_insert +EXPORT_SYMBOL vmlinux 0x9c786f3f jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x9c7a4028 blkdev_fsync +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 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9cd2702f sk_receive_skb +EXPORT_SYMBOL vmlinux 0x9cf4d97d mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x9d08df59 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d18f8db of_phy_find_device +EXPORT_SYMBOL vmlinux 0x9d345a08 of_match_device +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d51dd71 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d8d66be posix_lock_file +EXPORT_SYMBOL vmlinux 0x9d9b737d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x9da26b8d pci_find_bus +EXPORT_SYMBOL vmlinux 0x9daa1948 read_dev_sector +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 0x9e12ffe1 key_alloc +EXPORT_SYMBOL vmlinux 0x9e13b89c scsi_print_command +EXPORT_SYMBOL vmlinux 0x9e1d1d9a eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x9e22097a fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9e2ec7df mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x9e344bf6 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x9e3a5070 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x9e440565 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5f2115 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e634db0 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e96f3a2 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x9e99fb54 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x9ea90d6c sock_no_mmap +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9eceb2bb vga_put +EXPORT_SYMBOL vmlinux 0x9ee31e64 skb_dequeue +EXPORT_SYMBOL vmlinux 0x9ef63188 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x9f0ad95d __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x9f328448 __quota_error +EXPORT_SYMBOL vmlinux 0x9f38905a snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f6fce79 napi_get_frags +EXPORT_SYMBOL vmlinux 0x9f7b4e3f padata_do_serial +EXPORT_SYMBOL vmlinux 0x9f823cea dispc_mgr_is_enabled +EXPORT_SYMBOL vmlinux 0x9f878b76 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f985543 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe11f85 try_module_get +EXPORT_SYMBOL vmlinux 0x9fe92e7a key_validate +EXPORT_SYMBOL vmlinux 0x9fefd1d3 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00a2306 dev_notice +EXPORT_SYMBOL vmlinux 0xa00ae667 d_drop +EXPORT_SYMBOL vmlinux 0xa0139579 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xa0339805 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0xa03d75e4 pci_get_slot +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa046f869 __inet_hash +EXPORT_SYMBOL vmlinux 0xa047b62f param_ops_long +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05adbb1 snd_card_register +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa068dbec vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07126b6 eth_gro_receive +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08a1f9b blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0d8316e msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0xa0da9903 dquot_writeback_dquots +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 0xa0fd4912 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xa1046bb0 inet6_protos +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1286bea tcp_sendpage +EXPORT_SYMBOL vmlinux 0xa13ebffe poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa168d333 path_put +EXPORT_SYMBOL vmlinux 0xa192813b idr_for_each +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d2e896 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1d5a200 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xa1d7f4e0 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa1fd7398 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xa200e5b0 proto_unregister +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa219a25b nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xa21b5e8a lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xa22077a9 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xa2643c3a param_ops_ushort +EXPORT_SYMBOL vmlinux 0xa264e4bc input_set_capability +EXPORT_SYMBOL vmlinux 0xa27ad932 __inode_permission +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa29a2461 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xa2a28d40 migrate_page +EXPORT_SYMBOL vmlinux 0xa2a51b63 bio_put +EXPORT_SYMBOL vmlinux 0xa2afdb8f unlock_page +EXPORT_SYMBOL vmlinux 0xa2c50c25 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xa2ca96c3 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xa2de7377 dev_deactivate +EXPORT_SYMBOL vmlinux 0xa2eada94 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xa2f01aac irq_set_chip +EXPORT_SYMBOL vmlinux 0xa2f8d244 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xa2fd0a8b xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xa3141c49 __frontswap_store +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa31e44ba edma_free_channel +EXPORT_SYMBOL vmlinux 0xa31e9a47 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xa3309a45 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xa333d76e fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xa334fb22 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0xa3369628 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa33a1f7a input_free_device +EXPORT_SYMBOL vmlinux 0xa343e886 blk_complete_request +EXPORT_SYMBOL vmlinux 0xa35444e4 dispc_write_irqenable +EXPORT_SYMBOL vmlinux 0xa354e7d7 import_iovec +EXPORT_SYMBOL vmlinux 0xa355b5fa inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xa36f5d02 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa399ae9c proc_set_user +EXPORT_SYMBOL vmlinux 0xa39a123a fence_add_callback +EXPORT_SYMBOL vmlinux 0xa3a6cedd dst_destroy +EXPORT_SYMBOL vmlinux 0xa3aa28f4 vme_bus_type +EXPORT_SYMBOL vmlinux 0xa3c3efcb tty_port_close_start +EXPORT_SYMBOL vmlinux 0xa3c502c2 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xa3cf700e snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xa3dd4983 vfs_rename +EXPORT_SYMBOL vmlinux 0xa4131001 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa41d53ae loop_backing_file +EXPORT_SYMBOL vmlinux 0xa434c684 iov_iter_advance +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43ff5b0 sk_stream_error +EXPORT_SYMBOL vmlinux 0xa44f77c5 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa470a8d2 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xa4722cfc i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xa480028e genphy_read_status +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4c41762 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xa4e9ac96 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xa4ff0bc5 ptp_clock_event +EXPORT_SYMBOL vmlinux 0xa511f6be tcp_parse_options +EXPORT_SYMBOL vmlinux 0xa51dd993 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xa5337e3a netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xa541a9db snd_jack_set_key +EXPORT_SYMBOL vmlinux 0xa5426458 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56829ef inet6_getname +EXPORT_SYMBOL vmlinux 0xa57b2b0c elevator_init +EXPORT_SYMBOL vmlinux 0xa58196a8 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xa58f7ba0 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa593f082 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59c181a of_get_address +EXPORT_SYMBOL vmlinux 0xa5ad2373 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xa5af5adb kill_anon_super +EXPORT_SYMBOL vmlinux 0xa5b19a57 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xa5c44aa3 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xa5cc7b86 page_put_link +EXPORT_SYMBOL vmlinux 0xa5d467f2 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xa5df2552 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xa5e1eac9 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xa6033b37 audit_log +EXPORT_SYMBOL vmlinux 0xa609dff6 sock_no_accept +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa62ee8e8 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xa6313b53 sock_no_bind +EXPORT_SYMBOL vmlinux 0xa63d4593 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6499bf8 dst_discard_sk +EXPORT_SYMBOL vmlinux 0xa6564abe unlock_new_inode +EXPORT_SYMBOL vmlinux 0xa67374f0 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6837b45 simple_setattr +EXPORT_SYMBOL vmlinux 0xa6851893 pcie_set_mps +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 0xa6b81ed0 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6ce2fde simple_pin_fs +EXPORT_SYMBOL vmlinux 0xa6d1e526 done_path_create +EXPORT_SYMBOL vmlinux 0xa6f2472b input_register_handle +EXPORT_SYMBOL vmlinux 0xa6fa721b vga_get +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa715a7f1 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xa71a8afb dump_emit +EXPORT_SYMBOL vmlinux 0xa7340a82 ip_defrag +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa759f2c1 param_ops_string +EXPORT_SYMBOL vmlinux 0xa7634725 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xa76664ec make_kgid +EXPORT_SYMBOL vmlinux 0xa767ffc5 I_BDEV +EXPORT_SYMBOL vmlinux 0xa768a4e0 fget +EXPORT_SYMBOL vmlinux 0xa76aa87c xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xa78bc0f8 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xa78c736d __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xa7933c2e elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xa79ef32d irq_to_desc +EXPORT_SYMBOL vmlinux 0xa7a46520 unlock_rename +EXPORT_SYMBOL vmlinux 0xa7b32d8d d_walk +EXPORT_SYMBOL vmlinux 0xa7e45756 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xa7f18fdf ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa83fb0ee try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84bcea6 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xa8535045 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8987061 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8ad410d security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xa8c82ef9 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xa8ddd833 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90f8056 dup_iter +EXPORT_SYMBOL vmlinux 0xa910e138 bdi_destroy +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa91a4440 udp_proc_register +EXPORT_SYMBOL vmlinux 0xa9256359 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xa927239c blk_execute_rq +EXPORT_SYMBOL vmlinux 0xa95ebaa0 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9773f98 vme_slave_request +EXPORT_SYMBOL vmlinux 0xa9967636 search_binary_handler +EXPORT_SYMBOL vmlinux 0xa9aa839f tcf_action_exec +EXPORT_SYMBOL vmlinux 0xa9ad5378 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9ccf57b inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xa9d2f3f7 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xa9e48b6a unregister_key_type +EXPORT_SYMBOL vmlinux 0xaa01a35a tty_free_termios +EXPORT_SYMBOL vmlinux 0xaa140ea4 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xaa195d23 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xaa218d2d get_unmapped_area +EXPORT_SYMBOL vmlinux 0xaa2e0852 ping_prot +EXPORT_SYMBOL vmlinux 0xaa3247c3 iterate_fd +EXPORT_SYMBOL vmlinux 0xaa4cec56 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xaa635065 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xaa677d4c of_root +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6a88fe kfree_skb +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa959dd3 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafc804a get_io_context +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab06f0df xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xab26ee72 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xab59a63f dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab666f2c blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab71d339 param_get_charp +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab789511 cad_pid +EXPORT_SYMBOL vmlinux 0xab9ae986 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xab9c92f8 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xab9ef4a9 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabb9bfd6 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xabbdf957 amba_release_regions +EXPORT_SYMBOL vmlinux 0xabbf01e1 pci_set_master +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabceb950 pci_bus_get +EXPORT_SYMBOL vmlinux 0xabd48368 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xabebee2d skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xabf50416 seq_puts +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0d31ec elv_rb_del +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac685146 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xac6a39b9 cdrom_release +EXPORT_SYMBOL vmlinux 0xac789643 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xac7b6c8d clear_nlink +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc82c5d thaw_super +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccdb7c0 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdbd4d2 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf8a7e6 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xad029b60 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad248609 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xad2bb869 redraw_screen +EXPORT_SYMBOL vmlinux 0xad53eb64 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xad5e1158 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xad5f05ae amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xad67e3c6 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xad767edb inode_dio_wait +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada639b1 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xadc1ec80 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xadccaab5 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xadd47e82 kobject_del +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadfb6db1 key_put +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xadfeb39b tcp_prot +EXPORT_SYMBOL vmlinux 0xae09baaa inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xae10a534 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xae5c7250 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xae64d60b generic_permission +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae79c8c1 iterate_dir +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xaeb11e14 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaeda1160 inet_select_addr +EXPORT_SYMBOL vmlinux 0xaee254c5 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xaeea58be inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xaf319ee2 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf46b79d blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf5ba20c input_set_keycode +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xafa67c1b padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xafcb4daf phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xafcf9d56 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xafdb0be3 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xafdc70c7 kern_path +EXPORT_SYMBOL vmlinux 0xafedf06f snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0xaff5a9a0 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xaff99f26 mdiobus_free +EXPORT_SYMBOL vmlinux 0xaffc80e7 vfs_llseek +EXPORT_SYMBOL vmlinux 0xaffff08e xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xb0072561 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xb00a8191 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xb02e42e3 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xb0345295 notify_change +EXPORT_SYMBOL vmlinux 0xb034d66a swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xb04cf0fe lg_local_unlock +EXPORT_SYMBOL vmlinux 0xb05f4923 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb066b530 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xb07ea83e scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xb07f6da7 nobh_write_end +EXPORT_SYMBOL vmlinux 0xb0a03458 udp_poll +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a25994 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xb0a7003b vfs_rmdir +EXPORT_SYMBOL vmlinux 0xb0b6f227 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xb0c3ddab netlink_set_err +EXPORT_SYMBOL vmlinux 0xb0cfbb5b blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xb0de35a1 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e37c79 dev_uc_del +EXPORT_SYMBOL vmlinux 0xb0e3d943 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xb0ecb60c elevator_change +EXPORT_SYMBOL vmlinux 0xb1062ce8 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xb10a4e47 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb158f468 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb163880e inet_shutdown +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16960a1 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1ad6dc6 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xb1b5abf0 lookup_bdev +EXPORT_SYMBOL vmlinux 0xb1b89f58 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xb1ba97c1 pci_iomap +EXPORT_SYMBOL vmlinux 0xb1c1837c security_file_permission +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 0xb1da6da8 devm_iounmap +EXPORT_SYMBOL vmlinux 0xb1e46a00 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xb1ed26da inetdev_by_index +EXPORT_SYMBOL vmlinux 0xb1f996ed register_gifconf +EXPORT_SYMBOL vmlinux 0xb1fe8a66 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xb2291d51 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xb230af41 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0xb2433fc2 set_wb_congested +EXPORT_SYMBOL vmlinux 0xb2442f02 vfs_create +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb286cf41 dev_mc_init +EXPORT_SYMBOL vmlinux 0xb2b1b4f9 phy_start_interrupts +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 0xb2fbe264 sock_from_file +EXPORT_SYMBOL vmlinux 0xb313d900 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb3190ab3 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xb31fa0d8 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xb32665b3 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb33c351f ioremap_cache +EXPORT_SYMBOL vmlinux 0xb358ff47 down_read_trylock +EXPORT_SYMBOL vmlinux 0xb36933f0 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xb3697f2c devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xb36a2da5 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xb37c3693 devm_free_irq +EXPORT_SYMBOL vmlinux 0xb383e216 dma_supported +EXPORT_SYMBOL vmlinux 0xb3849c6a truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xb3851a6f xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xb38972e1 param_get_uint +EXPORT_SYMBOL vmlinux 0xb3aea230 page_symlink +EXPORT_SYMBOL vmlinux 0xb3b3b8ac snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0xb3ced251 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xb3d1f296 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3effdf0 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb41e9a21 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb4457dcc mmc_free_host +EXPORT_SYMBOL vmlinux 0xb450481d seq_path +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb463adf7 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb48c9c40 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xb49db997 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xb4a0900e dentry_unhash +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4d341e6 init_special_inode +EXPORT_SYMBOL vmlinux 0xb4ecc54d blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xb50c26ea eth_gro_complete +EXPORT_SYMBOL vmlinux 0xb50eea87 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb5338b5d snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0xb539e82b inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xb54f96ef netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xb5642793 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0xb5684e29 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5885cca zero_fill_bio +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5aef648 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xb5b39192 sock_no_listen +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d500d8 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5dc7a90 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xb5e45b9a wireless_spy_update +EXPORT_SYMBOL vmlinux 0xb5e7b168 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xb5f33753 single_release +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6366535 mount_nodev +EXPORT_SYMBOL vmlinux 0xb64c186e nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xb6736dcb genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb682baec register_netdev +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68bc48f __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6d3daf1 qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xb727f913 get_empty_filp +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb76ce551 simple_rmdir +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7720bc3 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xb79da16c peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a9592e scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xb7b6677a single_open +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7d06ff6 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xb7fd57a2 nf_reinject +EXPORT_SYMBOL vmlinux 0xb803e47b _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb835e122 snd_timer_new +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb83b1663 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xb856e4a7 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xb861d7c6 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xb863dd5a mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xb870d434 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87a7b8a fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xb87da410 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb899dd1d tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xb89ff2ec dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xb8ce48b2 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xb8dc597c blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f01502 __register_chrdev +EXPORT_SYMBOL vmlinux 0xb8ffc02d seq_release_private +EXPORT_SYMBOL vmlinux 0xb908ea82 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xb9160420 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xb92737f7 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xb943f455 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb98a4a99 neigh_table_init +EXPORT_SYMBOL vmlinux 0xb99cb0f1 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9a9044b nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9ba4069 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xb9c9af49 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xb9ce586b param_set_short +EXPORT_SYMBOL vmlinux 0xb9d47b28 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba0221b2 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xba062538 block_commit_write +EXPORT_SYMBOL vmlinux 0xba196e27 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xba40c473 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4d930a down_write +EXPORT_SYMBOL vmlinux 0xba5554f5 __put_cred +EXPORT_SYMBOL vmlinux 0xba55d365 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xba5bbedb nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0xba7eca70 may_umount +EXPORT_SYMBOL vmlinux 0xba823717 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xba88bca8 set_binfmt +EXPORT_SYMBOL vmlinux 0xba9ca3ca cont_write_begin +EXPORT_SYMBOL vmlinux 0xbab54a4c dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xbac19a1b sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbac7d6ad sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xbace5f6b dss_mgr_disconnect +EXPORT_SYMBOL vmlinux 0xbad918c9 bio_advance +EXPORT_SYMBOL vmlinux 0xbaf13c6e generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL vmlinux 0xbb0460b3 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb05a3f3 send_sig_info +EXPORT_SYMBOL vmlinux 0xbb2abfeb snd_info_free_entry +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4211db __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xbb4480d5 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xbb449711 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6095b0 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0xbb6deb9d nf_log_packet +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb768fcc kernel_getpeername +EXPORT_SYMBOL vmlinux 0xbb795941 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xbb7f7031 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xbb8fa395 serio_rescan +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbc31fe1 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xbbe92b03 vfs_readf +EXPORT_SYMBOL vmlinux 0xbbf5d05a dev_addr_del +EXPORT_SYMBOL vmlinux 0xbbff7790 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc2e4e81 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xbc3b9eee pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xbc540d63 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xbc9b04dc dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xbca8a171 __invalidate_device +EXPORT_SYMBOL vmlinux 0xbcac2db1 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd06eff pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xbce12c7f tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xbce1ae35 inet_ioctl +EXPORT_SYMBOL vmlinux 0xbcee033a devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xbd17c6de gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xbd1a902a dump_skip +EXPORT_SYMBOL vmlinux 0xbd2ca0af blk_get_queue +EXPORT_SYMBOL vmlinux 0xbd391053 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xbd394e22 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xbd732259 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xbd85f76f sockfd_lookup +EXPORT_SYMBOL vmlinux 0xbd8e6356 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdb488ed sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xbdc3b64b ptp_clock_index +EXPORT_SYMBOL vmlinux 0xbdd3e758 inet_release +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +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 0xbe436624 snd_cards +EXPORT_SYMBOL vmlinux 0xbe5f3325 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xbe7bec2e padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xbe7c844d padata_add_cpu +EXPORT_SYMBOL vmlinux 0xbe8860a8 dispc_mgr_go_busy +EXPORT_SYMBOL vmlinux 0xbe8fb90c dispc_mgr_get_framedone_irq +EXPORT_SYMBOL vmlinux 0xbea6da5d xfrm_register_type +EXPORT_SYMBOL vmlinux 0xbec80f38 snd_timer_close +EXPORT_SYMBOL vmlinux 0xbed8e180 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xbee2d204 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0eb7f6 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xbf316790 console_start +EXPORT_SYMBOL vmlinux 0xbf3d1edb blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xbf3f2d0a tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xbf5bf32c skb_clone_sk +EXPORT_SYMBOL vmlinux 0xbf600b24 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9318f8 dev_set_group +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa359f2 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xbfb6972a tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xbfcfa58d md_reload_sb +EXPORT_SYMBOL vmlinux 0xbfe5a348 phy_attach +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc00b2b08 fget_raw +EXPORT_SYMBOL vmlinux 0xc0363474 ptp_find_pin +EXPORT_SYMBOL vmlinux 0xc04d404c uart_register_driver +EXPORT_SYMBOL vmlinux 0xc0502251 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc081aa48 dev_alert +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc087cd4e generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc08c0713 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xc0902475 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xc0947768 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xc09d09a4 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0ac5191 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xc0b03034 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xc0b2cdc7 account_page_redirty +EXPORT_SYMBOL vmlinux 0xc0b6d6f5 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xc0cf4130 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xc0d20fd5 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xc0e6e5e1 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xc0eb78ba __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xc10379d8 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xc10663ed dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xc1130402 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1304a16 __vfs_read +EXPORT_SYMBOL vmlinux 0xc15326f8 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xc1611742 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xc17be114 edma_assign_channel_eventq +EXPORT_SYMBOL vmlinux 0xc191107d set_cached_acl +EXPORT_SYMBOL vmlinux 0xc1ba019a sg_miter_stop +EXPORT_SYMBOL vmlinux 0xc1ca8ee3 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1ef5f41 snd_timer_notify +EXPORT_SYMBOL vmlinux 0xc200576f ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xc21321f9 of_translate_address +EXPORT_SYMBOL vmlinux 0xc215c324 padata_free +EXPORT_SYMBOL vmlinux 0xc2256830 genphy_update_link +EXPORT_SYMBOL vmlinux 0xc229e1e1 poll_initwait +EXPORT_SYMBOL vmlinux 0xc233c10b ip6_frag_match +EXPORT_SYMBOL vmlinux 0xc2568019 udp_disconnect +EXPORT_SYMBOL vmlinux 0xc26ddf21 default_llseek +EXPORT_SYMBOL vmlinux 0xc27a8d9a get_thermal_instance +EXPORT_SYMBOL vmlinux 0xc2828a8d nf_getsockopt +EXPORT_SYMBOL vmlinux 0xc28aee5d nf_register_hooks +EXPORT_SYMBOL vmlinux 0xc28baae5 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xc28e59d8 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b183bd nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xc2b80fed brioctl_set +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 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc303e352 scsi_device_put +EXPORT_SYMBOL vmlinux 0xc3065951 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xc333e0af dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xc3585b55 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc364d955 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xc379c6b4 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xc37cad7d __nlmsg_put +EXPORT_SYMBOL vmlinux 0xc3962430 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xc3a39a9c max8925_reg_write +EXPORT_SYMBOL vmlinux 0xc3ab5bd5 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d1fa4d edma_alloc_cont_slots +EXPORT_SYMBOL vmlinux 0xc3dc81b6 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xc3f6837c snd_device_free +EXPORT_SYMBOL vmlinux 0xc3fe337f blk_free_tags +EXPORT_SYMBOL vmlinux 0xc4104243 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xc41b20e4 give_up_console +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc44bd82b xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xc4874c29 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xc497f7d7 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49dea6a dev_crit +EXPORT_SYMBOL vmlinux 0xc4bdaf15 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xc4bfa4fe simple_readpage +EXPORT_SYMBOL vmlinux 0xc4da8197 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0xc5227fd4 follow_up +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc537bf98 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0xc53bc6dc snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0xc54082e3 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xc57f51b0 dump_align +EXPORT_SYMBOL vmlinux 0xc581c657 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xc5869cb4 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xc59838f6 inet_listen +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5b1b0e0 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xc5c04d47 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xc5c9f6db inet_del_offload +EXPORT_SYMBOL vmlinux 0xc5cba543 tty_throttle +EXPORT_SYMBOL vmlinux 0xc5d5d870 dquot_destroy +EXPORT_SYMBOL vmlinux 0xc5dce473 d_add_ci +EXPORT_SYMBOL vmlinux 0xc5e35028 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xc5ecf912 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xc5f762ba sock_release +EXPORT_SYMBOL vmlinux 0xc5f81d5a mmc_erase +EXPORT_SYMBOL vmlinux 0xc5fba414 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc5ffa470 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xc601f10c neigh_parms_release +EXPORT_SYMBOL vmlinux 0xc60c77bc vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xc626d519 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6397cc5 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xc64a9b9c dma_find_channel +EXPORT_SYMBOL vmlinux 0xc6505a6d pci_match_id +EXPORT_SYMBOL vmlinux 0xc652e95c seq_vprintf +EXPORT_SYMBOL vmlinux 0xc66fa6a6 ida_remove +EXPORT_SYMBOL vmlinux 0xc67413c3 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xc688ca6f fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xc6957835 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xc6aebffe iput +EXPORT_SYMBOL vmlinux 0xc6c24e9b snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0xc6cbbc25 bio_reset +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d542b9 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xc6de77b4 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xc6e59391 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xc6e6f0ea elv_add_request +EXPORT_SYMBOL vmlinux 0xc6f4d7b5 blk_get_request +EXPORT_SYMBOL vmlinux 0xc6fed849 fs_bio_set +EXPORT_SYMBOL vmlinux 0xc7062f4e mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc726da73 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7354e9e bdevname +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc757f623 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xc765b13e dm_register_target +EXPORT_SYMBOL vmlinux 0xc76ee67f fasync_helper +EXPORT_SYMBOL vmlinux 0xc781a8bf kmem_cache_size +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 0xc7ab4086 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc7bb3e0d nf_log_set +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7eb9f22 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f40e28 end_page_writeback +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 0xc84aab63 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xc85047d9 put_io_context +EXPORT_SYMBOL vmlinux 0xc85ff0ab d_path +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc877a09e tty_vhangup +EXPORT_SYMBOL vmlinux 0xc878a9c0 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc87b45ba input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc888fd00 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897259c napi_gro_flush +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b432b0 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bd88d7 netdev_features_change +EXPORT_SYMBOL vmlinux 0xc8bf9879 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xc8cead6f tty_hangup +EXPORT_SYMBOL vmlinux 0xc8f75bb7 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xc8fc8987 tcp_child_process +EXPORT_SYMBOL vmlinux 0xc905baf9 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91e45f4 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0xc92cef9d may_umount_tree +EXPORT_SYMBOL vmlinux 0xc93786ea fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xc93a2f4d edma_free_cont_slots +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc9767d06 snd_device_new +EXPORT_SYMBOL vmlinux 0xc98fe29d dev_uc_add +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9c1ae26 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xc9d634cb dm_get_device +EXPORT_SYMBOL vmlinux 0xc9e20bed end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xc9ed2de2 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xc9f0bc43 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1d56e8 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xca2f0a51 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xca5742c5 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xca88e9ea pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xca89cb34 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xca8c41b5 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaae12b2 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xcab51691 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xcabf1013 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xcaddbd7e edma_set_dest_index +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb16abd0 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xcb2b325d module_layout +EXPORT_SYMBOL vmlinux 0xcb3793a7 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xcb3e7ce8 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb4b3036 padata_stop +EXPORT_SYMBOL vmlinux 0xcb57febf iterate_mounts +EXPORT_SYMBOL vmlinux 0xcbb32f95 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc31761 kunmap_high +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd423f7 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xcbdec447 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbee6439 ida_simple_get +EXPORT_SYMBOL vmlinux 0xcbf7c352 framebuffer_release +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc29860f snd_card_set_id +EXPORT_SYMBOL vmlinux 0xcc470f22 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6430f6 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xcc7bad15 vmap +EXPORT_SYMBOL vmlinux 0xcc87fb9f nd_btt_probe +EXPORT_SYMBOL vmlinux 0xcc8b3773 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xcc997889 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xcca1492b snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcccc7a3f snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0xcccdc0fd register_netdevice +EXPORT_SYMBOL vmlinux 0xccd44999 pcim_iomap +EXPORT_SYMBOL vmlinux 0xcce6b09d serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xcced6ad1 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd1ca801 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd32a473 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xcd49564e serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xcd54b2a2 key_link +EXPORT_SYMBOL vmlinux 0xcd5a49ed module_refcount +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd659e93 snd_ctl_replace +EXPORT_SYMBOL vmlinux 0xcd74ccc2 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xcd7c8d08 omap_dss_find_output +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd9ff352 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc49e19 lockref_get +EXPORT_SYMBOL vmlinux 0xcdd281e4 mount_subtree +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce73f2c6 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xce77f5cd xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xcea2f77e napi_disable +EXPORT_SYMBOL vmlinux 0xcea3d4a8 dm_io +EXPORT_SYMBOL vmlinux 0xcea7f8f4 tty_mutex +EXPORT_SYMBOL vmlinux 0xceaa1505 blk_make_request +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceba2464 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xcebf637b inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xcecc2387 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf015bc3 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xcf0eea46 softnet_data +EXPORT_SYMBOL vmlinux 0xcf1bae50 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xcf208d27 pci_choose_state +EXPORT_SYMBOL vmlinux 0xcf2f15cd gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xcf5e7c31 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xcf7fb595 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcf95b0d8 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xcfeb4c15 bio_copy_data +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xd01484c3 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xd0272c25 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xd034105f lockref_put_return +EXPORT_SYMBOL vmlinux 0xd05c8228 noop_fsync +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd075a959 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xd0811323 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xd0828008 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0de5874 kern_path_create +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 0xd139a35b genphy_resume +EXPORT_SYMBOL vmlinux 0xd13ce570 led_update_brightness +EXPORT_SYMBOL vmlinux 0xd150bf23 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0xd15e341c pci_request_regions +EXPORT_SYMBOL vmlinux 0xd16806f5 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xd17b0102 security_path_rename +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd198b409 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xd1b73132 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xd1b98889 netif_napi_del +EXPORT_SYMBOL vmlinux 0xd1c4af80 dquot_drop +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1ca7081 tty_register_driver +EXPORT_SYMBOL vmlinux 0xd1d259bb scsi_print_result +EXPORT_SYMBOL vmlinux 0xd1d6d8a7 register_sound_dsp +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e6b0f2 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xd1e79cae fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd229a9c4 tty_check_change +EXPORT_SYMBOL vmlinux 0xd23dc23a snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0xd24281c6 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2554e52 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd257c65a fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xd257d422 fb_find_mode +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25da6bb del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xd26ac399 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xd26de4ed xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27faa9b generic_write_end +EXPORT_SYMBOL vmlinux 0xd2816d4f block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2bb7661 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e02857 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xd2e343ba nf_log_trace +EXPORT_SYMBOL vmlinux 0xd2fcf0d3 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd325356e fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xd328f91d pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xd32b492b jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xd3437fe1 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xd35c060b up_write +EXPORT_SYMBOL vmlinux 0xd3657abf fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xd36754d1 padata_start +EXPORT_SYMBOL vmlinux 0xd36f4c43 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xd37c5729 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xd37dadcf simple_transaction_release +EXPORT_SYMBOL vmlinux 0xd3ab2163 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xd3b42e4a devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xd3bbbc37 __vfs_write +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3bd6578 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xd3cd0261 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xd3d33e14 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3f7b4d2 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xd405b82f __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xd440969c i2c_register_driver +EXPORT_SYMBOL vmlinux 0xd444a556 __pagevec_release +EXPORT_SYMBOL vmlinux 0xd4509173 d_splice_alias +EXPORT_SYMBOL vmlinux 0xd460fb03 con_is_bound +EXPORT_SYMBOL vmlinux 0xd461fc0d blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd47c4fca ppp_register_channel +EXPORT_SYMBOL vmlinux 0xd4b64a23 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xd4e69918 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0xd4fa93bc fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xd4fdb406 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xd5036501 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xd5460506 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd56256d3 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xd56beb25 alloc_disk +EXPORT_SYMBOL vmlinux 0xd573bbd6 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xd5886686 bioset_free +EXPORT_SYMBOL vmlinux 0xd5991d43 phy_stop +EXPORT_SYMBOL vmlinux 0xd5a48e5e noop_llseek +EXPORT_SYMBOL vmlinux 0xd5be65bd twl6040_power +EXPORT_SYMBOL vmlinux 0xd5edcf15 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd5efbcb2 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xd5f083a3 release_pages +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd6123ec7 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd634b790 skb_unlink +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6728442 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xd687b1ab pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68b2928 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xd6954f94 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xd697e694 generic_setlease +EXPORT_SYMBOL vmlinux 0xd69dfe02 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xd6d2408c inet_del_protocol +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f65e40 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0xd71d3240 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xd72af3ce phy_disconnect +EXPORT_SYMBOL vmlinux 0xd72af461 revert_creds +EXPORT_SYMBOL vmlinux 0xd730fee6 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xd7321c6a gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xd73d21f6 ps2_init +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 0xd78fa8b6 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd79b34aa proc_symlink +EXPORT_SYMBOL vmlinux 0xd79e5cd6 proc_create_data +EXPORT_SYMBOL vmlinux 0xd7b209f7 security_mmap_file +EXPORT_SYMBOL vmlinux 0xd7b3a695 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7ec6c1c max8998_read_reg +EXPORT_SYMBOL vmlinux 0xd7ed7d0a clone_cred +EXPORT_SYMBOL vmlinux 0xd83de497 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xd8460db7 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85b8b60 sound_class +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd86a3575 path_is_under +EXPORT_SYMBOL vmlinux 0xd8755f54 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xd899364b shdma_request_irq +EXPORT_SYMBOL vmlinux 0xd8a08d94 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xd8a65847 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8cc4697 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xd8d7d51d tcp_prequeue +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd94bdaef ps2_drain +EXPORT_SYMBOL vmlinux 0xd950efba sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xd95531f0 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd96473c5 follow_pfn +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd99168f8 snd_card_file_add +EXPORT_SYMBOL vmlinux 0xd9953045 install_exec_creds +EXPORT_SYMBOL vmlinux 0xd99ad579 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xd9b6dfb2 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xd9c3e527 register_sound_special_device +EXPORT_SYMBOL vmlinux 0xd9c67875 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d409ce blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9dfb35d of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xd9f2de52 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xd9fd3717 vga_tryget +EXPORT_SYMBOL vmlinux 0xda2128c4 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda58a919 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xda5945d5 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xda5a0fef netif_device_attach +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda847a5d tcp_ioctl +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8f4634 __kfree_skb +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 0xdada4b07 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0xdaeaca61 dev_add_offload +EXPORT_SYMBOL vmlinux 0xdaef6073 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xdb082e28 dev_load +EXPORT_SYMBOL vmlinux 0xdb11174a set_security_override +EXPORT_SYMBOL vmlinux 0xdb1195cc tc_classify_compat +EXPORT_SYMBOL vmlinux 0xdb15267c blk_put_queue +EXPORT_SYMBOL vmlinux 0xdb1dbae8 snd_timer_continue +EXPORT_SYMBOL vmlinux 0xdb20483d dst_alloc +EXPORT_SYMBOL vmlinux 0xdb267057 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xdb2ecc88 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xdb326241 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb67a85d pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xdb682114 __tcf_hash_release +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 0xdb8e2ad4 mem_map +EXPORT_SYMBOL vmlinux 0xdb9283b1 kill_pgrp +EXPORT_SYMBOL vmlinux 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL vmlinux 0xdbbb8fc6 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xdbc661e7 udplite_prot +EXPORT_SYMBOL vmlinux 0xdbd2b276 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xdbee40cd i2c_release_client +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 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5c6297 videomode_to_omap_video_timings +EXPORT_SYMBOL vmlinux 0xdc83d5e5 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xdc9cb494 nand_scan_ident +EXPORT_SYMBOL vmlinux 0xdca201e1 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xdca9ed48 edma_read_slot +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcdb31bd mntput +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0da83b netlink_ack +EXPORT_SYMBOL vmlinux 0xdd0e38a6 skb_checksum +EXPORT_SYMBOL vmlinux 0xdd0e63d7 scsi_init_io +EXPORT_SYMBOL vmlinux 0xdd1a134e bprm_change_interp +EXPORT_SYMBOL vmlinux 0xdd1fc475 inet_accept +EXPORT_SYMBOL vmlinux 0xdd226fa9 __raw_readsw +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd310c0f filp_close +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd3916ac _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xdd467476 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xdd509642 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xdd63cf4c flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xddbd8188 dss_mgr_enable +EXPORT_SYMBOL vmlinux 0xddc3eddb __seq_open_private +EXPORT_SYMBOL vmlinux 0xdde0cc07 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xddf8d57f __sock_create +EXPORT_SYMBOL vmlinux 0xde069014 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xde23f428 bdput +EXPORT_SYMBOL vmlinux 0xde3579eb pcie_get_mps +EXPORT_SYMBOL vmlinux 0xde35de23 snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0xde3e3bc9 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xde55ece1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xde59d519 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xde6c6b2b sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xde7710e2 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdebcd83d eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xded56741 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdee597ea __alloc_skb +EXPORT_SYMBOL vmlinux 0xdefc6e5c inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xdeffff87 passthru_features_check +EXPORT_SYMBOL vmlinux 0xdf125773 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xdf1ea8a6 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xdf2a4fbb __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf4c5754 save_mount_options +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5b5081 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf75f27e scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9413ca pci_iounmap +EXPORT_SYMBOL vmlinux 0xdfaacfc3 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfe3c3a6 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xdfe493b8 iov_iter_init +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffcd2aa page_waitqueue +EXPORT_SYMBOL vmlinux 0xe02d3fe1 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05a78a9 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07f96b4 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xe0815adc simple_follow_link +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe09507a2 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b51490 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xe0b6fd03 simple_statfs +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0fa9c74 d_invalidate +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1187ebd pci_iomap_range +EXPORT_SYMBOL vmlinux 0xe1227cc1 devm_request_resource +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe13aa9c6 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xe175859e uart_match_port +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe17c379c read_cache_page +EXPORT_SYMBOL vmlinux 0xe19ad1c2 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xe1b176ec max8998_write_reg +EXPORT_SYMBOL vmlinux 0xe1d03aa7 omapdss_output_set_device +EXPORT_SYMBOL vmlinux 0xe1e2f960 dev_addr_init +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe21df698 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24f838e dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xe2527a67 backlight_device_register +EXPORT_SYMBOL vmlinux 0xe25d99f5 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xe25f5ff0 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0xe26844f2 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b3284e unregister_md_personality +EXPORT_SYMBOL vmlinux 0xe2cac813 freeze_bdev +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3339727 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xe33a7f69 netdev_change_features +EXPORT_SYMBOL vmlinux 0xe35189fa input_inject_event +EXPORT_SYMBOL vmlinux 0xe3576388 nf_log_register +EXPORT_SYMBOL vmlinux 0xe36b266e tty_lock +EXPORT_SYMBOL vmlinux 0xe36f1d02 secpath_dup +EXPORT_SYMBOL vmlinux 0xe371e3dd tty_port_close_end +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe388b47f sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xe38de9ad scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xe39ce9da ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3ef8e9b ps2_end_command +EXPORT_SYMBOL vmlinux 0xe40dd9ef debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xe413be4a memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xe416135e skb_trim +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe444948b skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xe479d9d1 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xe4889ae2 release_sock +EXPORT_SYMBOL vmlinux 0xe48ac826 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xe496076b inet_sendpage +EXPORT_SYMBOL vmlinux 0xe4995fe3 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xe4a37f07 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4f32b80 current_fs_time +EXPORT_SYMBOL vmlinux 0xe5018f30 snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0xe5200d18 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe538268d disk_stack_limits +EXPORT_SYMBOL vmlinux 0xe5413570 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xe551392e pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57324c1 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xe57361dd __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe57653d5 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5976253 pci_enable_device +EXPORT_SYMBOL vmlinux 0xe5a91112 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d7e441 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xe5e062f5 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xe5e0861b inode_set_flags +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f3be09 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xe5f6d67d set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xe6028eca netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xe629ae0b pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xe63a4634 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe64437d3 tty_unlock +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe66cf051 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xe6916401 dev_trans_start +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe699c2a3 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xe6a025c3 omap_dss_find_device +EXPORT_SYMBOL vmlinux 0xe6baf5dd skb_queue_purge +EXPORT_SYMBOL vmlinux 0xe6cd047b dentry_open +EXPORT_SYMBOL vmlinux 0xe6e2a7b1 ip_ct_attach +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 0xe708b5ce skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xe7168bce cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xe742d037 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xe75deffb do_SAK +EXPORT_SYMBOL vmlinux 0xe76156d2 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xe771a9e6 kmap_atomic +EXPORT_SYMBOL vmlinux 0xe776094b fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xe790afc3 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe7980a98 from_kgid +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 0xe7c09a90 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xe7c5662c ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xe7cc03f3 vfs_write +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e15910 dispc_clear_irqstatus +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8350a83 ps2_command +EXPORT_SYMBOL vmlinux 0xe84b9e48 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xe875b5da md_unregister_thread +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe88f37b4 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8b1277a writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xe8b3776a blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xe8b4c351 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8e203f0 bioset_create +EXPORT_SYMBOL vmlinux 0xe8f762d5 get_acl +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91b0993 skb_put +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe957cf00 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe95e6203 page_readlink +EXPORT_SYMBOL vmlinux 0xe966558f alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xe9be808d lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xe9c17c89 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xe9cdd748 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xe9f6ef11 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea07eb70 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1f5b88 samsung_rev +EXPORT_SYMBOL vmlinux 0xea35365f tcp_disconnect +EXPORT_SYMBOL vmlinux 0xea3e559d netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xea45b2e4 vfs_readv +EXPORT_SYMBOL vmlinux 0xea60d7b3 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea8d8432 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xea8d8566 netdev_notice +EXPORT_SYMBOL vmlinux 0xeaac72f9 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xeab0b87b mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xeab2f388 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xeabbc0ca scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xeac14f0c ip6_frag_init +EXPORT_SYMBOL vmlinux 0xeadef869 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xeafa0702 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xeb033814 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb12a7d0 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xeb13fd7f md_done_sync +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3a56fa tcp_seq_open +EXPORT_SYMBOL vmlinux 0xeb417c8e jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xeb4c1eac blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb565e1b clk_get +EXPORT_SYMBOL vmlinux 0xeb5abc6a md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xeb6f6090 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xeb76f23b simple_nosetlease +EXPORT_SYMBOL vmlinux 0xeb8dbdab revalidate_disk +EXPORT_SYMBOL vmlinux 0xebaa7fae pci_dev_driver +EXPORT_SYMBOL vmlinux 0xebdee152 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xebf2f520 ppp_input_error +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xebfee4ff seq_putc +EXPORT_SYMBOL vmlinux 0xec18ebf3 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1fa92e processor +EXPORT_SYMBOL vmlinux 0xec37cf74 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xec3f9d6a snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xec4114b8 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec68cc27 vfs_symlink +EXPORT_SYMBOL vmlinux 0xec82e6ac i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xec94f7af param_set_byte +EXPORT_SYMBOL vmlinux 0xeca2615e of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xecbc2467 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecc58593 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xeccdfa06 __frontswap_test +EXPORT_SYMBOL vmlinux 0xecd988a9 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf0da70 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xed3def80 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xed448b44 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xed4b7e00 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed73a296 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xed7ab908 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xed8b80c2 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd0dff blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc7ed2f get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xedc7f4ec dq_data_lock +EXPORT_SYMBOL vmlinux 0xedc9b2e3 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xedd77fa4 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xede77e56 mount_pseudo +EXPORT_SYMBOL vmlinux 0xedf14f5f ip_getsockopt +EXPORT_SYMBOL vmlinux 0xee17e59b devm_gpio_free +EXPORT_SYMBOL vmlinux 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee339092 __find_get_block +EXPORT_SYMBOL vmlinux 0xee3ddf33 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xee45135e genl_unregister_family +EXPORT_SYMBOL vmlinux 0xee49067d dqget +EXPORT_SYMBOL vmlinux 0xee57f160 __napi_complete +EXPORT_SYMBOL vmlinux 0xee57f20d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee743782 skb_tx_error +EXPORT_SYMBOL vmlinux 0xee7c4591 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xee888874 kill_pid +EXPORT_SYMBOL vmlinux 0xee915792 simple_lookup +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee96dc06 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xee9c3647 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xeea86a56 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeead3971 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xeeb34fe4 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xeebe2445 pps_unregister_source +EXPORT_SYMBOL vmlinux 0xeebf8250 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xeec0333c iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeed6e21c register_framebuffer +EXPORT_SYMBOL vmlinux 0xeee923fe skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef68027 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xef036128 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xef0d19de keyring_clear +EXPORT_SYMBOL vmlinux 0xef180a1b i2c_transfer +EXPORT_SYMBOL vmlinux 0xef2cd572 serio_interrupt +EXPORT_SYMBOL vmlinux 0xef2fdc4f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xef37ed4a tty_port_init +EXPORT_SYMBOL vmlinux 0xef4303cd vme_lm_request +EXPORT_SYMBOL vmlinux 0xef46eaa7 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xef6aad6b ac97_bus_type +EXPORT_SYMBOL vmlinux 0xef7463f8 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL vmlinux 0xefb11383 ihold +EXPORT_SYMBOL vmlinux 0xefccd50b bio_unmap_user +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefcf94d1 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefdfb4b6 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xefefc3c6 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0179a55 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0244be9 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xf02a02bc of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xf0302ba7 generic_update_time +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06c303c omap_video_timings_to_videomode +EXPORT_SYMBOL vmlinux 0xf087bd85 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08df79b udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xf093ac00 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0d19622 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xf0dc0298 put_disk +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf101c00f snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf107fa41 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xf13ae916 nand_lock +EXPORT_SYMBOL vmlinux 0xf1400c0e put_tty_driver +EXPORT_SYMBOL vmlinux 0xf144421b request_firmware +EXPORT_SYMBOL vmlinux 0xf1460b97 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf173d6e0 bio_add_page +EXPORT_SYMBOL vmlinux 0xf19315c6 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1afb731 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf1b8bf33 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xf1beaa82 simple_empty +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dcb401 fd_install +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 0xf1f15c49 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xf1fad15b blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2135d62 textsearch_register +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf25c0b8f mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xf25fac23 proc_remove +EXPORT_SYMBOL vmlinux 0xf2729b88 free_netdev +EXPORT_SYMBOL vmlinux 0xf2750620 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xf2776a26 pci_bus_type +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c975fe nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xf2e41635 tcp_poll +EXPORT_SYMBOL vmlinux 0xf2f53e60 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32ba276 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xf32ff0c4 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xf333f599 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf3353025 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xf337ccd9 blk_end_request +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf346b8f6 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35c8b75 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xf374208e snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38bab00 flow_cache_fini +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3ae7ab1 security_path_mknod +EXPORT_SYMBOL vmlinux 0xf3b1e84e omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xf3b6eb02 lock_rename +EXPORT_SYMBOL vmlinux 0xf3c7a76f jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xf3ce7890 of_dev_put +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3fa8038 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xf3fd3e1a __sk_dst_check +EXPORT_SYMBOL vmlinux 0xf4085269 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xf408661f of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf415b4a3 d_alloc +EXPORT_SYMBOL vmlinux 0xf422d9b0 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xf44e49d5 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xf458aeb4 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf49ab1be blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL vmlinux 0xf4b38d27 pci_select_bars +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4d01165 d_obtain_root +EXPORT_SYMBOL vmlinux 0xf4db78c6 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xf4f0a984 snd_register_device +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f1cdae snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0xf4f71fc3 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xf4f83bca param_set_uint +EXPORT_SYMBOL vmlinux 0xf5112a6d dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xf51b6522 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xf5397f43 page_address +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf548d735 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xf5514ce0 ioremap_page +EXPORT_SYMBOL vmlinux 0xf55b01e2 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf56c54d9 write_cache_pages +EXPORT_SYMBOL vmlinux 0xf57ce9f5 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xf58b3521 flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0xf59f5024 lookup_one_len +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5ab7536 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5ca8ba4 devm_clk_get +EXPORT_SYMBOL vmlinux 0xf5d5a64e swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xf5dcd91c pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f33bf6 snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0xf6262343 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xf62e1493 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf648db30 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xf6521b16 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xf65682e7 input_release_device +EXPORT_SYMBOL vmlinux 0xf6712cb8 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67de30f snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0xf680189a neigh_lookup +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68287b5 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d5171a replace_mount_options +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f60cbc cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7033f3b phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xf704b6e8 d_instantiate +EXPORT_SYMBOL vmlinux 0xf708762a netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xf712cecf dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xf713b9ae snd_unregister_device +EXPORT_SYMBOL vmlinux 0xf715c12b audit_log_start +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf721e8d0 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xf7271948 edma_set_src_index +EXPORT_SYMBOL vmlinux 0xf7504a9f arp_create +EXPORT_SYMBOL vmlinux 0xf7560f5e udp_prot +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf77c9ca0 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf785bd14 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xf78778ae gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xf7a422eb misc_deregister +EXPORT_SYMBOL vmlinux 0xf7aaeddc ida_init +EXPORT_SYMBOL vmlinux 0xf7c1bdb8 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xf7c5b6ab pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xf7d27adc posix_test_lock +EXPORT_SYMBOL vmlinux 0xf7d5fde1 init_buffer +EXPORT_SYMBOL vmlinux 0xf7ef3b04 nand_bch_init +EXPORT_SYMBOL vmlinux 0xf8072bab pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xf80b6b25 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81fb478 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf84fb85f pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xf8684ad2 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xf8850505 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xf889142e mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xf89ad85a param_set_ulong +EXPORT_SYMBOL vmlinux 0xf8b0704b always_delete_dentry +EXPORT_SYMBOL vmlinux 0xf8b5b4f2 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xf8b6ccf5 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xf8df403e inode_init_always +EXPORT_SYMBOL vmlinux 0xf8e6f212 free_user_ns +EXPORT_SYMBOL vmlinux 0xf8eee90f omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0xf919b6e2 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xf924b3e1 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93bebc6 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xf9427374 dispc_request_irq +EXPORT_SYMBOL vmlinux 0xf9510065 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xf95ef7f6 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf96174be dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b5579c inet_sendmsg +EXPORT_SYMBOL vmlinux 0xf9bcb8ac bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xf9c82be8 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xf9d4595a serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xf9de1868 mmc_start_req +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ea20f6 bdgrab +EXPORT_SYMBOL vmlinux 0xf9ed0cd2 inet6_release +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xf9fbcb4a file_update_time +EXPORT_SYMBOL vmlinux 0xfa081403 downgrade_write +EXPORT_SYMBOL vmlinux 0xfa2825b3 simple_map_init +EXPORT_SYMBOL vmlinux 0xfa380032 bio_split +EXPORT_SYMBOL vmlinux 0xfa3f125b simple_write_begin +EXPORT_SYMBOL vmlinux 0xfa3f7942 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xfa532f1e netif_device_detach +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa5da7a6 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xfa759a2a snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0xfa7cfe39 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xfa8bd25d fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xfa8e3b63 path_get +EXPORT_SYMBOL vmlinux 0xfaa1115b of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xfaaafa23 sk_stream_write_space +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 0xfad347ff blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xfae0f2ae inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae7fc90 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xfaead0dd jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xfaf1135c md_write_end +EXPORT_SYMBOL vmlinux 0xfb0d06a3 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb80a969 vfs_writev +EXPORT_SYMBOL vmlinux 0xfb835ae1 empty_zero_page +EXPORT_SYMBOL vmlinux 0xfb83d712 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba0346a simple_dname +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc89ddd skb_store_bits +EXPORT_SYMBOL vmlinux 0xfbf2832b __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc071f87 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xfc231513 bio_map_kern +EXPORT_SYMBOL vmlinux 0xfc355ab4 blk_queue_free_tags +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 0xfc54582e request_key +EXPORT_SYMBOL vmlinux 0xfc5b66d9 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc7a435c seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xfc915c74 tcp_close +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc3d150 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xfcc7d7ae snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0xfcde047d dev_printk +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfcb7f3 __page_symlink +EXPORT_SYMBOL vmlinux 0xfd07d2f7 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0xfd0ed28f dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xfd11dfb1 __lock_buffer +EXPORT_SYMBOL vmlinux 0xfd19add4 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xfd1d9754 omapdss_find_mgr_from_display +EXPORT_SYMBOL vmlinux 0xfd2e6d0a blkdev_put +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd32288b generic_writepages +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd363b6c elv_rb_add +EXPORT_SYMBOL vmlinux 0xfd3b4246 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xfd3dce5e rtnl_notify +EXPORT_SYMBOL vmlinux 0xfd41bbb2 param_ops_bool +EXPORT_SYMBOL vmlinux 0xfd4637d1 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xfd47bc49 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xfd52092d nd_device_register +EXPORT_SYMBOL vmlinux 0xfd5282c8 submit_bh +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd59776c nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xfd70747f __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xfd7332ae path_nosuid +EXPORT_SYMBOL vmlinux 0xfd7ec254 of_mm_gpiochip_add +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 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc47416 tty_do_resize +EXPORT_SYMBOL vmlinux 0xfdde5352 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0xfde599c3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xfdf1e4a4 sock_create_kern +EXPORT_SYMBOL vmlinux 0xfdf8225d bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe2e005d cdev_add +EXPORT_SYMBOL vmlinux 0xfe321849 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xfe3e8b46 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL vmlinux 0xfe54b763 kernel_bind +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6ae7ca ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8467a0 set_user_nice +EXPORT_SYMBOL vmlinux 0xfea5243d netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xfea8f11d kdb_current_task +EXPORT_SYMBOL vmlinux 0xfeb97f72 snd_timer_start +EXPORT_SYMBOL vmlinux 0xfec05684 scsi_host_get +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfed53545 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xfed76d64 phy_print_status +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeec3ff5 sock_init_data +EXPORT_SYMBOL vmlinux 0xfef95491 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0xfefb6077 edma_alloc_channel +EXPORT_SYMBOL vmlinux 0xff064fee gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xff16709a vc_cons +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22920b omapdss_register_display +EXPORT_SYMBOL vmlinux 0xff283219 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xff331d71 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xff3aaff1 __serio_register_port +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 0xff7490e6 find_lock_entry +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff824564 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xff8cbb1f idr_destroy +EXPORT_SYMBOL vmlinux 0xff94b831 PDE_DATA +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe63887 vme_slot_num +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0xea5299c6 sha1_finup_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0xf5fb6a01 sha1_update_arm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x0f1d1e19 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x5d84e569 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x68e23dbd ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x73286d75 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x866e5d40 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xddd05c0f ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xec7139a2 ablk_exit +EXPORT_SYMBOL_GPL crypto/af_alg 0x01071eeb af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x11d94592 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3a95d964 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x4ad579b8 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x683bf496 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x701d3106 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x85a8b9d1 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xb05a1917 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc620446f af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd1bd2589 af_alg_free_sg +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 0x4a901dce async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x3574a293 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x7a8f38db async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x50e77f1f async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x64d4b6b1 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8af78deb __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x93a4da54 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xc4cbfc80 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf1a5a774 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x076052d4 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x8bd7a06e async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x9e952c5e 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 0x756a363d cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x0960e522 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 0x07564297 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x08ee80ee cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x2e60218f cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x5a34f6ad cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x8e62668e cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xa4e838cc cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa6af383f cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd5548c5c cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe40491f4 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xf2a97b09 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x755109ee 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 0x99442caa lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x1129f1c2 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x246ca6d6 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x411ddefa shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x430679fb shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xadbdd065 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbc2eaf36 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe7ede46b mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf4894b9d 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 0xc50659cf serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x5486645d twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x041acc1b xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x3653b6e1 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x127944ff 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 0x058bce89 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0a6d3fad bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0b346f54 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1303c994 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x35ebcf96 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4500eabe bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x51168c19 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5b68f70e bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6572f5ee bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x65b4ea19 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6854a178 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6d9afcef bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x890f3a10 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9a269db5 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa2e16f5d __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaa6570cb bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbf30d49d bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc0c08837 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd4b0f845 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea9bec9b bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeda8f7ce bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf629fe44 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfd557cda bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfeb54204 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x47bc4097 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6bd36291 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6e4e0395 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x94d98ddd btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa54c35bc btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa670ff3d btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x10c6038b btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x625636cf btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1bed0c69 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1cfa9662 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2eef4c80 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x38da1035 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6a6b634a btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6e5e3a93 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x70be15a3 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa8936293 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc1c50b4f btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf8de43a7 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xff0c026b btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x9acfb2d6 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 0x54084cbe dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x77038c36 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd63bc09f dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe697ad92 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf691a658 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x33030c2a hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xd3b50676 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xff27ba3e hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0ce969d4 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x349ad076 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x46325cdc edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5017f3e6 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5d831452 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6908b3db edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69149b6e edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7319ac15 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7c6b376e edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7e3ff103 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8250efac edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x831a7a11 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8587f98c edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8e786bc4 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8e857a3b edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x995d3a8e edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9b398e0c edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9b93756f edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaa1bc9b7 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb39933d7 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbab1ac6e edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xca31731d edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd4995f3c find_mci_by_dev +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 0x849556d7 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xfcea0947 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x00cf3726 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x04e77129 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x243ea1b8 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2858e044 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5324c155 drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5807ad18 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x74741cc2 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x81716c2a drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x81958216 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x899ce1ca drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x922457ba drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9c13fc1a drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa297a489 drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa801807d drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xac7df7f9 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xaf3418d6 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbd02205e drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc1ac1e43 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd36853f6 drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x16d562f9 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x47642bd9 drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x83764bd5 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 0xb7f1b902 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/exynos/exynosdrm 0x2b1bf6b8 exynos_drm_subdrv_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x85d42572 exynos_drm_device_subdrv_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x9df68c74 exynos_drm_subdrv_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xa0b35863 exynos_drm_device_subdrv_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xcd00f9a0 exynos_drm_subdrv_open +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xeee42ec2 exynos_drm_subdrv_close +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x1cfe024a imx_drm_crtc_vblank_get +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x2ffdace4 imx_drm_connector_destroy +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 0x5f056ff0 imx_drm_crtc_vblank_put +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x939f8a89 imx_drm_encoder_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xafb0c2a5 imx_drm_encoder_parse_of +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xc56dfee5 imx_drm_encoder_get_mux_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xcca5f640 imx_drm_add_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xd652b5a4 imx_drm_remove_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xdafc484b imx_drm_set_bus_format +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xe6eb3db2 imx_drm_set_bus_format_pins +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x1292b6bd ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x55e54e61 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 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xcfc9a393 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 0x06ea1252 ipu_cpmem_set_image +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0728116a ipu_csi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0a19f933 ipu_idmac_clear_buffer +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 0x15ec2ba5 ipu_di_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15fb4dbd ipu_idmac_enable_watermark +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 0x2424c9a6 ipu_csi_is_interlaced +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2817cd72 ipu_cpmem_set_fmt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2c3127eb ipu_dp_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2f92d651 ipu_ic_task_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 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 0x3ab7ea02 ipu_idmac_lock_enable +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 0x41b18a7e ipu_cpmem_set_stride +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x42dee679 ipu_dp_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x48598d97 ipu_cpmem_interlaced_scan +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4896b48c ipu_cpmem_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4917f47a ipu_ic_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4a56ae85 ipu_cpmem_set_rotation +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 0x54aa66e8 ipu_dmfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5841e0a4 ipu_di_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x58db55af ipu_idmac_channel_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x60758198 ipu_module_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x60bdf2ec ipu_csi_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x61af1ab4 ipu_module_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x61c9d244 ipu_ic_get +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 0x6472b034 ipu_cpmem_set_axi_id +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6628f4b7 ipu_set_ic_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x69172be5 ipu_dump +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 0x720313d8 ipu_idmac_wait_busy +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 0x7bca1d45 ipu_cpmem_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x80ed3f3c ipu_idmac_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8297be18 ipu_idmac_select_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x87ebd297 ipu_map_irq +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 0x8a84e644 ipu_idmac_get_current_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8ff81e2f ipu_idmac_disable_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 0x92d23766 ipu_idmac_buffer_is_ready +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9345647c ipu_cpmem_set_block_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x93e28de0 ipu_idmac_channel_busy +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 0x9a52e67e ipu_srm_dp_sync_update +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 0x9db23cbc ipu_dc_get +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 0xa0d766f9 ipu_smfc_get +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 0xa7308f0a ipu_cpmem_set_high_priority +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa9682631 ipu_set_csi_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa96882d8 ipu_ic_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xab329ec3 ipu_cpmem_set_resolution +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xaba4b514 ipu_cpmem_set_buffer +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 0xb6eba0b1 ipu_cpmem_zero +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 0xbc410129 ipu_idmac_set_double_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xbca969a4 ipu_cpmem_set_format_rgb +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc03f3bcb ipu_wait_interrupt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc06e1f60 ipu_dc_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 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 0xcdc5dbe4 ipu_cpmem_set_yuv_planar +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 0xd3545822 ipu_dc_enable +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 0xd763b493 ipu_ic_task_idma_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdb55fe1b ipu_cpmem_set_yuv_interleaved +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdfc1354b ipu_dp_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe28809d5 ipu_idmac_enable_channel +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 0xf1440dc1 ipu_ic_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf2645f0e ipu_idmac_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf3f3615c ipu_cpmem_set_format_passthrough +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf5fc5230 ipu_cpmem_set_yuv_planar_full +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf67d5d53 ipu_csi_get +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/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x089619e1 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27fd57cd hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x29f74e63 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2cf841cd hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e8a624c hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3dfda7aa hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x447c8d9a __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x537fdfc7 hid_dump_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 0x75028155 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x836a9ca0 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x89163c0b hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93a4ce31 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9931d229 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9a73c22d hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9dd41c14 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa44a1a11 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xafd4c326 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4a87d4a hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbaf2ed6e hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbbb17575 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc267a1ed hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc45f285e hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5879a01 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc671b5bb hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca4e6e00 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd09ed8ae hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd0ecbca8 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd11a81e4 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd1c9a075 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda5535f6 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdc6d3a63 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe65ed5ea hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe9dda0ab hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef739cf4 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x7d2d6732 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x26ac7e50 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x781374de roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb1d69a22 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc2533c09 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd7db2c1e roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xeab0ca72 roccat_common2_receive +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 0x234c0a4c hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0098a289 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x06288902 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0d2beca5 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x17711f6d hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2566bc1c hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x52f1db35 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x56b0071c hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6168541c hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x67e81bed hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6fda0bdf hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x89002b63 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa302d729 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb14045a3 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc8292a27 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc884c854 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd13c2401 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf3806f87 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfe1943d4 hsi_unregister_port_event +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 0x03ff4970 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x38928f84 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3ecf4d84 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3f4eb834 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x59074935 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x66a14dc7 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7165ad63 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x881082ad pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x88ad4a9e pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9e4e2f82 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa5b738eb pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xafcbfb02 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc60e917f pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xca659855 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe3162817 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x33ca3fd8 hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x5ba7bd5f __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x78237e2c of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x7e9e45b5 hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x85cd51d0 __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x91439673 hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x95b1b9ac hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xac11c620 hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xbdc23f4f hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xf831ab6f __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x039d2315 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x161cfb0c i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x316f2db2 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x550e764a i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb2b564ad i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbd20c810 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd6c0a134 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xde3ab1a9 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xef7561c7 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x6945c60b i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xbbd26afa i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x8a5bd47c i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xa9f007e5 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x219dcd75 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2bac24c4 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3e13a229 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4a89db0b ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x96ba0faa ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb6637da0 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd4f5d8d9 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe80b17c4 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf4f496a2 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 0x19a6b5ed adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x276a0f34 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x35407bb8 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x375ab31a adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x43b8addd adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x71d92e60 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7baf83cd adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8b8bd10a adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x97b88ede adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb0d05fcc adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcb4aeb5c adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf10b6086 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x043e773b iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1429494f iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x15ae943a iio_buffer_get +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 0x2608eee4 devm_iio_device_unregister +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 0x29b3365a iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2db2f870 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x33d33354 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4b36f6c1 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5a4511a1 devm_iio_device_alloc +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 0x7f1ecf07 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x83e473ff iio_enum_available_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 0x960ae603 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x97e9bb68 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa519e607 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3507cb9 iio_read_channel_raw +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 0xc3b4d21b iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc3cfb93f iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd0844b9b iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe456895f iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed3819d9 iio_channel_release +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 0x15af29ac cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x1ba1c0ae cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x505be67a cyttsp4_pm_ops +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 0x22886936 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf9e53a88 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0efa5096 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x378e89c8 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3e489331 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3f441944 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x45c28c30 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x59edc524 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x64a16314 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8b195387 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc17a4bcd wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc21782d1 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xef5c8ef5 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf2e293af wm9712_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 0x18e504fb gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1d22cae1 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x22cd71fb gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2a5c2049 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4c1342db gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x73f1446c gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8455c0a1 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9e44acfe gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xab716f78 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbac8a0c1 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xce8647c4 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd21dc9b6 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd8a4f6e1 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd8ea5a3f gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdd621ff3 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe018bcdd gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe89c2af7 gigaset_m10x_input +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 0x0474ae63 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x12a9ce49 dm_get_cell +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 0x376e2c48 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 0x6f3571cf dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x81758ec4 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x92f241ba dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb5d472af dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb670c583 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 0xc07ad5d9 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0194be68 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 0x01e6907d dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x19b70498 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x84fdef43 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9a8cfbf0 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd3426af7 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf858a836 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xfe399d84 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x3828effa dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x72f1dd6b 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 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 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7ac774c6 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x86a1baf9 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8c48eb71 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 0xaf249e89 dm_rh_delay +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 0xc87d3208 dm_rh_dirty_log +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 0xdabbc973 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 0x42d1207a dm_btree_lookup_next +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 0x5bf6538e dm_block_manager_create +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 0x11033a38 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4f968642 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5339a111 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x73fe4120 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7c0b84ae saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8a4c0fbe saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xac0feee0 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd4239f9b saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd62bca13 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf9da3991 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x062a355a saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0a963dcd saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5e88b7e9 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x63e4f93e saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8eb1bdc8 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb9ebb9ae saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdf5e1be0 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x034f2468 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0ba5dd79 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2125c71b sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x32d6a76b sms_board_event +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 0x48830fdd sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x48ac8501 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x48b14b99 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5971d6cc smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5b3538d8 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x664c48fb smscore_unregister_device +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 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa4c785b1 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa88c754a smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb26c9de9 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc17784a2 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdce05431 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe0a00959 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf533923c smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x5fdd4b20 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xbbe37df3 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xcab3c1ec 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 0x1afa4ca8 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x019b4c01 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x02a94a43 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0c9b3f18 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x19f1cb7e mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x29b88386 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2b5f0d76 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2ec4c159 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x43199a24 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4a84eef4 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6a93d613 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x878efb07 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xac9f32c2 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb1db7ffe mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc2c22620 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcfa35fb0 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd1618198 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd8aa8959 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe9b22b5f mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xffd25918 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x03ded7d0 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x09b0a120 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0ec2f1ea saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1f23f02c saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2670501e saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3fbec0f3 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4a5e7101 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4c29e0af saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x507e7be6 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5b4a70a6 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5d126dbb saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x69ee305b saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6a299ce1 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8549c102 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xac3cd07b saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb865654a saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc7b491e4 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd6b2a4d3 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf80b3eca saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x211ba05a ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4ed29670 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x50b2b37b ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x76472e8b ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x951ecff8 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x961415db ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9ae361b9 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x25f4b757 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7742d9 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 0x717d9457 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbb3f6cb4 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xcb189d6c xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xeeaab8f7 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xefd21c2b xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x05030ced 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 0xe808e6b9 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xff42463a radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2a4aae40 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x43ca0719 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6771c53b rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7521698c ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x87266ac1 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8989413b ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x89b86cff rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x94b2721f rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x99197ee1 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9e432da8 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb4cae9be ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7dfd6af rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc37deb20 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc9a8cbd5 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc93b5ae rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcca90d78 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xce4b86cc ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdeee0c7b rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe108e452 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x07e62618 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x274dc9f2 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x7296be0e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xeb717e5a r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x8043fdd7 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xcd77acc5 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x05179c5a tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x52d4d0ad tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xa604a0cf tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x4539674c tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x9f2e8751 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xccbeb05d tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xda69f4a3 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x4d85a87e simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x19936768 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x289012de cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x34f5b958 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3978dcfd cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x50bc496d cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x50c8bd02 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6367486c cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7c5ef741 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x877fe643 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x981335b7 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa2705109 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa3e07779 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa7fd9836 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb71f591f cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbfc524b6 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xeb0ec6ec cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xefcde490 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf4551f4b cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf5e5f340 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfa8e9fca cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x4eec6b49 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x8a996319 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1826a0ce em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1ab8c56f em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1b213289 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x224aea7b em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x59f00b53 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x658063f3 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6ac8e50a em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6b543ec6 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 0x8578486c em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8a40db81 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x975b770a em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb41eb191 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbb743d14 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcf94a4f1 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd744756e em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xef8c5e79 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf3ee4b9b em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfc0015fb em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x389a91a2 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc343c6eb tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd3cbf0ca tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe5707251 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 0x5454a20d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x648215e1 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 0x8e8c7deb v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb91337f5 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xdaa29aaf v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xec5f7d94 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 0xb5d093f5 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xcc6bf365 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0063e6e2 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0321b244 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x05b48081 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x062a6003 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0685b7c6 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0819c84c v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x135eca1b v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1588e84a 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 0x336e574f v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x35923eae v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x36776baa v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3e904d32 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x46378a98 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x508a0a05 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5cedd435 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x626a0a8e v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x740947f3 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x83448c98 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x87a83738 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8a30d581 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x92ab3e7e v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa6596fa8 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb326ceb0 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc15f9374 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd1221dd5 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe7107d06 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfc232bc6 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x024cddfe videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x035f69d6 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x08fcbc9f videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x13b7794f videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1752e13e videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x17a4e280 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x39ba8ff9 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4753ebe0 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4755b0ab videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4d1d450c videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x51c95be6 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5fccdef0 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6ef56f76 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x73bf0204 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7f2cf862 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x842d55d6 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x844ff584 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x93d9a8e7 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xaca2254e videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbf881087 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc6c6e76e videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcdb99061 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdc1bd20b videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe916460e videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x13339530 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x16603d15 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x204391be videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x52e2bc29 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x65c0c6e1 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 0xeb569e14 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf1a3d395 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x96d2a2eb videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xc162807d videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xc9cb888e videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x03775e28 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x101e4e47 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1986fcd4 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x208b5f6a vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x22c35b79 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x24074d86 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3178b516 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x35d14563 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x38859410 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x45f0bed5 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4e27d022 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4ff5330c _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5203bc4f vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52ba7891 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x568c354d vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x592fcf53 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5d42024e vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x71e619d9 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8a69785a vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8cef4b87 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x93682d1c vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x985f86ca vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9e31ebfb vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa52dca9a vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa830daf4 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xac0f257f vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb8f710bb vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbbdd7a7e vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd5d551c2 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdc1da79c vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdd93b1aa vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdeb12f6a vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe1195dbe vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe319af4b vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe60fc38e vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe8ce88d4 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe90797d1 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1535a3b vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf92a9249 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xad0357e3 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 0xf76b1453 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x527e8aee vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x6e95443e 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 0x2e1db2f8 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xbd29939c vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd29afc9d vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd340d6d2 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xb8d2f2d2 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x023ddb4a v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x09afd7b4 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0a3ea0a9 v4l2_event_subdev_unsubscribe +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 0x2762e13b v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f287a5c v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4000fb21 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44c3990a v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58e623fc v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5cdfde27 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6daee3b6 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x73e0ee05 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9bf7bf78 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa25e1d1b v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa556a88a v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa7c2ad16 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa86afb8c v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb11d8a43 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb74218f7 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbdd582e3 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbe1a2e51 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd192622a v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd4181bee v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedeafe00 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3d839b2 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xf511b498 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xf67347e4 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xf7c911b6 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa4e71917 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa5421e98 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xbbbc702e da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc2750c04 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf8d623da 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 0x25131b7d lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2ba11ee1 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2db0d5b2 lm3533_write +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 0x39435d06 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xd58d0afa lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xfa2de893 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 0x04a5be65 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x06a8f28a pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x35a2bf34 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3fefe974 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x624d7e01 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6544407a pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6eaf02cb pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x76ccd0b2 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x91da122d pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x96d657b2 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf27399fc pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x79137ba8 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x8ffa18c3 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x427cdbd2 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5eacdfd8 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x65a91487 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9ca9f476 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xcc8131a3 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 0x0de5129f rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x19e854f8 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2b2ac06d rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x464d1a33 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4d600680 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4ea2197e rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x554f9c91 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x594b2a8f rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7983907d rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7bb33e6f rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x80492290 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x87f50d79 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9bedb74c rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaca3b33d rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb4d822ae rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb8453e5b rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbf188591 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc0856824 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd9131ccb rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe4fdfe48 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf1bf3322 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf41b49a8 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf6198925 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf695f619 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1c47b6af rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x22bac515 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x58dcaf38 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5a6ebfd7 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6a841ec6 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x895e4a49 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9e6f84e2 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xafb01cad rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb0f7e810 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc51846ef rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd05d42c6 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf775a3b2 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfc9a00b8 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x00200589 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x08e13aea si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16253550 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16a19b06 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16d1d9a7 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x201a3d0c si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x21a05aa0 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2ae7210d si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2b26542d si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3ebcc35d si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3f9d3a92 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x455dbe5d si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x483b85ef si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ba6efd4 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x56d11a97 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x57fb5a0d si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x654c30e0 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x69a26c2d si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6d585114 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6d5c2436 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7157f01a si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8f058e29 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9523b5af si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x95dc6c8b si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x963c39c8 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9d980584 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb8c831dc si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xba091c54 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc93834f3 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xce55fa34 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xce826cb1 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd0e6dbcc si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf3586d89 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf6dbd9f7 si476x_core_cmd_fm_acf_status +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 0x3b6fd0be am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x4474b424 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x75d0ceed am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x84e700a7 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x14fefa08 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x3769bba7 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9b4de07e tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe22006a0 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x02874b01 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x053f4c67 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x68a0890a tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x9cc011db tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x006f9f4e ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x8a4606cd cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa173e7eb cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xdbef1ea5 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xdcea5545 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 0x1637697a enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3af8751e enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3fe314d0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4d770a07 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x584dee4f enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x76126136 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x81e6276a enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9edd3f52 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6ec1d407 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x77851fe6 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7a5fd2f0 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7c864be6 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa328474a lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xac1f115b lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb1fe9ea8 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc06513c4 lis3lv02d_init_device +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 0x51f4c681 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x779f1da1 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xcb24642e dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x445d66a1 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7b744349 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x866a66df cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x29eb2d98 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x57b96648 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa440a9ce cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xf527b73a cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0f729f14 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x5899b2b8 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x7a760586 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x4c1ac2ca brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x5eaa62a4 brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xfb9a8f68 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x1c33b2a3 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x1acecc45 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x623abf98 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x524dd880 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x08087cce ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1632db00 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x373e1c3a ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x50dbef68 ubi_close_volume +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 0x92c2c358 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9845aa18 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x99101799 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xac809cf7 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb2b2a63a ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbaeb9731 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcb6811b3 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xefdb256d ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf279caca ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf3888948 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 0x20048856 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x38ebdcdf unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xab904b3a alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb2f08f52 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbc4eaa9b register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xcb5a7255 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x15404715 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x242ebe1f open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2d2bb594 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x325faadb can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3a279fa8 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x44e6d234 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5c0e8ef0 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5d39543a can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5e51cf52 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5f546fde can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x73dbfde5 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7469a76b close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7a153997 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x93e1e9af can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xafe4109d alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc56eefc2 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcc72ba32 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfab21ee7 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x507ca7b8 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x751e3eea unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa3fd28c6 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd812943c free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x52416ddc register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x55a0b24d alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x7ec5e0a3 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9fa465c0 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x3e378788 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x865224d1 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x042d3b18 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04f89404 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x074323fe mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a4f9a11 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b85fcf3 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dc752ba mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0df29df4 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fea1827 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12726279 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14a88f43 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15b77778 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22ef098f mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x246baeb0 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2500b302 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25820a55 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2693ffd4 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28652e73 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c2cd97d mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cb739fa mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ede15c8 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33509e6b mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x354c8d40 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37c0dafd mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x383ee2e1 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3938eb62 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39560811 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a3e44de mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b7381f4 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41cbeb62 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42d8d4e6 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x433ca06e mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46d16845 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46dbe4b2 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46ef6837 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48338449 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4936e5d1 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4abae888 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b99ce7c mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d73782c mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58c4f633 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b9b7e70 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d8742f4 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61e75d24 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64ecb09e mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x655a7331 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x656b2dfa mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6584954d mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x659e834f mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67a0bef0 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6853b1e3 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a24cc7f mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c740e03 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e171316 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72d348e2 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73a99e0d mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75d78b08 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76cf7b47 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7820fdac mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f2b2a3d mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f6d1752 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82cc2e15 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x841150c1 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86e0d2a6 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8742de71 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ea00796 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fc348a6 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x934ef8c4 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95d8b430 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9635dd81 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96841e73 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a0b8b05 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3c03493 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa45cadf6 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa98f3b91 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab1c493c mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacd91254 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae0f61d5 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae27a338 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaeb8e95a mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafabcf01 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb21efde3 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb31c129d mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4b71ac2 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb59017d6 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb70d46b6 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb87eb8dc mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbdf7225 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfdec66f mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0344e20 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc055693d mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0af37dd mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc10f79c8 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3146576 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc532dc09 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc689478f mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8d81d32 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8fa2512 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcaf553f7 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd224f9b6 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd28719ec mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd76f166f mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda1b67d7 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc354824 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde1cdddf mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3d3f839 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe478bb8b mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe47ecbd6 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6348a08 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7a690e5 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea581ec9 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeba953be mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedfd80ea mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee1cdbed mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf159b2f3 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1833f2e mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2da74ca mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5ed8a15 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf75fb8f1 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf98774d5 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb985743 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe429704 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffaaa3b8 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffec39b2 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x044fef5e mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07111cef mlx5_query_port_proto_cap +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 0x18772ac2 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e1f6335 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21fc771e mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x283798e5 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29cd7a7d mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37143809 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ee0b89b mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x455ae486 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x474d1405 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4df9eb28 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f3a42c0 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f938a15 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55163a35 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5abf0c54 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5bac04be mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66ba3372 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70faa3a6 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x781ef776 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82cf622f mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x88e9f724 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9839e6ed mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9983bb03 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ee8d448 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb05f0a6 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc388aa4f mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca71d8a7 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcdbc6b12 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd2395f83 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd67d44c2 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7a1dd69 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdbb60267 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xddd142d4 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdfb7ba3d mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x4806eacc stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x9ceea621 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xc63562f0 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xf7a7d2ea stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x040b02b0 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x606a37f9 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xcaf8848b stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x48468993 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb7f24a5e macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd4c5898e macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xedac7a42 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xb8dfe306 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xdc9239d0 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x24d29421 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3ae21117 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa0f6fc64 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc4503d75 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x097b0384 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x346bcb74 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x43c1b908 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4631ba63 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8b521c52 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa693eed3 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xad2029ce cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xee9bfbdc cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf7c7dd3a cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3b027123 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x7aa63814 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x86aaf955 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa66d4a6f generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xaa1a4517 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb111030e rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x02c62c27 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03e138fe usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x239a96cb usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x24ef9284 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x319148da usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x35d38f2e usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x38177c9e usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x514eb686 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x56f787e5 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5e997e86 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x66e5a742 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6753872c usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x67caf816 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89399c21 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ba6974b usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8f6a751f usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa5cfa624 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa70a8a03 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa9a7b7e2 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xacd50d7a usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcc12351a usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2f53bcc usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd53bc758 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd749bf6b usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xde2b9997 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xde88c460 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe500a0d4 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe666e290 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe9cc2071 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb048384 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xefcd4493 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfc5251a6 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x50c69482 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd499af0f vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf38a4b81 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xff4a29a9 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x02a103cd i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x08444d23 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0d4d6082 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1db5c9a6 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3335f661 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x388a8c1a i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x44f36740 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x481e0a03 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x60eef5a7 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x799d4f99 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8753802f i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x94a48f97 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9736e28b i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa2dfab9c i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc41f0c4a i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf6832c6e i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x202f4b17 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7273f4ba cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8fa5ae44 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x997eb522 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x86ebb423 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x286e566a il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2bf528fe il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x7894b1b9 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x79ff7b6b il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb470633e _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0df611d0 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0ff7487f __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x13e1c4c7 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x194202ee iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2b3ea7fd iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3cb813a8 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3f0b9a6d iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3fffb860 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x40e3b9e3 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x448732f3 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4716ba56 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x48eaf7d4 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4bce6a9f 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 0x55d1279f iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x57b4a215 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a10d898 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a7a1c36 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x65b902b6 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x834b7b3a __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8a7976ba iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x90f707af iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x92e64568 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa17a50d5 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbe588c6a iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdbb7c96f __iwl_warn +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/iwlwifi/iwlwifi 0xf8adddf2 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x16ed761c lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1a7784b8 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x24cedb6f lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2b706d67 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x495c581a __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x52fb710f lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x60e16781 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6bcea156 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x75803f01 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x80deb682 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8c9b015d lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x924d9867 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9af4d862 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa404238f lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xca4b3657 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf7a30929 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1dea47fe lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x235f9f4c lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3eb4a6fc lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4d3135a8 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7b65a8b0 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa8aaf8b7 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc2779ad2 __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 0xd03d4714 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x128446b9 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 0x31c5c9d9 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3cd520d8 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x45664d68 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x503e201b mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6cb85e38 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8123bd20 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x83ebee1e mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8afdf4fc mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x99e920df mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb390acef mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd2b117d7 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdafc12bd mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xef10fa20 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf7e5bfc1 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf7e97c54 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfc60182f mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x19c34a3e p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x306cc4a2 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5ae2b9ef p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x60daa9e1 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7a722cd7 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9dc1395f p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xaf1aa4b7 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd7aff70d p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdc4b578b p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x10991f86 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6719bfdf rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xacfb017b rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xe923f885 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0a035a23 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0aa9e56c rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x111e8a76 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x27f126bf rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3935fd0a rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x427025ad rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4274264e rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4f35c223 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x56727130 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5d5eaa3d rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6e40fc0e rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f100f16 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x793c77c3 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8984ac65 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8b44c9ab rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8ef6d6b3 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90275be7 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x990dc1c9 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9c26b117 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa24b0ac6 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5285a23 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8227b95 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xac30692f rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaf194fb4 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb75a6363 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb99acf10 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcfe5dfe0 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd043b22a rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd0f40fe1 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xda11e795 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdbfb9315 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe1b5d859 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xec51e58e rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xee898364 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf33ade1e rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf78220f7 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf7892e8b rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfe710d9c rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x05bd05b2 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x12da27af rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x39f87d36 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x511a3aa5 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x78cc261b rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8a6414ed rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9adbb7c9 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb91557f0 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc22a7612 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd28aba86 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd6baac23 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf0d400dd rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf16018b2 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x091b7e77 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x167d8423 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x20281469 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e7a22c8 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x314b66df rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x334a1baf rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34111ded rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x373a64fb rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d0e6d51 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4379cc42 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x527b4e80 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5c1f2aa5 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ad4b50c rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6fb4c0e1 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7394e170 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x74b7e046 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7853c752 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82853fea rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8bdd4ad7 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x91058664 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x925cf8f2 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x94297654 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9f45d8e1 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9f59ff36 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa1a1006e rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa49dc33a rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa87c6428 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaaab8c2f rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaacd6aea rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xabad60c3 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf5898a6 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xba5447d5 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbaa2715a rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbc45d0e8 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc2677aee rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc33e6473 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc54f62c3 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc950e178 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcdbbc2b0 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcf8dda7c rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe16fa0e1 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe4cb98f9 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed9cbac6 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf25c9364 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf6a112d6 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa3e4f99 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x4bad3659 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x8d355e5d rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xde87fee3 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe12eb897 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xeb750535 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x040ff3f1 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x75f79d9e rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd0f53cbf rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xfe1ca976 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x086789b7 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0d8df2e3 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0f2bda60 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x11439cb3 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x277a7d76 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x30ed53f1 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3b225766 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x694b36a1 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8547fc68 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8bbc25b1 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa7f835ae rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xac116132 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb9ab27e6 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb9fd83cb rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc1f7dbd7 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd640caca rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2396be95 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x35181efa dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c5b8728 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfd4af661 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1e2f6c9d rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x292ff022 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x299ec965 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2a283bad rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2ad9e73b rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x318eb454 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3ce2e970 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x45f5ceed rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x633e2210 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x63bed4a9 rtl8723_phy_path_a_standby +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 0x74a5737c rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x78dfc466 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x873e26b6 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8ac94c09 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8af39fe9 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9adce8a8 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9d640587 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9e29bc7b rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa2cf3d30 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa740a926 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xac0ce734 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xac17c522 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 0xb4c86831 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc85f8e9b rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd3b5121f rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xee95f7e0 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfda472f7 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0a0579df rtl_attribute_group +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 0x442c0495 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4ae46061 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4dd80fc9 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4f53f13d rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x50d8ebf0 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa52be0d7 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa8bcdc19 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaa5b7852 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc1041553 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc2b13341 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc9f11fd0 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcdce7aa6 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd3009326 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdc208baf rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe6228817 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xeaab0c99 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x06e3eb08 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x0e4f2b33 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x64ce1db3 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x037d7014 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0dc3bd99 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0f35092e wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0fe0509f wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x10a1e122 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x18fff6ed wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1b27ffef wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f93c62e wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1faf000f wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x23d06293 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x29890bed wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2bcea67d wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e17d400 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3f95c2fc wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x43075e6d wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x433f9277 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4982dce1 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x508bc6c6 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x554b1153 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x685102f3 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77649939 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x781d3260 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78fe5631 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x81732299 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x840f7da0 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8645c412 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3047fe1 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa5aff321 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa9a68ba wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xae706712 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb16cef7a wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbfb6ce88 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc01fc8d6 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca536b22 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccc963c7 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2bf9cdf wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdf472dab wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe8ea6ec0 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe8f7f018 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe979ab42 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xebfab21d wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xef09e708 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xff1afd35 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x06096033 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x8f9e4cab nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xd4a20f20 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xdf58f17e nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x189928f6 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2ef8fb45 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x46994f04 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x60efb580 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x6b799258 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x6cd117c9 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x87336efb st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x92b7baad st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x1b0f15d7 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x1f28aa5e 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 0x853348cc ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 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 0x7e312d58 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb26d22eb pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe85ba0af pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x18670e48 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x21043f19 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5d0268f8 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x7c6e2980 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc34fdf6a mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0f34da57 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5e022431 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9b300594 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xadd034a8 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd990928a wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf4e25c54 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xa3987449 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0001df8b cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03cc227e cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0df1671d cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x28bbffa5 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c3ce08b cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2e21c567 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x37bc768c cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x37de4466 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x390fcb01 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x392daa9a cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41f6c58e cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x422707ee cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x49dbe34e cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4bb0c07d cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4f5df308 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x513d6e1b cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x54c5f27e cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x572e82d3 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x582958ea cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5ab1b1a5 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63bd80b8 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64cc28c5 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7366a1a9 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x85d01e4e cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8831e621 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8bc80d66 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e48b44f cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x90e14a9e cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x97025695 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x98ea176c cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ef6ebad cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f47d010 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa390cfc5 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa4b70cbd cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb51e5fca cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb5e78544 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbd68dbdc cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc08fc8c2 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcc6165fc cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xccea6375 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe1f49f01 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe219cb2f cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xee3a0834 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf69d2634 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfda00ad2 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xffa18d4a cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0196ea93 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x11723a55 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4013ec8c 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 0x69266d8c scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa09dba24 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xcca565ab scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd53b35f8 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x06bf6013 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x14a33f0e fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x163adf0f fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1764c72b fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1bd89dc2 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4b999edd fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x522c8fc4 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5d2ac57e fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x68dd547d fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6fdc83ad fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x72d0174d fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa797bb70 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa7c8ec29 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb30b7c6d fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba8c072c fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe46ddd8a __fcoe_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 0x026349b6 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x055dbc95 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0db00505 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x11be1beb iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1308266f iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1e5471b6 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x246e3422 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27e1900d iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x291f89d6 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c64eeff iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x315f34e2 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x364003bc iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37dc43ba iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x442549f1 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x462a6b26 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x53e6b91b iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x572f82fd iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x57657f74 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x616818df iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x624b59a5 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x62921fbb iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x654e8320 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6e24d5ba iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6ea61c6c iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x755e6f5f iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x77986023 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x814e82f4 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa1b783a9 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac2d6c16 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbba1d422 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe284921 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc8290e29 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc8782d96 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc1be1a6 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcde84069 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcee7d900 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcf0ada12 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd530931b iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xea137444 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xea153c4c iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf60a8658 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa8d3347 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x19c2c864 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2614e4cb iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x407e0b01 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4aacfdab iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4d75f8d4 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5b5fd300 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5d7d4e8c iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5eb9c881 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x62debad1 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7c6483bf iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x81fe1cc2 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x830809de iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9b0b3a33 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbb4c31ed iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbf28c3a3 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd556c04f iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeb7796dd iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x032653d1 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24994404 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x28137389 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2bf55472 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x462892b8 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x47b40ce9 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x496f2410 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x611a45af sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x616886d5 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7cc34d7f sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x80bb5123 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x930f47a0 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa501e8fe sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xac0ca831 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xae2c6145 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc3878556 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc3bc1137 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc804c801 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xda2c1fc1 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdb328e87 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe5c05f96 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xec8fb0b4 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf3162294 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf409f920 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0cd5c5dd iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x21f25681 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x22a0875e iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29b6bcde iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x44e36fc0 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x44fea85c iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x526154e7 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x561632fe iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5c8c2046 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x617f1b83 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 0x7368ffef iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x78908c0f iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x78e56676 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7a0313b3 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x83cc99b0 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x853af153 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x87207e39 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x894af059 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c96f04a iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x92381661 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x966c6162 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96cae27f iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x97162235 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x97531b5f iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa9986514 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb436830f iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb9c8ad7a iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbf74691 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 0xbcbe5170 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcdd12e71 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcf94bb24 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3a9ce66 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd60ec3b0 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdbf685ad iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeba03177 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xefc368a0 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5b4a228 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5fccd29 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfbcf3ba0 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfd5209fd iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1036f122 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x11604738 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x34bc93a2 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x524f1421 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x18ff989b 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 0x19086a4a srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x33460a17 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x35a834ae srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x51dff5a1 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x666d5358 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xe8a5d5b4 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x12de2ee6 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8fd63cf0 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x98390be9 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb473240e ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0f013a82 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x154e3e9c spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x40dd711f spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4454be04 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb2a7968e spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x40bff8a8 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x63952353 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x89eedcf1 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9cb6f556 dw_spi_suspend_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 0xa094fc56 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x16299625 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2371cb09 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2a292a10 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2c60e5e9 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2dcea250 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2e845083 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x36f65de1 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3a3297d7 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x40ec0d9b comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x416cd6ef comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x478dc3f2 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x49a592f1 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4c27e397 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4dc0eee9 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x51dc8fc9 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x644479d8 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6fcc43e0 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x71f8f6ed comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x78a9d60c comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8c27ef32 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x91a3ee49 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9463ac48 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9aaaa327 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9da695ae comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb3013de8 comedi_auto_unconfig +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 0xbd51a307 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc71f3771 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd9cf13f9 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdab7bc5e comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe2d9aabe comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe8127756 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xebac408f comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xed7262b7 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf0b6fe76 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfe835d3e comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x46ee91e2 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x48abe2fc comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x608ea612 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa2089ebb comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa83f830a comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xaf81d16e comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xddec2bb1 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xde4bc3c6 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2c460d66 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7887a775 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x79c344ec comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x89559524 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x94ab3782 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa8ad1c0e comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x35ea912c 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 0x57c10f35 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x67ff18df amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xaf4b3c5f amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1db28552 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1e1f811d comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x35e09cf5 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4be1feee comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x67b28466 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6fe51eba comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7a923a36 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9f92510c comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa7d4b017 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xab6c131b comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcdd9e741 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd2da14b3 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xeb9207d9 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x24bfb357 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x3f379bc3 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xbb874d29 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xecec2e21 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x08ad29a2 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x129e7bf4 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x12c9d5d9 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x35c367ed mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3de1d555 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x51baad56 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5360bda9 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5c1a2d1a mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x60fb030a mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x63096401 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x77cc0843 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x90d1418f mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9f457af7 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb4536ff8 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xce99ec65 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd3305042 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd3ac1a4f mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdf1b970a mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe1d941f5 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf12cee9d mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf90e5c25 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x34d5a966 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x49f46b26 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x25913f0d ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2d66366d ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5e60d530 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x60d52ffb ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7bd21587 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x86e0f28f ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa1d787da ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcf3a7779 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x02871aa7 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x03f09422 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x06c016d9 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x11fb1fac ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x48c4d552 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x512bbe87 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2c41b507 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4f3d5a18 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x88a9a7dd comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x905f6ca9 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9737fad9 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa38bbc73 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe18725a4 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xd68983fa adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x502f0ef7 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f367fa4 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x6144b33c lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4bfdebc debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf815816 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x036dbf99 spk_synth_is_alive_restart +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 0x2e6b13e3 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4a373d98 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4ce7dd28 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x69dfa048 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x73d4d4b6 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7e4b8f75 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x86442336 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c1abbe4 spk_var_show +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 0xe5e1674f 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/staging/speakup/speakup 0xfd0e62ac spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x57ca5f47 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6b950f63 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x838f3be6 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x75a1121b usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xf5f6bada usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x170a46e9 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xc89b12e4 ci_hdrc_add_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 0x13efa71c ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x64143fd1 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x818cc940 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9410af57 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc277320d ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc5f582ea ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x13e5c566 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x225434e4 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2b98f4ad gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2c36c524 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2c6b6c8a gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x30bce9bc gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x66c37ee4 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7506ab86 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x77b4996d gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7f43ce7f gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x833b3969 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x83bf9067 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xaa6bb439 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xacbb2b4a gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xaecedb2f 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 0x7fc4c665 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x8d17ef5d 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 0x1ec33054 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x6ec92226 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x934ff0eb 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 0x178ccebc 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 0x23cce1f1 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2844dbfc fsg_lun_close +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 0x49c6f114 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x50ebb0b1 fsg_store_removable +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 0x8c32c3dd fsg_show_removable +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 0x9cc176b2 fsg_show_file +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 0xb778b7d6 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xbcfdf9d9 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd176b78a fsg_store_ro +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 0xde14cbea fsg_lun_fsync_sub +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 0xe82c95f9 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xeaceb257 fsg_show_ro +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 0xfbcb3fe4 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xfbf0f2e5 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x04ee6056 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x23d792bc rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x464938d8 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x471765d6 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4abab046 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4e9886fa rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x67eee2a6 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6aa6f20d rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x87ca7473 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb8ed8894 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbe50cecd rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc1a1f9e8 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe57b1144 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xec0f6057 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xeed68c22 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x21c4382f usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x23df9064 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2470bd5b usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x32ab307c usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x39fc4ddf config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3c78a224 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x42bc2c8b usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x498ee3ad usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x49fc2fe8 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x650bab6e usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6f5d4dc6 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x75b69fd5 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x941247f2 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x989c6a0d usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa8ad0534 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa98f7e29 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xae22ce2b usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb2740f7b usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb75f499b usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbe9e46f5 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xce2b3178 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd750de4e usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeedb6fc6 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf6924d7a usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfca019b3 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfcc645d5 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfdf69e16 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfef332ef usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x85fc78ee ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xdbe48714 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x122d5c1d usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x15f75896 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1dbaa045 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6eb812af usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7d0bd8d6 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa805ee95 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe0013673 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf09838f3 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf923485b usb_ftdi_elan_edset_flush +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 0x567fbfe5 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xe04a4165 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1266e3f3 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x221512ff usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x237f73f9 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x370feae9 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x46ba8477 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6fee0558 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7a5f1477 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x921bf746 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa11e91a7 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa43e9ecb usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa9d66332 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaf008892 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc8fc800c usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc910da67 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd821a2f1 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe917da08 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xeaaef823 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3d39c56 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf8f39caa usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf9680990 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfa831499 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0a7edde6 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x11293d98 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1c0f8284 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2622437d usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3f90b65f usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x40548cf6 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x449b5da3 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x46e15508 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4e920baa usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x56fcbba2 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5c06568c usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x71189192 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8930e412 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa10472c1 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xabcef5b1 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb8a0edf4 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbb19bf91 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc0aad7b1 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc6336834 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd08af126 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdf331553 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe21c466f usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf886ba2c usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfeab27a4 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x234c51c1 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3a1552eb usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3f06b292 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x565234fb dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6c02b6f6 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x750fa3ee usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7991d808 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x86169426 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x932adc45 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb2eae781 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb95f62fe usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc5c2284c 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 0x0c22e618 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x172cd1ee rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5fbc4ffe rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x87f75025 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9631d602 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 0xe2657596 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xed38ce25 wa_dti_start +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 0x0c5481ac wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x15b4425a __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x42902009 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4b46a6e9 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x52593634 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5c3e878d wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5c5404e2 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8477b023 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8560da0a wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa65ab15d wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb00caefc wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc8af6f1d wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd255c4b0 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/usb/wusbcore/wusbcore 0xfe78a824 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x224121fe i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x567b118a i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xaa917060 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x224efc5d umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3ed03fd8 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5ed2b36c umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x77a30e3f umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe1fa44ca umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe4d84ee6 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe6fcd70e umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf7060c68 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x049d6bf9 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x08ce902f uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a937dcb uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x10f3ce63 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x150b2e6c uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x19b53ef4 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x289a8f0d uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33e3987f uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x39e21977 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x41b3cbe2 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x467eb0ab uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49feca5e uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4bbab225 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d617e46 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x529d108b uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x52a93741 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5bcfe7a4 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x672b7b69 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x69748372 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7208879a uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x775c6778 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8891103c uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e5d5664 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x93b2ac6f uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9ae64e11 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa3e9e040 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa56839d4 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa5c92ca4 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa6e68bc8 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac32a773 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb445b4e1 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc20e4fd2 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0baabba uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe3d6f910 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe72c306c uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf709ba2b uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf7167070 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x5f22e749 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 0x39bc6ebc vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0xc6abb76f vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x44cb2d63 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 0x9a26cb8d vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xafe4a421 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc13c73e0 vfio_register_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 0xf482190d vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf7a3cb24 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x0540d9ce vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xff0780bf vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1d384e77 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2003510d vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2423d6ae vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2c9be0ae vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32bcc5e8 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3514add6 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3ddc695a vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x486bbe6e vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x52d6c7fc vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5dd73a20 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x74dacb01 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x78376595 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7df97c04 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x824e3573 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x851dbd9e vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x89822cdf vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8b995620 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8ebe9ff5 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x92052a1c vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa1cff70f vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xad0ced1d vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb974108a vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbeb4588e vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc31e568c vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc63bb58e vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd385dd64 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd8c39f20 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe4400f42 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe53700f7 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xebbc5b2d vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x02923ad0 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x82d0f9fa ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc6c1c78d ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcd43be25 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd6e17543 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdf19a83a ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe7e7d4cb ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0063ae95 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0aadffa4 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x36548617 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6db5ad93 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6e510d67 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x72930a32 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x756dcd1a auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9e6eadc9 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa434c9fd auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xaef73e76 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x80ad50ee fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xd67a7297 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xfb468d6f fb_sys_write +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 0x664f5730 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x67f2b4dc sis_free_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 0x09b95647 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x5a92439b dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x60f10769 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 0x1022ae7e nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x19fb8ea0 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1e6961a3 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x32de9ff5 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x885ad6d3 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9650559c lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb93ba80e nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x007361ff nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0375681b nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0504e58f nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0617b648 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x064d155e nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x065a674c nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0debcb9b nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14a7f5cc nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1713b4cd nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x178a0e19 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1949b7e2 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19c4a91c nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1dc14c5e nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f0dd275 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x257dc5db nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x258665a0 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25c18198 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2758f655 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a612f57 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2afa5401 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b7d6d8d nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e71b974 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31449e4f nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x319d55f8 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x339aada4 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3596c367 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36b1c3ab nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x395a6663 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ac11f3a nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e2c5070 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4076483c nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x413226f1 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f7974c nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43ae6e9d nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45ac8f38 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45f881b5 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4772d66a nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x507dd9fd nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5303a9b7 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53b2a34d register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54381560 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54b6b6c0 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c2fa12b nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cc8b989 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e2b3faf nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fbf6a6e nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63641523 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63df2a13 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6628800e nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6689c1e3 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6889199e nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ac7ccfa nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c130189 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d6a732a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6df0667e nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f180f4c nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f3e7734 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72cf95a4 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x772e5b8a nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x777983c2 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x777d49ac nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x789bc114 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7eeff2fb nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x826f7cfb nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82ea8c96 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x830996ee nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x856f28c9 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85a95e31 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85d44eb4 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89059a36 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89e387e0 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f3a6130 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x906ca5ef nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90baac2a nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9385d625 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d0db870 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa515f1ef nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa65c79ac nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa72e36e8 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7b5ccc4 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa85d836d 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 0xaa93136d nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafd9ca85 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0aff30f nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb12e9795 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2493ea9 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3571075 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4f6d4dd nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb55eb5a7 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb69fea2a nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7b63cfa nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb93dbeaf nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9654b3e unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb97ad24d nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba0d6519 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf142251 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf801519 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0e214fe nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc49e471f nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4a13825 nfs_pgio_data_destroy +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 0xca69a9bd nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc4c03c5 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcea88938 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4a35946 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd530c3cd nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd580de56 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6eb076d nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9591293 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc5e4585 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde6a514c nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe10eb94b nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3f29525 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe857443d nfs_file_fsync_commit +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 0xea33a82a nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec039428 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef42cecd nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf53d2ec3 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf542f137 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6212947 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf66767f2 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf772e863 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf88bc2c6 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfaf58d43 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb53ba67 nfs_submount +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 0xfd9f0e6d nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x67f92a41 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x00b8849a pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04234d96 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06a57ee6 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a3944b0 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x194b6f7c nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e8b9dc0 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ea5c8da nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x241f8af7 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x281dec7d pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a6e73a0 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2cc0f10e pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x32020147 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3a6349b9 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e73bc6e pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f2dcf30 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40112523 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40536a5a __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x452dde85 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x56246c63 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5920e509 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5a058509 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x605ceef7 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x638194c9 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63dd41ac nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6486acec nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65fadbc4 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x671c7df3 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6c66b924 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x702d50eb pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x77331119 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b26a3a7 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ba5bdfd __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x87bf3889 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8b205217 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9042c818 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9b5bb1f7 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa2b2e15d _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa4d10502 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb130590c pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb50eb093 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5ff197a pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbcde7c49 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc09468b2 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4425a4c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc874bb54 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc986608c pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9ef7974 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf68512e pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbabbc90 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xddbcfc8f nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdeb0b23f pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe2b992c5 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe3c8cdf8 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe51c4308 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe7a63c9d nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf0e9746a pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf3906460 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf414a2a1 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf9504bc5 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfdb36175 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xa0081de0 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xb84be279 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x170927d5 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x9640c3ce nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0f94e0d1 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x18e3d584 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 0x29fd5119 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x34cdd21e 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 0x686b4bb8 o2nm_node_get +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 0xad959a9f o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xba2e33d9 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 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x186a39c4 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1e99adb6 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1f3f47d0 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x2dfdde8b dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x73cfde64 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 0x8eb4b0ec dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 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 0x3c1ce10f 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 0x9a92b330 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xb3f7a2f6 _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 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 0x8056b2c0 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xcd8831f2 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x182b15ad garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x200f0cba garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x434da5ab garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x9743bf2f garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xfcc770ac garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xfcfe2fc5 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x16ce1c1f mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x18baf240 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x2e521bad mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x91099634 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x9b98d00d mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xabf01e7d mrp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x8f45d26e stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x99aae7f3 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0xeaaddb03 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xee044aa2 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 0x1cd56227 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 0x10c8f066 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x56aef569 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x58173220 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5c948ff4 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x75e302b6 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9e76ebdd l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa30258b6 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd93e58bb bt_debugfs +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x65d20fee br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x93585340 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa0558686 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb28da584 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xba90a344 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc11b4012 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xca7fec87 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xcdc70968 br_deliver +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x98207c7b nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xa02e2076 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0b2aa966 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x10e0c32a dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x13faf4ee dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14b80968 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x171710c0 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a664870 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a958923 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x201e1eab dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x225be7a2 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x366095ec dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3ffe3626 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x41ed2717 inet_dccp_listen +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 0x5fa2e764 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x624a0c82 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x640ffcf4 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x73290334 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74c64b2e dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7961f9e9 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x859bf0d5 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x87709dd6 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x90fe5e43 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x91cd2ba7 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x92b56ffe dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9902e6a7 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa059aacf dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0596156 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb683b06c dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcbf6138b dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdaf3e8ce dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd9be8ab dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdfb37f5e dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe6986b4 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe961840 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x52e89a4c dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6a6421ec dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x999ac9c8 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa74e482c dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb21d4840 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf9876030 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x1867ea7e ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x35355f89 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xa6beeef2 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xae12e091 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x308ad01d geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x696e3d3e geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xb52c5e01 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2ea22d94 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x7426e63b gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9030f33d gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xefdb0085 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xfe417cc5 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x29a7bce6 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x41a9a1d4 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5508ea57 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7b3c62b1 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9ec458b7 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xad0f740d inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x05ba07d5 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2b5ea170 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x352a9b0a ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x519e252f ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x68e3b82a ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x72a52717 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x73552bfb ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x799dd954 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8d68e459 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x94a54593 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9ba9b3ce ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb75fd0c6 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf22069b4 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf8705424 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x4632c8bc arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xf642a607 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 0x212ea0f9 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x46b6c5c5 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x62f0dbf1 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc62e886a nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xdda86060 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 0xb8a0942c 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 0x2f4b728d nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x480c9c81 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xaedcfa10 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd86d00f3 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xdfc1b7a7 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x74ba9252 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9589a95a tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xabccb590 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb3474053 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xef1cf4ef tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf01e2b33 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x011f1e98 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x4c24e387 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb1c363fd udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x3c5b6f2d ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6d4a22c7 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x96abbbe7 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa02ccee0 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe94f7511 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x9f262c91 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xdf8fcb88 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xb9af8dfa 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 0x23fe8f1a nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x2b99dcfb nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x4ea78d86 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa0ee4315 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xda3de583 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 0x50cb1a14 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x476bb3f2 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x528fec77 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x974c1bf9 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xa4938e6f nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xccd95322 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x2b0fb9e1 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x062ab855 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x07809afa l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x088ced8f l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x17e3a034 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x235ff782 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2c51c639 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2dc29bff l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x30f4299b l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4f9d9dc1 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x547bf56f l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x639e1917 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6e5dc78c l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbb193c5d l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbdc36117 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xda41f6aa __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf1cb98d2 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x0d955a2a l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x001e0006 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x033a97e3 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x071cb53c ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0dffdc32 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1c151947 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x21535715 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3aa978c0 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4f7ee3c0 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x787bd3aa ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x831bc9ee ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8dbe1bf8 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9527c2b7 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc8a4f09d ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcef394a9 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe0eb70fb ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe4c0d2c9 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0cc3b53e ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2c27e57d ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x334efba5 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x391c122b ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x59418e10 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5c5a2433 ip_set_nfnl_put +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 0x7ec44617 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 0x97913972 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa027d432 ip_set_type_unregister +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 0xd20f00b2 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd28e8e4f ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xda275ead ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xee3f863f ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xee5a02ea ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf596d4ae ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf98f1c10 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x2ea6cf95 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x437ed61e ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7e2aa066 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc65a3efd unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04a8f794 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05d3bdd5 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06ccd957 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07cfd8c0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15ccee6d nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1efbaee3 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fbd1f2b nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2358d9da nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2409cd99 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2a911134 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2aabd75c nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e5d7bcb nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e78c075 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30ab65fc nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32b37583 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x369e9516 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e62e4ed __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 0x3f7d73a4 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40710b22 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4103a88a __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x446040bf nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47a6ee28 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4901904a nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ba4c160 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c3889a5 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53bfa4d4 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5407f5a4 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x550663d1 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58f76744 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5db31916 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5dfc4eba __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f691032 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60de7d36 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x63d05c9c nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a5adb27 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e3ed2e0 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70c45134 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x712cbf61 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x75094ecf nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7600e750 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e164a2d nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f38ad6e nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f76634c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x807fe38e nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87a15102 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d11b34e nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d519134 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dfaa2c5 nf_ct_expect_register_notifier +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 0x94486948 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x944d6ac3 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94efc6dd nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x96e3bfdb nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2fe4672 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6dbf5fa nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa4a4b0b __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabab67e6 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac4909f0 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf942749 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb458f071 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb65d707d nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc03a6886 nf_conntrack_l4proto_udp6 +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 0xc650a117 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc71ab35e nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcae931d2 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xccae5db1 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd09bb6e7 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2f5cb3c nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5b02693 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4fc8333 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea20c8cf seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeba776e0 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf20c0a04 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf42f1d1f nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf58e184f nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf87bcec0 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9c21fb9 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff61a160 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x6e50e2cc nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x81e5cc45 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xddd3af2a nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x222ab76e nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x69312f72 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9633c2ae nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9765a13b get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xba728ff3 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xca0a896c nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe29803f1 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe99ac4c4 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xeaa71ad0 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfcb01433 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xd2a66b93 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x697a345f nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7796b7c0 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xeb8cfc30 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xef3c7842 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x2998f910 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x7a0841d9 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2b492ae3 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x35d65e57 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7e472160 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x84f807d9 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9c8ed0a6 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc09173ac ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd8dce99e ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x29dbbd53 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xc8130dea nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x342ab8dd nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x644f1910 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb4334653 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xd8d8c9bf 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 0x3a0d2bf1 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3a1a7441 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4a72fbbf nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x51e60554 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x59e44bfa nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6834feea nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6fe86575 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc074ffaa nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc360e3ba nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x1cf21a08 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x6953bf9c 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 0x45f890dc 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 0xe5404628 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x06c66fd2 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x11d8d857 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2d8c6245 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x35bb1940 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4c569c00 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x55767664 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x58275c89 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6d7c76bc nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9f38215c nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa896acb5 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaee01c79 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 0xd376c5a9 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd389debb nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe0678842 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe137380d nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe1a1bd14 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xeab78be2 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x022a1d15 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x15820ea9 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9c7e1859 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb16a9422 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xcc9b01ae nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd65e0e6d nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd90eb6e9 nfnetlink_alloc_skb +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 0x642e6103 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xa14b568d nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xd1536cda nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x38f0fedb nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x39114190 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x770cca24 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x1ef05b12 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x430df594 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x68c6693c nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb353fd5c nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xbc69abff nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xbf92ed60 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2685d1fe nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc9424b2b nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xd931c8dd nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x7f0d427b 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/nft_reject 0xefecb537 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x01259538 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x17a821ca xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x242ef579 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3661f8a8 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4ebc87e5 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x51a6f60c xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x51eb84b4 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6cbb380c xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x89092364 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd37bce03 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd5409dfc xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xef376528 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf8c8af57 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 0x48b7f0db nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x7d139074 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xc8b90694 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x445336dc nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xc3df3dc9 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xe041cab5 nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1033669c ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x131ca4c2 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2227609b ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x440c145d ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4ccf1581 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x84935e81 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x872e5e49 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 0x155f2731 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x29fdc6a4 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3073687f rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3a77eb4f rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x426aab1f rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x7093a57c rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7abfe956 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x7b1ebef2 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x7c269c13 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x99e8bcb2 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x9be1b010 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xa87cb269 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xaac4df97 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb1c93426 rds_trans_unregister +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 0xc7977b2e rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc89b2fc7 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe1df15ae rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xe3c386ed rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xe875153f rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xec778cca rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xf4649d8a rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xfe264084 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x1391e805 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x401355c9 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 0x2c0f1e7e svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x3333e502 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x41e9244f 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 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0027087b xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00e255de rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00ec561b rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x037de4a1 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 0x061c6482 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06e3129d rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08d68347 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a168964 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b8b52ff rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0dd5db8b svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e47f938 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e8375c7 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f70996d xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10415c68 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1152112f xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11ff422d svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x162ec1db xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1675a68c xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18845eb5 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18ef489d rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1dd16f9e xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e15e70a xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e67d93b svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fe65854 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2125920d rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x219a6f88 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22b6f932 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25bc297d xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x261e0a34 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x267c91cd svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x269b9b7f svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x275ea017 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x288e712c xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28a076c6 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28bdea9d rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28be8131 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28da0a7b rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c085105 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dc9596f svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ec9af5b rpc_lookup_cred_nonblock +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 0x30568141 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3188ce8f rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31bc2813 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32bbe044 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x360eae62 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37067b0e svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38ae1b31 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3912f7bb rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3af19c25 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be97fa1 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bff7807 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c9a3100 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40d36332 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40f4ad1b xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4168404f rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4315cd65 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43870a1f rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x441a3496 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453e8d52 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x454c2119 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46d1d002 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4916572d svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x496543e5 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4b5329 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ab5dc2f svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b1451cd sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5028564e svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52eef24c rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54018a3d svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58821a78 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5938bc01 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59bdda52 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a30a066 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5898be rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bee0e76 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c2145bd rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d65afe4 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5da0be04 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e382fdd rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fbfa05f xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6168f3c3 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64451812 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6451090a xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x652767e7 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x678c74e9 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68122ee0 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x681e5164 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b45d2b0 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f599871 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ff5ef46 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70395051 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73ea3943 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7496849f xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74c4e2f3 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x751f2a91 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77462f93 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ca6ebf rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77da1cdb xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77eadcc4 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79dbe0e3 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f977784 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fa71be7 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82f9ea09 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83ccc81b rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8505c4f9 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x855e4cd7 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87d8697d svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89155405 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b097746 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b46bf0f rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cb07178 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e9de720 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f8d8a52 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92c78a95 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x937f67e8 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94eadff3 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x965c0f01 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97c461fb svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99c49877 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99c87001 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a4b8bd3 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a898e6f rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ab21264 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bf9e20c rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dfe8489 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ea07189 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ea37cea rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa408af1d xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4531023 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa47342db xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4f60488 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa719235d rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa71df05b xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8316b0f rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9764f62 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e2d45b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa571740 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad996a90 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae6cf8fe auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf15287b rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb08f3515 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2138bc0 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4f79907 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb52a6235 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb580f19d xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb62b1cc6 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6814dff svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7283f7d rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb78f672c rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb87bae18 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbab41ba9 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe677cd1 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf3d2ff2 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf6fcefc rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc00b03a9 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc10faca2 svc_destroy +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 0xc4a98da8 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc86439c3 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc93ac89e rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc93fd57f xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc98dd272 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca392c6c rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb220443 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbfc6624 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce1bd3c4 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcebbef71 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd317a489 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd32d55a0 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd351012f auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd68f39b7 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd85d18b5 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb0e9a97 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb723866 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd9d04c6 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf43f8bb xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3d366fe rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4440193 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7851c66 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7904597 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7b13007 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7d80765 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaa49fdd rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb45786e rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebb2ba26 xdr_init_decode_pages +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 0xeeb9fd1a rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef732309 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0719342 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf183cc1c put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4e990ff rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6d06f19 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8b4fba2 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcb997b0 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe794131 xdr_buf_read_netobj +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 0x1abaa2b1 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x21931066 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x29ab5536 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3f8e6db0 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5f57e1e1 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6bfccc20 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 0x8115d785 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9ce1da3c vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa0650c4e vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbbaa5ae6 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc6aae4ce vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcb6f9e2a vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe058adcb vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x01d809f3 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x08ea8cce wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x39beef46 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x540b8453 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8751a8a8 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb131d619 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd2e72265 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xda83715d wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdbd4b29c wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdd72d4d0 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdec93df5 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe4e4d686 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfb576a7b wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0fc15bc4 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x12729920 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x31a9ce1d cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x38233869 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x38b59ecf cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4cecb5e7 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8a61cc35 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8a82f29b cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9d3a4f99 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb0df3137 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb313c15e cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xec1fc636 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xed4b1315 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 0x8099f3e4 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xacb33e8f ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb26f44a0 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf9115936 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x0847c442 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x7e983064 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x03141f5b snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x05d9e528 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x06d4d6eb snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x118daccb snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13597e4c snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1453ee09 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1740fa2a snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e13326c snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f5f7a91 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x202fff98 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x214d4a61 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b6d678f snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3586096c snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x385095ab snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3ed87e3a snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x487dddae snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b9ec021 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4bd10240 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53cebb3e snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5db6aae7 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x65e8406a snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x68779f68 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x722e9106 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x72a6e6a2 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76c21f3d snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76c9a85a snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x873275fd snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x884c0eff hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a802703 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8c538853 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8ccb58d0 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8ccfdc28 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x95cd8c62 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9636836b snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9bf2848a snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9c898d25 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa07725ba snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa0c785a6 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa577ae9e snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad56a60a snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb2123699 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb487345c snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb602f399 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb6fdb655 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc3291c04 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc4fa8d6a snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc5671b6e snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc7554b07 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc6469e3 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1a2e096 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd337c559 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd3771ad1 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd44ba33a snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd4e33423 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda8ab4c7 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb708cc7 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb901731 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde426f04 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3774092 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeb7f97b4 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xebb25dbb snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf289d749 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf2edee71 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xffd3941e snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x18d70635 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1d8585ee snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x90722f57 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa79c1dd0 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xae5015fd snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xce5f9077 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x060b180a snd_hda_jack_add_kctls +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 0x07e3e416 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a941497 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0db4921a snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x132e0013 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15770def snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15bbe856 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x165c94f3 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17a1e929 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x195db934 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19b5e37c snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e9e3255 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ed289f4 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2202f9f3 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x228e59ec snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x240aced9 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x250fc6cc azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2729c349 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29ce3df0 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ab1a3d7 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b406b5e snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d419ae2 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2eb2d160 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2fd83eca snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31a79c0c snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31c73dfe snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x323a3242 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35002297 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x362d5e22 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x389b32a2 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c6e8f04 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43e478f1 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4428090d snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49d1ad26 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a8baf98 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b4c8730 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bd32181 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f55629e snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50f53bd0 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51158442 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x515f29ff snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x552dd88e snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x565b3872 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5741a2c8 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58a2aac5 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c8ad391 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d2b6b8b snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d7599ba azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d78358a snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5da63a9c snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x600b37c2 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6253531b azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6bb3b77a snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6cdb9c17 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6da969ba azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x750a8c23 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75883a77 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x786096df snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7941bc67 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a1e5135 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b0d15ef snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e9ba60c snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81d2ba2e snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8464ae88 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x847a6200 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x867bde5a snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86820f6e snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88b76407 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x890c47a9 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89c9942f azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a5bfea6 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d640dac snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fa2c948 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x928a34f7 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x974cd0a2 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x983712c3 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x997f8108 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a18073c snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a585745 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bf54f0c snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0c0772e snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1166c70 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2435127 snd_hda_enum_helper_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 0xa5091710 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6065ea5 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa81ee6c8 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa586632 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab74e32f snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae3077a5 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf63b05d snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb05e2b0e hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1b88275 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb30cb996 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb793af22 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb92e1bc0 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9af1613 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9cdbc75 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd20c50c snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1782868 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3567799 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4272aa5 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc718d89e snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc75d95e6 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7d5730c snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcaeb9a98 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd8e47f4 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcdbc0f90 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2edf22f snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6cb9190 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1ea380a snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe32336bd snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5a26b1c snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe65c7677 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee0e8632 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee5322d0 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeebca79b snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3548b9f azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf447346d snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf60614aa snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa35392e snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd010276 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd297ddc snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe8c7120 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe996cc8 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff963d7a snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x00d55c3e snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x01a6f00c snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0c93abe7 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1486d8e3 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x20a5c63a snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x23bda828 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2fc84292 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x36398c1d snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4a684ac3 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4da6f195 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5a2577dd snd_hda_gen_build_controls +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 0x7cb5c714 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8287464c snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x829e3b70 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 0x8fbc1657 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x956b6fd3 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa15e88a0 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb2ed1a17 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcfe8d5aa snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdf7b4118 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfd4dab4b snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x12b2a0ae cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x40b98c5b cs4271_probe +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 0x6f17f24d cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xb3eda58d cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0301dd99 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0d605112 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x85c44eab cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xc2c1e1bc es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xc6be6ffb es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x08789a6f max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0xd8a91b9a max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x590086c7 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x6ae5eb58 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb301d899 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xbdea2e79 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 0x3d0c6b4c rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xea2f1c3c rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0x629d6663 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 0xaeff2ea4 rt5677_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x0f287d0a sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x40238f29 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x547a3963 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9960d2fc devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xab2cd699 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x64596042 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x65500f3b ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x8588a27e ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xcd262be4 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xee7a7612 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x9b941fe9 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x0d69be0d wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x104d42cc wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x2501eac9 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x29912127 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 0x73ee55ab wm_hubs_add_analogue_routes +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 0xdc29b24e wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xdf3a125f wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xea6a1098 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x0b65533b wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x1a16220e wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x5735c335 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xa15c41ce wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xbc5520af wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xad725727 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x49793316 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xa5f9d927 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x8f6dd0ea fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x9f4b0390 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 0x0ce35f5c asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x8c1dd22b asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xdad3f1f9 asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xfa3b33cb asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0xac4410e0 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 0x66a11fb8 samsung_asoc_init_dma_data +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0x8e8d5051 samsung_asoc_dma_platform_register +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2cad3064 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2d7a9e38 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3a1ca6f8 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3d540303 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x46be0f82 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x849c6bd6 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8f06645e line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa2f922d8 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa7a9d6e0 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa95ea336 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xae3f9449 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbd6e1303 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd7f04699 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf26c16d1 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf89b31c0 line6_send_raw_message_async +EXPORT_SYMBOL_GPL vmlinux 0x0020bdfe snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0x003d08ad skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x005a0a9f regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x005ee8cb dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006768d9 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x008a55e4 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00b50cd7 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x00dea844 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01158081 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x015bab22 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x017071de usb_mon_register +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 0x0195f8de regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x01acbccf thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x01b4e798 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f8f216 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x01ff11d2 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x021855d9 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x021b9d8e inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x023350b9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x02381a87 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x02471367 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x0249db55 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x02522b56 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x025c5902 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x02663ba1 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x028e6167 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x0299c7ac dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x02a5154d powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x02a83604 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x02c22f6a da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x02f65958 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03049f7f max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x030a6a9f posix_acl_access_xattr_handler +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 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345555a ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x034a0317 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x037f17a3 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x0380262b usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x039159a4 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a58572 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x03c9863b dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03eb15b1 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x03f6b231 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x03fabb6b gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0411d287 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x04178bcd dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0x041c56ea hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x042da606 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x04327bd2 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0436ae31 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x04621cfd ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046ac718 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x0470f0ef ping_hash +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 0x04abe613 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x04b2c777 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04ea5cdf __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x05309953 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05542702 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x0573324d smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x05750e33 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a54ebc blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x05a5a445 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x05d26291 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x05dbaa84 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x05f2c9db blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x05fa17e3 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x064c0e9b tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0650a46d crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x06722800 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x067968a4 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x06884c44 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x06ca8f18 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x0700f856 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x0721432d debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x0722c771 device_create +EXPORT_SYMBOL_GPL vmlinux 0x0725892c da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x07325c97 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x073a1b5e tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x0749b364 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x075a6b02 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x075ad949 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0x0760372a blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0766a984 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x07684a40 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x076d8923 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x07709c5e arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x0785e372 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x078be7f3 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0x079e9772 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bbc347 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x07db94fe snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0x0811e1ca usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0844acb4 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x08519922 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x08842417 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x088867b8 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL vmlinux 0x08971654 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x08c3eff6 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x08c5a4de wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x08e6c115 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x08ece55e blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x08ee2bcc usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x08f22b95 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x08fdba20 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x0919cd9e dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0928d4e5 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x0932ef4a skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0944df44 regulator_list_hardware_vsel +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 0x0958309d page_endio +EXPORT_SYMBOL_GPL vmlinux 0x0958637c list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x0962b80e max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x096c9c43 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x09959f66 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x09a471cd sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0x09a9f5ef snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0x09b9e3ec sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a14d2d8 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x0a3a9722 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x0a4aca03 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x0a5faae3 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x0a67665d regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a6f9635 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x0a766bd9 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x0a79a0c9 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x0a912fb5 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x0acc60b1 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b13abab get_device +EXPORT_SYMBOL_GPL vmlinux 0x0b4cd178 split_page +EXPORT_SYMBOL_GPL vmlinux 0x0b5cc6df console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x0b6addd5 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x0b707ae6 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x0b7cb933 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b8a9ad6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x0b962f74 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x0b9f93dc rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x0bba74af power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bc725fb blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x0bd41223 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x0bd910c1 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x0bdcfe20 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x0be9fb31 cpsw_phy_sel +EXPORT_SYMBOL_GPL vmlinux 0x0bf9691d tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bff4ed4 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0c03cb66 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c15735a rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3e152f mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0x0c449ce5 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x0c4b3e44 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x0c73a34a tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x0c7464b3 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x0c8ca59e attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x0c8ce593 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x0c96a619 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd047fc sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x0cd0b94f tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0cda37b1 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x0cf217c4 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x0d10f95a usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0d1666c8 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x0d1a2274 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d670cdd mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x0d6c3163 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x0d7768dc bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0dc19e86 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x0dd5b480 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL vmlinux 0x0dd74935 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0dd9dc2f to_nd_blk_region +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 0x0e1dfe8b mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0e308e31 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x0e3d666d kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x0e5b59c0 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x0e700819 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x0e8dee11 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x0e991d3e vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x0ea44b0d ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x0eea29e1 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0efb50b1 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x0f1d2c89 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x0f2a8987 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f3cc484 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x0f65a719 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7b191f _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x0f85ac7e blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0fb7215b regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0fc4bb49 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x0ff9af09 cpdma_ctlr_int_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102e7031 omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0x102ec4ee devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x105a76ae kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x1073f2d6 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x1096a10e regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x1097de29 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x10a85e18 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x10e1d662 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x11025677 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x11046d13 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0x11259103 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1142fe09 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1181d326 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11a33ff9 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x11b23384 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x11cb0424 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11d7d24f of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x11d90b58 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x11ddccd8 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x11ebf873 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x11f3a0f1 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x120422e2 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122b64fa crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x123ff04d put_device +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 0x12624aab sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x12650f90 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x129a38ec inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x12ae6a07 __of_genpd_xlate_simple +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12b5d76a virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x12ba1497 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x12be40de pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x12cd61db pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x12d2b9e4 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x12d5f448 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x130a9b99 snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1331c461 omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0x13541047 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x135f2afb bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1368ae03 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x1373a10c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x139f739e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x13ad39b9 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13db5ea0 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x13e1487a snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0x13e67f7d aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x13f00854 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x13fd0cab kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x140895e1 omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0x1408be29 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x14092a04 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1440cbc9 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x14566597 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1475a150 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x1477827b bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1477b0e9 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x14baf13e mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x14c68991 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x14f0534d usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x14fcbab5 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x15089a79 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x150c9fba of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x150e1579 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x15150048 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x151fc11a ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x1528fcd8 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x1549a36e relay_close +EXPORT_SYMBOL_GPL vmlinux 0x154a2b7b mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x154ae10c blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x15674c66 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a003d5 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x15a0d264 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x15b5b3fb bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x15c23202 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x15ebe74f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1615e64a snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x16458c7f bus_register +EXPORT_SYMBOL_GPL vmlinux 0x164d735c snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1651b5d5 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x1663893b register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x1667db02 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x168de8bb ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x169e8191 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0x16d25743 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x16f00733 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x16fd0062 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x17076757 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x1707b1aa ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1717a05d omap_get_plat_info +EXPORT_SYMBOL_GPL vmlinux 0x1719ea63 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x173b5260 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x174909de ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17671a52 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17827057 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x17c21c8d platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x17df0560 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x17ec8789 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x18087ee9 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x18196aaf virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x1832b6ba blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x183b34f8 virtqueue_enable_cb_prepare +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 0x18ae990b mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x18af8314 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x18b7acd3 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x18c3074e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18d8917d inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x192441c6 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x1944bcad fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x194a377c dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x197b6c0e sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x198720f9 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19928635 mv_mbus_dram_info +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a58374 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19d2594c usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x19edbaf8 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x1a178374 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a202096 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1a22ca7c extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x1a253a96 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x1a25f373 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x1a330f7d usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x1a4a24ea regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x1a618cc5 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1a6da4f1 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x1a79a5ee usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x1a92f6d1 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa7a5ff of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad378ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x1b3193ff gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x1b3261e0 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1b32ca70 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1b36e091 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x1b3fdb72 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x1b4280ae __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b762ac2 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x1b873cf6 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba3e439 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x1bae1444 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x1bb5fc26 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bb9cef6 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x1bc58f21 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd8ed22 snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x1bea93a5 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1bf7b68d cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x1c01e5a9 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x1c02d075 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x1c0824c1 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x1c222e7f watchdog_unregister_device +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 0x1c65c3c5 mtd_is_locked +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 0x1c88a230 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0x1cb29a89 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x1cb3ce5c usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x1cd9ba0b ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x1cddbaf6 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1ce2a878 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x1ce8ee33 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x1cf3f756 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1d143e56 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x1d20250b pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x1d230444 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x1d4cfa43 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d762e66 __clk_get_hw +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 0x1d8371ed stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1d87ca48 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x1d8d7de3 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x1d936bf6 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x1d9719d5 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x1da2ff03 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1df495a0 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x1e09abeb max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x1e1a3cd9 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x1e2aa0b1 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x1e31c2fa raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1e3a655d __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x1e4d30f1 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e65a513 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x1e6cc653 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e7135ba cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eaed5c9 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x1eb1f1bc posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x1eb51262 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x1eb641c9 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec4c82a sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x1eebf1f0 mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1f1a2ca7 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x1f3964b0 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x1f43cf32 seq_release_net +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 0x1f62e79b spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x1f74c88a snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x1f793f57 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x1f79de17 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f85a22b sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f957574 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x1fb9c165 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x1fc20d44 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1fc2e4e5 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1fcf1449 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x1fd512d4 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1ff6c8b8 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x20091f06 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x204fbd44 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x2054d14b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x205cbe47 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x206933c0 omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x206ee72d ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x2083887c blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x20cdd7e4 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20f0ae2a snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x20fc8812 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x211e3913 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x212c3189 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x21339779 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x2135efc6 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x214269ec usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x214dc8cf uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x215b3f8c hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x215fe623 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x2193c095 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21dce08e pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x21de16d7 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x21e005f7 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x21ed8fc9 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x21f22828 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x21febf58 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x22118a7e usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0x22176b9e trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x221e09df pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x221f28b2 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x2256e169 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x225900c7 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x225e3c3f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x225f1a7e devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x2260f967 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2271f0e2 omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0x22861938 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a105e0 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x22a289f2 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x22b13c66 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x22c9e679 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x22fa4715 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x230864f8 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0x230f3a67 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x231138d3 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x233e65b0 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x23475c18 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x237497bd usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x238091f0 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23a725ce of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x23c25ec5 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x23ca212f regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x23ced4d4 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x23f19f36 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24078a60 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x241987a1 omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2450b231 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x2452ef17 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x2468d2de xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2484ea19 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ad8856 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x24bdf767 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x24cc5a4c spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24ed9559 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x2500adbf ref_module +EXPORT_SYMBOL_GPL vmlinux 0x250ae35c snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x2518c50a snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0x25287977 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x253690ca __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253d60d2 md_run +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x25483e27 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x255174d7 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x2552eb47 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x25576eed sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x256531f1 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x258f6f11 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x2590a0d8 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x2594d16c iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x25a2a107 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x25dc93ca phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x25e146dc snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0x25e4fa8c btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x25f2d175 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26791c78 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x269e7c11 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x26ad29de kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bf0c94 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x26c45b41 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d02985 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x26d1c7c6 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x26e02ba4 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x26e140e4 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x270331e4 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x27076b72 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x271d209e of_genpd_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x27254052 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x272cf22f thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x2738c8c6 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x274e6f0b pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x275e455b unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x277ccbc3 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x278f4b5c pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x27b87ffa sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x27bba0a9 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27e39f08 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x27ecb7e9 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +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 0x28442203 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x2845fd5f sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x285067f7 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x286b707d pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x2895286d sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x28a4996f pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x28bf667e led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x28d7bd5b unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x291daa97 component_del +EXPORT_SYMBOL_GPL vmlinux 0x2942c61b dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x29493c3d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x2950b5a4 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x29a011fa gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x29a3b4f4 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x29a55738 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x29bd20fe iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x29e371b3 sdhci_pci_o2_resume +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 0x2a1cca73 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x2a303047 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x2a30d157 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x2a45252f perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a86e900 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x2aae43f7 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x2ac0de55 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x2acf1903 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x2ad618df ahci_reset_em +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 0x2b2f90be tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x2b532bfe ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x2b8676f2 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bc2d258 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x2bc7c06a uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x2bf87811 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x2bf918c7 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c08b74b blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x2c11540e usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2332b2 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c5cef50 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c5e51db i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c78300d usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c7f790a crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2c87ecff cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2c967f8b snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c98a63d device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x2c99d823 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x2cae16a1 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x2cb0b6d4 disk_part_iter_init +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 0x2d19c7a5 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d24a321 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x2d2adbd4 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5bfbb3 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x2d5c5957 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2d618323 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x2d61dd91 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x2d6204c9 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x2d6677e7 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d79b65c ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x2d973979 inet_csk_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 0x2dd37116 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x2e03259b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2e10ceb2 ipv4_update_pmtu +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 0x2e2ff0c8 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x2e4ab480 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x2e51a5ab __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2e742b00 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x2e8ac17b ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x2e8df01a scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e9ab6e3 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x2ea594f7 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x2ea7ff6c __of_genpd_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1c8552 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x2f2567d3 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x2f3559e7 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4d336c tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x2f500619 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x2f7b6833 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x2f7be079 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x2f801292 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x2f83791e sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x2f89ffac devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2fb72563 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x2fc7b541 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2fcc173b ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0x2fce1f86 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdf5e8b fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x30213270 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x302647fd devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x302bedf1 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x30308cf6 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3031f115 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x3034f92d irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x3035f949 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x304e85fe usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x306af93a handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30b2ec3e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x30c65d09 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x30cbbfbd relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30db939d regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x30dd7817 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x30e7582c usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x31060d1f fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3118c86d fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31319153 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x314023b8 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3166d4b1 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x316bd664 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x317fe8ec regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x31b433cc fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31c9b30a usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x32023f07 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x322692af ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x322f2b74 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x324e1463 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x329a4c69 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x329c49c0 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x329e8e83 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32b6c786 gpiochip_is_requested +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 0x3302f31e cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x330b1e0d of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x331604a5 tps6586x_get_version +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 0x3341b298 __fsnotify_inode_delete +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 0x3375acb6 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3399a99a snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x33eb776f driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x33fb3e59 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x3433d099 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3440a9cd kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3460dbe6 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x3461137b amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x3469007e omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347a7238 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34ac5c70 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x34c6d197 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x34dd27eb virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x34ec753d gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x34f5bf4a ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x35071fed cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0x35135df6 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL vmlinux 0x353f0538 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x355d185e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x35747c9b ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a3353c regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x35b8f118 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x35c3a6c2 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x35cc84a3 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x35cd0dc4 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35eae443 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x35edc83f devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x360688bf regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36109301 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x36126040 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x361fede2 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x36390de7 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x363ef8e2 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x364a0b85 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x366da828 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0f6e4 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x36c6ddda sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36f9c6dc ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x370425a4 device_add +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x3747c270 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x3754df10 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x3755f5d5 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x37654493 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x37a955d5 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x37b66de1 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x37c06153 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x37d63e5a omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x37dafb51 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x37e740e2 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x37fec269 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x38090b2f pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x382aef34 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x3843538d serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x3845344e ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x384ccfb9 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x3852b7f4 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x386b6a44 alarm_restart +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 0x38c8e7b5 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x38d88fc9 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x38e4dd2e tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38f9f51d tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x3918eb76 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x393e43ed led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x3948164f __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x394bb9ea serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x396101d3 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x3973050d __module_address +EXPORT_SYMBOL_GPL vmlinux 0x397b6876 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x39af7325 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x39b18aba crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x39b8d026 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39e69f48 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a10bb3a ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x3a2460f1 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a41ec89 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a6608ec sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa01bce fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x3aa0f8e9 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x3ab124ae mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x3ab50b57 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3ab7862d nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad646c4 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x3adb3901 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x3b034a60 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x3b0b5ca2 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x3b2c085f device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x3b2eedb3 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3b47cc6c regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3b65b163 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x3b781086 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x3b91d4a7 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x3bbdbf5f regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3bc17534 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x3bc81ca7 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3bce93bf raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x3be0d3dc snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x3be31836 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x3c12a3a8 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3c2bf28b usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3c2f49c4 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x3c4098ee devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3c4ea44c usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x3c6593c8 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x3c7d6f55 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c83dcf2 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3c9810b1 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x3ca8b526 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x3cb524fa regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cdc10ee usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3cdf496b ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x3d02b88a bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x3d0bb17e crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3adb0a usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3d6450c1 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d8f9b2a regmap_init_i2c +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 0x3dcd615e cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x3dcde022 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3dd169ac call_filter_check_discard +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 0x3e0ee4a3 kvm_set_memory_region +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 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e712033 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x3e997ab1 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x3eb84c9a omapdss_of_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x3ebb80a6 omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3ec7ec26 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3eebc872 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0ce720 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x3f156161 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3f22278e wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3f598d9b of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x3f9f70ce tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fad37b2 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x3fb386e3 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fdc6d19 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x401e9bd7 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x4022c8f0 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x4027633d __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x4033ebc1 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x403cab50 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404993c9 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x4049fc37 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40a31590 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x40a6cd6c pci_enable_sriov +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 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40da84f2 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x40dfb0ac snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410ca43f remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x4120e974 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x4137e61d subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x414be542 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x414e872a __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x416fdc4a crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x4170b14a eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4186c290 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x41d7059a usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x41f9c033 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x421c2ccf driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x42220ba1 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x4279258f kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4287a234 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x42b5012f crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x42d69a35 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x42db4635 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x42dd446d ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x42edb48c fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x42f3ecff ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x42f4bdc2 snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0x43003035 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x430061b5 usb_phy_generic_register +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 0x4372c5b5 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x4377c5d6 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x4381f31c sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x43a18522 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a9cd88 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x43aea5f2 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x43b2cf6a tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43b61a7d rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x43c2e310 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x43c74741 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x43d221bf snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4405acee snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x4411779d of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x442eec61 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x44410dac of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x444b1b4d of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x447b9863 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a6e08f snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x44b23d14 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44cceb16 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x45065f82 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x4511f97a usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x45189f95 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x451befcb rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45288cc1 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x453ec256 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x45569b8f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45751f4e snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457be08b transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x458e097d regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x45945d45 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x45ba1367 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c4bf9f bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x45e48161 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x4604e20c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4616750f kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x46363bc6 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x463732f6 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x465dfee0 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x4662ea21 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x46658ec1 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467b5f85 usb_free_urb +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 0x46faace6 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47257886 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x47434a90 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x47475164 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x474b6ecf cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476c614d debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x4771de95 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a8df89 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b0d809 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47d0b5a6 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47f3498d dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x47f8ad83 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x4807beeb snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0x4819334d gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x481c00fb platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x4828cfb4 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x482af39b blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x48690e2f modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x487365b1 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48b194c2 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x48bf0ffb snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x48e5820f devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x48eb2fd3 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x49157a77 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x4918840d of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x494201ed irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4944790a ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x49667f27 trace_event_buffer_lock_reserve +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 0x49b4bdc5 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x49c224d6 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x49e82edf tps6586x_irq_get_virq +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 0x4a012c1c crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x4a2ffbd4 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4a30578e get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x4a63f3b2 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4a63ff67 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4a66b4ec usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x4aa0c010 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x4aa3d723 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4ab8d82c snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x4acf887c snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0x4ad79e7a regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x4adb8262 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4ae1bf88 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x4aef9cdd cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL vmlinux 0x4afcff74 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4b197e13 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4b307199 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4b55f734 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x4b5e1bb2 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x4b73a423 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x4b88f38d __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x4b9fa148 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x4ba890b7 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x4baef892 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4bafcdd8 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4be0ea85 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x4c0e9d12 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x4c1de56f virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x4c2b1026 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4c3dedd9 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x4c41891e inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4ca2a9e5 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x4ca55c0e serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x4ca94012 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x4cc3dc44 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4cd60247 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x4cd8e97c genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x4cdbf7ca simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x4cf35b8d blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d0773c1 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x4d1f4e73 mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0x4d22e129 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d43355a securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4da56283 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x4db849c6 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x4db9c350 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x4dd739fa tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x4dd9ea0c skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de3b51b regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x4e0041ac led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e19fe96 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e663905 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x4e82c7b7 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x4ea2976a dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x4ec92825 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x4ef1b36b pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef9c778 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f08b5de crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x4f0c44a2 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x4f0d41b4 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f247922 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x4f25c9e7 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f765e30 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x4f79a373 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x4f8e2b32 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f9e1233 of_get_nand_ecc_step_size +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 0x5040b2e7 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x50430f85 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0x50468b7d __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x504ac939 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x506d5ece __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508cefa4 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x508eba0b ata_port_abort +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 0x50ca90f0 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x50e6b977 pci_probe_reset_slot +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 0x50f95cbe omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5101e445 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x51153685 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x51347a06 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x51393adb snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x513c2c08 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x514626d7 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x514874ca x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x515dedfe bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x519907c0 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x519f4741 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x51ae44a2 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x51b8c50f da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x51f19b8a add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x52055fca usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x5222764d blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5294c24f usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x529e5103 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52a46bd2 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x52b80e18 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x5311da13 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x532d7c0a pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x533c8425 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x5352a488 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x535689ec iommu_detach_group +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 0x536945b8 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x537531cb zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x539a4332 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x53a7f937 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x53a983c1 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x53adfae2 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x53cb2800 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x53f2d53e serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x53fbcba0 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x5408b9d9 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x541776e7 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x544aab61 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x5454de3d ata_sff_data_xfer +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 0x54817613 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x5491ea85 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54bad9ca i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54ec5a80 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x551929c4 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x55234b20 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55393790 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x5540d7c1 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554c3b72 bio_clone_mddev +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 0x55a32d65 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x55a819ca snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x55b06cb5 regmap_update_bits_check_async +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 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f04c21 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x55f1e1a1 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x55fe4aec ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x56071a0f ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x560825ae ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x560d6653 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x56206cca ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563c7584 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5682689e gpiod_set_debounce +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 0x56da8e2c spi_finalize_current_transfer +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 0x5732ed0a ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x573b24d8 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x575c421a ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57cc0b5d sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x57e9ddc8 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x57eeec95 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x57f821d8 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x58026384 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x58063ede srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x580cbbd5 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x581195fb mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x582e4c47 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x583ed80d crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x5862dd97 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x586f95af nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x5885d8b1 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a68b19 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x58c4711f device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x58de79b9 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x58e287f8 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5903939d usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x594cdcee skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x595d0afd snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0x598a42ce pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x59a9e6f6 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x59bceaef invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x59c86e54 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ebbaad snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x5a131ec0 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5a148988 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x5a2d78d2 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5a327606 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x5a47e91d pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5a5669ac mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x5a67253e nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a81ea00 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x5a8f213c cpdma_ctlr_eoi +EXPORT_SYMBOL_GPL vmlinux 0x5ace1183 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x5acf6567 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x5ad35816 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x5ad62989 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x5ad7506d __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x5ae2dbdb sdhci_alloc_host +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 0x5b24b6be snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x5b3e968c blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x5b46737b dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x5b48f66f da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x5b4b56be unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b73012d usb_udc_vbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x5b939c05 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x5bb593d3 usb_wakeup_notification +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 0x5be49c0e fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x5beaea59 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x5c199abd of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x5c2455c4 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x5c285dfd ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c35ee98 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5c4718 snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x5c61ac55 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x5c635ec3 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0x5c648851 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x5c9af350 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x5c9b8cd7 class_dev_iter_next +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 0x5ce11514 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x5ce9eb8e vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x5cec29f5 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d153a7a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x5d218f97 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5d367820 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x5d48fa80 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x5d751b85 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x5d7fd325 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5da871b8 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5dadf696 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5db29d00 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x5db45ab6 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x5dbeece5 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x5dd5ea3b key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x5deb4d61 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x5df36896 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x5df756a7 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x5e1b5d71 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x5e34dbef sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0x5e4cf817 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x5e4e7b1b crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e545649 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x5e63fb26 of_get_dma_window +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 0x5e814d7c handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x5e925497 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x5ea23bd2 ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0x5ed0b55a __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x5ee5587e input_class +EXPORT_SYMBOL_GPL vmlinux 0x5f0ab919 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5f285fde udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5f287725 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x5f3e1952 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x5f4bb96c usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x5f50b3c9 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x5f525f87 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x5f93798a sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x5fc87baa usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x5ff872e1 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x601741a2 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x60249292 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6062d1dc public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x60716d44 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x608fbf31 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x60a08fb9 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a4ece0 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x60e9bf0c ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x6105aeab crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x612be375 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x613ab743 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x6168be7d ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x61849e2f tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x618e25eb rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x61926633 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x61d56336 component_add +EXPORT_SYMBOL_GPL vmlinux 0x61e9da82 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x61f5d2b5 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x6220a783 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622d549c __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x622e3ffe __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6238c291 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x623dea5c regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x62618705 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x6265670a of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x62763ac7 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x627d44cd vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x62f96475 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x62fd5c39 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x630d7b57 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x630e3c6d blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x636573c2 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x63682e72 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x6368c98e __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x637bb5ea regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6380b542 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x63873a0f key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x638d932a sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x63a9ae1b snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x63b64938 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x63be70ed crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63cd73b0 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x63d22d04 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x63eedb82 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x641fff18 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x642533c5 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x64463cd7 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x644b3c43 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6458e95f regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x646f9d55 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x647732ea of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x64878ee0 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x64ac17d0 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x64b47043 of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x64c95d66 snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x64cd3dda root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64ce4c6a thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x64d3f172 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x64d5f171 sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x652a99b9 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x652d0daa disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x655a8077 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x655fcb8c icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x6565451f gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6581c345 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c6598f crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d132f7 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x65d69564 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x65da9c71 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x65dc2d18 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x65e19b9c power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x65f682d8 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6623127e hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6675a28b xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x667ee57a md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668e960b ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66a02b10 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x66a75501 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66d9deec pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6709e487 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x670b0928 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x672cd199 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x67324ebb simple_attr_open +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 0x675688b7 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x6758b5c0 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x6784d258 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a9db0d pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x67bcf14b ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x67c240d8 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x67e7f7bc usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0x6817274a usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x681dfb1b sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x683ef590 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x6851432b deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x685d12a6 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x68775b12 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x6883aebb crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x68924dc9 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x68ab9ceb cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x68ca40c4 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL vmlinux 0x69228d60 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6923f597 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x692b0692 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x693ea86b ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694b8337 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x694be42a usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x694cb162 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x69710766 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x6974ed79 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x697731c9 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x699fa1e7 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69ab41cf rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x69b32292 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69effdc3 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x69f6e24a sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0x69fa1227 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x69fea0ff led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x6a16ee79 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +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 0x6a6c6994 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x6a886030 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x6a99251f arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x6ab9daac usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b34343e dma_buf_kmap +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 0x6b69f7a8 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ba259c6 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x6badca8c usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x6bddde6f spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x6bea2fb9 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x6bf16cea irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x6c07245a snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c185cb2 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x6c1a71bc snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c2e925e devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x6c418e5a usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c4981b4 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4f485b of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x6c51156e fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x6c5c5e07 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x6c7614bf xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x6c79d155 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ca172bf irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca846c9 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6cbf54c6 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x6cc308ff __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6cc78c5c set_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x6ccd1c5a ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6ccdd4af inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6ce4cf61 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x6d0aabf2 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6d28fa56 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x6d2933e0 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3db45a swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x6d424356 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x6d536aa8 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x6d71af97 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x6d751f84 i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x6d78c916 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x6d9e6969 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6db77456 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x6db9fe6f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x6dd73dfd crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x6de65782 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x6dec7ed8 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x6df6c83d pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e160d6f fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x6e16a0dc dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x6e1e47fe snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0x6e1f84fc ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x6e2bd2f6 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x6e30a980 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x6e3ebdfb pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e88f791 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e92eb36 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6ec80784 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x6ed7a270 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x6ee7a2bd dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x6f12c173 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x6f19841b __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f3b4d34 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x6f3ffe43 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6f5614f5 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x6f5d5e78 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6f66deb4 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f9a27ea md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x6fb94449 omap_dm_timer_request_by_cap +EXPORT_SYMBOL_GPL vmlinux 0x6fbaba9f ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fc790f6 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x6fe11544 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7029e72a crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x702bf01a eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x70332faf sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x705426d9 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7063da7d wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x70665a5c crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x7068ff0c ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708990ba ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x7095d1c7 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x709d939f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x70a080af usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x70a1cc0f hvc_instantiate +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 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a85af3 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x71a9473c i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x71c1018f regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x71c910e5 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x71d05454 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x71d1926d devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f3194f __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x7223422c snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x72311a8d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x724119c1 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x7266dcae bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72830a12 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x728a4907 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x7291019b __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0x7293634c seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x72a4f740 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x72aa0071 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x72ccee42 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x72eaad6c regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x72ed89d3 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7307b0e1 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x73134879 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x7332ef3b __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x7340f78a of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x73493c6b reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x73550a15 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0x739af94a kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73aa3129 device_register +EXPORT_SYMBOL_GPL vmlinux 0x73b528c9 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x73b94f31 kvm_release_page_clean +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 0x73e788cc rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x73ff3f5f regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7420a064 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x742c44c5 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x742de433 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x742def44 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x74302994 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x74310e58 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x7431a5bb fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744fe722 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x7451fa19 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x745a99ce input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746ced77 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x746cfea8 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x74707f64 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x747e8772 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749213c7 device_move +EXPORT_SYMBOL_GPL vmlinux 0x74927d25 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74ce919e kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL vmlinux 0x74d34c13 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x74e46a48 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x74ef0d4f sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x7506f068 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x75100a4d cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75243e9f xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x754636ac dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x757a0c26 mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75a65a5d usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x75b2e1c6 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75bacec3 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x75c44c2a gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x761e0aca btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x76205d3b tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x7622b63c driver_register +EXPORT_SYMBOL_GPL vmlinux 0x762d0d18 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x762f4544 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x7635d7bf ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL vmlinux 0x7650962a uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x765ad945 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x76721d4a fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76931061 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x76a752f2 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x76bd3278 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x76c59891 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e373cc mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x76ff75ff lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x7707b12b snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772cb2e8 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x77326f08 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x7738d0d4 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x7753cb4c blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x775679b7 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x778526c3 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x778e0edc i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x77d6ffba get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x77e2e063 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x77f85b07 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x77fcedf1 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0x78011f90 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x78271472 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x7836cec5 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x784ad049 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x785357d5 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL vmlinux 0x7859b31d of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x789a8551 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x7912d832 mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x792d81d8 virtqueue_get_avail +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 0x797010e2 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x798eb8fb kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x79979d4a snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79b156dc amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x79b6bb59 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x79c528a9 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x79c66ee2 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e06c85 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a14276d pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a362721 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x7a57aaa7 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7a6759e8 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7a7d3be6 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0x7a850d30 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7a8b79c1 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9d1871 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac1c96b crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x7aec611c register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b3a093e snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x7b3e5fe2 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x7b4f8012 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7b81dd4c ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x7b90a59a __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x7bb07657 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x7bb1c024 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7bb9c0b9 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x7bbb243d ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0x7bc295a3 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x7bd711a4 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x7bfd59c7 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x7c0047bd usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c4f4ed7 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x7c64cb44 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c774af5 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0x7c7da8b7 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7c939316 register_kretprobe +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 0x7caa1dfa pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x7caf5186 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x7cca8a14 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce05cdd of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf6770e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x7cff90a4 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d0cd78d inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x7d118dda of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x7d174780 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x7d2c8994 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7d3fecbd usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d67227c scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x7d94d98e serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db21987 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de08262 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x7de32d86 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x7deac2be single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x7df2140f device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7e42ba67 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e628dc9 ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6b9fb7 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x7e74b358 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x7eba253b __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x7ed2f0d3 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x7ed52d05 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ed71195 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x7ede4f76 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x7ee417c6 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x7f075494 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x7f26fb64 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x7f3836d1 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x7f397531 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x7f3bd9c4 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x7f47cdf2 pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x7f4e82c7 mmput +EXPORT_SYMBOL_GPL vmlinux 0x7f5a6563 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x7f6d240c __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x7f9c6ef4 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x7fb5b856 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x7fbb5711 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x7fdc86e1 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x7ffb6c04 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x80093076 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x801019cf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x8011a7f2 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x802d17b0 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x802eddba vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x8046f386 n_tty_inherit_ops +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 0x807e297b ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80ade407 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x80b0df5a led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x80c16325 ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c9e5b2 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80ef49d6 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x80ff8696 gpiod_set_value +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 0x81550bad mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x816f0231 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x8197d39a virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x819dde14 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0x81a32cef ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x81b3dbf0 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x81f7aff1 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x81f998b5 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x8200113d fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x821d448c gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x82356df8 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x824a15d2 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x826c2bdb ftrace_set_notrace +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 0x82dd6e42 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x82e73c7a snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0x8311f4e8 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x8330f78d xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8349f14c ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x83741545 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x837ef585 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838cb500 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x8390dd00 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x8399820b kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x83a63fec devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x83aa068d mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x83ae4f38 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x83cc378a kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x83cd321d regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x83e4e32e swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x83f3bec0 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x840d2d33 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x84261859 omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0x84689784 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x848916e0 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x848bd0fb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x84b80e2f perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x84b8997e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x84ba73cb i2c_generic_scl_recovery +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 0x853589fe dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x85463369 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x8551f6c9 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x855d09f4 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85e9cb4e pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x8607f417 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x860b94c4 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x860c0846 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x863a649b ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x863ef29b sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x866ec8b7 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x8671258b rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x867c7ae0 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868a07a2 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x869ef9b0 omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0x86dd154d ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x86e00bd8 snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x86e7247f mtd_lock_user_prot_reg +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 0x870913fd pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x870bef95 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x8719710f debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x872a1106 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x8732dda1 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8759f73b pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x875ade71 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x87884065 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x879deb35 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x87b7b049 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87b8979a dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x87b955df wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x87c0994a exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x87d3edfd ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x87fa1ba3 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8838d0ba blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8847a0f9 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8849482e vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x88513d9d ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x886aea7e cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x886f0285 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x88951e3e crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x889b6c94 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b4bc41 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b57584 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x88b6e6fe snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0x88bb082d ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x88c8da9a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x88d25d3b ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x88d61a48 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x8903734a kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x8904c539 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x891bee2d rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8957d837 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8971cbe8 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x8989f820 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x89b1946b ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c1c86c __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x89ca8d75 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0x89de2d8a pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0x8a034cd4 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x8a0cc0a3 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x8a368083 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a83b0bd devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abae16d mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x8ac9e000 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x8b00b38e snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x8b113cb4 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b2e7a55 arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x8b45f944 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x8b4814c8 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x8b5b544e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b782609 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x8b8b646d relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bbaa14f dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8bed095a ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x8bf1aac9 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c162bc0 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x8c3786b9 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8c3926d7 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8c46c6a7 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x8c4c95fe stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8c4ddc15 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x8c593357 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c6778fa __lock_page_killable +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 0x8cbf56cb crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8cce931a crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8cf3f8c6 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x8cfacaac devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x8d09d0dc mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x8d146cb2 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0x8d18afc6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x8d1cb39f pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d2cbe2e tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8d308e40 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8d39f1f9 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x8d45258a ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x8d58ac98 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x8d5cc6db sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x8d668fcd ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x8d6b604e __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8dafafea cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x8db57cbe dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x8dbb3613 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x8dc39aca platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x8dcc4caf unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x8dce8c08 omap_pcm_platform_register +EXPORT_SYMBOL_GPL vmlinux 0x8deb1a57 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x8dec1798 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x8ded03c2 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x8e065664 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x8e10d25d do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2c2c57 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x8e70ab58 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x8e735b44 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8e7e8ca2 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x8e894643 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x8e9c20ad snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0x8ea50f71 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x8ea68695 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x8eb8db0c device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ebb6fe0 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x8ec4a15e of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x8ed11f2e md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8ed22c84 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0x8edc1607 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8ee8d3bb subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f0fa8cf of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x8f0faab0 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x8f105a41 user_update +EXPORT_SYMBOL_GPL vmlinux 0x8f215461 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x8f2f97ad __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f4b2fe1 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x8f5f1d3f ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f8b55e2 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x8fb5ba4c use_mm +EXPORT_SYMBOL_GPL vmlinux 0x8fccc492 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x8fdaaac3 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8fdc79c2 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x8ff8855f inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x9006fe91 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x90193b44 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x90264281 crypto_register_algs +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 0x90566ae6 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x907252a2 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x90742f99 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x9091332b class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x909d68ed mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a75ef5 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x90a8035b crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x90aae341 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x90b2e18c of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x90d8e2b0 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x90eb809e vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x9105b75a inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x9110821b snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x913689af sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x915dda8e devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x916363d4 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x91776114 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9184f7df kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x9185e210 crypto_register_rng +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 0x920419d7 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x92196e4b sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x92415acc of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x9249a9e4 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x926fe052 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x92903c58 perf_event_release_kernel +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 0x9312fe29 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x932b1900 sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0x9344cb52 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x93466e38 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x936619b1 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x938d3059 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x939532d6 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x93b16c0d usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x941860ab ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x941b3439 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943b6000 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x944947bd shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x9462f913 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x9474e19d wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL vmlinux 0x9497971f nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b54884 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950f4244 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x9518f4b5 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95380817 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x953bc436 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954a066a sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x95517215 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x9555f81d regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x955af1eb synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955d5c4a bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x957fb9fe nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x958660db ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x9586a6ed cpdma_chan_get_stats +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958fcbb5 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x95977fec virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x95b0ac7e usb_string +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95f93faa pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x9614fbdd task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x96194a69 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x961b6c5e gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96319f90 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x963c3549 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x9645d792 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x964a75bb cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9679cb32 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x96919667 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0x969a0cf3 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x96cfbc25 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x96d02614 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x96dc36b7 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x96f5c4f2 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x96fc54aa usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x970aa0ea ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x972c5dd7 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x973bfad8 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x974a23bb blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x975325d7 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x975efba9 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0x976c129a ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x9780fabc wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x9784f9db device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x97915714 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x979226a9 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x97a77529 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x97c652b3 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x97c676f5 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x97d7ff3d sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97ffa827 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x980a86b1 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x981819dd pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x982a346e of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9850604b __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9854cb27 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x98560813 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98b0936e bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x98b42298 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98e238d4 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x98e90231 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x98f6b2d4 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x991b9d72 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x993c9e3f find_module +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x9977cf1d devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998994d8 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x99ac44f2 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x99ba1777 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x99eec1d4 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x99fd1243 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x99ff7e26 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a0a474e uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a57f4e4 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9a78a77c platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a8663ca pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8cec79 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ae1ef34 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af7a43d rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x9b0142c1 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x9b02c5dd dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x9b02d1a0 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x9b260d5c snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0x9b5bb59e component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x9b7bd285 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x9bbf754d ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c0c5efc ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x9c34e33f ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c693b53 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x9c86eae6 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x9ca481d4 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x9cafeeef pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x9cc38a84 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cca9ee1 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cf24921 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x9d37ee07 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x9d4c709e extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9d50bd23 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x9d600312 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL vmlinux 0x9d60b20f dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x9d788526 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d988fd0 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x9da64c24 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x9daa563a rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dae907a gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9dc26def disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9dc9ffdb usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e017f3c snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x9e076cb2 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x9e291166 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x9e3245dc nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e61501c devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9e800545 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9e934baa sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x9ea556f8 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9eabd956 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x9eba2369 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9ebead80 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eea85ba phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x9eee0950 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x9ef1d435 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x9f065118 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f191b64 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x9f1d0141 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0x9f33590f crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x9f3a6ec0 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9f3d0c8c pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x9f64e0fd clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x9f9e9df4 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9faa6b2a bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x9faec6ff usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x9fc02a22 omapdss_of_get_next_port +EXPORT_SYMBOL_GPL vmlinux 0x9fccb59e dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd34fc1 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9fd765a3 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff059b9 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xa013a9cf init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa01bff36 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xa01e53d7 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa0291774 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xa031287b pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa03abcc3 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xa04f4dcc crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xa054914c udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0930752 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xa09cc88a md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xa0a3a8c5 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xa1030cb7 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xa108e8da __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xa10b21e8 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11dc793 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa15688db rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa167412c regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xa1683649 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xa1698dc8 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa16ff983 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xa17d335c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1c59dc2 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa1d76cab put_pid +EXPORT_SYMBOL_GPL vmlinux 0xa1ee7e9e devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa213acf0 cpsw_ale_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa213c105 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xa21dbd67 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xa226cc9b ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xa2294659 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa22d4d37 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xa23c18e1 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xa263ce13 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xa269cc5a balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2834cb5 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa287ea5f mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c0b193 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xa2de7f0a snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa31e5e3c __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xa33c6d2a del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xa37248c4 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa39a32fc vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xa39a40f1 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xa39fce6d dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a27324 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xa3b81187 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3bb8a9c __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa3c669ea wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa41080d6 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa42d2eb1 security_inode_create +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 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa49faf13 snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0xa4a70339 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xa4b25b3c devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xa4c06075 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa4e8cd06 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xa4f9280e musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa52b7075 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa52c06cd devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xa5449d2d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xa5626f83 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xa56f10de rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xa585db0a tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa5867b83 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xa59589e5 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xa59960d0 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xa5b61c5b regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xa5dc9c19 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5e7de45 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f8854a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa60f137e proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xa6145039 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63c2a65 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xa651120d inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xa665a042 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xa6685112 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xa684a97a ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xa68bea2c __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xa6a6a412 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6ba28ac power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa6bf284a syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa6c9bd79 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xa6c9e3b6 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e4e469 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xa6fc2a17 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa70ec2bb fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa70ed26a balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xa71c60f4 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa724ac8f virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xa72854c0 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xa73b86fa crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa74eaead wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa765e3b9 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa772f41f regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xa7945c87 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xa7ac271a gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xa7d8ea75 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xa7da2b70 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7f1136e ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xa7f31c21 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa7fa7456 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xa82880cd key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa8460dfa component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85c61a4 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xa8b02ce0 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xa8b3d46e tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8bfa35b mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0xa8c9af33 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa8ce5b2f dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xa8d50261 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xa8e98132 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa8f3da51 add_mtd_blktrans_dev +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 0xa93e7096 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa94478d8 mv_mbus_dram_info_nooverlap +EXPORT_SYMBOL_GPL vmlinux 0xa951d200 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xa9542f96 iommu_domain_alloc +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 0xa9850ef8 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xa992c0c4 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xa998531d blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9bf5e51 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9c643a7 locks_release_private +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 0xa9ec859d pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xa9ef6159 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa686359 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xaa84160f usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xaaa23311 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaf474d8 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xaaf78628 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0xaafe5a21 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0xab0d57a6 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xab2247ae crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xab2b8b64 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xab4429ba __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xab49984b inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab609fc7 spi_bus_type +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 0xab9a2f04 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xab9e0a59 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xabb18f7a kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xabc62d21 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcb7c55 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0xabd6cd52 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xac03ac39 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xac145a56 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0xac2bd262 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xac3cdf56 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL vmlinux 0xac6f7ae3 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xacac7a92 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb9c059 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xacc01707 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xacd7883e power_supply_changed +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 0xacea07f3 omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0xad1e4e59 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xad1f9cd9 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xad265a0c sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xad3fd408 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xad43b3e2 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xad7ed49b mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xada0a4c2 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xada1f519 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xadc31772 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xadc39806 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade26e15 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae41ec14 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xae422321 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xae45552d virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xae4997b6 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xae49c7e3 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xae4abd48 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xae4f9fe5 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xae6700dd snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae76490a snd_soc_poweroff +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 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaebaebcd pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xaf040913 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xaf15f6e3 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xaf1c81df kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0xaf1ca998 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xaf20a53b tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xaf2d2e0c of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf447e39 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xaf54dc63 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xaf5cf154 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xaf6f3936 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xaf7ee9ef pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xaf86614c iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xaf9d0950 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xafa49ed3 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xafdd8fa7 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0xafe2f831 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0xafe9892d gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xb008a0be skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xb0128a78 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb0141c83 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xb02ebb02 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb03e5ab5 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb0491836 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb060d77a pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb07b771d usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb08827ae serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xb096874d get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0e272af snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0xb123f4e0 power_supply_register +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 0xb16ded88 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1a6d8f2 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xb1a92566 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0xb1ab7730 gpiochip_free_own_desc +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 0xb1da15d9 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xb1dd67ab blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e49040 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb20b111a arizona_clk32k_disable +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 0xb23d3cf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xb257c27d devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb274f609 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xb28badbc devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xb2a76fea crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xb2b4fcf6 __pm_relax +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 0xb33d8613 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xb354d25b dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xb3567843 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0xb37d8762 omap_dm_timer_set_int_disable +EXPORT_SYMBOL_GPL vmlinux 0xb390b6f4 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0xb39f7550 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xb3cbba3b pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xb3de7046 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xb3e690f3 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xb3fd1407 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb4262c84 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0xb43f3c00 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xb469f2bb devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb48117f4 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xb4ade81b crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4bc9e05 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb4c458f7 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xb4c64b00 snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xb4cd2fa9 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xb4cf0322 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4fa0537 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0xb50bd4ed blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53b3d81 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xb54c386d rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xb55c0b99 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0xb569a1cb crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a8ee3b pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb5ad23b2 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xb5b3af20 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb5b97163 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0xb5be30ff pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xb5bff36a ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xb5cba789 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5eb2533 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6157951 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xb6178049 user_read +EXPORT_SYMBOL_GPL vmlinux 0xb6223708 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6292e63 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xb63a10f5 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xb6411647 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xb64389b7 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xb64da631 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xb687e8e2 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xb6921c8e regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xb6a9f2ac tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6dfed65 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb716320c device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xb730e71b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb77cb0a8 cpdma_chan_submit +EXPORT_SYMBOL_GPL vmlinux 0xb79a64d6 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xb79c91e9 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb7b12fe8 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb7c08276 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xb7c11b26 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xb7ceed64 cpsw_ale_create +EXPORT_SYMBOL_GPL vmlinux 0xb7e07d52 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xb7f2c04d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xb7f2fc90 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xb7f5cc3f ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8137ee3 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xb815fe39 dev_pm_qos_hide_latency_limit +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 0xb835b9bd cpsw_am33xx_cm_get_macid +EXPORT_SYMBOL_GPL vmlinux 0xb83e6136 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0xb84e4e6a clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xb86670cd pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8e91a60 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xb8f07e10 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb91546b5 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb91d63dd amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb95dc753 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xb96fc72e gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xb98d7ccf unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xb9a16f74 of_get_nand_bus_width +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 0xb9d4bc37 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xb9d735c0 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xb9e3908e raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb9ff76d5 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xba04377a nl_table +EXPORT_SYMBOL_GPL vmlinux 0xba201257 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xba278af2 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba30a5c9 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xba33affd snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0xba3d64c1 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xba4281bb register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xba44650a fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xba4f3c39 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xba4fc90d usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xba6e710a nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xba7d3723 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbaaf60fe cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL vmlinux 0xbab01b02 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xbab4ffe9 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac75f4d tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xbacd1bd5 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xbaed6621 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xbb016d74 register_mtd_user +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 0xbb2548da spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xbb2c0ae1 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xbb304977 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xbb4e956b mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xbb4fd6ff sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0xbb6cc79f sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0xbb78c609 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xbb9776e0 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xbba56965 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xbbb3b5b2 nand_release +EXPORT_SYMBOL_GPL vmlinux 0xbbb6e396 cpsw_ale_stop +EXPORT_SYMBOL_GPL vmlinux 0xbbbbddfd devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbd82dca i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xbbd8d2ac usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xbbe37038 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xbbfe68f3 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xbc028df9 sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0xbc72dba3 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xbc7c6d6d pci_enable_pcie_error_reporting +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 0xbcd82e8f scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcf2ab5d dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbcfcb4ee pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xbd195815 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd2d6fa8 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd405128 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xbd48b56e mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0xbd4d5bd6 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xbd4edf79 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xbd569b85 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xbd582993 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd83de8a __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xbd8ace0f kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0xbd8fd4a0 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xbdc0afda crypto_create_tfm +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 0xbde9a12f dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xbded33af usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xbdedca6e kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe07a2f1 usb_udc_attach_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe0f8973 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1d54b0 omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0xbe2231fa snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0xbe40327d device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xbe472d55 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xbe4be076 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xbe4c3109 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbe51f66e netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe5f1a4c blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6df87b mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea065ba deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0ffdd5 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf366a58 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xbf5b0d23 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xbf7e4700 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbf8ae1f4 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xbfa71e45 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbcddf8 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfca87f9 thermal_zone_bind_cooling_device +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 0xc0244b66 omapdss_of_get_first_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xc02de527 omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0xc03a654b memalloc_socks +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 0xc09fe55e ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0ad152e sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xc0b3c5f8 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xc0d07cf1 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d5645c iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0ebab5d devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc0f192f2 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xc10abbaa wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xc12baa5c gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xc135539a usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc16ce0ce snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0xc1715f9b snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1777dd0 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xc17b91fe usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc17c007a device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xc17eb767 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xc184c889 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc192425c mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc1a3f1e8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xc1bced6a cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc1bef247 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xc1d2ad97 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22d84b4 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xc2371338 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc24ea033 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xc27c91c7 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc29140bd netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xc295732a system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xc2a14484 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2ec25d9 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc2fb84f9 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc31913ac driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc35c270b mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xc35d8ead kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xc36b8cce __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37f0107 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3a2b633 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3f15d2b ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xc415fd92 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc41d974a scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc41e0178 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4486291 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xc451b42b transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47c8b5b da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc48d9f98 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xc491cd28 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc4a571ec disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc4b01fcb device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xc4b3bef6 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xc4b48cc2 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xc4bd9f8a palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xc4d0a11b snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0xc4d8d550 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xc526b94b pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5450d17 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xc55da33b rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xc574cad0 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc579eda5 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc57b91d9 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0xc59788be pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc5a62de1 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xc5b7353a mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xc5c411a4 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc5cfa201 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xc5d3b449 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL vmlinux 0xc5e74460 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xc5ead03a component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xc60b3436 snd_soc_card_jack_new +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 0xc6205576 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xc6287b9f bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6430975 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xc6473edc snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0xc649229a clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xc652c977 snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc67f10c0 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xc6810e93 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xc685c037 cpdma_check_free_tx_desc +EXPORT_SYMBOL_GPL vmlinux 0xc692f025 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xc69578cc cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6d3153c sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0xc715ecf9 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7bdbd7a lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xc7be9f5f __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7c6d56e thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc7ca191a ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xc7d6c497 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xc7dee6cb ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e3ad0e preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7ecba86 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc7f3c1a6 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xc82386d0 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc83cf5e0 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xc852034e device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xc86fd800 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc873a6b6 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc88d703c attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc897bfb6 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8f60cf9 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xc90b106e scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9490bbc omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0xc9492913 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9981a72 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xc9baf527 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xc9d05e68 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9de1f95 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0b05b3 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xca17c839 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xca3b0efe add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xca4198b6 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xca4997b0 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xca517707 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xca53563b sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xca5c168b sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xca70ad9e srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca733b96 usb_match_one_id +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 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcadd40f6 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xcaeb1bf2 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xcb05a107 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcb10fa42 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcb32d7fb __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcb3cfbf1 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb68ced7 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xcb81f292 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xcb9c7df9 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xcbc2bf45 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc29076a ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xcc44f119 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xcc495e6b kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xcc6a2665 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xcc6c5751 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc70d267 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xcc793a62 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xcc84cf39 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc935bc8 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xcc989f09 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xccb86be8 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xccba389b regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xccbbdd39 snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd8a1d9 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xcd045fee bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xcd066230 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0xcd0be324 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcd0c698c snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcd0cc825 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xcd151a08 regulator_register_supply_alias +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 0xcd839044 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcda57090 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xcdaa79eb usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xcdb25740 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xcdb266f6 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0xcdb271a5 arizona_of_get_named_gpio +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 0xce3d73da __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xce54db1d devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xce602f9e alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce821383 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xce959a77 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xce98335e dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0xcea11d58 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0xceac2230 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcec926f0 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xced373fa driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee4b825 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xcf0a3c48 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xcf0f2cb0 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcfb0a86a snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc6dc32 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xcfcb3ef7 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xcfdee8e8 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xd001d9af md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0931f02 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd094fee7 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xd0bc1070 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c17718 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd0d3de34 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0d684dc blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xd10002ab regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xd100475f dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1848eca kvm_init +EXPORT_SYMBOL_GPL vmlinux 0xd18c1bbd crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xd197d2b7 snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0xd1c146de devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd1c60907 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0xd1caf8a5 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xd1e60680 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f4be95 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd1fbdc74 bpf_prog_create +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 0xd2163a56 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd24af564 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0xd253f44b ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0xd2599a17 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2830e91 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b44776 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd2b6aea3 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xd2d84b2c tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xd2dce5d7 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd2de7533 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd2e970a7 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd314aeac usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xd31544be wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3273f44 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd330d318 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd346507a raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xd36a0b7c snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xd3dc027a cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4083bd1 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd408713e pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44b7ffd ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd44c2f38 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd47152f3 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd4747957 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xd479e887 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xd491fab4 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c50f14 omap_dma_filter_fn +EXPORT_SYMBOL_GPL vmlinux 0xd4c9bf94 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd50c0a39 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0xd513232b devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd513d573 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xd5375e5a snd_soc_dapm_new_widgets +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 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd58582fa of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd58e1977 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xd58f1a30 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd5a46336 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd5a599cc inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xd5a8e733 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5cb224b crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xd5d7a84a dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd5ef4fd5 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xd601c805 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61019e8 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xd624bfd6 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0xd62fff6d device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xd65701e8 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xd6689921 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xd66a26c4 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6a970e1 bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0xd6b43b75 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd6c16248 snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0xd6ccef65 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd73b8765 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xd7469002 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xd764106c usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd7722294 snd_ctl_add_vmaster_hook +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 0xd7afb021 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xd7c6bc1e class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7fd0094 ipv6_dup_options +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 0xd836056c regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd8565bee __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xd869b8b8 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8801d38 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xd881add9 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xd8922c03 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd896659e ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xd8e3c171 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd8f86558 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xd8fdb8e6 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xd90351e3 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd94b3e02 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xd95050a4 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd97922b7 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0xd99413c0 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xd998afee regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xd9a0c851 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd9b11a8d unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd9cbe278 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd9cf6778 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0xd9da6bcb ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xd9e297c5 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda10adeb snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0xda117c1b scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xda552cc9 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xda5edaec omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xdaa1ee3b thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdaa71cc8 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xdaa8e4b8 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xdab44680 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xdab67cd9 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xdacb0308 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xdadac207 inet_csk_bind_conflict +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 0xdaf72d57 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb19835d tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xdb4c5de9 mtd_write +EXPORT_SYMBOL_GPL vmlinux 0xdb6b53bc vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb945146 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdb9a282b usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xdbacf101 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xdbb7c179 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xdbebdd87 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc133ca2 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc1ff770 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc5cb7d2 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc894860 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xdc926aee vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xdc94e2b9 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc99d18c devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xdc9bfd7c tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xdc9d57dd da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca492ec mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xdcb7de59 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xdcc0a72c i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xdcc4407c pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdccf67d7 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xdcec5fc2 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xdcfa219b set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xdd0131a1 cpsw_ale_control_set +EXPORT_SYMBOL_GPL vmlinux 0xdd0ff36d of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd19882c unregister_pernet_subsys +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 0xdd72e0bb ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xdda6be9c fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xddb25156 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xddb5c244 adp5520_unregister_notifier +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 0xddec9be7 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xddf0fcfb devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde0c42cc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xde199c2a mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0xde211a87 cpsw_ale_destroy +EXPORT_SYMBOL_GPL vmlinux 0xde39651c preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xde4f6584 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xde69139e pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xde6aa93e ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xde8b86e2 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xde8fbedc ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xde962f96 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xde9da634 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xdea2754a gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xdeaa4b02 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xdee21f20 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xdee52fb9 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xdef581b4 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1858d1 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xdf2ee010 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdf7da0bd crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xdfc81509 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xdfcdb884 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xdfdaa952 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0137576 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xe01dbc0b spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0309ffe put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe03852fd pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xe03958f6 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe057366e snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0xe0655d52 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe06e4157 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe07b1adf ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe0870d2d rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0cef797 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0e1887b bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xe0ed077a snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0xe128364e ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xe13eb133 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe144b69c omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0xe15ddd81 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe1735b5c wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1960de8 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe1ab745a usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xe1aee8aa rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xe1bdb15a of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xe1c06ba3 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe1c5b224 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xe1f3c583 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xe1f89a6d snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0xe2042c46 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xe21b9006 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe225fda1 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xe23e8ae0 arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xe23f41ba of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2b79637 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xe2c2deab pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe2d6bb96 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xe2fa6c2e omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3131202 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xe3793ed2 ata_pci_bmdma_prepare_host +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 0xe39c1e79 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xe39d715d fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe3cb8dab xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe3df08d4 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe4221872 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4504780 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe478d6b7 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xe484af0b i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xe48ad595 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4c19a0f regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xe4c21b96 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4d5f702 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xe4f99813 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe506f1cf sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe5071dcc extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe50c9bef security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe510fd8a __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe53643f0 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xe54cf90e subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xe54d12da i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe559fce5 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xe57cfadd unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5d4d99c dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xe5d99cf9 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xe5ecf0f9 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe60c44f0 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xe61624b6 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xe6186a08 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xe63c2e63 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xe645d35c of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65ebf06 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xe66b5945 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe67078d9 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xe67c3f4e devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe6812567 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe6844038 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0xe68497c0 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d3335c ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e47aae cpsw_ale_start +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7201662 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xe7465786 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe7467ab8 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xe75943a9 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76e8b3a pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xe770016a ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe777ab50 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0xe77d7b55 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7a29aed nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xe7abcace kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xe7ac3cf3 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xe7afbb7c ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe7b9a81f kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0xe7c376c8 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7d134c3 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xe7d96f0d tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe7f14ba1 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xe7f18958 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xe7fdb2db platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe813a5b6 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83ea6f4 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8551376 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xe856a037 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0xe85a604e ata_sff_hsm_move +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 0xe87c221a dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xe8c3742e xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xe8c5bf6d posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe8e242f6 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xe900e17a __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xe901053a class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe91b371f ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe956c8e8 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe96b6388 __of_genpd_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe97434e9 securityfs_create_dir +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 0xe9a2fc33 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xe9b3ec3d snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9ea9312 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xea0a59b3 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xea0ca6ce ulpi_viewport_access_ops +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 0xea43651a aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea608e63 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xea8797e9 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xea95f08f usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xead5696e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xeae7070f usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xeb164d3d sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xeb276d20 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0xeb3f603e snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xeb55412f ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb60d844 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeba277bf of_css +EXPORT_SYMBOL_GPL vmlinux 0xebb7e578 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xebbb5254 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xebbd32ba max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xebc6e251 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xebc87d2c usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xebce3525 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xebe1e829 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec16eb12 devm_power_supply_register_no_ws +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 0xec3637e2 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xec41327c fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xec95988a crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xeca05f9f of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xecc5ad2f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xecc74c57 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xece128ac sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xecf6b4ce ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xecfe2bc3 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xed14bdba wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xed38705e tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xed3eb546 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xed4afa53 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xed68df97 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0xed791d33 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xed949690 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xed9d72a7 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xedb397c9 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xedb8edae power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xedbbc275 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xedcc9fde pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xedd5dbc8 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xeddb342e devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xedf07c37 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xedf7570b led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xee239a7a find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xee542217 omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0xee65f7e5 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee7df836 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xee8a8dd1 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL vmlinux 0xee936fc9 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xee9faa7b __put_net +EXPORT_SYMBOL_GPL vmlinux 0xee9fc8e8 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xeea7302b platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xeeb9ef64 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xeed7b7d4 omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xeedeede1 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xeee23431 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xeee72c51 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef300a56 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +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 0xef7ba56a device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xef814ce2 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xef8758bf device_del +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa7ba45 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xefbc53d6 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xf0011f65 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xf00cf994 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xf02adf82 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0421d46 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xf0477cee bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xf0627967 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xf066a08d arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xf06e0479 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07b87f9 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xf09b90e1 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xf0b4f823 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xf0b64eee __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf0c3628c pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xf0e07bd0 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf0e6764b ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xf0e81b60 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf0f11098 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf1080546 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf13df269 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0xf14a1327 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18920b7 soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xf18dcddc da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b4a5df nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xf1bae751 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xf1e431a8 pci_generic_config_read32 +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 0xf232f1b5 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xf2508c14 cpsw_ale_dump +EXPORT_SYMBOL_GPL vmlinux 0xf254168b pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xf2702457 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xf2751ad8 ata_sff_tf_read +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 0xf2a1b31e ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0xf2b95b3a __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf2bc5dc1 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xf2d1c5fb regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xf2ed48f0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f4d363 blkcg_policy_unregister +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 0xf338763a nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xf340fce4 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0xf3461b98 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3900eff dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xf393b1f0 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xf398dd9b pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf39c1c9e ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xf3a81ae5 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3becfe9 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xf3d51205 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xf3f15622 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf40b5dd0 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf47ebd7c wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf4819f5a usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf481ee7b dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a29873 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xf4aa00b0 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xf4c0f202 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xf4c9c678 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xf4d3746f device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xf4f1cf69 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fdcd2b register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xf53a486f fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf555b273 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xf5622454 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xf56da3fa device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf5725543 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xf57a8440 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xf57e6d77 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xf59e25f3 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5c9daf8 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xf5d4cb0e snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0xf5e16679 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xf5e3d569 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0xf5e778be regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xf616f921 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf629621f ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xf6319080 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf63a8884 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xf6457971 arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf64f4f8b gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xf67ba7b3 dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0xf6a05122 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xf6b00f05 napi_hash_add +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 0xf6d4a287 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xf6d879bc ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xf6dbf295 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7109134 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xf721c21f snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0xf7402685 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf7463e5f kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xf74af78f register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xf751c853 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xf767adcf wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf775b331 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xf78f1751 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xf79bbeeb i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xf7a6ac04 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xf7e4f95d pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xf7ed98d7 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xf82977a6 usb_hcd_giveback_urb +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 0xf85220cf ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0xf85cf629 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xf8767239 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf87d11a9 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf889a4c6 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xf889f043 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xf8d56a7e transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8efb236 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90545f7 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf907813f tty_prepare_flip_string +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 0xf9517801 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf96a8b6d spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xf97a3155 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xf97d170d mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b0f2c0 snd_soc_dapm_info_pin_switch +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 0xf9dc77c9 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xfa00f86e blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xfa07f4c8 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xfa093c90 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfa14570d mtd_lock +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 0xfa2ab74a ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa3c38eb get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xfa3fff96 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xfa413a01 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfa6dcddd cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xfa6f4e63 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xfa8c805c regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xfaac83c7 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xfaae388a snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xfab790df wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xfab9d44e pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xfae0d5bc aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfae43e3a br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb364d8b __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xfb372d9b mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xfb3c75b4 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7fcbea sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xfb8557ad of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xfb884f53 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xfb8c60c9 cpdma_ctlr_create +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +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 0xfbe0cc92 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfbe37e1a ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xfbf393c7 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xfbf580c4 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xfbf5c317 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0b2b30 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xfc107de0 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xfc1fd0b2 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xfc4bdd95 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xfc5c12b6 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xfc5f5325 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xfc626b3e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfc7d487d bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xfc8d34e3 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xfc8fd1ae sm501_set_clock +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 0xfca321f0 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xfca95522 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xfcb5d0b5 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd08565e nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd116f1a kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xfd167f59 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfd1f0a28 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xfd25e585 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xfd3c333c skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xfd41c7ce btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xfd4d8fa3 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd840b94 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xfd93acd7 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xfda46d73 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfdb546df cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL vmlinux 0xfddebe3c ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xfde1a33e klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe009c06 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xfe24d8b0 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0xfe412d61 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xfe59c63d ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xfe5d4473 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xfe636005 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xfe66c33c cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL vmlinux 0xfe66eb2d shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xfe7453fe extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xfe7646e9 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xfe97e89c kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9ad692 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed5a3eb ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xfedb1ff0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff00c0ed ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1a0d30 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xff2360c5 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2be670 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xff2f0d23 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xff3bd71f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5dd955 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff605bbd mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff66a224 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xff7f409b devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xff831e06 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffbe2a1b blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xffc04137 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xffd31cba cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xffd94023 omap_dm_timer_request_by_node +EXPORT_SYMBOL_GPL vmlinux 0xffdd0808 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xffe67b1f rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xfff11b2d tcp_fetch_timewait_stamp --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/armhf/generic-lpae.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/armhf/generic-lpae.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/armhf/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/armhf/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/fwinfo +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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: 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/boniare_mc.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-35.40/i386/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/i386/generic @@ -0,0 +1,19523 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0xd0d50b9f 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 0x064ee5bf 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 0x4a926016 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xbd04e971 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 0x1816b7e1 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x30187d77 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x5ae1b5b5 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x5e34fe5b paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x61a65851 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x69d27313 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xa21c55fb pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc47b8a93 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xd0c7b594 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xdd087e9a pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf7c8d644 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xfbb984ba pi_read_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xef4ac289 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 0x600e40b6 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x723b0079 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x77afb4e6 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 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 0xd0e08342 ipmi_smi_watcher_unregister +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/ipmi/ipmi_msghandler 0xff2b6c3c ipmi_get_smi_info +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 0x1ab57a71 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x1f9733d4 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x96e95ae9 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xfa927aed st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x4709b9e4 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xca56b72e xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xd0aca5f8 xillybus_endpoint_discovery +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 0x189e2504 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0xbb151725 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 0x009c23dc drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x037951fe drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04449650 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x056e9478 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05912896 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05cb8198 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06031180 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x060d6ec1 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08895f87 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0893f6b4 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x098da9e8 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ad8c39a drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b48118b drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cc07c37 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d7a7d0b drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d88cd75 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f5a6cf4 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f5dccd4 drm_mode_config_reset +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 0x1033dc3b drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x117e1363 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x125cf6ee drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x133c3085 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x136956a4 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1461f0b7 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x146f4905 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14812a1e drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x155046dd drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1648a669 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x173905c6 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17cbe2d5 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18c7a608 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x190839ba drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +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 0x1a788ab0 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a9ffa2e drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b242cf7 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c51956c drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cccac26 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d786809 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1da416d0 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e024128 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e2adaa3 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e90957f drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f4b09f3 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2033c91d drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x218e6a27 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24329b75 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25f309f7 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26c9f1e7 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x271d98a8 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2abee3d1 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ac74894 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c234fbf drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c93e745 drm_match_cea_mode +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 0x2eab77a9 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2eabab8c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ec4d8bc drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f211a3e drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30c1c000 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31aa09ad drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x321aae12 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33686798 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3406fa91 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3443628b drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34d7a886 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3511fd98 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x359e9a2a drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36c9b54a drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x371b5953 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38518f51 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3954b9fd drm_legacy_rmmap_locked +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 0x3c33c64c drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ca580cb drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cf3ced1 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d8bee29 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d92d082 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ef5fc3c drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fe1890d drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40a3644b __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4119a5dd drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x427c9bce drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x446b80b3 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4479593a drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x492da68c drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x496c76b3 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aea1511 drm_i2c_encoder_detect +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 0x4c8dba1a drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dc4431e drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e57a039 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ee83405 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fa0954b drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5034fa06 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51009c31 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5158be66 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x518e2762 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x524c21b7 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x532d2ae3 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5493e8ab drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5554def0 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e3ee3f drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56b376dc drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x570d2f12 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x583d6e03 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58afe92c drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a18a714 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5af69da2 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ca7784b drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d17f1f9 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dc7cd50 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e4deb4c drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f0fff3f drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fbb71db drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x600eccd0 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x616addae drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61c6f29e drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6343c6fd drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6453b615 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64d7b824 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e4bc47 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6816b101 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x681c5d14 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68601b9b drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68793a42 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x690b8b7e drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b3129ec drm_mode_plane_set_obj_prop +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 0x6e87678c drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f6eb3be drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ff107b4 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x701dedfe drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x706d3106 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70805daa drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71ff6265 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72ce3fe8 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73356c37 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74a82be6 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75b666d9 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x765eac11 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76efb0f3 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x774ff758 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77724ff0 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79fa9fb1 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a138769 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cf096a3 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e5666bc drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e6d2271 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e9a6683 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f2f01bf drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f571327 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fc4a375 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fde67b8 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80e3d4f9 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x812c39fd drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x813442ef drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81b34edc drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x861e8ea4 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88a41213 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a4a9607 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a7d23c7 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bd4a11a drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ca6405a drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dd1f494 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e35edc0 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fb16c6d drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fc95616 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x909886a0 drm_gem_get_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 0x92841c0b drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94daf400 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94db2787 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x977ae5da drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9887cc39 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98896dd7 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x989898ba drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9aaea617 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b108828 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d0fdc71 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d41071f drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0a83e05 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0adc2f6 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0dadd15 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1085eb1 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa185c158 drm_legacy_addbufs_pci +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 0xa2a13cd2 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2d3c51a drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa320cddc drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa42f3b58 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa49c07de drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa80cc63c drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa661b86 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab5cf520 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabd4a56a drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad478250 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf8ce5a6 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafeae13f drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3929726 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5dd0648 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7953663 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f804b6 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb3ff1d2 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbb61bed drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc0db65b drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcad6b2e drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbce9ab71 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd6bd068 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe5b3e5a drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe85848f drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe931529 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf0432f5 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfeadba7 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc08dd68b drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc093cb62 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc09c287b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc32eda1a drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3ef702d drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5912df5 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc65ef559 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9600d59 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9a1bf3f drm_calc_vbltimestamp_from_scanoutpos +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 0xcaaa13ae drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd9442a7 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0da2b21 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd165c708 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd18617be drm_modeset_legacy_acquire_ctx +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 0xd250b8d9 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd45b086d drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd729e31a drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7c9551d drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd80afbf9 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd88850c3 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd88dbc95 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd941fc57 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb6f5051 drm_crtc_send_vblank_event +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 0xde3c0d46 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde4124ac drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf2b9ce9 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe05852d4 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0aa05eb drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe13c5f2b drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe29e1cad drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe31607bd drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4ebd35c drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4fba5f2 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe53ecef7 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8264d48 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8e27792 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9a66161 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeafb6f0a drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb06a6a1 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb0ce0cd drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebe1ff73 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed8ca47d drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef83198b drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef840ac8 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefffb257 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0272814 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c030d6 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0d86876 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf10f4a21 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b5936b drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f4e7e2 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf263969b drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf277895b drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf35ae5ce drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf368e875 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf68692a2 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf750d0f0 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf772296d drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8668074 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8d13952 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaa29a50 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaaef267 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfacbdf9c drm_plane_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 0xfd1c8cb2 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe0cab4a drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfeefe1ed drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff919ef0 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0564751c drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06284f58 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x067aee74 drm_fb_helper_hotplug_event +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 0x119d4f00 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1417d6c5 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1508f54c __drm_atomic_helper_plane_duplicate_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 0x190aca52 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a88d0f0 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e04c46d drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x208e391a drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x209242c0 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x215d591f drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25440f1e drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26b88cb0 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27d11508 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cd07b25 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e5af5de drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e88ae6d drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f2b4e37 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2fb79170 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x313c09e1 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x338b4427 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34d7cf03 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3604e036 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36c7d68d drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36db6ab6 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a656057 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40fe3d7d drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4148c934 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41c668db drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42cdfc35 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4360a47f drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44aaf488 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x457133d6 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a2add4f drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a3bf38b drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4eeca11d drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fbc2895 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x526b71e4 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x53f87c28 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5534b23b drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x56f5642b drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d0ee9d1 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e3591d0 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x625e10fc drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6310a2ed drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x644cc9b3 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x671992f8 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6954d7e6 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d3008b5 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x705f44d8 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 0x711fe26c drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7366fc63 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7556b715 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x775cac8f drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ccd5e51 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f75a78f __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81476c2f drm_atomic_helper_cleanup_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 0x8ebaa73c drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90dbd03a drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92bdcf6b drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94ad1445 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x957fe88c drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a41bade drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b3c3153 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ea0f78e drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa24b4069 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3334b28 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4d4a571 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5e85476 drm_atomic_helper_set_config +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 0xaf9bee52 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb21b461c drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3b13672 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5ba5830 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5f501ba drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb97102d0 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbceff551 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0e71a2e drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc10278b0 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc455bb70 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc57a0355 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9e4b6c9 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd161fdbd drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd45d3cd0 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd49704ab drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6b1fc56 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9a7bf92 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda9cba1a drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd530f32 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0165a7a drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1d03a14 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3211952 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe36c9578 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe63624cd drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7830a0c drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe844f54b drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeab7fefc drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb38fb67 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xecba52e5 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee7891dc drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefd27d2c drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf060106a drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7b92202 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9039623 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb907043 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbbec1bc drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbc50915 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe923e3f drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff7ade45 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x050d7623 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x14d971f1 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1515a565 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1830614d ttm_bo_mem_put +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 0x238a2430 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23b6b1a2 ttm_mem_io_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 0x2d1fd8e2 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2e06925d ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30466f1a ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30f4c9d7 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x313ccac8 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x319e0cb2 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x375bedbb ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3bda3cc0 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c2cd73a ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x437609af ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d7ccda4 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5bbc901f ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5dcd7b1a ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x681b7682 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x68c82362 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a6c8d44 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b0977d8 ttm_bo_init_mm +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 0x7731530d ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x774313af ttm_bo_synccpu_write_grab +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 0x8b81a784 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8dd5d9a5 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91fe9c15 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93ce2ca5 ttm_agp_tt_populate +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 0x953b6263 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x997cfb3b ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9da5d590 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fe275d0 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf155978 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd9f8423 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbef89c1d ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6b3c050 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcbb09f92 ttm_tt_bind +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 0xd5113e5c ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb0b6d04 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe08c84a7 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe0b0d823 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe1f2202e ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe2f49e77 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe4ae5b36 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe7bb3f86 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedb47052 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedd5e228 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef4a6522 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf22e0992 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf328b142 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf42cc81d ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa2f6048 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff2aef1d ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff560a60 ttm_bo_validate +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x25a0361d vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xb5a73292 vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xf5ea7527 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 0x104a2eb0 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 0x1ad3baf4 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7444fc66 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xc9090dcf i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x0ec54484 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xcdb7b563 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xa5d58bee amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0f74574e mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x19bf98aa mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x26b8e197 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x26ee0f8b mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x39976585 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5169bf18 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5ae71a2b mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x872d846c mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9dfc7561 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9eb36538 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa368a8e3 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa5b54872 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa6599aa1 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa999afe4 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc8e44fcb mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf0124b6a mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x388a2498 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xcf245ffc st_accel_common_probe +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 0x3be991d8 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x41abc1b8 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x43816a09 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x641db9c7 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8cd3fdfc ssp_change_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 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0e779530 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1cf03d33 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1d60ed56 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3f6e9678 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4567b7f3 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x63c1c6ad st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x71e60fc1 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x79d6fb50 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x85bc8815 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8b6314d8 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9545cb9b st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa1b11485 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd0f98e72 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdab8e2cf st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe1d14c4c st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x45a9e931 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x50f33cac st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xd2dbda92 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xd2f3d289 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x3d00a15b adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xb72f7fe3 adis_enable_irq +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 0x357082c4 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x3adfc1e8 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x4d1fcc64 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x4ea766c6 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x4f015f5e iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x829a1cbd iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x8b05f255 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x8d149aa4 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x923bdbc2 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xa705c57e iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xa82ca811 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xb11d388b iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xb345a096 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xd1179705 iio_buffer_init +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 0x3e00267e devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x8a6d1b9c iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x9ec4dff0 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xf46a1819 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x009c17b4 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x8a61f946 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x7e2f81a7 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x682b7704 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x8b4b519e 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 0x9846b88f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xafc53b55 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x22df2d63 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2c6e2613 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x302d8072 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x63f2571a ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6578e145 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69ba2ff5 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6d51c2e9 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x74024a56 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9ecb14dd ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaaf9f8f2 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb5c8f8c9 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb85fa113 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd815ace8 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdc835b5a ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe2b4a0a3 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe5652ce6 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf375d72f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08039b63 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b8b96a7 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d1e9ee4 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f1402d3 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15057f39 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x154e16e5 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1636f55b ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c6294b6 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e947039 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2143b94f ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22a151a3 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x245eb41c ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24751f72 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24af1eda ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b98124c ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f496e64 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2fc40535 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33e3d17e ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a1ff6d5 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ef3c780 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4057434a ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x458e3d3d ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x469463b3 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48b8ae82 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4fc441ae ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5055267e ibnl_add_client +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 0x534e0214 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x553c6776 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d6d6f37 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60e85a3d ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x620c14db ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6567fdfc ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x670f324c ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x680a7616 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x694298a9 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x759aa294 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78d8aba0 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7db87101 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7e92805a ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81ca175f ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81d78bb5 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82e4ed5f ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x868bc535 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86bfc0ff ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x871b146a ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x873c2631 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x898bbf98 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x917b7e9b ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9272769f ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9468e96c ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9979a573 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ab6944f ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f53acf1 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa2e53f1 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaeb0ab2f ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf9866d9 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2d1dfd1 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4a9e19d ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4f199ef ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb932d2f6 ib_query_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 0xbb932a37 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe36c84d ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbee8b5c1 ib_detach_mcast +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 0xc38b0103 ib_modify_cq +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 0xc7736b85 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8b62f4e ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcad5eb29 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7c6ab75 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb196c00 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdcd35b24 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde0c2f2a 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 0xea1f3a88 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefc85a78 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0b15b0f ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2286e82 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf33bdddb ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4f53ba3 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf75bcb0e ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf835f088 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfbabca6d ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfde918df ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfff853e5 ib_fmr_pool_unmap +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 0x0d8d1050 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1b96faa8 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x20c62add iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x27f9c943 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2d63fc7e iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x47b0ff72 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x55c55691 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5df9c837 iw_cm_listen +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 0x784f40f5 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 0xa451aeff iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa5e136e7 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc53612e0 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd222aea0 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xee41c3c4 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf907784b iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x14a35c01 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1537ee14 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3d04c43d rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x447a1723 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4b4d89c4 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4ffa99ce rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x540abdf2 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x65dd7f19 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7137a199 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7714f0cd rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7e8b2eb2 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8c791748 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x90c466f5 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x94d040bf rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9fc3c208 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa2097f58 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe4df57f0 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf08e1ed5 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf76f7a18 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf8890ea8 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfacc8ed2 rdma_leave_multicast +EXPORT_SYMBOL drivers/input/gameport/gameport 0x26cf097d __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2d71dc72 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2e45527c gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x41181a79 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x73ade93c gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x762105b8 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x76fe6d56 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8b2eee7e gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xff07a87b __gameport_register_driver +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 0x385551c1 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xaedbf0c5 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x001d34d5 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x09c740dc detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1bfca3c3 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 0x31d439c6 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x39dea370 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4e6cb5a3 attach_capi_ctr +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 0x63d90254 capi_ctr_handle_message +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 0xa0000a17 capi_ctr_down +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 0xcefcba84 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe010a825 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 0x278c671e b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x299bd2d4 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2c56c42f b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x305d77a8 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4b23ff81 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x55e07e51 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5b12b31c b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x807e8a07 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x856107b5 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x87551e36 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8faacea4 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa132ea9c b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb477d01e b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbfa4d407 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xde3fddcf b1_reset_ctr +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 0x4304c7e5 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x466adaa0 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4f18c78d b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5bc3f6e7 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6962458e b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x86645669 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x95b5a92b b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbb769044 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe18097cf b1dma_send_message +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 0x94afa80f mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb37c0b55 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xd8aae15e mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xf4033fa8 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x953d5fb7 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xd04a007c 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 0xd2f7a46d 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 0x0c49059d isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x32a27e35 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7088e146 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x81c1633c isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xbe8d616e isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x3f0672ad register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x7af6065b isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xf015456b 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 0x05bb8c81 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0888c803 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0dce0399 bchannel_get_rxbuf +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 0x2bf84634 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5546ec96 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6c9cfd9a create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x71677f97 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x857f259e recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x86c38e39 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x91d27ba3 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x961392e9 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x98dadc0c dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaf3acc39 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb0ba3b7b queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb8bbbef7 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc6c98ef4 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd3dfe44b bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd53754bc mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdd6fa04f recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xde42ff25 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe0923ac4 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe2dbc361 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe957b5e8 mISDN_unregister_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 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x2ef29301 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 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x98b0726d 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 0xab6dd949 closure_put +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 0xd9f74115 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 0x4f19d7ea dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xa62f210d dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xc0984625 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xcbec3f1d dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x10e81090 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6803d660 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x99f99c3e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xab9db914 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xb6d195c7 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc31b983c dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0xfe0fa30d raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0a69b9c2 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x15e18208 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x36172c6b flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3ab72eb5 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x67d71e6a flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x83db094c flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa16cf3d3 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa33de4d5 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xade03060 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xafa1fb77 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xba072a98 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc54d4957 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfb89f056 flexcop_device_kmalloc +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 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 0xe7c57071 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xeac5f1e4 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xf111d8bc cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xfa36bd62 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xd673d7d2 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x1a7483f2 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xa507d534 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0b835ec7 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1698c0e1 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e5f0bdd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2005e037 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2907e8ed dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2bd35211 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2cf288a0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x30be5ab3 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x362dcccf dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x393b43a3 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3ee8cfed dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x41bf94fe dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x43cd7128 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x44d84a00 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4df4781f dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x514173ee dvb_dmxdev_release +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 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 0x7f7bfd39 dvb_frontend_resume +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 0x8b385173 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91a531cb dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x974883fe dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ab4d06a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa4cfdb97 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xadab19ac dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb11601d2 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3921999 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc645fbc3 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcbb8c26f dvb_dmx_swfilter +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 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 0xf2338d97 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-core/dvb-core 0xff2da141 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x23b7de3b a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x4ed12560 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x74874f01 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x21df8113 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2cf6810a au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2f93f134 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4474235d au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x45e9267e au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x628ecd93 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa1fa9f12 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xef76adc9 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf215d562 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x0d640905 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xd78cae8c bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x05b7fc55 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x6b82b297 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xca2e3089 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x19a0586c cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x37e26d78 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xf41aa2c7 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x6c3a166f cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xefb6c55a cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xf45ccf5d cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xd9ceed24 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0a79a3c7 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3893aebb dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5a4788db dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd9bf5e09 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe7bc0378 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0379b90c dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0eb7fcb6 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1bba2bc7 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3f56da32 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4ab137c9 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4bbd0861 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5e213c1e dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x66d646e3 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6d5b856b dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9972d55c dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xccc113c2 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xce6afe82 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdba333d2 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe73c89ca dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xeb1e6591 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x30f0c4cc dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4999e6bb dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x59960f5b dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8b9d7f11 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x97613003 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd412532b dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xedffc275 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x05453c39 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x4c14681b dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb493b7d3 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xff0baf18 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xee6fe8be dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x2a257e85 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x02f429f6 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x31996cca dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x38d5d496 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7bf105a2 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x95fca1c3 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xe045c9a3 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x9210c934 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x36d9bb4e drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x9b94acd9 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xfc10977b dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x3052006a ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x1930da78 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x3f72dfe4 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x68bca1f9 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x99645302 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x058daff9 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xcd0c78df l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x777b9111 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xabd82ea6 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xc521b3c8 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xc0e83760 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x2e5d3b3e lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x2b730255 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x64e06d22 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xffe13975 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xf4d6d5c8 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xfce64c45 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x9bf9245d m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x7600ef07 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xb643dcf5 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x5d8f276e mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x4bf741af mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x86a7bae6 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x62ac878a nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x3d794ad3 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x81583ff4 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xf6bd6b72 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x7bbd31d2 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x4dc989a2 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xef1f3ff1 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x55c5dcae s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xa218063e si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xd4d5d048 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x1b8b76e6 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x483eb427 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xa8776af8 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xd4d347dc stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x76f0c0c4 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x0f7af8ae stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xcf6e189d stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x3320d4eb stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x15ea37a5 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x16b30fbf stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xcaebedf8 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x2956e9eb stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x82f2e8bd stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xd03a68f0 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xe4404e47 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xb19903da tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x09b03547 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xcf37e952 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xfb22413a tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xe04b3dca tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x8b6dc56a tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xd6b9af20 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x680dfc09 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x1efe4e86 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x23835d37 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x3522ef0d ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x1f19da1d tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x4f160915 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xb7ba1c02 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x31b2661c zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x43e6bace zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xe84261f4 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x06c3b17b flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x35f7b7a3 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4696c57f flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6fa4e4bf flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa400cbe8 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xccbeeee6 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf73415ba flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x4f03c1ae bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x674b5684 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x82fe310c bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xced10b22 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x0100bab6 bttv_sub_unregister +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 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xe29b13af bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf7678159 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x454e5a69 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x68cd65e3 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x941ddcca dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x95aa30eb dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9b5dbe43 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9eff1b19 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa5438868 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf96f6c41 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xfd2f712d rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x41c5027b dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x8ff3b08c cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xce353dad cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdbd80b27 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe62af51d cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf3667d9b 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 0xd157fe9c 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 0x20e20fc9 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3eef2724 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4d7a7eb6 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x77d12e10 cx25821_set_gpiopin_direction +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 0xd5bce965 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd66ebab3 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xed5f8dc5 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x45109adc vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x50f62b4f vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x256bf026 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x336232c4 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5bfde6d7 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb1681b59 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x0d5858b6 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x31801983 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x54dbffcf cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x595d60b9 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x5e4d2357 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x71aad60f cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa9667d87 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x076da221 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x318b4cf9 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x342276c3 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x50eb0476 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5ead46a8 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x73e5f9f5 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7e7db07b cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x84252c11 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x86013736 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x915e6910 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9172374c cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c7d4dc9 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa23e9bee cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa58200d0 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb9f8d3dd cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbdf1335e cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc4884d3a cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xde25b2fa cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe045efb1 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xed57511a cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x04b4c143 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1ea25e20 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2dea4123 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x317f2c30 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x42e5822e ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x542be5b5 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6a29f69a ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8273d36f ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x883b21e3 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa8169e47 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb52aab05 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb68d6165 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbf1a7585 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd8f7d6cf ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xea1b5b70 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf0c36a86 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf2131f4b ivtv_udma_setup +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 0x12124955 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6efce484 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7eb95c39 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbd27c863 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbeca192f saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc805abe4 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd2ba160d saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd75812c3 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe2ef7b64 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe3cffb53 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfe15fdbb saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xff89d373 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x7812a964 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 0x0a3ecd92 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x213a4deb soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3dea9048 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3e1b0f08 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa0c13bea soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xad5e3a6f soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcefcb711 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/radio/tea575x 0x43cd7bdb snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x47cee1d4 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4b101d99 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x61dfa26a snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xdf215a12 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe0b90837 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe2bac16a snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0e31cef8 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1e014b2b lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x22c8da95 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x58b81d36 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5f3e7153 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x973451d1 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9e958817 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfae228a3 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/rc-core 0x80bb4d20 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xdea0e32c ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x60e7f9ee fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x51b5ff3b fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x6c4e19e3 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xa648218d fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb7543157 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x5cb64967 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x837b0a22 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x64bd7909 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x5cf5ce2c mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xb6a8aa0c mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x052402e6 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xcf07a926 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x13d7f024 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 0x704db559 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x47076ffc xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xe52f537b xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x1daae946 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x356dccd0 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1946dab2 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2198da81 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2e1aad53 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x53067528 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5d450abc dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x786cee18 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9485b6fa dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd1d206f1 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfbf7cbc9 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3c467141 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4fe41979 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x955c4e71 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xac828824 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbc35280f dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbf2f9ef6 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf1cd673a 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 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xed235c0f af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2083d118 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4d7d9d2f dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4ff75502 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5e9ab5a2 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x63d60d2b dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x68f86a03 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x80b507db dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x85089f65 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/dvb-usb/dvb-usb-dibusb-common 0xb70dca29 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbe5b6ef4 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcccdbbbd dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xa4277a47 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xf73f31e6 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3a5dd706 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3b2adc65 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3d7b90b1 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x57966217 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x9b3f1b44 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa6d9e721 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb88aa680 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd93b0b69 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xeb535f16 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x29597a3c gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2e62f750 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x60a75d68 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa2fe649d gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xada380be gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xbd1c2182 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xce5d6eed gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfea022e7 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x38de0423 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x885f5235 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc6af8202 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xd86e5e0f ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xf3a95fc5 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x42daf1fc 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 0x792aac45 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xdb1d227e v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5c8f54ec videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8f1d4e24 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x980b02b7 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa731f0f7 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd702f3dd videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xddae7851 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xa32370fd vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x50e0c2c2 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x76516e98 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x7c8d0916 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9b0e3696 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd0694017 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xfb2bbf6f vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02e39e0a video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02ef40eb v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x03080339 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x06f2085b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e3d0e5d v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x109209a1 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10f9e16f v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1104e574 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12820ce6 v4l2_ctrl_find +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 0x1ede572f video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x213ce5a3 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x248c127b v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2516bca4 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b1c8736 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2bc6b629 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3766d042 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x392a1d14 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b81b840 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40495925 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x484bf76e v4l2_async_unregister_subdev +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 0x4bd7b357 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5160f9ea v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58ebecf4 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x59581a1d v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ab6f713 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ded582c v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x649fec58 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66c89b29 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x67111087 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e135b5f v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e6013ac __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x713fca2a v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73027225 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76a0aa51 v4l2_async_notifier_register +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 0x829e0ad6 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8b2c8009 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8bc18f2b video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9281412f video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x939355b7 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95df79a4 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9cc7f397 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9fb9e6e3 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa409901c v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac615b15 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad29e813 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xadeb1a57 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf8f2f88 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xafdd8212 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb0a498ff __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb2fd1b26 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb5e73fab v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba1ec42e v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc1bb2d2 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbde96bc6 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc012408a v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc13f0656 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc46dfe55 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc754433d v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1ee39c1 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7846700 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6f54759 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe93fe337 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef75b83a v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf85a8c16 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc0230d8 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe3abb33 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe92bb4d __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfffba27c v4l2_clk_enable +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 0x13b11807 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x20a07dd6 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2283d43f mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3665b1d9 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x37327d73 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x399f8afa mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x412632d2 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x459f282d mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x45b71d7d mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4c1c0c4f mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x730c1362 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x733148bb mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x775b1db1 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x86682e1a mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9d611cc7 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa66a7400 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaa0b3ffd mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaf3f31ca mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc14ed9c9 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc60d10ea mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd81480b0 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd8761d71 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdaa0ddea mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdf3c658c mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe46bb131 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe94ec910 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xea7729dc mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf1089568 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xff81fbdd mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x00a6458b mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x03a41dfe mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x099ec239 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2c87f04e mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2e340709 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x34e22d6a mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x35869769 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3d21e862 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b2e4a2c mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4e50bd9e mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x54c9360e mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x61c7db65 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x76ad2420 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x825590a8 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa09069a8 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa4406ee5 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa5eb9419 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa6fe03f1 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa7d1cde7 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaeb50e22 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb4edab5c mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb501854a mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc4b32917 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc97bd765 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe0a87b1f mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe305049d mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe902e471 mptscsih_qcmd +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 0x29b6d97b dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xb7427e60 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xc966e1e6 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 0x2e1bfcd9 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x4f9a72a0 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x7bff7b21 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 0x0009ba0b wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x2ad67e1d wm8994_irq_exit +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 0x5a42c9e9 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xe57d28e3 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 0xadbf72f2 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x099c077c cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x14579340 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x18a95ff8 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x27b766d5 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x704a4c92 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb6e37244 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf7d20ec5 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 0x0406ac01 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x041ca191 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x6430b375 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x17beb48c mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xebfd0fe8 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x5614aeb2 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0x8f673b9e denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x27f4ab28 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x6e931db6 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8167a8cb nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd3e282da nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xdb7505f1 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf98b5360 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x060e4a6a nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8d5c9c9d nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xe056d45b nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x0be7b08e 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 0xbbb266a1 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 0x1f38d5e9 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x249fa276 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x63f9f428 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x67a4135d flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x07d8467f arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1a6a9901 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2fb47aef arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7fab47b0 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x899e821a arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x93ef671d arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe0d53364 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe3f7148a alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe661e4fd arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe8c84876 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1decc5cb com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x9f96bfe5 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xc8db2faa com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2aa3dade ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x477910e9 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x589791c6 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x59c3189d ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x86829de8 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8f012297 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc933cc7e ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe5272797 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe889c583 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf8bca0fa ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x23bdc7d6 NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x4032cf1e eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x418ec2e0 eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x4b04945f eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x697be63c eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x95493faf eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xb1100137 __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xb58545a4 eip_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xfc2b1577 eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xffddbc0f eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x5b0d1659 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x0ef0f57a cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x167e6572 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3457fde7 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5e818036 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x65b53494 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x71747fb7 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7ad54d2b cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x87ea3104 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x911b23ec cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa66cb95d cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb76941bc cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbc30248e t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcf1d4fb1 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd7e365bd t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeb9818fc cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xedec0b35 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfd05941e dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x01a208e1 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12cc0d1a cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22bc57b4 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x28b21069 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2ad989ff cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x39427470 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3dfdb2ad cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x44a839f6 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x55178dbd cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5b6f4e7c cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5d5605b2 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5e6db25d cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7e477594 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9b5cc64e cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa2c68ec9 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa89beed9 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaff43798 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb1eecc36 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbdd8da72 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc42ea007 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6f2224d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcb995c5b t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcdeeb04a cxgb4_select_ntuple +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 0xd8f3b696 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd9ede809 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdd4bd70e cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe2978d05 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe2f0b035 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe37a987f cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec185ec3 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xee71e40c cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf146587e cxgb4_bar2_sge_qregs +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 0x1101dc23 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 0x86fac4cb vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xc64cffb8 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x0a2b620e be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x68d45299 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 0x01103eaf mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04bbd9e6 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x067723b3 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x093f46ea mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fd4ba7b mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12b726d5 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f5fcb9d mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2731abdc mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27f858ec mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3882aad4 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ad15584 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cb60b8f mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fef1b57 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43c43718 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ccd7aeb mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56a0af4f mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f113142 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66275db3 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78123e3b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ad1aa5b mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7dcfa4d3 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ae8218d mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa591de88 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad2fc77d mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4f4829b mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb698fb7e mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba06156b mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba5363c4 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf8baaf1 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4a734ee mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce697a5c mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0d091e8 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd48bd4ef mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebd5225f mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3ca9a54 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5cd4c3a mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00de6f31 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01f38c17 mlx5_core_arm_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 0x0abf77b6 mlx5_cmd_init +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 0x0f9544eb mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f9e0df6 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ae0d52b mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2b24a523 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2b51976c mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2c65d818 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x389aabf5 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d078c74 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f611615 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x618753e6 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x654cbec5 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66a26080 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6a65414e mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x766c3550 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x842b86f6 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8478b417 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8609de15 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f7ccf13 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x971b0f68 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x984b9d44 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab1cde7e mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2d1c612 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb37d5b68 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3ca4e19 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5c8f8f1 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd043a60 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc7978f39 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc928f141 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca9577e4 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd33491e5 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 0xf17addcb mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4ebcf9f mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf57eff28 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfbdc8466 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 0x016c41c9 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0c654ee3 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x81bea12e hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xab5cb886 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd2d36f25 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0774af08 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x322f9e35 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3f7b5a0b sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x70a93a4c sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x746bc5c3 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x90aa1fb0 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbf7a2b8e irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd774b9c9 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xda17fb22 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdfe2b99c 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 0x12ec9c48 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x13909396 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x2096beee mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x2350861d mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x3c79155f mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x598d50a4 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x75cf4456 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xebe0b93b mii_ethtool_sset +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x1d36c6e7 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x7f897474 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x722f57ef vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x17210798 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x85f4882b pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xc571389c pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x84a07559 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x33de459e team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x3fbd0fb6 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x47ade90d team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x485f8e12 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x4d6e40f5 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x831a3fae team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x844a9f7c team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xfafe6df5 team_options_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x24b198e8 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x9df33544 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xefe31323 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3cf1f1de register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3f6497df unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x49417fcb hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x49f6dda4 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x53c6bcc4 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x637a4430 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8438237d alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9c72cef6 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc0333a72 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd35b54e5 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xddeb0616 hdlc_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x005d85d3 z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x0c9ee916 z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x149e6d01 z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0x1d1edd00 z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x31a10208 z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x3ab49e04 z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x66241e58 z8530_shutdown +EXPORT_SYMBOL drivers/net/wan/z85230 0x92a14d4d z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0xa3ae231e z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0xb09e48d3 z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xb74c6253 z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0xc4d8f2fa z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0xc5e9b518 z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wan/z85230 0xfde5d9bf z8530_nop +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x442cda2a i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x07aa1b3b reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xbfb2601c init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xeaa66e70 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x06a2f838 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x18d32849 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2a69abb3 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2d96a496 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x42945b46 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6ac15e59 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6c77761a ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x71d7a2a9 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x80586b61 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd061aa40 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdd5a0ae7 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xef9c0b8a 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 0x1a3f7e80 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3155cf50 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x31803a66 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x49fc2afb ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5fae28d0 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x669d92f5 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6e92c183 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6eb7d6b0 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9f11f249 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa2cac244 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe8920dec ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0b884494 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x30314428 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 0x8ce0606b 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 0x9cf15aac ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9e7fee55 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa23c6ddf ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc1bf7ebd ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd408866e ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe70e3ce9 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf0f9338a ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x08da8e7c ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x15152ce6 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x16a7194a ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x16b367d4 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x38504f48 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x402aed2d ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5e98b529 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6de6dd00 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x78a458af ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7a49f0cc ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x828a1566 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xae11ddc8 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbfd2d7d5 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc1ac9448 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd952dbfd ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdb968048 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdbd9334e ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe0f3df03 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe1d9d8e1 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf3846d22 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf6316750 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf6c7a08a ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfd47bd85 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03a74c0e ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x045bb61d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04d59050 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05487fd2 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07b684be ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0aa74653 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e548fe1 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14833aeb ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17269b7c ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17dc0798 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x199357bd ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ebf4ba8 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1eef1784 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1fbc2c41 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2870e579 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d6a88e8 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f6e97f7 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3211b035 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34000e05 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3644e772 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39a5118b ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3abdb0d7 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d230082 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d712c8e ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e8e795a ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40038fec ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44dae01b ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x471ae184 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48bc8c7d ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b5ba6bc ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d9864ff ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55617936 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58ce9e49 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59d32f0e ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f91cc37 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6217dbfe ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6432609b ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6638df28 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x679cec11 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69a2de5a ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a70ad7f ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ae0439f ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b0fc73d ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7008bfcc ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x780d3a51 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f99abbd ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80ce9805 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81a3be9a ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83525b2b ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86264d54 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87b53166 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88ffe882 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91238065 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x920b3d95 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93657d3a ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94868b4d ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x951bf639 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99284d39 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ad9a265 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b1faa29 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f589914 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa085f50e ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa396ff8d ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa584fb1f ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa606f565 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa87606fb ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad582ce3 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1fd9bb2 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb20cd697 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb52eeb83 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5f1657d ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb643986c ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb676ea20 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8d74745 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8dd32f9 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbf541cd ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc14b92f ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc06d4fe7 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5d2293d ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc672a128 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8fbbf52 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca3f054f ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbf95dc0 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd82a771 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce3a3f7c ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd15d5641 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd96fcc71 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd996f13b ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9a83bfb ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc0edee5 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc651817 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd0af1b7 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0e0850a ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe34561b4 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe803041b ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef5cbff0 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0e6ffb5 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3042013 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3257858 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf67cb5fc ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf96c6e00 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbd7c5cb ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc71fd04 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe014db0 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x13673687 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x17d5c25c atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xecd9831b init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x503b2c55 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x64350066 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7df54600 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x86863332 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8692c821 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9d62d199 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa65c78ec brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc0500cad brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc84eb19a brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd2cb7f11 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe684931a brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe74d6fda brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe834e2d2 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x15461593 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x29b42fd4 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x339b452d hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3f3c4fb7 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x430689fb hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4af750fe prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4f981b9e hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5433852d hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5480d3cf hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c6b11e7 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x82ce2cb2 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x862d3844 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x90d69daa hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x953a04bc hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9c273fe6 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa1dd23d1 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa50ed831 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa64cd5b2 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb1795e7c hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb1b79698 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb36d8e41 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc0b3afb5 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe892d72c hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf36370a5 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf6ff6fa2 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x000b32fa libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x02fb50ab libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x08caa84f libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x17bac181 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1811fa1f free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x36d58c6b libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x44bdf6d7 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5aa06754 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6cd4dee3 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x76305546 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8a9c9ae7 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8ca52e6c libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8f4ad591 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x91ff278c libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9b7245b1 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa4febbdb libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa58e5e37 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa7dfa50a alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xca2f4d0e libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd6a9ec9e libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe4070e16 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01d99e88 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02f42d10 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x066728e9 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x078d5727 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c5baeb4 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d3541eb il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d466095 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0eb211f0 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0fc25e14 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19c13302 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b322d89 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c27afb8 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e161d0a il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27c6c867 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27cbc057 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x280a35b2 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2dd6c958 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f172e46 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37fb0b8b il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b72d42b il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3bf28818 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d91f116 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e3ecffa il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f624a28 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41bab3b5 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48d04300 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x49746666 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a1e9a41 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d9220b5 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f90ae27 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5118d569 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5498413b il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5671197f il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5728dce4 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a501d79 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d7bb94e il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f996cee il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63db0f60 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64a8ba81 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6609c93b il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68f3da52 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69a294e6 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e6a7e56 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6fe16d46 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70034464 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70e4af75 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x74b786f0 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7532b6fa il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76b28a78 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7749412a il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7757874a il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7814865c il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ad18427 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8100f1b9 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x839c7e91 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x886b5a7f il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c4a3d80 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x929b8967 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9387adf5 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9525dd8a il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c4a70dc il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e9f1eee il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa547b783 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6280a15 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa772a222 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa90505b6 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9f5d4e3 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab50028a il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac644738 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xacff0480 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0383b2b il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb07c4f46 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3e12771 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6e28071 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb903934e il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc446156 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc06b7ec0 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5d5eee3 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc64769ca il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6c49dd1 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca42c2ea il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb7c02f1 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcee89b57 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf5b6382 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3bd5f1c il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6775436 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd72d48b8 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd986ad6e il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9cd7a19 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf5eed03 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3b40d2b il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe54ae530 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe63f77d6 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7c68ce8 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb181fec il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf58861c0 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf59402cf il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe6958fa il_init_geos +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 0x14f664f0 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1df51b7c orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2cd99dc6 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4232057c orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4b7ccafc alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5fbc5be1 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6802a4ab orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x72eb9243 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x786e110d orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7f05696c free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x803cd218 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa7525c17 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xae492197 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb9940d94 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xceadfc6d orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd115824f orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xea0ab03d rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x03b6c85c rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06d61c03 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x088f1903 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0a2dbef2 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0cc882a1 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e9cc9fb rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x110f871c _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x14673083 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1af84121 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x21e11a73 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2caa3f77 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2fba4d18 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x356bf3dc rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3c66d8ac rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x43eab363 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x48ef87dd _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4c8b99d3 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4eba8479 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x54335d02 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5987a2aa _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5bffea80 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86992a90 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x886537f1 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89dfc21e rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x957fc348 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x96cfb597 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e563fef rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa011b690 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa227cedd rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa33a1ef2 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa4b3e78d rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa6039e4c rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa740da7c rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb599e098 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb7458b80 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbaae1130 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc916d1c9 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc9f0c779 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd2b70b1e _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd4d15572 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe23a0764 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x182e0724 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x82577ba6 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa50f68f9 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xe89701bf rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x55e4874e rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xc1ca9e6c rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xc234b453 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xed7a0d9d rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0034fff1 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0cea641a rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x11a20e65 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d7d73f0 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x258b48fb rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2d31d2a1 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2e94e7fc rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x30970ade rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x532b457a rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x600c3a9b rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x711fa351 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x796c77e1 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7d6c7ef5 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9eff3a5b rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa01f9abe rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa13d2eca rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa2472f3f rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa58794c5 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb0d2b6c0 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb84f8975 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc21a9b0b rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc541b146 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc7f578cc rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcf59ca16 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd7ebf775 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdf8af94f rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe277ab79 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe943a721 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeb93f10a rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfbf130e0 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7f036a18 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x94c60fb9 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc2d66a83 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe5e24ae1 wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0x043937a9 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x3ce9bc8b microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x3c39aafe nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x815aeb00 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x87b965bc nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x3a1f82a6 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x84002172 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0b11a02f ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x17dcbfde st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x281a77f8 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6dd9dbf0 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa418f683 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd4e3d87d ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdd720712 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe9d3926c ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xec7acd41 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x09db06b5 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x15ebc562 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x229ae038 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3ff270d3 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x498cd157 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x571725a8 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6951bcfb st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x69d978d1 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6e301883 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x85f98c74 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa2192e45 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbb584db2 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc57d746c st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd2eb1eba st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe51dab82 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xecefe3c8 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 0x448839fa nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xfce94463 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0b76d21a parport_write +EXPORT_SYMBOL drivers/parport/parport 0x0cce034e parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x25991262 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x277f69e5 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x2893d9d0 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x33821497 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x367cd330 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x3baa53cd parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x433c5737 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x488e0926 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x506f440f parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x54aad273 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6919272c parport_read +EXPORT_SYMBOL drivers/parport/parport 0x75c31bc5 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x76780466 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x7c9e9c1c parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x81ea2513 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x87c9bf2f parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x8a5f0ae3 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x8cebcff9 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x96c511fc parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xc5feeb9a parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xc6890599 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xcba1da08 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xd485abf0 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xd520901c parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xd99d5926 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xe13a90b0 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xece7bc70 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xedc77d3a parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xee4f8131 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xfa333a77 parport_register_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x71dfaab8 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x965427a9 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1216a65a pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x263d6fd0 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x333af023 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3fd2b918 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x40be8a37 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x532ac25a pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8e76335a pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa082630c pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xacea380c pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb42b6c29 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb6c00dd2 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb8609f55 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbfcd962c pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xceda69fa pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe76c934f pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe77e0c96 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xee77039c pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf5dd04c0 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf8021900 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0068e517 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x06fe1140 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2c32d41b pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x57f9caf5 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6a94eddf pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7697c706 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7dfcb473 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x81e75b03 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x89510bb7 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8e8270e8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe5ba8396 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x171fab77 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x399661ef pccard_static_ops +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x68a7f312 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xd1bbad4f pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xd5452860 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xf05238d5 pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x2dcf85bd ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x3241a7a0 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x6eab0708 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xb367f5bf ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xbb24ebe6 ptp_clock_event +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 0x12c9dbab NCR_700_detect +EXPORT_SYMBOL drivers/scsi/53c700 0x2834ec50 NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x5e25bc91 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x863266fd scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xbe1ce06a scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc588f634 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1078fcb7 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1e198f63 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4ecd657e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5ea1c6f9 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6f79bf1f fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbc179809 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbda36dae fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc0081e6c fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc7c88a00 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc86afec1 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xda1b6bc3 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xef510cf3 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a0c6310 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0d21eb31 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1ab0067f fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e406de6 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x218824cb fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x253451bb fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27594a1c fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27f1f07c fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ae98430 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b0b7844 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x406f3b5b fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4317fb16 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x44f77392 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x47b4ab3b fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x50035e42 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x56b01bfa fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f9883ca fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62da2496 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6cfe14b8 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ea6d868 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6f136894 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x782cdfb6 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7978f387 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x798871ee fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7fea7927 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x97e79fa3 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99121680 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3ef69c3 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa5310c71 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb1dc214d fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb67a777b fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb75dbedb fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbefdd652 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf19955a fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc789f6ac fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcade3c4c fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcd2dd0c3 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfaf5398 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd2ece876 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8601184 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0bc041e fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6df7fae fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfbea6e6e fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4653e7e7 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc7ff9681 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xee8047eb sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xef5cb902 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 0xb2cf66db mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x078d28f4 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x08b40829 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0b3b750c osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x10141bfe osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x163d4824 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1ef27085 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x21669cf3 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2234495e osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2745f6ae osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2f02fb56 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x302efaec osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x39821390 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x401ea9d7 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x49d12013 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x517011cb osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x56622898 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x67914d21 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x68de0706 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x76096773 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x80c79f03 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x96e1ac26 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a7df5c9 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb404f855 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9aca6a6 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbf62af46 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc69af8e4 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc707ecee osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcd4b1aeb osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0815b23 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd71c7f56 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe83ca2bf osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xea72b739 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xee634bbc osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf0e734f0 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf2daf7a5 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf73d90ca osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/osd 0x350a2dd7 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x48db0d65 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4dd5b1ec osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x87da0ca7 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xcff8290b osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe74037c4 osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x07c12c39 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0ebf641c qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x245bba9a qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x35417afc qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x54d2c2a3 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8cf6ea3f qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x95939377 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9744afeb qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc344b3d1 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xeaa17c95 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf562b7a5 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfedef304 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x50c57aff qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x57ce1e83 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x7d5bb613 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xa1912c16 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xaca7fe61 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdfacbe5d qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x36997612 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x4386a93f raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xe92d14c5 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00600858 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x12fb7e77 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2f8db62c fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3480592d fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3b9e0a00 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x51da6b20 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x56722692 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7d92c44f fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9cf6f116 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa1c14fab fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb7235791 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe6cc16d2 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf75da93d scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0cda7bdf sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x21c2b844 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x28422385 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3df500fe sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x42d32a42 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4c04e869 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d3b3ee5 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4de32658 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x51903d01 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d6897cd sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d9723cd sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6c1542a3 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f7d00de sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x91a7e4cf sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x991253a4 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb2a59c96 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb87802f8 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc7056833 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc916b38b sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xccf3d8fa scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd2a859d0 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb7643e1 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe7c67e3d sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf2e39f7a sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf7c5d6a6 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf9497d80 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xff10d5be sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xff33afbb sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x528121ce spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6a365d04 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe11bc76b spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe67fe40f spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xfe19f4fe spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x86fd7d45 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8ddae4a0 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x9c3982cf srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xba946871 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x67f3a287 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6a0897b9 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8dba572c ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xaed9f183 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xbf59421a ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xec581543 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xfcd5e1d3 ufshcd_system_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x01c26e69 ssb_bus_sdiobus_register +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 0x2be122f0 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x40762b71 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x53a402c3 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x560a1998 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x60ceaff2 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x632bcda5 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x688f9882 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x746ad9d3 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x7e410cb4 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xa3fb806c ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xb2ba36ea ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xb9dc14f6 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xbd0e2210 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcfbc63e4 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe57a1f83 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xf769a60a ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xfc72b948 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xfebf9ed6 ssb_bus_suspend +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x060c8ed2 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0c66eb19 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12dc8826 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x30bfca11 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4734dd71 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4906358d fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x49499546 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x50f51a66 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x53390265 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6a93da54 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6ff8d912 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x78e81e65 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7954e205 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7e3a604d fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x890e1d48 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa3bfb169 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa9d29630 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbc732d9f fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbeb95f2d fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc0f1f1a6 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc2e1ef18 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xeef8d79d fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf1515666 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf47fe445 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x16b7298f fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xfd9f84c5 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xe963c1e1 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 0x00011cc0 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x03b8a34d lnet_sock_setbuf +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 0x1b93949c lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1f4649e0 lnet_finalize +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 0x29150750 lnet_sock_accept +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 0x3a8232bf 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 0x43a1dfa8 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x510c7851 lnet_kiov_nob +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 0x5d5abc5c 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 0x617ba010 lnet_register_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 0x6f697173 lnet_sock_listen +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 0x7833edb2 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x79da9f4e lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x809b5292 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x852e0e14 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x917af8fe lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa1e75004 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa378d414 lnet_copy_kiov2iov +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 0xb6c7061e lnet_set_reply_msg_len +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 0xbe7d6245 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbe9e09b7 lnet_copy_iov2kiov +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 0xd5f2b172 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdc91da72 lnet_connect +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/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x16297eb8 seq_client_alloc_fid +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 0x57e24275 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x971a0f04 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x9efb88fb seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xa1a86217 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xaa1af713 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 0xde53abc2 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x16b1f80c fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x205e2548 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x6d6b959f fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x86de52ad fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x8ede8aea fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x95f36d25 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xe57ecad2 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 0x05ff42b5 libcfs_kkuc_group_add +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 0x22590e2f cfs_hash_debug_header +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 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 0x596a6f5c cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5a162140 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 0x6cc3ed40 libcfs_kkuc_msg_put +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 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 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 0x0d1fe52a ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x27e29a98 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x994eb854 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xbb5563e0 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1c71ca70 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1cd5fed3 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 0x43716e57 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xbeee5b71 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 0x00dd9813 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b38a83 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03ecb48f obd_export_nid2str +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 0x05eb3c77 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x062171fb class_conn2obd +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 0x07884b2b cl_pages_prune +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 0x08002c4c cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088c8fd3 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088dccc2 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09315da5 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x096c46b4 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09d36446 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09f63c55 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a065557 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aa30f1f cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aeb9d37 ldebugfs_register +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 0x0c417a5f lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c425ab5 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d1b1335 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d262d6e ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d34a7f2 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d41b931 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0eb5300a cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fccfa69 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fe83e23 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11056f5a lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1149287f cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12ba8bcc cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13d92c94 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14b23d8d cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14cc897c class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14e0bbce cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1568a562 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15882bb6 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1597a4ed class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16148054 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x167a8797 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16f952fb cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19a69802 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19b950ed llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ad3e290 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b81e985 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c64baef ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ca49538 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1caea613 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dc69259 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dd3bb55 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e414c0a class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fddb8e3 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2027811b class_setup +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 0x22e15ec2 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22f15bd4 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23078c19 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x233df8e1 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23cea4db cl_lock_state_wait +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 0x25df08df llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x270aa55d dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28031c1d cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2834dcb3 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2926168e obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2aaf919d llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ad29802 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b26e4a1 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b407581 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cceb7a3 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d7ed393 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2de1d170 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e795287 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f4ff214 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f61c967 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30f2b2e8 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d9b5a capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31e1f6a4 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31e27fbd lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x320465c9 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32081b69 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x323dede2 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x332c2b60 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x340fb29a cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x345b0d3b cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x350a6513 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3588fc3f cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3778255c ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37cc6954 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x383f7d3e cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38a1fe1d cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x393c6dda lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x398a70bb cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a1bf0e6 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a266551 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b179a7b cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b3dec93 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c321d7a cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d399dbd llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e1032f3 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ec0995f llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40bff551 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40c26008 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40c9e35e lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4124e12a lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42673335 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42e8f293 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4347eaef dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4357b315 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4454165a llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x447bdd15 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45aa3620 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x465740ee class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46899237 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x469e2cf4 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46ada6fe llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46c7aaec lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x475c82d6 lprocfs_rd_name +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 0x48bf6a5b cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x490aa772 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x496d3f51 cl_site_fini +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 0x4a0069c0 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a0b1dc6 cl_lock_closure_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 0x4bce6b08 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c57f925 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cfa3809 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d6837fd cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e064339 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ee0dae8 cl_page_lookup +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 0x513cd4a1 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x514e90ec cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51ae4bdd cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x529c4271 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x536fa2a3 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53bd7df8 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544d2e01 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5480a484 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54a30cf7 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54d2fc23 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x550dc3b6 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55ab85c6 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55e18853 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570a077d lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5724e4fc cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57950d84 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57b36cab cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x583ada67 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5847930e obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x590a5602 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59674870 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a4e8c4a cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b720e61 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b88b1f6 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c41fa2d cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c80806c dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c981798 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5df21833 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e3d865d lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e6fa07b class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f7da39b lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe271b8 lu_device_type_fini +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 0x6042e4c7 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61547c96 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62a072f1 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6328cda4 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6372acc8 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63be95b2 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63ef94fe cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6655aed8 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67388365 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67de43e5 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x685257d5 cl_stack_fini +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 0x6920622d class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69658b43 cl_io_lock_alloc_add +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 0x6a890509 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c47d614 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cd65a0a lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e676790 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e73095e cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e7b2609 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ecfc562 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f82b432 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcb7042 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71fc1254 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72701d5d cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x728b4a95 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7335ec82 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +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 0x7588a892 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75b197b7 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76108933 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x767cdb1e dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76b839ca cl_io_lock +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 0x78225161 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7927d3b4 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b7f3902 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b97d017 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7be1b5ed iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7be94448 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7caed698 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cb29149 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f09795a cl_env_get +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 0x8023086a cl_site_init +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 0x8091fc0a lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80a572a8 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x813fb189 class_search_type +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 0x81fda274 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82ceeb1c cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82e2af49 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82f00651 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83ead002 cl_io_lock_add +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 0x85175ea8 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8547200b cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85898443 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85b54014 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d542dd lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8604d39a class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86de5ff4 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8702b450 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8795c01c class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x888fb7b7 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89d24006 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89d265c2 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b507844 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b809fe7 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bdca92d cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c4180f8 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c87b3c6 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ee9cb27 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8efae8d5 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x917db1ba dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9221d024 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9294bd47 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x931e8705 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9336495d cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9381bed9 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93c83623 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x941d9bfb class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9438c3a9 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94de60e3 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94e2e1c6 cl_lock_ext_match +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 0x9593bc9c llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96e72fd6 lu_object_add_top +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 0x98986a77 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98d41870 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x998ccea3 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1eabd3 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c8e69fe cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d004593 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dfd7073 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e02c69d capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e21208c cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e6111a4 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f1eedb0 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f5a9b9d cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa01dc654 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa08d115f lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1553957 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2824b4f cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa29bbd3e cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2ba7861 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3d18a71 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa49a5807 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6670701 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa71d4e4f cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa754a0f2 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e26562 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa86a964a cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9d4a859 class_register_type +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 0xab3bd525 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabe2b090 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac432f22 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac685887 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad339d61 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadff822b cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae4af989 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae9194f4 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf0a7af6 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaffa0c18 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0335289 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb05d6f7c llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0707755 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0a67304 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb129f0bf cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1e8d5f6 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2830f98 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2a01c79 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2f0b9fc dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3b88433 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb40758e6 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4a1c954 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4ebbb14 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb51c3b87 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb64ee8ad class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6b78919 obd_export_evict_by_nid +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 0xb79865d4 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c62bd0 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8e7e0c3 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb924abd5 dt_device_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 0xbc060bc4 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc598487 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbca54c63 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd0ced37 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbde53147 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbec5184f cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbedba948 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbef5a35b lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfe69e08 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc094d0da lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b68cc0 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3c189fd ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3fbeb32 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc404837c lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5f47343 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6256d06 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc67b8ae7 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc67fdc86 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc72388d0 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7351693 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc842f321 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc84336ee dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc84c8c1f lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc89df01f llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8aac11e cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8e5d895 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8fa07f2 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc948ae87 dt_record_read +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 0xca14b8b9 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbb437b8 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbb99515 llog_init_handle +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 0xcdf58593 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdfc059a cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcebe6014 class_manual_cleanup +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 0xd0a09964 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b6995d lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0be9329 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd169c723 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd17739c3 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1e49414 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2017930 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd25dc8af dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd425ce4b llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd513c67e class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5da99bc lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd66b524b cl_object_has_locks +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 0xd7e143c4 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f98995 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8f350f9 llog_write_rec +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 0xdae89f19 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc59f7bf cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd195f4d dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde276ad3 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde446860 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde83c98c lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf6b5e3a cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe00b7e85 cl_page_list_splice +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 0xe1eff00c cl_page_list_assume +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 0xe53b11be obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe77eed71 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7c7bfdb dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe824735c lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe88456de dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe95ad8c4 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9b9dfc2 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea6f84fd cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebe16eb4 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecdb814f cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeb4f091 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeebf51ec llog_cancel +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 0xef9b5acf lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf00e0ff3 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf044570b cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf10deb7c cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1bad658 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1cfffb2 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf23254f0 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf26d17d9 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf36e99ca ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4c3f5bf ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4eb352d cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf694e905 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6afe5af cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7abbc4d cl_io_read_page +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 0xfbd02d1a lprocfs_alloc_md_stats +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 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 0xff6b2f4a cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00c8269d ptlrpc_nrs_policy_register +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 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 0x05df89fa ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0668d09e ptlrpc_prep_req_pool +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 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 0x0d28c83e __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0eaa8353 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1143587f sptlrpc_gc_add_sec +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 0x12674abd ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1338637d ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x134152da ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1359f48f ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x135a7819 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x136a0d6b ptlrpc_cleanup_client +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 0x156711f2 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1643d5f1 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1732addb ptlrpc_register_service +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 0x19affcf1 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a0c53de _ldlm_lock_debug +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 0x1b4281d4 ptlrpc_request_addref +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 0x1bf1c8ab ldlm_namespace_new +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 0x1ce00e25 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d093c04 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d220406 ptlrpc_reply +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 0x1e1e4589 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e61e3d0 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 0x1ebc1e84 req_capsule_server_get +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 0x21a18ac3 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x222ca85f client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2306dd48 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233f3cfd ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23b55762 __ptlrpc_free_bulk +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 0x25b35210 req_capsule_fini +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 0x278e8d35 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x27bd5589 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x291b06a5 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29a116fa req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a0d02e5 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a6adf81 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2be7acdb ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c56ca2e ldlm_lock_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 0x2d5ed8ce ldlm_pool_del +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 0x2f18ea11 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f84dc27 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fbf885a ptlrpc_replay_req +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 0x310f7d41 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31d7c617 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x328371f5 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33d78751 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x343cd69e ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x352f38d5 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x382f17c6 client_disconnect_export +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 0x3900ee95 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39179a8b ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3986b9d6 ldlm_pool_get_clv +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 0x3acc4923 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b7d3658 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c335eb6 ldlm_lock2desc +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 0x3d02aefe ptlrpc_restart_req +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 0x3df9cca7 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e9f29be ldlm_lock_cancel +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 0x3fedf5f6 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41554d84 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42a3604f ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42b28335 ptlrpc_unpack_req_msg +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 0x466a32fb lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4693e9b8 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x473dacc1 ldlm_pool_get_lvf +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 0x49d29f9f ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a029819 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d04e399 sptlrpc_cli_wrap_bulk +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 0x4ec426f5 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5018e9b7 lprocfs_wr_ping +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 0x51aaabb8 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51adaedd ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51cc4b2b ldlm_blocking_ast_nocheck +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 0x5678e77f ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5871afe8 sptlrpc_cli_ctx_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 0x5ad51133 ptlrpc_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 0x5c14ae3a ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c427928 ptlrpc_nrs_policy_unregister +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 0x5ddc0585 ldlm_destroy_export +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 0x5ef29ada ptlrpc_cleanup_imp +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 0x5fb34cac ptlrpcd_wake +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 0x62bdd810 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62ea6b64 ldlm_prep_elc_req +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 0x6400bcdc ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x645fc286 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64b094f1 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65dddc70 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66920a8c ldlm_cli_cancel_req +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 0x692332cc req_capsule_client_get +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 0x6b40796c ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b61a47b sptlrpc_target_sec_part +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 0x6e3033bf ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e499f53 ptlrpc_init_import +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 0x6fe03cb5 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71dfa267 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71f88ab9 ldlm_flock_completion_ast +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 0x727de088 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7295c0eb ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x753fa9b8 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x756cc2bf ptl_send_rpc +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 0x781f55a4 req_capsule_extend +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 0x7a968363 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b008707 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b08f769 target_print_req +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 0x7d5fdbcb ldlm_cli_enqueue_local +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 0x7e731968 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ed77c60 ptlrpc_schedule_difficult_reply +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 0x81061301 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x814156e9 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x824be104 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82660f25 ldlm_register_intent +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 0x83d2487a ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84c898b2 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85408068 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eaa720 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863243f7 ptlrpc_resend +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 0x872d1940 ptlrpc_invalidate_import +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 0x87bfbc63 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87cb7ceb ptlrpc_obd_ping +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 0x89e31deb ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89fe53a1 ptlrpc_request_alloc_pack +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 0x8a475dfa ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b0ef0ae sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c696569 sptlrpc_svc_ctx_invalidate +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 0x8d83abff ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e35552e ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e71801d ptlrpc_commit_replies +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 0x8fd5707d ldlm_prep_enqueue_req +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 0x92b8c2a2 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92efa2d7 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x944b772e ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x955e0da1 ldlm_pool_set_clv +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 0x969b2400 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97176da2 ptlrpcd_alloc_work +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 0x98bff9b2 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98c2bf55 ptlrpc_save_lock +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 0x9aa53966 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9aacdab5 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b74fdc3 ldlm_lock_change_resource +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 0x9c4dabba req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e0361e9 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f804a40 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb85c4e sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fedacd5 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa071f637 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0a221a0 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0b049a3 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1446d6d ptlrpc_req_finished +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 0xa2576e33 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa32e18ed ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3a187c3 req_capsule_client_swab_get +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 0xa5dd2590 lprocfs_wr_pinger_recov +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 0xa7f0d125 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8c88551 llog_client_ops +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 0xaa5dba55 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac2b9c56 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac698aad ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac8b28ee ldlm_cli_enqueue_fini +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 0xaf71daa1 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafa6ee1a do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0341e1b req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb09a0b4e ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1bcd3fe client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb28de861 sptlrpc_cli_unwrap_bulk_write +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 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 0xb70c72ce req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7c747de ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb86413de ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb86860bd ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9492090 client_connect_import +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 0xbb0518b7 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb4304cd client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb997bdc req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc5f5454 ldlm_lock_fail_match +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 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfcd097e client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfdbcfba req_capsule_set +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 0xc1e40f9c lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc29e1d9d ldlm_cli_cancel_unused +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 0xc42febdc sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc438effa ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4c7dece ptlrpc_send_error +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 0xc6da12ea unlock_res_and_lock +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 0xc9110374 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca2f8e0c ptlrpc_resend_req +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 0xcc04fbd3 req_capsule_has_field +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 0xcf629d6a ldlm_glimpse_ast +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 0xcf9e569e ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd066357e target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd10e8f7b ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd12c522b ptlrpc_lprocfs_brw +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 0xd306a2b1 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3a21552 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd476e463 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd49344e9 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5602253 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd679ecb9 ptlrpc_activate_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 0xd703e19b ptlrpc_pinger_add_import +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 0xda64a35b client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda7881aa ptlrpc_unregister_service +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 0xdbbbad80 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc5f76b4 ldlm_resource_putref +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 0xdf3f164c sptlrpc_sec_get +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 0xe0d14fda ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1366b2c ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe234a7a3 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2bc39a6 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe31234a8 ptlrpc_prep_bulk_imp +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 0xe4af1e95 ptlrpc_check_set +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 0xe6de8376 ldlm_pool_add +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 0xe9719b57 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea99a50d ptlrpc_fail_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 0xec8b254a ptlrpc_lprocfs_unregister_obd +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 0xed22e6c1 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeec0e002 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefe27558 req_capsule_set_size +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 0xf24ba541 ptlrpc_buf_set_swabbed +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 0xf3930e7f ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3a2598b req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d0957a ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf40ed751 ldlm_lock_fail_match_locked +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 0xf4c1acbc ptlrpc_wake_delayed +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 0xf809b622 ldlm_namespace_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 0xf91e436d ptlrpc_set_add_new_req +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 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 0xfd5f8a5c req_capsule_field_present +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 0xaeedf96c cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x00caf9fb rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x05892d6a rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a939658 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0b1c690b HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1145153a rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x168e73e6 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1927da3f rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x27f6df7c free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a7c6e37 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b9e113f Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2c5c59e1 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ac35318 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x405bfe27 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x40fb375f rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x49107708 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ad385f6 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4db8bcd3 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4fffb659 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x50fb2851 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52bbaa5f rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x540f602b rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5769fc35 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x625f0a4d rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63135281 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x65ab8ea7 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x689fcf67 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6d91ba82 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f3a1cdf rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6ffccb77 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7febb60c rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85158d2a alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x853dd84e rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8a395948 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8b2f0acd rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8f6581bb rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa799e55c rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xae9abac8 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb8c21e13 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc416b1ab rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4a9d2be rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4ef5cd5 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce626db5 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcf557949 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd305a7fa rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc43cbbf rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf3bd01a dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeaecbfe4 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeb40f47f rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7ba8a14 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf926afac rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x07aaeb8d ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0856f226 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12f659a5 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17d4c86a ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e42a0c3 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x240a1a39 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2dd9aaf9 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x35eee6c3 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x365c9757 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a10e741 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ad9d129 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f5669dc Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x42419d15 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4ec8df6e ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x52fbc573 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x544ec91a ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c80fb7e ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5cdbc5f7 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x605096ca ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x611ae7d8 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62323b2a ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x759866bd ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c728a5f ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c7453ea ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7cbbf1aa SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x815d9c62 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x84eeb0cf IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x850d1912 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x86f90b5a ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8ded9579 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x97a1b6a1 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0f197d4 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa15f5e90 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa5aa858a ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa79c560e Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa861d8fc HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1276f31 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb16ae33c ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb2f85377 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb3f3f123 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbdbd334c ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe2f8307 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc5093116 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcb3d8e0a ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd124986f ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd6b3e5c5 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7cd40a4 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe103adac ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe14ecf7e ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe15b7694 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7582c7a ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb3f73d1 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xee70449b ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfef8dbe8 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x02f3df19 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x051f7f53 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x06e9ceca iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0b9cb032 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x13936418 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x329951df iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3f500d39 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x49630750 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4c5eb82b iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x62646458 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7ab5fd21 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7c5c2501 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8c23ba6d iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x956729c3 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x96c0d29f iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x988677e4 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9e64df2f iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9f9cd384 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbbd3d90c iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbfa9baa1 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc2838215 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcdeb4dd0 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd4a75d6c iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd5ce15ef iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd66e6b8f iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf66844dd iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf99a9aca iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfcb1ef66 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0fa6bca6 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x11b60ea6 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1365b772 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x149548b4 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1dede08e core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x23b6ef5d target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a240890 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x2bfa5806 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x32456bc0 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x32619c88 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x345b7ae4 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x38c2f59f transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b734249 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c3f446d transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3df43f2f sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f050d00 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x40d5c383 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x41fbf149 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x420cd4c1 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x44469aca target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x4576215e core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f0ba2fe target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f16c1d7 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x564d718a transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x56d3112a target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x572740c1 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x586fae14 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x58edee6f transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x616dd048 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x61e654f0 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x62ff897f target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x643f965f target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c24c789 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d310203 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f850e18 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x744109f9 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x793ccc1d spc_emulate_report_luns +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 0x87f446e8 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x887b8f56 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b08c79f spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x8bc632d0 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d60f331 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x93093335 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x9550930c transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x95a81fc6 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9dc5a959 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2a7100b spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xa398c021 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa05afa5 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xaae1a6ff core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xb0be2f8c sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb89f7fa6 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xba225ec0 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc27c96e transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0e223a9 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1c33827 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xd8029dd8 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xd91a8fa5 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2268baa sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8d49a27 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xee5d9e3c core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0c0ba64 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xf57095a0 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xfed20400 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xff70e26d sbc_parse_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 0x7b6c4da5 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 0xfb666caf sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x04fa514c usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4c38c1d7 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5f7160e4 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x720125c3 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8ea323fa usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x91ea844d usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9250edac usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x93ec708d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9693d67c usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x978fb3e1 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa0625845 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaabbd26d usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xec5fd93c usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf16c63c6 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 0x83ad7793 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa0cef16f devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf2156751 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xfa391eca 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 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 0x816082bf svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa9569cbc 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 0xd61c66a9 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xde41113a svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe1fee6d4 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe84dbcc1 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 0xfbaaf544 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xb77fe25e sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x786ce349 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xc4c5d263 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 0xb7520b33 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x6aa62cdb mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x59a17a5a matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xa37e3239 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xe29e79c4 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x797eb7f6 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x81a6656f matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x95cc87f0 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xe5104784 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x34bc4cb3 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xc8958063 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x7151d6b3 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xe80e234d matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xebc5387c matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xefb21620 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x126d410f matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x75870624 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x46a9f05f matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x47b32d5e matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x5a237d55 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x68a33d91 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xdb4bb57e matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xb6846803 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 0x2aee0215 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x9d5e4617 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xbaf8692d w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xdd9a3e9e 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 0x1cb4d2c5 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x27139787 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4503a69a ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x99a0b7ef ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x9c9f2856 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xbde559d0 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xe036cfc8 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xf41b5577 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xf4f5fb6a ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xfa7ffd93 ore_write +EXPORT_SYMBOL fs/fscache/fscache 0x003acd89 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x01cf4097 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x04d1b5fb __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x11866bd9 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x12d2de82 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x22e8a429 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x24287d2a fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x2d3fa2c1 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x3a0732eb __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x3aa1f6e6 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3e6075af __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x41c2fd0c fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x4631d4e8 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x4bdcc3b7 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x4c8ba848 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x4eac7e14 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x4f42855f fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x5685d868 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x57e0df22 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x6161836d __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x6943bf4d __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x78d0bcdf __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x842632b4 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8c020bdf __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x8c73dd48 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9414e532 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xa5b03cf0 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xa924b2e9 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xad6d092c __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xadfefa78 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xaf954aed fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xb61a15ec __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc659cd9a __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xdcbcac9c __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xe004da94 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xea4ed6d2 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xec230681 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xf4923fa0 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xf995093b __fscache_acquire_cookie +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 0x3df98b2f lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x5cf77107 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x9775a540 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xffa6a0ba unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x1ff7629d destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xbfa57457 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x66fb63e5 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xc6b904bf register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x08426f62 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x0c843c04 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x0e5b2d13 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x12f9a227 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x13f66398 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x157ec818 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x175d5e04 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1de7f832 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x2545419d p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x26ae9c61 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x2b93d5c7 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x463c0d3d p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x499bf6fd p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x49e69131 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x4e6c7448 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x676ec242 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x6cb375ea p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x6d888bbb p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x70378323 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x78ecb835 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8ad45292 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x8ff0ab03 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x925e6779 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x9dc9fcf7 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x9f3ec011 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xa41e167f p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa55bbcc6 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xaa9245ae p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xab608657 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xbb96fbda p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7a5fb55 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xcc5251b7 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xd34cf4bc p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xd3691182 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xdb91fee0 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xddf21fe3 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xe3c46f39 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xe49ff096 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe89b7112 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xe95d33be p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf8e69766 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0xa94ad938 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xda04c345 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xe769b1d1 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xe77cdcba aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x04f893b0 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x139eec87 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x1be780b2 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x1bfbb10f vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4217769e atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x5b2b0527 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x713649e0 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x72af4edb atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa3237e3a register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb4f9d585 atm_charge +EXPORT_SYMBOL net/atm/atm 0xca85de9e deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xccdc2a5c atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xe1bcdca9 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf94a9a36 vcc_process_recv_queue +EXPORT_SYMBOL net/ax25/ax25 0x144c7e97 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x15574d31 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x286bebd0 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 0x833f301f ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x84572811 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 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd8c88e4a ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xd9a067de ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xeb35769b ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0099aa86 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0f1679e8 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15528b44 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1c9c5bda bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1fdb4c5f hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x224aa2f6 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d614aef hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2fd81928 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x305008e0 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x309b8189 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3bb0bbee bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3db5c734 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x43df9680 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4a320ead bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5622663f hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5b03bb1f hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5e40bd8d bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6e93f9d6 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d7afb02 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x81443bab l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91bd3c70 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9921c848 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa035f4bc bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa2430136 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa42f95de hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa86ae75d bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xac419152 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb1fd290e hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb9886e64 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2f83100 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcd5f6ac8 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcf33d458 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4aaaa0e hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe573295f hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe9cf145c l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf83d702e l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf99d012b hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfaa221a4 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xffb32d02 bt_sock_wait_state +EXPORT_SYMBOL net/bridge/bridge 0xb632338d br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x1bdbaaac ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x741bb15c ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa4afdaea ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x06fb8d79 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x380285d9 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5359c010 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x6619e0a4 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x84536ae2 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 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x1b03a981 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x2917ee78 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x7e1eff73 can_send +EXPORT_SYMBOL net/can/can 0x8bffe021 can_rx_register +EXPORT_SYMBOL net/can/can 0xabf6d2e1 can_ioctl +EXPORT_SYMBOL net/can/can 0xe0bf737c can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x015d132c ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x01f70c22 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x041972b4 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x145e5b64 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x157f5051 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1a3864d2 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x1d75ab1c ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2221a967 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x238be5ec ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x25de572e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x26df02af ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x2bf09be7 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x2c480817 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x2d72abb9 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2e2bd121 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x32d25aaa ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x335b4a95 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x35fd2acf ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x39151b1c ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e272a53 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x3ec68bbf ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x3ec8749e ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x3ed83a08 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x407a725f ceph_con_open +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 0x45469f0f ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46deb2c5 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4cf83b76 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x50652106 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5dc3b38b ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x5f3e760e ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5f5f79cd ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x60716dfe ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x65d22a8e ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x6a8796db ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6f35014a ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x71bfe298 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x76f63aac ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x77283df8 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x77617b48 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x79ba323f osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x7ed57d64 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x7fa381aa ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x88130d8a ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x885fa4f1 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x893bb61d osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8c0fd489 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x8eafd3b7 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x8f9f40a4 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x963da986 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x98b18d6d ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0x9fce14af ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xa1de41d1 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa55339b1 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb10596d9 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb4ca3b68 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb976c8a4 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xba37a15a ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xbdbe3d00 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc8f552d8 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xc9b367bd ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc9e38143 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbd30de9 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd31c2d49 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xd42d02b4 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd8c95b96 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xddf73a76 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe3e553bd ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xe4d2c65a ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe8e280c5 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xe8ffee81 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xe9d54e38 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xebe602fa osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xeea5ab51 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xef3055d2 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xf47bbb2e ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xf56c8d45 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf5a0ac2b osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xf91ca864 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf9d9d2b6 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfa609bb4 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xfde7c894 ceph_con_send +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x829ca4b7 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x889133c8 dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xb72e19bf lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x356efc44 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x49504b53 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x744c54fb wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x82d32f01 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xeb47a38a wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xecd66b07 wpan_phy_new +EXPORT_SYMBOL net/ipv4/fou 0x3da0095f gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x4224acee 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 0x222c1658 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x24698b25 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6bddb22b ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x89140696 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x95e3a5fa ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xdefeb809 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x5ae7aefd arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xbbb8de64 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xbbf0b4c5 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x26817930 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x3e5334a2 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x9bca530e ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0xae962f1e xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xc3e5b116 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x9bfebab4 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x7f829c3e ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x8f58ab2f ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcd2c651a ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfdc916e2 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0b45ad20 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x20e73b8b ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xfd33f28a ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x13480f03 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x35c21eea xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xc030982c xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xd115c365 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0d23ed98 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x72aef8b9 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x80d32a2b ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x80d5943c ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd36dccda ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd9d4a13b ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdd5c7fc7 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe2e3ed3f ircomm_connect_request +EXPORT_SYMBOL net/irda/irda 0x05a7bc98 alloc_irdadev +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 0x0d1e7036 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x0d2b2677 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x0f2fa270 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x1769e034 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x1bc1d622 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x1ca827eb irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x2324ffd2 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x23d8de30 irlap_close +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x2e24d5f9 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x3d80ca81 async_unwrap_char +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 0x48421718 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x53fa8031 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x5ab85f20 irlap_open +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6bc1035e irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x758e9799 iriap_open +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 0xa45e34a7 iriap_close +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb8212ce8 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 0xc16439c9 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xc81bb13c iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xcd0f24ab irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xdb92cc08 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xdcc79952 irttp_connect_response +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 0xf40a3899 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xf88b1eff irttp_dup +EXPORT_SYMBOL net/l2tp/l2tp_core 0x9b0ecb4c l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x12ae2b8d lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x13abe555 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x1e64932c lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x29933388 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x2d268918 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x542b1d97 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x6eb12a30 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x7ba3c772 lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x0011557c llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3f20b3f5 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x589adc15 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x622d9c7c llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x7c4dae2f llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x93a5f019 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xa73c2920 llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x0736a7b6 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x097edbe0 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x10fd30ce ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x12115882 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x14c7eda3 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x158e542e ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x15d8f60a ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x16a3e587 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x16e072dd rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x191703e0 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x1a8d2b29 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x20ab8ff8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x2943680d ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2b5ba0f9 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x301075fb ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x392068d6 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3af6ed5c ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x42e82f1f ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x4319ac0e ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x4368c25c ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4a27836d ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x53a8b41e ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x54f0727e ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x5ae001f9 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x5c232129 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5ce76046 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5e9d1011 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5ef4884c ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x612b6637 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6171948c ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x62544e7b ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x68b2ef47 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x7537007f ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x763dc2fc ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7bcf84d3 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x7c9f0056 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x7e9fa43b ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x7f3886da ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x7f7bce29 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x81fc9d0a ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x87adea19 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x88966624 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x897dda5c ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x8e1f28d7 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x8e602462 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x91122dfc ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x936aa38b ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x9523f0fa ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x988efddb ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x9e903c20 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa0c54135 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa37c7380 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xa3c6cefa ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xaa8088a3 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xad987e8e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xb916851b ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb9cbf050 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xbbb3d1fe ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xbc8188e3 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xbe6fceae ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xc5006807 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xc83125d2 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcb9bd1fd ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xcbacba18 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xcc3cd32a ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xcd3846e4 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd9d7ba1b __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xdf17a393 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xe0523891 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xe20d67e3 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xe759d272 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xe87582b3 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe89aa44d ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xee8985c8 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xef941afa ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xefdb9365 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xf2b2b40e ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xf53663be ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf73e5d43 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xf78bb03e ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xf98de7cb ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xf9c987d1 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xfae83999 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x18705ae7 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x376a09ae ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x40fa2d8d ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x7b311320 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa8e56111 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xb4892917 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xc5c72823 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xdd60b160 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xe5a91664 ieee802154_rx +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x173d3ec4 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x275e61ce ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2909b144 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x418cbcde register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4b625fc8 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x513e40f2 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5691160c ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x60fe7969 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x63690fb2 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6987e990 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x78094691 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc6a36014 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcec37e41 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd6b0a36c ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x286efc3b __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x96863dc0 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x985a35f3 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x36f192e3 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x378a4f22 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x7735e652 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x8032ad97 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xb5eeb091 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xc9ff5578 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/x_tables 0x0bd13a75 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x29a430ba xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x35d70da9 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x44071d35 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x48d9c200 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x520a74eb xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x686d6f5a xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd5191cc6 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xe6599793 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xf5d97088 xt_register_match +EXPORT_SYMBOL net/nfc/hci/hci 0x14438430 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x159c36c6 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x402ca365 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4eed59e1 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5867a09e nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x633c983e nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x6a4f7c68 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x758ca67e nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x781bf9db nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x7ce850e2 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x7eaaff85 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x94ff060d nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x97a3fc15 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x9e39d9ae nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xa53ad173 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xb95982be nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc58470b1 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xdc286732 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xea996756 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/nci/nci 0x06e27fb9 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x241889f4 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x33cb75d4 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x37c61a64 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x42f357bf nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x43a4596e nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x6b218da9 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x76e41d2a nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x798cef87 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x893d20fb nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x9a705479 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa56e1571 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xab979f5b nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xae2592ea nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xe7fc04fc nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xf41c5b4e nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xf77afb68 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xfe0658c3 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xffafac5f nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nfc 0x00dfed26 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x18329705 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x21e1c11f nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x50008e71 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x55c977bd nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x5ce51edf nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x61912641 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x65db8823 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x7395d2f1 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x7c6dd457 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x83ef8a44 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x960f4eaa nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x9bbe663b nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xa5650c34 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xaa90d058 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xab1d2da3 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xaeda514c nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xbe086377 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xc52523a9 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xdea2f53b nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xdf295453 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xeb270872 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc_digital 0x85b3c035 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x8ef4e63c nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xce053c1a nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xd0985201 nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x012294b0 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x165b3386 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x4d792fbd phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x581c1ed2 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x83a438f4 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xbd3f1232 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xbf528f0d phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xe2f8c674 pn_sock_hash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x23803ccf rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x352f8a8a rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x39322d54 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3b2a9a7d rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x48cc75fa rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5587c8fb rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x852de1be rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8b36b269 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa30338c1 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa78d8d4f rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xad607d1c rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcab578fb rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe2f9b1c7 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe648f8d8 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfb16b2b9 key_type_rxrpc +EXPORT_SYMBOL net/sctp/sctp 0xa7ee17ac sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x38f2ca8d gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x5ee9f8cd gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xf6c02801 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x4ac17c26 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x4f501008 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x746c5daf svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x6aa22c35 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x86ee7187 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x022f9a7d ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x02fcb5d0 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x033f9397 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x03531672 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x072c075d cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x086ef49c cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x097831de cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x099a5603 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x099ca4bd wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0ba27dde ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1066a007 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x13e23b60 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x1542816f cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x155fc8f6 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x18385aac cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a915846 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1c759af3 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x1ed9762c cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x20aa04ae ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x21a0144d ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x21e90d25 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x251a0793 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x2ac9de00 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3037c40a cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x304c9228 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x31638b77 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x333473c9 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x34de635f cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x389bd13c cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x399f374e cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x39abffed cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4619e009 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x463b6e6e cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4ae1c376 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x4bf290d8 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x4f8c0c1e cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5ab988f0 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5ac87049 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x6376288b cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x66e23919 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x6915e880 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6f7b31a9 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x70dad07d cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x7297c485 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7632e384 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x7722e0ac cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7d25d3ca cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x828ca3eb cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8501c05f cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x88b98c01 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8ce05c54 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8dd2347e cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8e862ae1 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x8faf0a8f freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x9160ed56 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x956cb70d cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x9647f1d6 __ieee80211_get_channel +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 0x9dc345b1 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa144652f cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa31af62d cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xa40d29b6 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xa82f9641 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xab4ae6c4 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb2287d3f wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xb281c5b2 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb6ebb510 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xbca14fbe cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xbe812718 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xc03f0f91 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc2555fae cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xc38a8b45 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xc3a55c20 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xc41809bc 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 0xc9766588 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc9b9024b cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xccb9b2d6 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xcceee7be wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xd9000526 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xda569f76 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe3af2070 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf967b4bc cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x03a3d9ce lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x249e19ae lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x3ce52bbd lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8d2e34c1 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x949e93c1 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xc2235e66 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/ac97_bus 0x6d40bc2a ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x498a8304 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 0x514e4711 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 0x7aefa406 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x8edb51e7 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 0xfaf61d32 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 0x16effa06 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 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 0x63f24a5d snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x07034184 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x08a7c879 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x0a6de954 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x11357c0e snd_info_create_module_entry +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 0x1f813a09 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x28e15dac snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2f99acf6 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x34358169 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x37c40a65 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x38481dfa snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x386ea808 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3e20fcdf snd_device_free +EXPORT_SYMBOL sound/core/snd 0x3e380292 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x4053b0c2 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x4275e833 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x44b59b8c snd_cards +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4ff77b29 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x51f845e0 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x531051b2 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x56e42b39 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x5f381251 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x657693a7 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x69713036 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x6becb07f snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x6ca9f50e snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x704058b0 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7ce89e7a snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x7f1ec140 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x7fe0286d snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8bbd72e6 snd_ctl_register_ioctl +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 0xa1fb0a88 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xba35769c snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xbae34620 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xbe033893 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xc46eb21f snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xca8f573f snd_device_register +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xdc0b32b6 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xdee75fb0 snd_register_device +EXPORT_SYMBOL sound/core/snd 0xe004426a snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xe155218b snd_card_new +EXPORT_SYMBOL sound/core/snd 0xe70b2796 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xe847285b snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xf3c4e35f snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xf4b04372 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xf6128ff6 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xfe843f31 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd-hwdep 0xcba148fe snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x020c95ab snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0698a916 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x16d6402b snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x1abb957b snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x1b97f043 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x20011d17 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x20424e2a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x22d95131 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x239bdfbb snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x26c91077 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x2b654459 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2fd6b226 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x35d6eb94 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x370729e9 snd_pcm_hw_constraint_list +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 0x3ba1126c snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x3f289dcc snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x43115712 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x467f8f86 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x46b91a68 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x4b1f0c09 snd_pcm_period_elapsed +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 0x533dee1f snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x551307b1 snd_pcm_lib_readv +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 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x79259412 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x7f523e55 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x814bd9a3 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x8558c825 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x91580515 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9df15fdc snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xa1d27800 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xa272348e snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xa4ab136e snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa54ddc81 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa8bdf27f snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb0ee07e1 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbb2e876c snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xc814b45d snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xd8689814 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xd8d8a833 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xd932225f snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xdb9e46b5 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xdfa835cd snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xe056d97f snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xe2668a6f snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xec602fc2 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xee0eaeab snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf9052e2b snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xfd7e823a snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xfeaf3ed9 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1b6cf70f snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1e152121 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x32c9834a snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x41465407 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5f6806fb snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x673a6efa snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7b62d271 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7cef56f4 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x84802f04 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa7e938a6 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb6af4588 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc2f09555 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcfa6ce38 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd3ff3112 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf0240774 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf1daf40d snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf2cfb316 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf46153df snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfeacc9c4 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-timer 0x0c8c7dd8 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x2ff6033b snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x2fffbecf snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x39308971 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x3ae1273e snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x4f14e9d6 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x501e8221 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x53a66b87 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x5d1a77cb snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x60293531 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x67df52ee snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x9fe803be snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xe37694a6 snd_timer_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x35896300 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 0x10339933 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x161c7ae7 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x227231e0 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2455dd4c snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x25addb2b snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x5d61846a snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbf875f38 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdb41436e snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdd0d1c8d snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x14b649fb snd_opl4_read +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x4a94ca99 snd_opl4_create +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x7e669ba4 snd_opl4_write +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x821e9703 snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x9c052355 snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2d8c3cb8 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x40278e32 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4a7fe923 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5aed034c snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7a8ad18b snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x81fd00b2 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb258dabb snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb2fdc814 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb64a8e69 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x08b5a3ab amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0bc81964 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0cc9bdf7 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x164e7fec amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x19fb280d amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2daad3fb amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3b47abb0 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3df0684d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5e80ff01 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x61a814ad amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64ad7a53 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64f60c5d cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x67c3c107 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x78d6b4a2 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a95c093 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8915d8a3 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x91708db9 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9520e96d fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x96fd00d8 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xad7bf651 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb4bc485a amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb7c2bfed snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc2bb7af3 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc874904a amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc90c57bc amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd0eea423 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdb3ec035 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdb77d82c fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe1c06b6a fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf692db47 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf90f150d fcp_avc_transaction +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x117a62b0 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x348f8730 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0494fda5 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4bd34de3 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x930eda84 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x953ba1b9 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbb21049a snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc1a27c85 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc4a722b4 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf3937fb5 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x395fb47d snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x81cb058e snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x977521d4 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xc90c0b0d snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd01b7042 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xe15916ed snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x502f925b snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6d8fcedd snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xc5d92c97 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xffc4ac03 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xa5b965bf snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xcde6306f snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2ecde10a snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6e3ad10c snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x90a1815f snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9315a9ef snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa50fa821 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd65a251f snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1e6a58d1 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x6380707e snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x72235c1e snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9aaff4a1 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xadea5d85 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb22c2e10 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xc5292d50 snd_tea6330t_detect +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xd51ada83 snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x2404b79f snd_es1688_reset +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x49b07643 snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x99a36218 snd_es1688_create +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xea87e0d5 snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xecc10175 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x107eb23e snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x194b16cc snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x30b55bac snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x34db0840 snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3c5ef322 snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x47895552 snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x5451e2c0 snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x56525bf5 snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x583df5dd snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x5deed2f5 snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x6bfe4e7f snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x6c27e718 snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x74a2a0c8 snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x7ed49625 snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x85b1fa18 snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x954e6d2f snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x99c51077 snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x9c9c81f0 snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa2f92416 snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa77e588e snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xaffe10fa snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb68b0150 snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc8ae1c24 snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd18da0ab snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdf1a06ba snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe24ae44f snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf0adea7a snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xfac7ac9d snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xfbaee654 snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xfc53303a snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x058444cb snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x14a886df snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x22ade130 snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x2f0ec606 snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x5223c570 snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x61ba239a snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x8908b8ec snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x8aee2802 snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x976f6c48 snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xb2e5b48d snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xd97396c7 snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xec55b608 snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x077948b5 snd_aci_get_aci +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x9900a449 snd_aci_cmd +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x14fdc9cc snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1d54c8b8 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x218879a1 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3b3db449 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3ecc628e snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x409ca904 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5101cb6d snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6b1ebe3a snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x85e1f160 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xaf1ed7ba snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0x2514ce95 snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x50721dc8 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x8fdddd22 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xccd1b29b snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x0fa55518 snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x555c9997 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xabdabad8 snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xf33ce3d3 snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x2817d2df snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x3de55e1c snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x522a946b snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x8a0feaf8 snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xab01ea6a snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xbdd3a12f snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xc217a264 snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xead5a1e7 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xf16f7ddf snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xf6da5a58 snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xfcec93b5 snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x0328ca23 snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x28d983cf snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x3e643e77 snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x473092d1 snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x58494b0d snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x668d8fa4 snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x765c40b1 snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x79472a1c snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7ce27fa0 snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x8cd41601 snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x8e835ff2 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa1527e90 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xaa6e2db4 snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xac24fdd4 snd_wss_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xb2410195 snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xdd59e269 snd_wss_info_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xde6a6b98 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xecc4c2eb snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xff6c0b53 snd_wss_chip_id +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1c59f45a snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2829cdca snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3aeb1001 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x434b963f snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x43523de8 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x82c347f2 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x88822b06 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa3269e14 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xae4c3935 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb07349b1 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb78de935 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbdcc9f71 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc116b318 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xca641d70 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd8b39f8f snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe060aef9 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfab25bd5 snd_ac97_update +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0xd4a7ff6e hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x025cd4ef snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3e83fd48 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x69b44030 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6c460abb snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa8199ab5 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb9e4f868 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe845d634 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe945d23c snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfd2f9ec6 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa936b8c0 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xadeb25f1 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe3502dcd snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x00fde059 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x249b1e36 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x35415039 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x384305cd oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3ae0bfd3 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3b332b7f oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3c2c6aad oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x40cf716e oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x41c2b487 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x47ca84bc oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x568f18cf oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x888d2fa1 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8a39a23f oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9ed8f373 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa80c1d57 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb58fee06 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc8ad7f7c oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd7031db3 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xde635554 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe9a744a6 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf5de7bdb oxygen_reset_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1ae83611 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7b0ae7af snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xd6ab33a0 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe4448d01 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xf0af0888 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x03fa8843 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x6dea9d4f tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xe814851b sst_dma_new +EXPORT_SYMBOL sound/soc/snd-soc-core 0x64523002 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x4dd81577 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x4efdc907 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x8fd59961 sound_class +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xca4423c2 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcd42de07 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xdc578275 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0e570632 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x568c0793 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 0x67166224 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9ef626a3 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xbb9f3cbc snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe8b731d3 snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x28b33a96 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4b8e6197 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x56b905c7 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x81e4f429 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb36af68b __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd20ff1e7 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd4e214d6 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf8029242 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 0xabf1f921 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 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 0x0058ec2f abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x005e9912 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x0064b664 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x007040b7 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x00756ef8 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x008fd177 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x009ceb99 input_close_device +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00c60273 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x00ccab57 udp_disconnect +EXPORT_SYMBOL vmlinux 0x00cecc8c mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x00d2b023 generic_removexattr +EXPORT_SYMBOL vmlinux 0x00d7b985 generic_fillattr +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e2a964 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x00ee2626 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x00fdb85f blkdev_fsync +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0139b504 cpu_current_top_of_stack +EXPORT_SYMBOL vmlinux 0x0141ceed user_revoke +EXPORT_SYMBOL vmlinux 0x0149359a dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x0149dc9e pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x01576773 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x016999ad alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0173da7d ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x0175f83b nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x01982f20 dquot_resume +EXPORT_SYMBOL vmlinux 0x01a41597 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x01a7f084 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x01d7b5e1 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x01fb467b __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x02072a09 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x02100396 bdevname +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0220294f __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x022dc9d3 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x022fc6f0 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x0236a21d vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x023cdcf7 phy_init_eee +EXPORT_SYMBOL vmlinux 0x0245034f dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x024dd5c9 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x024e3965 mpage_writepages +EXPORT_SYMBOL vmlinux 0x02558603 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026808d3 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02961498 release_pages +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02bcda13 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x02bd5671 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x02da82b8 devm_gpiod_put_array +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 0x0313b3f7 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x031d262b pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0341aee9 scsi_print_command +EXPORT_SYMBOL vmlinux 0x0357dde2 nf_register_hook +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03730b97 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037bc25c tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x037d29b1 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x039c9c61 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x03bdb35a phy_connect +EXPORT_SYMBOL vmlinux 0x03c7b9f4 blk_init_queue +EXPORT_SYMBOL vmlinux 0x03ca5654 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x03df2547 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x03e1078f inode_needs_sync +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0424c254 padata_free +EXPORT_SYMBOL vmlinux 0x0425a149 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044b7919 d_set_d_op +EXPORT_SYMBOL vmlinux 0x0455b599 dev_add_pack +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048c9260 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f4bc81 pid_task +EXPORT_SYMBOL vmlinux 0x04f51e5a posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x054c02dc check_disk_change +EXPORT_SYMBOL vmlinux 0x05643740 vme_irq_request +EXPORT_SYMBOL vmlinux 0x0578b969 netdev_err +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05de3e2d xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x06077b2c posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x060ddf74 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06173d81 dquot_file_open +EXPORT_SYMBOL vmlinux 0x062ce059 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064215ec do_splice_from +EXPORT_SYMBOL vmlinux 0x06723825 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06891191 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x0690b6b1 default_llseek +EXPORT_SYMBOL vmlinux 0x06affa4a __ip_select_ident +EXPORT_SYMBOL vmlinux 0x06bde4e7 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x06bf2dad kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06d0abd6 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x06db1cec bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07139d8c pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x072006a2 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x0757c45a mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x076993f3 generic_permission +EXPORT_SYMBOL vmlinux 0x07727c95 vfs_create +EXPORT_SYMBOL vmlinux 0x07825e04 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x078999f0 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x0796a1a6 __blk_end_request +EXPORT_SYMBOL vmlinux 0x0798c30b netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07adc8d0 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x07c5ff88 bio_init +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07d87ad8 brioctl_set +EXPORT_SYMBOL vmlinux 0x07e9a940 kill_bdev +EXPORT_SYMBOL vmlinux 0x0820c86c tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0842b424 __brelse +EXPORT_SYMBOL vmlinux 0x084b7019 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x084f4c4e input_unregister_handle +EXPORT_SYMBOL vmlinux 0x08768189 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x08797ce8 proto_register +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x08971e47 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08ae4f18 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x08c99ffc netlink_capable +EXPORT_SYMBOL vmlinux 0x08d0e666 sock_no_getname +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08f28b95 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x08fcb52c bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x08fe10df md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x090829a5 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x0919d93d vme_register_driver +EXPORT_SYMBOL vmlinux 0x09283213 vfs_llseek +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09947044 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x0998759b __genl_register_family +EXPORT_SYMBOL vmlinux 0x09ad387a pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e816a8 seq_printf +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x09fe9a2b dcb_getapp +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 0x0a31479d sock_setsockopt +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a4bb506 dev_addr_add +EXPORT_SYMBOL vmlinux 0x0a634126 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a7143bf bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a789d86 init_task +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aba0a38 generic_readlink +EXPORT_SYMBOL vmlinux 0x0accfe7e neigh_connected_output +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0af49af8 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x0afc55d0 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x0b0c13eb agp_bridge +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1cc364 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4e7a63 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x0b554f63 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x0b695c6e nf_log_trace +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b76a823 end_page_writeback +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b91bf08 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x0bb476c7 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bcd4938 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x0bf2cb2b fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x0bf7de7d x86_hyper +EXPORT_SYMBOL vmlinux 0x0bf9e4aa key_alloc +EXPORT_SYMBOL vmlinux 0x0c06f8ec phy_resume +EXPORT_SYMBOL vmlinux 0x0c0ba7a1 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x0c42309e inode_init_always +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6cb54c inode_set_bytes +EXPORT_SYMBOL vmlinux 0x0c6ce9ba follow_down_one +EXPORT_SYMBOL vmlinux 0x0c73add6 sget +EXPORT_SYMBOL vmlinux 0x0c76d7d2 param_set_byte +EXPORT_SYMBOL vmlinux 0x0c8d968e max8998_write_reg +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ce564b1 fb_class +EXPORT_SYMBOL vmlinux 0x0cf93f99 generic_getxattr +EXPORT_SYMBOL vmlinux 0x0d041a98 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x0d0943c8 vga_get +EXPORT_SYMBOL vmlinux 0x0d09bcc3 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x0d1abf88 page_waitqueue +EXPORT_SYMBOL vmlinux 0x0d2a7986 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x0d35c5e1 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x0d38ae62 pci_map_rom +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d468961 kobject_put +EXPORT_SYMBOL vmlinux 0x0d4cd4da is_nd_btt +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d9eb921 inet_sendpage +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dadd260 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dc4206f tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x0dc8a242 inet_frags_init +EXPORT_SYMBOL vmlinux 0x0dca5ebc netdev_update_features +EXPORT_SYMBOL vmlinux 0x0dd0a335 soft_cursor +EXPORT_SYMBOL vmlinux 0x0dd599df __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0ddddba1 mmc_release_host +EXPORT_SYMBOL vmlinux 0x0de33ca8 udp_del_offload +EXPORT_SYMBOL vmlinux 0x0de4f548 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x0e13d2d5 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x0e1cbedc bio_integrity_free +EXPORT_SYMBOL vmlinux 0x0e4896ed vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x0e5b3206 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e753dc1 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x0e8bbd43 vfs_unlink +EXPORT_SYMBOL vmlinux 0x0e91bb39 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x0e99a6ff lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed719a9 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f09fe72 path_nosuid +EXPORT_SYMBOL vmlinux 0x0f1f18ef genphy_suspend +EXPORT_SYMBOL vmlinux 0x0f246922 inode_set_flags +EXPORT_SYMBOL vmlinux 0x0f28902b agp_bind_memory +EXPORT_SYMBOL vmlinux 0x0f43365b __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5c6d19 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f82c169 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x0f97897b fput +EXPORT_SYMBOL vmlinux 0x0fa3c23e dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc78aba d_tmpfile +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fda2f9b bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x0fe641bf dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x0fecb2c4 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x1003f934 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x100877e3 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x103ab2ac _dev_info +EXPORT_SYMBOL vmlinux 0x104c557f dentry_open +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10862b99 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x108e3e92 locks_init_lock +EXPORT_SYMBOL vmlinux 0x10992856 try_module_get +EXPORT_SYMBOL vmlinux 0x109d2626 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x10beec46 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x10c2f187 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x10e4e882 gen_pool_free +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1120bffd mdio_bus_type +EXPORT_SYMBOL vmlinux 0x114dad5c __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x115d5516 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1189d69f nd_btt_probe +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11bb85bd blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x11c24676 save_mount_options +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11f3d227 dqput +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 0x12337c95 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x12398411 km_query +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x129150b2 __sb_end_write +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12c3d40a xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e8934d mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x12e9d82b xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x12fe8931 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x1311fdf5 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132be45f jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x1330291a sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x133ea892 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x1340ea75 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x137ae7e4 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x13b28452 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d44456 simple_follow_link +EXPORT_SYMBOL vmlinux 0x13e8f145 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143e3218 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x1442c46d bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x1443b43f block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x144b038b remap_pfn_range +EXPORT_SYMBOL vmlinux 0x144c25c6 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0x145c30d4 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x145f1951 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x14617087 dm_io +EXPORT_SYMBOL vmlinux 0x149ef8da wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x14ceb0fd tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x14eddf90 dcb_setapp +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x151a89d8 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x15239176 param_set_int +EXPORT_SYMBOL vmlinux 0x1547bfd6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x1570a047 param_get_uint +EXPORT_SYMBOL vmlinux 0x157b00f1 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x157e5f7a writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x1599f546 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x15ae6797 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15ea5b8b neigh_for_each +EXPORT_SYMBOL vmlinux 0x15fbe791 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x1600a9b4 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x1616c1d2 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x1623989e tty_mutex +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x16470118 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x16543621 up_write +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x1680ed5b clear_nlink +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16adea89 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x16b4bc41 from_kprojid +EXPORT_SYMBOL vmlinux 0x16b57a08 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x16cd2fd8 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16ffc9d2 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1737dec3 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x175327fb inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x175b798f blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x1777a8d7 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x178b417a pci_disable_msi +EXPORT_SYMBOL vmlinux 0x179570cc input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x179d08e3 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x17a9f4ac jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17fc0de0 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x18106a40 dev_driver_string +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 0x184232cd tty_devnum +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e8b4a bio_copy_kern +EXPORT_SYMBOL vmlinux 0x187c8286 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a803b0 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x18acc7a7 simple_write_begin +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18e11cd5 down_write_trylock +EXPORT_SYMBOL vmlinux 0x18e15459 __neigh_create +EXPORT_SYMBOL vmlinux 0x18e8b057 __netif_schedule +EXPORT_SYMBOL vmlinux 0x18fd3365 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x18fed0c1 user_path_create +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x19170268 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x191db536 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x195775f8 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x19604e92 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x1960d70c __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x19800d74 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x1996cb0d skb_pad +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19ad67b9 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19e09e5e vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x19ede48e to_nd_btt +EXPORT_SYMBOL vmlinux 0x1a1191cf inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x1a3ac2b3 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a4d0cbc inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x1a53540b dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a796e28 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x1a88c6e9 d_find_alias +EXPORT_SYMBOL vmlinux 0x1a9426be dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x1aace40f set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x1aca1799 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x1ad72220 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x1ad9c655 md_check_recovery +EXPORT_SYMBOL vmlinux 0x1adde28e md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b03a395 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b1b087e serio_rescan +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2b76b6 kunmap +EXPORT_SYMBOL vmlinux 0x1b2fcb9c uart_get_divisor +EXPORT_SYMBOL vmlinux 0x1b41a594 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x1b565aea get_empty_filp +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b5b2fec mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x1b624b53 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b896414 __destroy_inode +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1ba7fca8 install_exec_creds +EXPORT_SYMBOL vmlinux 0x1bae2a93 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb576cf netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x1bbcaeb0 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x1bd81851 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x1bd845ca netdev_warn +EXPORT_SYMBOL vmlinux 0x1bdb7936 __check_sticky +EXPORT_SYMBOL vmlinux 0x1bde0653 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1bf2f86c filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x1c01fba8 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x1c0a1e37 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c1bc01c init_special_inode +EXPORT_SYMBOL vmlinux 0x1c1e94cb xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x1c67669c input_get_keycode +EXPORT_SYMBOL vmlinux 0x1c758ff0 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x1c848af9 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c9f4afe peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x1ca4318c pci_release_region +EXPORT_SYMBOL vmlinux 0x1cb91a6a netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x1cbab937 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x1cc003e4 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x1cc034a2 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x1cd0057a audit_log +EXPORT_SYMBOL vmlinux 0x1d19bb33 input_set_capability +EXPORT_SYMBOL vmlinux 0x1d227065 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x1d23fafe misc_register +EXPORT_SYMBOL vmlinux 0x1d33e4c9 param_set_bool +EXPORT_SYMBOL vmlinux 0x1d51f893 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x1d552f0d simple_getattr +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d7383c9 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x1d855404 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x1d99741d vfs_readf +EXPORT_SYMBOL vmlinux 0x1da4aff6 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x1dacfe1b lock_fb_info +EXPORT_SYMBOL vmlinux 0x1dbe2235 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd6a298 ihold +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1dedd32f jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x1e0053b9 simple_empty +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 0x1e5cd914 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x1e5f0f16 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x1e6a6222 vfs_read +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e71cae9 pci_dev_get +EXPORT_SYMBOL vmlinux 0x1e7ac96d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x1e97abb0 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eaed025 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1eb1f61b cdrom_check_events +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1ed8242f ppp_dev_name +EXPORT_SYMBOL vmlinux 0x1edca132 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x1ee0b2c5 arp_tbl +EXPORT_SYMBOL vmlinux 0x1ee16b7d kfree_skb +EXPORT_SYMBOL vmlinux 0x1ee29d78 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1ee2fc72 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x1eeb12d2 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x1f0050cb __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x1f1880eb qdisc_reset +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fa3ec99 fd_install +EXPORT_SYMBOL vmlinux 0x1faa70f9 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc122db swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe0f49a lock_sock_nested +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ffdbde6 ata_print_version +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 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x202f4e92 acpi_extract_package +EXPORT_SYMBOL vmlinux 0x202fc262 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204e40df block_write_full_page +EXPORT_SYMBOL vmlinux 0x206a10e0 ns_capable +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20996cf1 inet6_bind +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20bf8801 i2c_master_send +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20d0b25e udplite_prot +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x210aaed2 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x2114a5ea try_to_release_page +EXPORT_SYMBOL vmlinux 0x212e10e2 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x2140f388 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x214623a8 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x215fc148 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x217c4530 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x2186cedf phy_device_create +EXPORT_SYMBOL vmlinux 0x218f6cf6 generic_read_dir +EXPORT_SYMBOL vmlinux 0x21903dce mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x2199a16a input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x219d72fd vfs_iter_read +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21bda38a param_ops_ushort +EXPORT_SYMBOL vmlinux 0x21c088bf textsearch_register +EXPORT_SYMBOL vmlinux 0x21c51868 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x21ec894d request_firmware +EXPORT_SYMBOL vmlinux 0x21f9b993 dev_deactivate +EXPORT_SYMBOL vmlinux 0x2202c31e led_update_brightness +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x2216f7fd udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x222ba00f fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2268188c d_walk +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22773110 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x22857c8a napi_get_frags +EXPORT_SYMBOL vmlinux 0x229def34 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x229f1dcd fb_set_suspend +EXPORT_SYMBOL vmlinux 0x22ae49d1 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22bd8744 pci_choose_state +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22ed90db security_inode_init_security +EXPORT_SYMBOL vmlinux 0x22f27ad7 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2311cb34 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x2312ebd5 nf_log_unset +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 0x235a608d inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x2364e9a1 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x2367e066 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x2370243a bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x237447d1 down_read_trylock +EXPORT_SYMBOL vmlinux 0x23770398 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x237e1ae7 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x23821c33 freeze_bdev +EXPORT_SYMBOL vmlinux 0x238f5c1a _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x239ab545 __mutex_init +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 0x23ee4d53 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x23f2e244 xfrm_input +EXPORT_SYMBOL vmlinux 0x23f73a9e netif_skb_features +EXPORT_SYMBOL vmlinux 0x23f8705e __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x23f8d22b mb_cache_entry_alloc +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 0x243a23cb tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2445ed0c dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x24512935 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x24537bb7 cpu_tss +EXPORT_SYMBOL vmlinux 0x2454f48f eisa_bus_type +EXPORT_SYMBOL vmlinux 0x2455a841 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x24806d71 param_ops_string +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24955dac ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x24a9d90f __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x24bfdb55 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x24fb3c80 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x251c7b8c xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2548bf7a __ip_dev_find +EXPORT_SYMBOL vmlinux 0x255b1d64 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25bbf68a sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x25cca24c __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x25cf923f bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x25e82ef1 km_policy_notify +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x260bd913 elevator_init +EXPORT_SYMBOL vmlinux 0x26230f9d d_delete +EXPORT_SYMBOL vmlinux 0x26283586 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263ede99 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x264f0d35 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2654ccaa free_page_put_link +EXPORT_SYMBOL vmlinux 0x266d3112 alloc_disk +EXPORT_SYMBOL vmlinux 0x26705ac4 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x267f4dd6 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x268c7363 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x268cc6a2 sys_close +EXPORT_SYMBOL vmlinux 0x268cde05 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x26af0220 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26bcfa9c acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x26c2d496 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x26c6205c pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x27124e2b param_get_long +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27219bbc tcf_exts_change +EXPORT_SYMBOL vmlinux 0x2722fcc7 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x27275352 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x27371cfe acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x273b9db6 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x273fa7ea kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27851053 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x27965ba4 dev_close +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b3b0ba mutex_unlock +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27d9bd49 __page_symlink +EXPORT_SYMBOL vmlinux 0x27e36a06 inet_select_addr +EXPORT_SYMBOL vmlinux 0x27e62036 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x27e79ceb abx500_register_ops +EXPORT_SYMBOL vmlinux 0x280835b1 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x280c365d mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282d399b tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x28432000 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x28687b81 sk_dst_check +EXPORT_SYMBOL vmlinux 0x287cbeee bio_phys_segments +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 0x28c3dcfb netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x28cb1b5f call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x2901b106 cdev_del +EXPORT_SYMBOL vmlinux 0x290cae75 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x2926f7b5 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x2946c219 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x2947010c from_kuid_munged +EXPORT_SYMBOL vmlinux 0x294a4ada kernel_write +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295c4d6c flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x295cd9c0 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x29771e2e up_read +EXPORT_SYMBOL vmlinux 0x299a4a21 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x29a3cdac kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0x29ad3b5c vme_dma_request +EXPORT_SYMBOL vmlinux 0x29bb27f9 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x29d8f7a1 genphy_update_link +EXPORT_SYMBOL vmlinux 0x29d8ff2d devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x29dac923 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a245aa8 path_put +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2a61c8da ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x2a642485 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x2a67f2d1 sock_from_file +EXPORT_SYMBOL vmlinux 0x2a77897d inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x2a79c01c agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x2a7ec1bf proc_create_data +EXPORT_SYMBOL vmlinux 0x2a865689 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa8e2d2 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2abb7f89 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x2abbc772 first_ec +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad4512f mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x2b07e2c3 netdev_alert +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b15037e vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x2b2a8a66 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x2b2c7d3f mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3266bb udp_poll +EXPORT_SYMBOL vmlinux 0x2b565880 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x2b5a5fc9 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x2b7fb205 __register_binfmt +EXPORT_SYMBOL vmlinux 0x2b907251 kernel_read +EXPORT_SYMBOL vmlinux 0x2b9d7371 inet_put_port +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2b9dafd2 vc_cons +EXPORT_SYMBOL vmlinux 0x2ba35243 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bb8ce47 give_up_console +EXPORT_SYMBOL vmlinux 0x2bbffdc4 kthread_stop +EXPORT_SYMBOL vmlinux 0x2bcc90f7 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x2bd9465b d_prune_aliases +EXPORT_SYMBOL vmlinux 0x2be1547b md_finish_reshape +EXPORT_SYMBOL vmlinux 0x2bec25c0 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2bf8ccbc inet_add_protocol +EXPORT_SYMBOL vmlinux 0x2bfa4831 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c120253 noop_llseek +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cb19f59 phy_driver_register +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2ccbcafb mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d6ce4e4 mount_nodev +EXPORT_SYMBOL vmlinux 0x2d844a55 rwsem_wake +EXPORT_SYMBOL vmlinux 0x2d91a5e8 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x2da4ed2c ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x2dc09575 genlmsg_put +EXPORT_SYMBOL vmlinux 0x2dcbdfcf pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd8d0b8 gnet_stats_copy_app +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 0x2df5707c pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1fe28e gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x2e21c8ca seq_write +EXPORT_SYMBOL vmlinux 0x2e229258 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e668491 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2e73145c mark_info_dirty +EXPORT_SYMBOL vmlinux 0x2eb5adfa copy_from_iter +EXPORT_SYMBOL vmlinux 0x2ec1c89c fb_show_logo +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecc9a05 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efa6f28 block_write_begin +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0e68f1 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x2f1da257 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x2f27cd76 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f41e06d clocksource_unregister +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4f644b rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x2f53601f param_ops_int +EXPORT_SYMBOL vmlinux 0x2f754704 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x2f99a793 gen_pool_create +EXPORT_SYMBOL vmlinux 0x2fa039b1 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbc9353 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x2fc3d7d5 d_add_ci +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe64dcd dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x2ffbd61b cdev_alloc +EXPORT_SYMBOL vmlinux 0x30118493 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x3018d775 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302ff728 release_sock +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3059523b jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x30658662 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x30787223 vm_mmap +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307d0379 dst_release +EXPORT_SYMBOL vmlinux 0x308e91b5 prepare_creds +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30b3d606 block_read_full_page +EXPORT_SYMBOL vmlinux 0x30c3d516 lockref_put_return +EXPORT_SYMBOL vmlinux 0x30c8c021 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x30e67bb0 blk_mq_complete_request +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 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317fe089 __elv_add_request +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x3198a5c8 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x319ab976 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x31c18f8b phy_device_register +EXPORT_SYMBOL vmlinux 0x31dad4b2 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x31df67ad filemap_map_pages +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31ebd6d6 skb_store_bits +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x3212e7ff reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x3221b0a3 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x324a7977 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x32574b08 path_is_under +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x329c08cc kmap_high +EXPORT_SYMBOL vmlinux 0x32af5e88 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x32cd54e4 __sock_create +EXPORT_SYMBOL vmlinux 0x32d4c844 netif_device_detach +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32f7ae6b udp_prot +EXPORT_SYMBOL vmlinux 0x331610d8 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x331b80e1 pipe_lock +EXPORT_SYMBOL vmlinux 0x33393190 skb_find_text +EXPORT_SYMBOL vmlinux 0x333a5038 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x3351b391 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x33617da1 inode_permission +EXPORT_SYMBOL vmlinux 0x33859ac8 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x33a05517 kill_litter_super +EXPORT_SYMBOL vmlinux 0x33ad63e2 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x33b70549 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d865f9 drop_nlink +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e9a4d6 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34005d7a get_task_io_context +EXPORT_SYMBOL vmlinux 0x341756d6 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x3435d4a2 pci_pme_active +EXPORT_SYMBOL vmlinux 0x34495cf4 kill_pgrp +EXPORT_SYMBOL vmlinux 0x34570ea3 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x3459378a proc_remove +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347d4cda __frontswap_store +EXPORT_SYMBOL vmlinux 0x348569a2 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349f8a30 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x34a652e1 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x34c4079a bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x34cb6eaf blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x34d420d2 processors +EXPORT_SYMBOL vmlinux 0x34e2fba4 inode_init_once +EXPORT_SYMBOL vmlinux 0x34e39bc8 blk_free_tags +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f9bff3 pci_iomap +EXPORT_SYMBOL vmlinux 0x35043f69 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3523c8c2 simple_transaction_set +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 0x3571f905 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x3575e15d mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35dae951 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x35f643af devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x35fd2422 udp_set_csum +EXPORT_SYMBOL vmlinux 0x36002e1d elevator_alloc +EXPORT_SYMBOL vmlinux 0x36089b90 seq_release +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3628d56b get_acl +EXPORT_SYMBOL vmlinux 0x36626c94 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x366c346b security_inode_permission +EXPORT_SYMBOL vmlinux 0x366ca4cc block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3688f77b sock_wake_async +EXPORT_SYMBOL vmlinux 0x3692024d blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36c9d389 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x36e15976 netlink_unicast +EXPORT_SYMBOL vmlinux 0x36e8e587 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x36fe10d1 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x370c2e87 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x371d917b blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3755f52d xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x37584cfc kobject_get +EXPORT_SYMBOL vmlinux 0x3771fe64 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x3772d6a9 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x378eac1b skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b1cab5 drop_super +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c30872 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x37cefe7b pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37df1d54 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x37e6aea3 get_user_pages +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37e7cda1 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x37eed7b8 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x37f324e3 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x37f610df __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f82599 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x38077ec6 block_invalidatepage +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 0x382c2189 sk_alloc +EXPORT_SYMBOL vmlinux 0x3854c33c nobh_writepage +EXPORT_SYMBOL vmlinux 0x386f779b wireless_send_event +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x3893adef __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x389ddf47 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x38a3dd2d kobject_set_name +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38aab844 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x38ab2311 fb_find_mode +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x390ada15 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x391820dd pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x39226ce5 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x392f1b6f agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x3937887b phy_start_aneg +EXPORT_SYMBOL vmlinux 0x3937a9bf dev_printk +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393aee79 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39498ac0 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x394ceaa9 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x396762db noop_fsync +EXPORT_SYMBOL vmlinux 0x3973fa41 open_exec +EXPORT_SYMBOL vmlinux 0x3974d79d netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x3981ad26 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ebe35 init_buffer +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a18255 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39c34289 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x39f1709e sg_miter_start +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 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a416dd7 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3a4f8b26 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x3a718f5c twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x3a77a3d2 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x3a9412f3 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa178dd napi_disable +EXPORT_SYMBOL vmlinux 0x3aa601a7 bmap +EXPORT_SYMBOL vmlinux 0x3aaa86c2 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x3aca4311 dev_uc_add +EXPORT_SYMBOL vmlinux 0x3ad8f2d4 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x3af06fb1 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x3af33544 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x3afe77e4 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x3b15532c fsync_bdev +EXPORT_SYMBOL vmlinux 0x3b15d748 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x3b1dd00c ppp_unit_number +EXPORT_SYMBOL vmlinux 0x3b201620 machine_real_restart +EXPORT_SYMBOL vmlinux 0x3b2ebc20 generic_write_end +EXPORT_SYMBOL vmlinux 0x3b33a216 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x3b4abbe0 param_get_charp +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b79457f tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bbbee5a pci_set_mwi +EXPORT_SYMBOL vmlinux 0x3bd39f03 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x3bd6bce4 seq_escape +EXPORT_SYMBOL vmlinux 0x3be0fff5 ping_prot +EXPORT_SYMBOL vmlinux 0x3c01b980 vfs_write +EXPORT_SYMBOL vmlinux 0x3c039f10 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x3c113549 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x3c19846a lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c481673 datagram_poll +EXPORT_SYMBOL vmlinux 0x3c4ee68c phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x3c59c10b kdb_current_task +EXPORT_SYMBOL vmlinux 0x3c5b17bd max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x3c626456 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x3c710ee7 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3ca3cc85 __napi_schedule +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cccf205 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x3cda2a2d md_done_sync +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d1d10f0 led_blink_set +EXPORT_SYMBOL vmlinux 0x3d242361 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x3d3b0f2c simple_rename +EXPORT_SYMBOL vmlinux 0x3d698228 copy_to_iter +EXPORT_SYMBOL vmlinux 0x3d7ac946 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d88f8a8 inet_listen +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da19c2c neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3da7e95d blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x3dba7e00 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddb65ce blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x3de92409 mdiobus_free +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e021f4b pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x3e222455 read_cache_page +EXPORT_SYMBOL vmlinux 0x3e22f7a2 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e2b7bb9 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x3e364402 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x3e3de22f param_set_invbool +EXPORT_SYMBOL vmlinux 0x3e583505 devm_clk_get +EXPORT_SYMBOL vmlinux 0x3e5e218d dput +EXPORT_SYMBOL vmlinux 0x3e654f49 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x3e728a0f locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x3e7a9b5b fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x3e8402be dm_get_device +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +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 0x3f0d0100 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x3f0d9f32 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x3f181865 touch_atime +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4e5cec __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f6dcde5 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x3fa04268 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x3fd34055 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x3fde8b20 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x400d22cc generic_listxattr +EXPORT_SYMBOL vmlinux 0x402467cd kill_pid +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x40339d3d mmc_of_parse +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403f90a6 genl_notify +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40658d8e fasync_helper +EXPORT_SYMBOL vmlinux 0x407d95ea inet_csk_accept +EXPORT_SYMBOL vmlinux 0x408a1831 blkdev_issue_zeroout +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 0x409de065 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x40a1bf48 neigh_xmit +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a2eb91 ip_defrag +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c112a8 dquot_get_state +EXPORT_SYMBOL vmlinux 0x40c1c590 kmem_cache_create +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 0x40f1106f remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x40f336ac jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x40f754d8 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x40f7dfbe mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x41133a39 complete_request_key +EXPORT_SYMBOL vmlinux 0x4123f02a dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x41260242 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x412a268e param_ops_bint +EXPORT_SYMBOL vmlinux 0x412b146c generic_make_request +EXPORT_SYMBOL vmlinux 0x412b7e94 simple_statfs +EXPORT_SYMBOL vmlinux 0x413150a3 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x413ccc73 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x4142f815 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4183e264 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x4183f61a kmalloc_caches +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 0x418c022e mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x41993387 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x41b073d4 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x41d07542 skb_split +EXPORT_SYMBOL vmlinux 0x41d31db4 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x41fa535b blk_sync_queue +EXPORT_SYMBOL vmlinux 0x42120df9 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x4213e7fb write_cache_pages +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x421a646a sock_efree +EXPORT_SYMBOL vmlinux 0x422608d1 skb_coalesce_rx_frag +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 0x4278055c iov_iter_npages +EXPORT_SYMBOL vmlinux 0x4289ecce i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a79a4e mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x42a8ef57 seq_path +EXPORT_SYMBOL vmlinux 0x42b8eadd pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42e6f29f dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4308752f tty_name +EXPORT_SYMBOL vmlinux 0x431f6f1b inet6_getname +EXPORT_SYMBOL vmlinux 0x433a5b39 register_filesystem +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43533282 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x4358ef42 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x435f4f3e fddi_type_trans +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x437e8f93 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43cc34f5 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x43d8ff09 neigh_table_init +EXPORT_SYMBOL vmlinux 0x43d9ec0a tty_register_driver +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f8f950 padata_alloc +EXPORT_SYMBOL vmlinux 0x4410f8bf kobject_init +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44127928 sock_no_accept +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4443eeea mpage_writepage +EXPORT_SYMBOL vmlinux 0x44466795 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x449ec0e5 agp_copy_info +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44a4b3b7 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44cbff88 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x44e2b67c tty_check_change +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f69964 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x45123e6a scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x451fbe25 netif_napi_add +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453ef934 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x45747d8d dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457d3974 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45af7268 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x45b60618 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x45b66aa6 input_register_device +EXPORT_SYMBOL vmlinux 0x45bf51d1 notify_change +EXPORT_SYMBOL vmlinux 0x45c3adcb pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x45d267c3 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x45e79497 dev_get_flags +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462c83da current_task +EXPORT_SYMBOL vmlinux 0x4641c0ec scsi_register_driver +EXPORT_SYMBOL vmlinux 0x46536717 d_obtain_root +EXPORT_SYMBOL vmlinux 0x4657a933 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46632e31 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466a72d0 submit_bio +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x4694977d pcim_pin_device +EXPORT_SYMBOL vmlinux 0x46a76a33 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x46b0ade5 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x46b5522e blk_end_request_all +EXPORT_SYMBOL vmlinux 0x46cc14c6 backlight_force_update +EXPORT_SYMBOL vmlinux 0x46de52b0 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x46f87410 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x471356bb i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x471cddf3 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x47226d3f __hw_addr_sync_dev +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 0x4763f10f call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x47727482 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x47825c44 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x478458e8 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4794e81c iov_iter_zero +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47c6725f i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x47e1d8b5 dmam_alloc_noncoherent +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 0x481d1ded arp_xmit +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4863d095 skb_unlink +EXPORT_SYMBOL vmlinux 0x48750e1c __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x487aae51 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c6b5af sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x48d435f6 md_write_start +EXPORT_SYMBOL vmlinux 0x48dd7e38 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x490137fc pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x4902ef93 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49157f8a genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x492ee270 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x4956857a sock_create_lite +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49813506 fget_raw +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49b58071 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x49b6ff47 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x49f28080 pci_find_bus +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49f7a252 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x4a03a940 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x4a1b9879 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x4a619f83 memcpy +EXPORT_SYMBOL vmlinux 0x4a669091 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x4a68af12 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x4a6e9460 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x4a8eee30 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x4aad9a51 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x4aba334b tso_start +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad31068 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x4adc292d sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x4aef4760 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b21ab10 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x4b2b6367 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b463712 inode_sub_rsv_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 0x4b6c3c8c jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x4b8b2000 netdev_info +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bc5e23d scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bdad05d netif_rx_ni +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4be8cb9c tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x4beb1201 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x4c084cbd jbd2_journal_clear_features +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 0x4c40f21d cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x4c605aa8 bdev_read_only +EXPORT_SYMBOL vmlinux 0x4c6d69fc passthru_features_check +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c8ec337 file_path +EXPORT_SYMBOL vmlinux 0x4c96d538 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x4c9fcdde set_pages_x +EXPORT_SYMBOL vmlinux 0x4cadcdb7 register_cdrom +EXPORT_SYMBOL vmlinux 0x4cae4c74 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x4cd278f3 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf80945 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x4d073bfa mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x4d0922cc tcp_parse_options +EXPORT_SYMBOL vmlinux 0x4d10df30 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x4d11e231 get_phy_device +EXPORT_SYMBOL vmlinux 0x4d16cd4f tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x4d1a4c13 __kfree_skb +EXPORT_SYMBOL vmlinux 0x4d210441 inet_del_offload +EXPORT_SYMBOL vmlinux 0x4d2dc268 elv_add_request +EXPORT_SYMBOL vmlinux 0x4d2e3836 dev_open +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d49fa40 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x4d7e2572 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x4d8409f6 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9c79fb netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x4d9f7f42 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x4da3c28a elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x4de01aac vga_put +EXPORT_SYMBOL vmlinux 0x4de0d917 blk_init_tags +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e03501b rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x4e0701cf xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e476a66 phy_detach +EXPORT_SYMBOL vmlinux 0x4e56ff93 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x4e6837ee vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ebb2c07 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x4ee4a89c sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x4eefb7f5 vme_slave_request +EXPORT_SYMBOL vmlinux 0x4f11b3d3 register_netdevice +EXPORT_SYMBOL vmlinux 0x4f1a51d2 thaw_super +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 0x4f67fbbf put_filp +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f7e3417 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fbd2a9d sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x501eb5f2 abort_creds +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5053f901 seq_release_private +EXPORT_SYMBOL vmlinux 0x50560701 lock_rename +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5063f183 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x5067c4fa sk_net_capable +EXPORT_SYMBOL vmlinux 0x50746345 dst_cow_metrics_generic +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 0x509fae0b __vfs_read +EXPORT_SYMBOL vmlinux 0x50ab5672 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x50b2ed58 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50c4a41a vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50d7580c scsi_device_get +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511edb04 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x5122be60 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x5132d63a rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x513d2dc1 kill_fasync +EXPORT_SYMBOL vmlinux 0x515e3f3f dst_alloc +EXPORT_SYMBOL vmlinux 0x51630123 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x51757605 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x5179eb40 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f8a0a6 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x51fbe9b7 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5204a25c nobh_write_end +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520dbdb5 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x52696d06 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x526eae82 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x5297c6b7 tcp_close +EXPORT_SYMBOL vmlinux 0x52a2aacf dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x52a9bbb4 put_disk +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52b94afe simple_link +EXPORT_SYMBOL vmlinux 0x52c3ac91 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x52c7cd27 security_path_symlink +EXPORT_SYMBOL vmlinux 0x52e1131f dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x52ed8fcb i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x53072299 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534c153c tcp_read_sock +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 0x5383563d in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a84bec md_unregister_thread +EXPORT_SYMBOL vmlinux 0x53b01fd7 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x53b21254 vme_master_request +EXPORT_SYMBOL vmlinux 0x53dd1c02 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x53f4c97d skb_tx_error +EXPORT_SYMBOL vmlinux 0x53f64715 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x540499a9 pci_match_id +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5410735f ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x541482fd d_genocide +EXPORT_SYMBOL vmlinux 0x5422502f inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x54540d73 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x54733086 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b0ffe7 uart_resume_port +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c2fcbf skb_vlan_push +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 0x54e7b016 dma_find_channel +EXPORT_SYMBOL vmlinux 0x54f0dfc8 find_vma +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x55050a14 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x5506fe49 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x55306760 lro_flush_all +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5548932d scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x554e7bf3 iunique +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x55853b4a dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x5587416b consume_skb +EXPORT_SYMBOL vmlinux 0x5592c4f5 __module_get +EXPORT_SYMBOL vmlinux 0x55a4373a generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55e88a04 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x56079e61 twl6040_power +EXPORT_SYMBOL vmlinux 0x560f2d16 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x562803c0 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x562c6354 iterate_dir +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 0x564dc259 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x56674afa vme_slot_num +EXPORT_SYMBOL vmlinux 0x566e0f04 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x5688510b blk_complete_request +EXPORT_SYMBOL vmlinux 0x56a9f2db i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x56b7d3eb scsi_register_interface +EXPORT_SYMBOL vmlinux 0x56b8d1a3 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x56c0146e scsi_execute +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56c96b91 submit_bh +EXPORT_SYMBOL vmlinux 0x56e578f1 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x56f091d5 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x56f2d5b4 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x56fb0444 km_is_alive +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x571d26ba set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +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 0x57662bf4 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5780fb2b phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x5797062c xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x5797ac46 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57af68e9 unregister_key_type +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57c428c6 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x57e3a45a tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x58040750 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x5812ac38 module_refcount +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5829a05f blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583c1055 simple_dname +EXPORT_SYMBOL vmlinux 0x5841529a f_setown +EXPORT_SYMBOL vmlinux 0x5842fd60 km_report +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x585586aa acpi_match_device_ids +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 0x588c737a put_page +EXPORT_SYMBOL vmlinux 0x58ad4563 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e55363 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x5916fbeb param_get_int +EXPORT_SYMBOL vmlinux 0x5918f08c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x591f91ce ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x594b6468 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5987581a iget5_locked +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x599f4a2d revalidate_disk +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b1b521 arp_create +EXPORT_SYMBOL vmlinux 0x59b6f438 downgrade_write +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59c5f7b0 migrate_page +EXPORT_SYMBOL vmlinux 0x59de41a5 sync_blockdev +EXPORT_SYMBOL vmlinux 0x59f1fb80 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x59fb0b77 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a2bacdf cpu_info +EXPORT_SYMBOL vmlinux 0x5a2d92d9 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x5a404a9c bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x5a41b15f padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a5a1184 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a8440d3 dquot_enable +EXPORT_SYMBOL vmlinux 0x5a8bfe7d pci_scan_slot +EXPORT_SYMBOL vmlinux 0x5abc7de6 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ad029b2 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x5ae46f24 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b2153cb dev_emerg +EXPORT_SYMBOL vmlinux 0x5b2c43fc dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x5b43167e dst_discard_sk +EXPORT_SYMBOL vmlinux 0x5b44cb05 put_cmsg +EXPORT_SYMBOL vmlinux 0x5b5935b4 netif_device_attach +EXPORT_SYMBOL vmlinux 0x5b5b8c48 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x5b7531eb tty_hangup +EXPORT_SYMBOL vmlinux 0x5bbe167e dev_change_flags +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bce5bc3 redraw_screen +EXPORT_SYMBOL vmlinux 0x5be4d3de d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x5bf9499a skb_copy_bits +EXPORT_SYMBOL vmlinux 0x5bfe9a87 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c1ceea0 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x5c545234 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x5c5af72d __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x5c5fbe4e mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x5c63e671 tcp_req_err +EXPORT_SYMBOL vmlinux 0x5c66e306 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x5c683a24 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x5c693d20 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x5c7618fd finish_no_open +EXPORT_SYMBOL vmlinux 0x5c867045 unregister_nls +EXPORT_SYMBOL vmlinux 0x5c9b026a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x5c9e3bc8 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x5cb727c2 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x5cba1010 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x5cdfe65a pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0f771e add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x5d2c16f1 del_gendisk +EXPORT_SYMBOL vmlinux 0x5d34a0b5 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x5d519ce9 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d56128f __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x5d687236 scsi_device_put +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d8eb892 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x5d9cbd18 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x5dad11b8 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x5dd65338 bio_put +EXPORT_SYMBOL vmlinux 0x5ddf5579 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x5e00d407 i2c_use_client +EXPORT_SYMBOL vmlinux 0x5e334bca request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x5e52ae7c mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x5e5bc5d3 d_alloc +EXPORT_SYMBOL vmlinux 0x5e788444 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea4857a input_free_device +EXPORT_SYMBOL vmlinux 0x5ea96d5b posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x5eb12c0f inet_stream_ops +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee54e84 skb_make_writable +EXPORT_SYMBOL vmlinux 0x5efd4420 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f2d4dc9 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x5f40c4f8 arp_send +EXPORT_SYMBOL vmlinux 0x5f463b76 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x5f49f040 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x5f4b9d83 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x5f607f88 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x5f77c64e blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x5f8220aa dev_addr_del +EXPORT_SYMBOL vmlinux 0x5f936c82 key_validate +EXPORT_SYMBOL vmlinux 0x5f9f80a6 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x5fa5d4d4 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fbb57f6 register_md_personality +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fd2c1d6 param_set_ulong +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdd1289 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601d1946 import_iovec +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602bb11e proto_unregister +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 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x60556c55 dev_alert +EXPORT_SYMBOL vmlinux 0x6056e508 iget_locked +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607debba in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x608e939a padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b2f579 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60b9b442 vfs_link +EXPORT_SYMBOL vmlinux 0x60cf85d2 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x611746f5 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x61191099 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x611bfa03 km_state_expired +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614be8ba truncate_setsize +EXPORT_SYMBOL vmlinux 0x614fb74e skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x616465b2 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x6183700f page_put_link +EXPORT_SYMBOL vmlinux 0x619765fe poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x61a5ec1a kmem_cache_free +EXPORT_SYMBOL vmlinux 0x61afded2 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bea2c4 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x61c18267 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x61d8fc66 __devm_release_region +EXPORT_SYMBOL vmlinux 0x61ecf1c1 request_key +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621bb6ab ilookup5 +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x622850ad __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +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 0x6268f759 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a4ef65 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x62b06106 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x62ca0c5d elv_rb_find +EXPORT_SYMBOL vmlinux 0x62e2ca4d __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x62f19f20 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x62f7ba72 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x62fe35c9 inet_add_offload +EXPORT_SYMBOL vmlinux 0x630413cf unload_nls +EXPORT_SYMBOL vmlinux 0x63099b16 invalidate_partition +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631cfd88 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x6332a0df try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x6339c658 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x63431584 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x634491e9 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x634dc02c pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x634fc3cc mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x6384b2ff jbd2_journal_file_inode +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 0x63b8f9c2 __lock_page +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63cbfa99 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x63d63587 bdget +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63fd7a2e mmc_can_reset +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6410dc80 neigh_lookup +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6444e617 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x6454f839 get_tz_trend +EXPORT_SYMBOL vmlinux 0x6458bce3 simple_readpage +EXPORT_SYMBOL vmlinux 0x645930fb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x646776df security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x646ce2f3 nonseekable_open +EXPORT_SYMBOL vmlinux 0x647c73d5 d_move +EXPORT_SYMBOL vmlinux 0x647e361b acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x648695a9 sock_create +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64c073d7 seq_dentry +EXPORT_SYMBOL vmlinux 0x64c4ab8f submit_bio_wait +EXPORT_SYMBOL vmlinux 0x64dbf915 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x650080e8 empty_aops +EXPORT_SYMBOL vmlinux 0x6504891c agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654ed71f ppp_register_channel +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x656e114c netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x65740c5f pci_clear_master +EXPORT_SYMBOL vmlinux 0x657e619a add_disk +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65d0cc33 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x663d95bb security_path_rename +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x664490e4 d_rehash +EXPORT_SYMBOL vmlinux 0x667e4e80 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x669856c3 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x669bf80b proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x66b7b75a scsi_remove_host +EXPORT_SYMBOL vmlinux 0x66c7ea4a key_task_permission +EXPORT_SYMBOL vmlinux 0x66d07e69 __lock_buffer +EXPORT_SYMBOL vmlinux 0x66d5e600 get_super +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66e078fe generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x66eb3ff3 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x66ee8ffd mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x67175656 tcp_connect +EXPORT_SYMBOL vmlinux 0x671b0f79 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x671ecaba netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x6722f3bc _raw_write_lock +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x672e7aec set_binfmt +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x676d2687 mount_pseudo +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67748d3a inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x6776a043 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x677bb79d dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x67913783 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67ce4b43 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x67e6696c jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x67e81d62 __put_cred +EXPORT_SYMBOL vmlinux 0x67f34820 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x67f98a1f single_release +EXPORT_SYMBOL vmlinux 0x67f9f628 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ad287 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x681132a7 __f_setown +EXPORT_SYMBOL vmlinux 0x681b8cc8 tso_build_data +EXPORT_SYMBOL vmlinux 0x68407386 skb_pull +EXPORT_SYMBOL vmlinux 0x68757f61 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688b6476 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x689d3b13 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x68a69e8f security_task_getsecid +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68d2bd6a follow_up +EXPORT_SYMBOL vmlinux 0x68e290dc i2c_del_driver +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x691888f5 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x694ab004 amd_northbridges +EXPORT_SYMBOL vmlinux 0x694b9646 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69783ab1 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x6978fd2a pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x6984979f i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x699debe3 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a4dd12 dev_warn +EXPORT_SYMBOL vmlinux 0x69a8ba1a gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69bfe0d1 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x69ffb28d jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a242a45 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a35ac86 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x6a42e6c1 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x6a47cd6d pnp_is_active +EXPORT_SYMBOL vmlinux 0x6a58a8ed blk_mq_kick_requeue_list +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 0x6abb62c4 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad1a1a0 xfrm4_rcv +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 0x6b140960 __inet_hash +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b381459 free_user_ns +EXPORT_SYMBOL vmlinux 0x6b557023 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x6b571475 thaw_bdev +EXPORT_SYMBOL vmlinux 0x6b6451d8 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b7c6309 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x6ba739cf vfs_rename +EXPORT_SYMBOL vmlinux 0x6ba7666f dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcd2ba7 sock_init_data +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c17c776 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c335899 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x6c426372 km_policy_expired +EXPORT_SYMBOL vmlinux 0x6c4c242a d_make_root +EXPORT_SYMBOL vmlinux 0x6c50ef75 netlink_ack +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 0x6c80ba7f udp_ioctl +EXPORT_SYMBOL vmlinux 0x6c96db9f sk_wait_data +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d0593d9 sock_register +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 0x6d30345c scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d68b3dd __bforget +EXPORT_SYMBOL vmlinux 0x6d76baac security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x6d79afbe tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x6d83cbcf sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x6da0be78 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x6da3b9fd pci_disable_device +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc50edc kobject_add +EXPORT_SYMBOL vmlinux 0x6dc57dd7 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6dce8c54 simple_setattr +EXPORT_SYMBOL vmlinux 0x6dd3c2b4 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x6dda489a fb_blank +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 0x6e07f2a7 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x6e0ddcf0 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x6e2d32bb generic_file_llseek +EXPORT_SYMBOL vmlinux 0x6e331286 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x6e3912b7 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x6e4fab8d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e70868d inet6_offloads +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7224fd __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ee88c28 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x6f18b220 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f532982 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f5f8901 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x6f77a0e9 d_drop +EXPORT_SYMBOL vmlinux 0x6f7a12b7 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f94eff7 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x6f963a63 key_type_keyring +EXPORT_SYMBOL vmlinux 0x6fa377c2 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x6fb0cd20 __bread_gfp +EXPORT_SYMBOL vmlinux 0x6fb87ada mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd871ba register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6fed2d60 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x70051dd1 tty_port_put +EXPORT_SYMBOL vmlinux 0x7005e95e scsi_block_requests +EXPORT_SYMBOL vmlinux 0x700b938d locks_copy_lock +EXPORT_SYMBOL vmlinux 0x7022d333 d_invalidate +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7028709c generic_file_mmap +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x7046c296 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x704b0a4f netlink_broadcast +EXPORT_SYMBOL vmlinux 0x704b72b1 get_io_context +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 0x7088ce72 printk_emit +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x70982890 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x70bea84d do_splice_direct +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70df6c5b param_set_ullong +EXPORT_SYMBOL vmlinux 0x70f4f503 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x70f66cdc inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7104e9fb pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x710f6049 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x71178d23 set_cached_acl +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7150a565 elv_rb_add +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71829079 napi_complete_done +EXPORT_SYMBOL vmlinux 0x71872278 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x718d965f scsi_scan_target +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b4ce73 mmc_add_host +EXPORT_SYMBOL vmlinux 0x71b8270a dquot_release +EXPORT_SYMBOL vmlinux 0x71ba1dea abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x71d2ae8a kill_anon_super +EXPORT_SYMBOL vmlinux 0x71dca010 param_set_bint +EXPORT_SYMBOL vmlinux 0x71e2dade tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72618070 pci_get_class +EXPORT_SYMBOL vmlinux 0x726207c9 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x72710a46 bdget_disk +EXPORT_SYMBOL vmlinux 0x7282ce79 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x7289f6d4 kmap_atomic_to_page +EXPORT_SYMBOL vmlinux 0x728ffe1f pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b3f771 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72cad73b mntget +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72da9d1c __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x732712fe tcp_poll +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733d469c inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x7352eb27 down_write +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x7383f168 read_cache_pages +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x738bbfd0 skb_dequeue +EXPORT_SYMBOL vmlinux 0x73a18f85 have_submounts +EXPORT_SYMBOL vmlinux 0x73a2f339 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x73c075a6 dev_uc_init +EXPORT_SYMBOL vmlinux 0x73c7b94b get_unmapped_area +EXPORT_SYMBOL vmlinux 0x73cb577a simple_fill_super +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x741ccca7 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x7421304d param_ops_short +EXPORT_SYMBOL vmlinux 0x74256683 flow_cache_init +EXPORT_SYMBOL vmlinux 0x742bd667 skb_seq_read +EXPORT_SYMBOL vmlinux 0x7430546e __get_user_pages +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x74508df0 security_path_chmod +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x746c1d5b sock_release +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a15c32 skb_checksum +EXPORT_SYMBOL vmlinux 0x74a436c4 mem_section +EXPORT_SYMBOL vmlinux 0x74bfe910 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c95609 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0x74d24289 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x74e33541 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x74e5c98f ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ec9662 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x74f29d98 pci_find_capability +EXPORT_SYMBOL vmlinux 0x7503170c inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75183ae4 gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x7519ca16 get_cached_acl +EXPORT_SYMBOL vmlinux 0x75254be2 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x752a44d8 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x752bb612 kernel_listen +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753f9b4c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x755703fc skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x7557053c mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x7575e068 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x75782455 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x759044ed __remove_inode_hash +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 0x75c1589e pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x75c29a52 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x75cf13e1 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x75d115f3 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75e32302 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x75ffcab4 vga_tryget +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 0x765edaeb vfs_iter_write +EXPORT_SYMBOL vmlinux 0x766b44bc iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x768244f8 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x768c874e __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x7692ba6c phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x769caa09 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76be69da devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76f4d0be vme_bus_num +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x770f638d commit_creds +EXPORT_SYMBOL vmlinux 0x771b8ec4 queue_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x771cb8e9 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77283003 __inode_permission +EXPORT_SYMBOL vmlinux 0x772ac4c9 start_tty +EXPORT_SYMBOL vmlinux 0x7744a905 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x77490bdb abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x77855ab6 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x778676e3 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x778d234d serio_open +EXPORT_SYMBOL vmlinux 0x7796c2fa xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77aead1c dup_iter +EXPORT_SYMBOL vmlinux 0x77b026a8 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x77b33e50 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x77bc0a94 mount_ns +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c78d43 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x77cc547a nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x77d3a578 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x77e38f53 md_update_sb +EXPORT_SYMBOL vmlinux 0x77eb96d0 kthread_bind +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x78207bf9 bdgrab +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7885e549 set_create_files_as +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a1351e devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78a6960f ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x78b34aa2 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x78c16198 simple_lookup +EXPORT_SYMBOL vmlinux 0x78c673f7 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x78cff1e8 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e125ea buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78f18a7b pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x78f4c6d3 blk_get_request +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x792115e6 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x792bb77f __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x79551293 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79703824 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x798448ab iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x79934700 free_task +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b07b98 kmap +EXPORT_SYMBOL vmlinux 0x79c5d382 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x79d0674b blk_delay_queue +EXPORT_SYMBOL vmlinux 0x79e29d55 tty_kref_put +EXPORT_SYMBOL vmlinux 0x79ede6ba genphy_read_status +EXPORT_SYMBOL vmlinux 0x79f4cbeb kunmap_high +EXPORT_SYMBOL vmlinux 0x7a1c9c54 md_flush_request +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a2fec73 dump_page +EXPORT_SYMBOL vmlinux 0x7a30fcbb secpath_dup +EXPORT_SYMBOL vmlinux 0x7a3ae32e _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4734e3 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x7a4c2692 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x7a5bb13d __find_get_block +EXPORT_SYMBOL vmlinux 0x7a657540 vme_bus_type +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a87e0c2 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x7a89a7c1 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a9f324f __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa82187 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x7ab379b9 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac3accd twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae06cd9 dqget +EXPORT_SYMBOL vmlinux 0x7ae1a974 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b0522ce qdisc_watchdog_cancel +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 0x7b562a5d set_bh_page +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5fde27 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x7b615674 dev_uc_del +EXPORT_SYMBOL vmlinux 0x7b752c72 key_put +EXPORT_SYMBOL vmlinux 0x7b7ae2f1 pci_request_region +EXPORT_SYMBOL vmlinux 0x7bac636f force_sig +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bba7443 vme_irq_free +EXPORT_SYMBOL vmlinux 0x7bc896b4 ps2_command +EXPORT_SYMBOL vmlinux 0x7bdb9b1d tty_port_close +EXPORT_SYMBOL vmlinux 0x7be10641 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c205920 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x7c2bf252 phy_suspend +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5688f5 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x7c605c78 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c730487 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbf1cd8 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x7cddb152 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7ceea93b acl_by_type +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7d002175 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x7d054cc4 elevator_change +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0dd003 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1f20f9 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x7d3b032d xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x7d5cfe6b remove_proc_entry +EXPORT_SYMBOL vmlinux 0x7d5e0c38 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7762de dquot_acquire +EXPORT_SYMBOL vmlinux 0x7d8958f3 input_register_handler +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7da47838 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dbc7791 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x7dbc94f0 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x7dbfdf91 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x7dea0228 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df4a8f2 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x7e11051a vfs_symlink +EXPORT_SYMBOL vmlinux 0x7e1701e3 read_code +EXPORT_SYMBOL vmlinux 0x7e2a49b9 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x7e37013a mount_bdev +EXPORT_SYMBOL vmlinux 0x7e6e6de0 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e912559 __block_write_begin +EXPORT_SYMBOL vmlinux 0x7ea0f37d sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed9ca2c set_page_dirty +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7eee701d __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x7eff225d pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f08a3f4 file_remove_privs +EXPORT_SYMBOL vmlinux 0x7f0b13fa con_copy_unimap +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f31c530 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x7f5c2dc9 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f880fde mutex_trylock +EXPORT_SYMBOL vmlinux 0x7f9d9749 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x7fa39843 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x7fb3810c dma_async_device_register +EXPORT_SYMBOL vmlinux 0x7fbe926b __scm_send +EXPORT_SYMBOL vmlinux 0x7fccf666 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fde64fe sock_update_memcg +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fee2bdc skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x800477b8 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x800623f7 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x8016a2af devm_release_resource +EXPORT_SYMBOL vmlinux 0x8041323e simple_unlink +EXPORT_SYMBOL vmlinux 0x805ac7c5 scsi_register +EXPORT_SYMBOL vmlinux 0x8068d06c scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x80ab75b6 do_truncate +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cc07fa vfs_rmdir +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9ca85 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0x80e60b16 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x80eabcbf fb_set_cmap +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x8115c812 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x8128438a inet_addr_type +EXPORT_SYMBOL vmlinux 0x813affcf phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +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 0x818a0a76 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e66275 path_get +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81f4ce1e skb_insert +EXPORT_SYMBOL vmlinux 0x81f6f1ce unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x823365f0 security_path_mknod +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x823b12e4 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82907e2c filemap_flush +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x82a853fd seq_vprintf +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82ae3e2a netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x82d9b5ce dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x82dd7462 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x831804a8 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x831b35cc nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x8329e6f0 memset +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x833ef40c swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x835fa6b2 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x836a3338 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x836d4136 proc_set_size +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8382e59a acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839863f9 noop_qdisc +EXPORT_SYMBOL vmlinux 0x839d72bc tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x83a963c5 sock_create_kern +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b25b81 vm_map_ram +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83dcd2d2 bdput +EXPORT_SYMBOL vmlinux 0x83f6f944 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x83fdacac simple_dir_operations +EXPORT_SYMBOL vmlinux 0x8404b527 ht_create_irq +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x840ce0c0 set_device_ro +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x8418df86 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x8445b22d textsearch_prepare +EXPORT_SYMBOL vmlinux 0x84770161 padata_do_serial +EXPORT_SYMBOL vmlinux 0x84a0e6a0 km_state_notify +EXPORT_SYMBOL vmlinux 0x84c368bf cdev_add +EXPORT_SYMBOL vmlinux 0x84c602b3 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x84e19f04 inet_frag_find +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x85428816 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x85562f81 dquot_disable +EXPORT_SYMBOL vmlinux 0x85583c1e find_get_entry +EXPORT_SYMBOL vmlinux 0x8564e3b8 inet_release +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x8589ae52 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x859fa73c __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x85a4ac31 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85da2498 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8615f4c1 pci_bus_type +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86588053 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x8658def8 fs_bio_set +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x86628308 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86790889 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x8683e3f4 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x86880c47 agp_backend_release +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868d3279 dev_crit +EXPORT_SYMBOL vmlinux 0x8692c90e sg_miter_skip +EXPORT_SYMBOL vmlinux 0x86947b5e cdev_init +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86ac9a61 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x86bd0caf file_update_time +EXPORT_SYMBOL vmlinux 0x86c068c5 __dax_fault +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86fcc3ea bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x8709bfd4 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x8709f9fb kfree_skb_list +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x874db63c mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x875aaccb padata_stop +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x8771dfe3 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x878763a2 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x87888c88 xfrm_register_mode +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 0x879a2bfa dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87c6cae5 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x87ec421e md_write_end +EXPORT_SYMBOL vmlinux 0x87f89ce0 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x87f8ff75 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x87ff33fa inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x882ba254 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x8843e808 __alloc_skb +EXPORT_SYMBOL vmlinux 0x886abccd default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x8878d626 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x88887832 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x88b32035 register_quota_format +EXPORT_SYMBOL vmlinux 0x88b585e7 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x88da17e7 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x88fef83d generic_update_time +EXPORT_SYMBOL vmlinux 0x89019ba9 sock_no_poll +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x89408da7 __free_pages +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8954da05 key_invalidate +EXPORT_SYMBOL vmlinux 0x898495b9 replace_mount_options +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a06b643 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a38c2f6 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4d4704 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x8a501b70 load_nls_default +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a713834 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x8a7b5a49 cdrom_open +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8acb3e65 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x8ad0747a pci_set_master +EXPORT_SYMBOL vmlinux 0x8b02f2bb mmc_start_req +EXPORT_SYMBOL vmlinux 0x8b134c44 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b5a30ed set_pages_wb +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b881d87 __d_drop +EXPORT_SYMBOL vmlinux 0x8b90b3dd tty_vhangup +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9ffdd0 mmc_erase +EXPORT_SYMBOL vmlinux 0x8ba01633 netif_napi_del +EXPORT_SYMBOL vmlinux 0x8bb299ac pnp_device_detach +EXPORT_SYMBOL vmlinux 0x8bba9f8a blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x8bbe831d textsearch_destroy +EXPORT_SYMBOL vmlinux 0x8bd52b7f new_inode +EXPORT_SYMBOL vmlinux 0x8bda7066 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x8bf174e8 cdrom_release +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1acf28 con_is_bound +EXPORT_SYMBOL vmlinux 0x8c310cd9 skb_trim +EXPORT_SYMBOL vmlinux 0x8c4881e3 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x8c4c9254 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x8c51dce6 sock_wfree +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6827bc write_one_page +EXPORT_SYMBOL vmlinux 0x8c6ce5dd blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x8c7023b5 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x8c74608e pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x8c7a529e dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x8c7ed5f3 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x8c8e5e64 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x8c99ef86 bio_copy_data +EXPORT_SYMBOL vmlinux 0x8c9ae486 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd4bb5e dquot_transfer +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cdbf3c0 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x8cfb4f41 security_mmap_file +EXPORT_SYMBOL vmlinux 0x8d2ec32c tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x8d3f170f i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x8d512f9c neigh_lookup_nodev +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 0x8dae8adf pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8db63b96 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x8db802d2 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e03a16e i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x8e082688 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e3928cf vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x8e449af8 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x8e472046 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x8e70c4ce udp_add_offload +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e914604 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x8e9fe5ee xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb262e2 ata_port_printk +EXPORT_SYMBOL vmlinux 0x8eb7f3b0 param_array_ops +EXPORT_SYMBOL vmlinux 0x8eb8f98b phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x8ed469a1 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x8ee1849c ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x8eeb894b blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x8f079900 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x8f10a52e locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f289fdd __ht_create_irq +EXPORT_SYMBOL vmlinux 0x8f2f61a1 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x8f479e99 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x8f649f74 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x8f89a4ae ps2_drain +EXPORT_SYMBOL vmlinux 0x8f922a5a uart_suspend_port +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa354f7 make_bad_inode +EXPORT_SYMBOL vmlinux 0x8faf179e unlock_page +EXPORT_SYMBOL vmlinux 0x8fb416fc poll_initwait +EXPORT_SYMBOL vmlinux 0x8fb84dc6 send_sig_info +EXPORT_SYMBOL vmlinux 0x8fbe6b39 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x8fc8d212 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x8fe35593 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90081a0c netpoll_setup +EXPORT_SYMBOL vmlinux 0x900cdbfe netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x90139a14 would_dump +EXPORT_SYMBOL vmlinux 0x901cf990 kill_block_super +EXPORT_SYMBOL vmlinux 0x901ef1be PDE_DATA +EXPORT_SYMBOL vmlinux 0x901f9f41 nf_log_packet +EXPORT_SYMBOL vmlinux 0x9034864d serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x9034d246 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x90442424 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x904c72f8 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x90747867 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x908869e9 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x9089ed45 serio_close +EXPORT_SYMBOL vmlinux 0x90a7230c __seq_open_private +EXPORT_SYMBOL vmlinux 0x90bab828 follow_down +EXPORT_SYMBOL vmlinux 0x90c1d44a pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c94bb9 vfs_writev +EXPORT_SYMBOL vmlinux 0x90cc7ac8 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x90e412ab seq_file_path +EXPORT_SYMBOL vmlinux 0x90eeee5f netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x9140f663 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x91634004 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917df4e5 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x9186c8b8 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x91907c83 tcf_register_action +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91b6f4fc inet_shutdown +EXPORT_SYMBOL vmlinux 0x91bd2907 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x91bfb973 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x91eb5fb0 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x91f272d2 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x91f52912 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x91fb2fa0 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x91fd8b94 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x9224315e __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9244f26e __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x92463817 security_path_link +EXPORT_SYMBOL vmlinux 0x924c63cd __frontswap_test +EXPORT_SYMBOL vmlinux 0x9252c2a4 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x92590389 generic_write_checks +EXPORT_SYMBOL vmlinux 0x925c0049 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x9274a9de flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x927d0975 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x92a5431a ip_ct_attach +EXPORT_SYMBOL vmlinux 0x92a87fe7 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b8c897 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x92baf39f sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x92bdd1dd mmc_free_host +EXPORT_SYMBOL vmlinux 0x92c0dc52 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fc9d9f page_symlink +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x936a595e netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x936eaa55 lookup_one_len +EXPORT_SYMBOL vmlinux 0x936f9f16 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93795a9e setup_arg_pages +EXPORT_SYMBOL vmlinux 0x93845dea dquot_destroy +EXPORT_SYMBOL vmlinux 0x93967611 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x93b26e8a gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c200a7 input_allocate_device +EXPORT_SYMBOL vmlinux 0x93ca85e2 __init_rwsem +EXPORT_SYMBOL vmlinux 0x93ea6d1c param_ops_uint +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940eb6a9 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x943ef4d1 bh_submit_read +EXPORT_SYMBOL vmlinux 0x944003ed tcp_check_req +EXPORT_SYMBOL vmlinux 0x944df9ec xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x947d0919 devm_iounmap +EXPORT_SYMBOL vmlinux 0x9480cc53 done_path_create +EXPORT_SYMBOL vmlinux 0x9489f318 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a82dfc adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94cf77c6 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x94ec45ae __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x952f3720 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x95369e83 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954c8182 should_remove_suid +EXPORT_SYMBOL vmlinux 0x955bca06 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x95844c5b bprm_change_interp +EXPORT_SYMBOL vmlinux 0x95b5c622 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95c27598 address_space_init_once +EXPORT_SYMBOL vmlinux 0x95c84141 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x95cd9686 set_wb_congested +EXPORT_SYMBOL vmlinux 0x95e36043 lease_modify +EXPORT_SYMBOL vmlinux 0x95f9ca98 inode_init_owner +EXPORT_SYMBOL vmlinux 0x95ffbd6e dma_free_attrs +EXPORT_SYMBOL vmlinux 0x9603a921 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x96198838 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x961efbbc __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x962645d3 devm_request_resource +EXPORT_SYMBOL vmlinux 0x96547771 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9686db67 set_disk_ro +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 0x96da2005 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x96db9703 eisa_driver_register +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x974cff1c tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x974dbd90 phy_stop +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975be3c7 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x97794e18 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x9779a20b mdiobus_write +EXPORT_SYMBOL vmlinux 0x977c7b55 input_flush_device +EXPORT_SYMBOL vmlinux 0x978dafc4 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97c486ea tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97dcef29 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97f1dd81 ilookup +EXPORT_SYMBOL vmlinux 0x97f5b6a1 seq_putc +EXPORT_SYMBOL vmlinux 0x9806d2c3 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x980b5240 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x980e2277 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98340070 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x983731a9 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x98449cc9 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9874d138 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x9889f027 load_nls +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x990ba63f pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x991859dc neigh_event_ns +EXPORT_SYMBOL vmlinux 0x992218fd tty_lock +EXPORT_SYMBOL vmlinux 0x99233c32 cpu_core_map +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x994f7275 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x99738e09 netif_rx +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99eb643e md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a224fd6 register_qdisc +EXPORT_SYMBOL vmlinux 0x9a24a10d mem_map +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a3e0515 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x9a4e5324 dma_ops +EXPORT_SYMBOL vmlinux 0x9a66b0a6 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a730670 put_io_context +EXPORT_SYMBOL vmlinux 0x9a80b0fb skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x9a8329d2 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x9a97726d tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x9acca6ed vfs_mknod +EXPORT_SYMBOL vmlinux 0x9ae997d2 md_integrity_register +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afecf72 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x9b13a165 generic_file_open +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4306a7 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x9b4725a8 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b9c5c09 scsi_ioctl +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 0x9bdf7ca9 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9befa13e cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x9bfaf571 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x9c19a0b3 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c50c274 eth_header_parse +EXPORT_SYMBOL vmlinux 0x9c5bf382 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x9c5c132c mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x9c77fd44 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x9c785070 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x9c7b480d remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x9c7e62b6 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x9c86ca4e flush_old_exec +EXPORT_SYMBOL vmlinux 0x9c90275f simple_write_end +EXPORT_SYMBOL vmlinux 0x9c936df9 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x9ca963f7 module_put +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cc96523 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x9cdff757 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x9ce169af neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9ce5be62 phy_find_first +EXPORT_SYMBOL vmlinux 0x9ceed2c1 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x9d04388b blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d12be49 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3efa8e nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x9d4ac94e d_path +EXPORT_SYMBOL vmlinux 0x9d5cf3f6 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x9d62ef7c agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x9d676f0f i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x9d74ee67 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x9d8f8146 flush_signals +EXPORT_SYMBOL vmlinux 0x9dc04928 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x9dc901ad unregister_filesystem +EXPORT_SYMBOL vmlinux 0x9dc9d9ac devm_ioport_map +EXPORT_SYMBOL vmlinux 0x9dcdf1cf nf_hook_slow +EXPORT_SYMBOL vmlinux 0x9dd2c86d blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x9dec74ce dquot_alloc +EXPORT_SYMBOL vmlinux 0x9dfab3a5 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2f1286 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x9e302d35 pcix_get_mmrbc +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 0x9e5ea993 param_set_charp +EXPORT_SYMBOL vmlinux 0x9e5fd349 sock_i_uid +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9ea0c91f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9eaada5d pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x9eaf1c99 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecda6fd blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x9ed5bfb4 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x9efd9d21 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x9f04bb62 icmp_send +EXPORT_SYMBOL vmlinux 0x9f34878f sk_stream_error +EXPORT_SYMBOL vmlinux 0x9f422e9b wireless_spy_update +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f546c8b skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x9f659ddc skb_put +EXPORT_SYMBOL vmlinux 0x9f73de76 down_read +EXPORT_SYMBOL vmlinux 0x9f7a2c0c neigh_update +EXPORT_SYMBOL vmlinux 0x9f8b99e7 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x9f8e59d1 tty_free_termios +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fde2b93 __kernel_write +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe3d033 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0037d90 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xa0095fc6 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa00b09ad dcache_dir_open +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04770ca find_get_pages_tag +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 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0991c72 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xa099514e posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c225c9 dquot_commit +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f8a7c1 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa10476e7 ipv4_specific +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1252cb2 register_key_type +EXPORT_SYMBOL vmlinux 0xa138510c vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xa13bc915 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa143162a sock_edemux +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa161d3fa input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xa1621333 cont_write_begin +EXPORT_SYMBOL vmlinux 0xa17e17d4 blk_rq_init +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c3cc7d eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99426 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xa1f43a4c blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xa1fc7af3 key_revoke +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20a8fe6 inet_getname +EXPORT_SYMBOL vmlinux 0xa20d4437 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xa22fb384 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xa26193ed dev_base_lock +EXPORT_SYMBOL vmlinux 0xa26798c4 bio_endio +EXPORT_SYMBOL vmlinux 0xa27432bd xfrm_lookup +EXPORT_SYMBOL vmlinux 0xa27aa000 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a23698 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xa2b8e6cb tty_do_resize +EXPORT_SYMBOL vmlinux 0xa30cc019 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xa3182288 mmc_put_card +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa31f14a8 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xa31f5fe2 __skb_checksum +EXPORT_SYMBOL vmlinux 0xa323de8c inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xa33de50f pci_release_regions +EXPORT_SYMBOL vmlinux 0xa346b483 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xa34bb2e9 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa361e7b1 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa38a08e8 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xa3a00321 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xa3aac806 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xa3c48410 page_address +EXPORT_SYMBOL vmlinux 0xa3dcbfd3 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xa3fdcd37 request_key_async +EXPORT_SYMBOL vmlinux 0xa4032e64 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xa412e03c netdev_printk +EXPORT_SYMBOL vmlinux 0xa4227ce9 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa4274881 bio_split +EXPORT_SYMBOL vmlinux 0xa428a076 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa4540ec2 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xa4553fd3 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xa45c94c7 __get_page_tail +EXPORT_SYMBOL vmlinux 0xa461bc5c phy_print_status +EXPORT_SYMBOL vmlinux 0xa4634b14 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4776018 netdev_crit +EXPORT_SYMBOL vmlinux 0xa47b9451 param_set_uint +EXPORT_SYMBOL vmlinux 0xa49c76e3 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xa4a19d89 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c69678 register_console +EXPORT_SYMBOL vmlinux 0xa4cf35b0 sock_no_connect +EXPORT_SYMBOL vmlinux 0xa4d3eff2 poll_freewait +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e482b1 dev_get_stats +EXPORT_SYMBOL vmlinux 0xa5050167 nd_integrity_init +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa51d470c bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56618d7 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xa57dd530 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xa588efad dev_disable_lro +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5bae153 kernel_accept +EXPORT_SYMBOL vmlinux 0xa5bd56d7 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xa5fab78d blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa659c85f release_firmware +EXPORT_SYMBOL vmlinux 0xa65a5a73 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa679a1e8 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa69c4ac6 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xa6aa2551 bio_reset +EXPORT_SYMBOL vmlinux 0xa6abb30c skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xa6b10997 pci_bus_put +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6c438da simple_transaction_release +EXPORT_SYMBOL vmlinux 0xa6c4ae06 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xa6c5cc65 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74a148b bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xa76f3d44 pci_request_regions +EXPORT_SYMBOL vmlinux 0xa7735a3b agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa795ce7c ppp_input_error +EXPORT_SYMBOL vmlinux 0xa7ba0479 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7d9ae2d pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xa7f0b503 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82afa65 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa844da1c blkdev_put +EXPORT_SYMBOL vmlinux 0xa84cca55 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xa8563825 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xa860a106 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87d07b1 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xa89315f9 ata_link_printk +EXPORT_SYMBOL vmlinux 0xa8be3d53 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xa8ee951a devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa948f9af dget_parent +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9867dcf blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9cae391 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xaa151d3e vfs_setpos +EXPORT_SYMBOL vmlinux 0xaa26e41f _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xaa5037f7 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa66c5fd padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa69dd35 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa79a043 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xaa7bedc8 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaaa984e0 serio_interrupt +EXPORT_SYMBOL vmlinux 0xaab54109 vfs_statfs +EXPORT_SYMBOL vmlinux 0xaab691b7 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xaac99870 md_register_thread +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 0xaaf1e176 devm_free_irq +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab0adbd2 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xab154996 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xab4385da xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xab4a6d04 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xab5211e8 neigh_destroy +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 0xab7cdad2 genphy_config_init +EXPORT_SYMBOL vmlinux 0xab912a40 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xaba1dcd0 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabb220c7 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabedd328 mmc_unregister_driver +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 0xac38e688 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac6bd108 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xac9bb744 netlink_set_err +EXPORT_SYMBOL vmlinux 0xaca097d2 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xacc41f42 bio_clone_fast +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 0xad0637f8 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad21bf2a set_pages_uc +EXPORT_SYMBOL vmlinux 0xad282292 elv_rb_del +EXPORT_SYMBOL vmlinux 0xad285af4 clone_cred +EXPORT_SYMBOL vmlinux 0xad395717 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xad48d118 unregister_netdev +EXPORT_SYMBOL vmlinux 0xad5cf5cf eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadaf627c mapping_tagged +EXPORT_SYMBOL vmlinux 0xadb26d37 dev_mc_del +EXPORT_SYMBOL vmlinux 0xadd598bf n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xadd5e1a4 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xadee7b62 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae01868f acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae4122e5 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xae552cf5 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xae5644c5 mpage_readpages +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae850883 to_ndd +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae904636 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xae952eae dev_trans_start +EXPORT_SYMBOL vmlinux 0xae9d3334 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xae9e4b40 fb_pan_display +EXPORT_SYMBOL vmlinux 0xaea72fab abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb11ad7 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xaebe807c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaecf9548 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xaeebe315 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xaef55511 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xaf0c871d xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xaf377feb pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xaf37e2b4 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf6026a3 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf837788 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xaf88fd9b ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xaf99240d pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xafa81fc7 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xafcf1857 sock_no_bind +EXPORT_SYMBOL vmlinux 0xafe20110 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xaff86bfe nd_iostat_end +EXPORT_SYMBOL vmlinux 0xb0031025 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xb003bbea freeze_super +EXPORT_SYMBOL vmlinux 0xb0167fa7 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb01b6254 pnp_device_attach +EXPORT_SYMBOL vmlinux 0xb03d6f67 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xb0445900 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0624c38 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xb068b50f bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xb07f33ff proc_symlink +EXPORT_SYMBOL vmlinux 0xb08df5f6 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b1e654 sk_free +EXPORT_SYMBOL vmlinux 0xb0ca3550 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb0cce67c set_nlink +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0f5220c inc_nlink +EXPORT_SYMBOL vmlinux 0xb117cc32 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xb120732e __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13b0d35 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xb1435596 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xb14708b3 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb17da7ee jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xb1849adb devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb18c7f5c simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xb18cd512 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xb19bd58b mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xb1bd2bf7 handle_edge_irq +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 0xb1dcf168 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xb1f76241 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xb1ff54f1 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xb2180849 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb23729e4 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xb2388ab8 inet_accept +EXPORT_SYMBOL vmlinux 0xb253e8af swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2712c72 tcp_child_process +EXPORT_SYMBOL vmlinux 0xb29aba09 ip_options_compile +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2cb474b filp_open +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2e01f12 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xb2f4dd62 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb32c23d9 tty_register_device +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb3329f72 simple_open +EXPORT_SYMBOL vmlinux 0xb3399af0 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xb343f273 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xb34674c6 elevator_exit +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb3604174 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xb3913b20 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3e19781 tty_port_open +EXPORT_SYMBOL vmlinux 0xb3e49610 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xb3e60baf find_lock_entry +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fcc19f tty_port_init +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb438b724 backlight_device_register +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb44dbd25 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb49bb318 devm_clk_put +EXPORT_SYMBOL vmlinux 0xb49c0797 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xb4b14918 nd_device_register +EXPORT_SYMBOL vmlinux 0xb4c8a7f9 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xb4d46fda devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xb4e2c02c dquot_commit_info +EXPORT_SYMBOL vmlinux 0xb50681ee of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xb50a6a9c unlock_buffer +EXPORT_SYMBOL vmlinux 0xb5229392 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb543bfc7 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xb54be6b2 padata_start +EXPORT_SYMBOL vmlinux 0xb56bcd47 set_security_override +EXPORT_SYMBOL vmlinux 0xb571181e security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb589b452 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xb59b2cb8 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b09c27 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb5b3703e __scm_destroy +EXPORT_SYMBOL vmlinux 0xb5b42a42 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xb5c78f09 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb5e40985 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xb60e4370 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb635a544 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xb63773b6 mdiobus_register +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6804a7f proc_mkdir +EXPORT_SYMBOL vmlinux 0xb6827e97 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68dedae set_blocksize +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c285cd __getblk_slow +EXPORT_SYMBOL vmlinux 0xb6c8655e dump_align +EXPORT_SYMBOL vmlinux 0xb6d292fa rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xb6e41883 memcmp +EXPORT_SYMBOL vmlinux 0xb6e701f1 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb6f6cf66 dquot_operations +EXPORT_SYMBOL vmlinux 0xb6ff63cb bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xb744454f kern_unmount +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74c14ac vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb795f96f d_lookup +EXPORT_SYMBOL vmlinux 0xb797a228 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb79ff126 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xb7b08cff kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7d152c6 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb80923dc nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xb8092eb5 inode_change_ok +EXPORT_SYMBOL vmlinux 0xb8153a46 setup_new_exec +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb868faea framebuffer_release +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb88d9725 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb8ad36b5 bioset_free +EXPORT_SYMBOL vmlinux 0xb8b4d611 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8d2a284 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0xb8d4efb8 single_open +EXPORT_SYMBOL vmlinux 0xb8dfadc3 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb8e2dcad scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb923b134 generic_show_options +EXPORT_SYMBOL vmlinux 0xb942f078 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xb9791db1 __invalidate_device +EXPORT_SYMBOL vmlinux 0xb990817d from_kuid +EXPORT_SYMBOL vmlinux 0xb9d5eb88 dev_set_group +EXPORT_SYMBOL vmlinux 0xb9e025df pci_dev_driver +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba08e586 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xba1a7599 setattr_copy +EXPORT_SYMBOL vmlinux 0xba1c3eb4 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3ce05f tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xba3ee226 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba572589 param_get_string +EXPORT_SYMBOL vmlinux 0xba57d227 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xba9e86a1 param_ops_long +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb187954 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xbb34f846 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb36cca1 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xbb460337 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xbb537b7f task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb7d0f0b pm860x_page_bulk_read +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 0xbbbb451a _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbef41a9 loop_backing_file +EXPORT_SYMBOL vmlinux 0xbc1297a3 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0xbc167bc7 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc308599 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xbc435770 dump_stack +EXPORT_SYMBOL vmlinux 0xbc47a309 dma_supported +EXPORT_SYMBOL vmlinux 0xbc5075be audit_log_task_info +EXPORT_SYMBOL vmlinux 0xbc67d9d2 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xbc81f2b9 inet6_protos +EXPORT_SYMBOL vmlinux 0xbc98d0a3 __breadahead +EXPORT_SYMBOL vmlinux 0xbcb91d70 vga_con +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc4e014 dm_put_device +EXPORT_SYMBOL vmlinux 0xbcd7b393 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xbd2dbb61 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xbd333bf7 seq_read +EXPORT_SYMBOL vmlinux 0xbd48293e fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xbd4fc291 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xbd5f14e9 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xbd651707 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdac1660 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdd1a105 irq_to_desc +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbe00cbcc blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1b4f8c pci_set_power_state +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1ce53e kfree_put_link +EXPORT_SYMBOL vmlinux 0xbe20c293 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xbe20cfae i2c_release_client +EXPORT_SYMBOL vmlinux 0xbe4303b1 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xbe4a69d8 da903x_query_status +EXPORT_SYMBOL vmlinux 0xbe5a1633 free_buffer_head +EXPORT_SYMBOL vmlinux 0xbe876fc7 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbeb43d85 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xbeb9800d inet_sendmsg +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbec86bec inet6_release +EXPORT_SYMBOL vmlinux 0xbee6e055 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0e6c0e dquot_free_inode +EXPORT_SYMBOL vmlinux 0xbf1768c6 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xbf190684 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xbf270045 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xbf36106b fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xbf3aace8 d_alloc_name +EXPORT_SYMBOL vmlinux 0xbf4c54a8 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xbf614cda inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xbf680069 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb4cc33 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc4554b blk_integrity_register +EXPORT_SYMBOL vmlinux 0xbfe77b0f iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xbfe937fa iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffeac77 netdev_state_change +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc0207ddc keyring_search +EXPORT_SYMBOL vmlinux 0xc04bcbd4 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xc0575c21 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc06836ee keyring_alloc +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc076ac9d skb_clone +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0870656 revert_creds +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0c00ee1 I_BDEV +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0f14392 blkdev_get +EXPORT_SYMBOL vmlinux 0xc119f34d inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc1239b10 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xc12a2697 free_netdev +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc136c31a eth_mac_addr +EXPORT_SYMBOL vmlinux 0xc166f6e4 pipe_unlock +EXPORT_SYMBOL vmlinux 0xc17030a7 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xc17a5f15 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xc17d5898 rtnl_notify +EXPORT_SYMBOL vmlinux 0xc185c612 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xc1881691 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0xc1889faf pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xc19a623b ps2_init +EXPORT_SYMBOL vmlinux 0xc1b6bfc8 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xc1c8cc30 netdev_notice +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1da9b4a jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc26bfb35 scsi_print_result +EXPORT_SYMBOL vmlinux 0xc27cb1a1 mmc_get_card +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc28325d5 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc283a5c8 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xc28c0fa8 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xc28f1f7f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xc29f4e61 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xc2a92963 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b4ea29 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xc2d2e516 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xc2d5773d pci_enable_msix +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2db126a elv_register_queue +EXPORT_SYMBOL vmlinux 0xc2df327f register_gifconf +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f298b2 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2ff4cfd inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc3116d11 vfs_readv +EXPORT_SYMBOL vmlinux 0xc3176a65 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xc33a9e49 get_super_thawed +EXPORT_SYMBOL vmlinux 0xc35df35e sg_miter_next +EXPORT_SYMBOL vmlinux 0xc37e9b13 __break_lease +EXPORT_SYMBOL vmlinux 0xc3a06c03 sk_filter +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3adbc3e iov_iter_advance +EXPORT_SYMBOL vmlinux 0xc3ba1fb4 read_dev_sector +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3c53abf blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xc3d2a9b6 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xc3d558d7 dev_add_offload +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc40761c5 set_trace_device +EXPORT_SYMBOL vmlinux 0xc40f0295 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc42b69ec mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xc435ed50 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc445fdc5 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc44a5a28 param_get_short +EXPORT_SYMBOL vmlinux 0xc45b2610 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xc46fd63b atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xc47931ca jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xc47f8fce set_pages_nx +EXPORT_SYMBOL vmlinux 0xc497fe2f fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a2e5f4 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xc4a6e7d0 md_reload_sb +EXPORT_SYMBOL vmlinux 0xc4b4d797 update_devfreq +EXPORT_SYMBOL vmlinux 0xc4f76bd5 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc5462085 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xc54900e7 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc5551bbe lock_sock_fast +EXPORT_SYMBOL vmlinux 0xc579f861 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a1219f sock_recvmsg +EXPORT_SYMBOL vmlinux 0xc5a563f9 input_release_device +EXPORT_SYMBOL vmlinux 0xc5bcd716 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc5c5ac98 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e2e187 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60c6110 set_groups +EXPORT_SYMBOL vmlinux 0xc6229f46 seq_pad +EXPORT_SYMBOL vmlinux 0xc62bdae4 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xc6310cf8 write_inode_now +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc631d5b2 vfs_writef +EXPORT_SYMBOL vmlinux 0xc6438201 pnp_find_card +EXPORT_SYMBOL vmlinux 0xc64642bb send_sig +EXPORT_SYMBOL vmlinux 0xc64886ea pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc66175d5 file_open_root +EXPORT_SYMBOL vmlinux 0xc69ec1af uart_register_driver +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6cdf721 tty_set_operations +EXPORT_SYMBOL vmlinux 0xc6cee845 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xc6df25d7 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7465728 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7656e76 page_readlink +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 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc794820a dm_register_target +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79f3ce1 scsi_unregister +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a6d05a input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xc7b2103c deactivate_super +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f352fc max8998_update_reg +EXPORT_SYMBOL vmlinux 0xc7fbc910 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc809eef5 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xc80f0f96 netdev_change_features +EXPORT_SYMBOL vmlinux 0xc813d189 build_skb +EXPORT_SYMBOL vmlinux 0xc8206160 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc82cf509 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83a2084 get_disk +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc8423a2d lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84ab09d blk_run_queue +EXPORT_SYMBOL vmlinux 0xc864bd73 audit_log_start +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87fd91d jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xc8892b9f vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a31e0c __sb_start_write +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8ac4efc bio_chain +EXPORT_SYMBOL vmlinux 0xc8aecb45 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c9efc8 param_set_short +EXPORT_SYMBOL vmlinux 0xc8d18acb phy_attach +EXPORT_SYMBOL vmlinux 0xc8e66cc6 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xc8f4d8a0 account_page_redirty +EXPORT_SYMBOL vmlinux 0xc8f7c8eb locks_free_lock +EXPORT_SYMBOL vmlinux 0xc8f83e00 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xc90d4be3 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91c1f4f qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xc91ed20e padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xc9582c6d __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96a88ae blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xc9822bd2 vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9ac8fe8 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xc9b95786 blk_get_queue +EXPORT_SYMBOL vmlinux 0xc9de653d __register_chrdev +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1fb505 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xca2392fa mdiobus_read +EXPORT_SYMBOL vmlinux 0xca2d223c eth_header +EXPORT_SYMBOL vmlinux 0xca342f5a blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xca4dc854 ether_setup +EXPORT_SYMBOL vmlinux 0xca67c9e4 mount_single +EXPORT_SYMBOL vmlinux 0xca791ae8 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xca7c0e5b devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca8d8b9c ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcacfc3ef serio_reconnect +EXPORT_SYMBOL vmlinux 0xcad974aa bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xcaed7222 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb2b7146 netdev_emerg +EXPORT_SYMBOL vmlinux 0xcb3f69c9 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xcb501a62 registered_fb +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb80a05f rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xcb996b20 bio_add_page +EXPORT_SYMBOL vmlinux 0xcb9daf43 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xcba25f59 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xcbaa6b48 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb39a17 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xcbb4d4c5 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcd4ddf inet_offloads +EXPORT_SYMBOL vmlinux 0xcbe4a31c lookup_bdev +EXPORT_SYMBOL vmlinux 0xcbe7d1e4 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xcbe98329 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbfbedbc twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xcc126537 register_framebuffer +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc27b54e unlock_rename +EXPORT_SYMBOL vmlinux 0xcc3c862c ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xcc474b2f inet_del_protocol +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5aefa8 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xcc807f0f security_file_permission +EXPORT_SYMBOL vmlinux 0xcc835582 nf_log_register +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc965ab0 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xcc98830c dump_skip +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc2ad23 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xccc3d7b2 get_gendisk +EXPORT_SYMBOL vmlinux 0xccc6025e netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xcccb3d55 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xccd9d422 dev_err +EXPORT_SYMBOL vmlinux 0xcce15c4d cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd06ddc0 nf_afinfo +EXPORT_SYMBOL vmlinux 0xcd194c77 input_event +EXPORT_SYMBOL vmlinux 0xcd1aa377 param_get_invbool +EXPORT_SYMBOL vmlinux 0xcd235fe4 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd330c02 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xcd358575 fb_get_mode +EXPORT_SYMBOL vmlinux 0xcd440824 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xcd62e080 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0xcd68eb8e udp_proc_register +EXPORT_SYMBOL vmlinux 0xcd71fda7 scmd_printk +EXPORT_SYMBOL vmlinux 0xcd8d030b netpoll_print_options +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcdacc350 set_anon_super +EXPORT_SYMBOL vmlinux 0xcdbbad26 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc6befb dump_emit +EXPORT_SYMBOL vmlinux 0xcdd3deea pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0xcde167ce tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce2e6f02 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xce3689a1 kobject_del +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce49ecc9 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7168d8 get_fs_type +EXPORT_SYMBOL vmlinux 0xce730e26 skb_queue_head +EXPORT_SYMBOL vmlinux 0xce9e41e9 lockref_get +EXPORT_SYMBOL vmlinux 0xcea9cb4e vm_insert_page +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcebbe595 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xcebc1236 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xced8d0b4 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xcedfc84d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0795dd tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xcf20f795 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xcf2bb942 sk_capable +EXPORT_SYMBOL vmlinux 0xcf30cf08 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xcf534c60 dquot_initialize +EXPORT_SYMBOL vmlinux 0xcf6916d7 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf7e8ca2 module_layout +EXPORT_SYMBOL vmlinux 0xcf85d508 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xcf9092fb jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xcf9291a8 posix_lock_file +EXPORT_SYMBOL vmlinux 0xcfde753a blk_recount_segments +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcfe2417e dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xcfec06f0 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xcff82d38 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xcffce5e7 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xd020483a balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xd03e5ed5 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xd06654f3 bdi_init +EXPORT_SYMBOL vmlinux 0xd06884db xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd083aace agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd08a1fda jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xd099e2e3 kernel_connect +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bbfe0c iterate_mounts +EXPORT_SYMBOL vmlinux 0xd0c6687a iterate_fd +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0e11e68 scsi_host_put +EXPORT_SYMBOL vmlinux 0xd0e3840e inode_get_bytes +EXPORT_SYMBOL vmlinux 0xd0ea6601 ll_rw_block +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 0xd1241c47 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xd12cf4ab block_commit_write +EXPORT_SYMBOL vmlinux 0xd137647d splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xd14420cb pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd167e268 igrab +EXPORT_SYMBOL vmlinux 0xd17cede1 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xd17f4067 km_new_mapping +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1bbe8ce dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xd1c0d45a tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d26636 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1dbc846 pci_restore_state +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1fed9d5 blk_register_region +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd20a044a blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd2265de1 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xd23ea2ca do_splice_to +EXPORT_SYMBOL vmlinux 0xd246451d padata_add_cpu +EXPORT_SYMBOL vmlinux 0xd24ea7f6 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xd24f0ab0 netif_set_xps_queue +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 0xd26a8320 no_llseek +EXPORT_SYMBOL vmlinux 0xd276bd7b fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28f2ca6 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xd297419b blk_stop_queue +EXPORT_SYMBOL vmlinux 0xd2a63139 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2c62ed6 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd339b615 phy_init_hw +EXPORT_SYMBOL vmlinux 0xd3487e57 scsi_init_io +EXPORT_SYMBOL vmlinux 0xd36176ab pci_read_vpd +EXPORT_SYMBOL vmlinux 0xd367a561 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xd392a93d blk_peek_request +EXPORT_SYMBOL vmlinux 0xd39bd89f jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3cc91d4 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xd3d6ae41 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xd3ebd04d uart_add_one_port +EXPORT_SYMBOL vmlinux 0xd4099e9d ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xd42eec5c phy_disconnect +EXPORT_SYMBOL vmlinux 0xd43596f2 kern_path_create +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd48aa453 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd4963604 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xd49ad7f6 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xd49bff47 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xd4b83f21 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xd4c36a3c find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd500acdb agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd52e2047 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xd52f8513 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xd52fd7f8 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xd53c7f57 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xd541922d neigh_direct_output +EXPORT_SYMBOL vmlinux 0xd5438b82 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd55dcbd7 dcache_readdir +EXPORT_SYMBOL vmlinux 0xd59a2a16 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xd5e9d3b0 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xd5ed8f45 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5f593b6 set_user_nice +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627ad04 dump_trace +EXPORT_SYMBOL vmlinux 0xd6299733 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6570640 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xd65873f9 mutex_lock +EXPORT_SYMBOL vmlinux 0xd66d2222 kernel_bind +EXPORT_SYMBOL vmlinux 0xd67574d6 make_kgid +EXPORT_SYMBOL vmlinux 0xd6824a3f nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xd6861e6e seq_puts +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd694c4e9 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xd6aaa00e blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c635ef netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd71c8d01 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xd7271ace xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd757c9fd dev_mc_init +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd76e3d54 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xd773d068 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xd78b1a0f elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7abb144 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xd7bdc967 wake_up_process +EXPORT_SYMBOL vmlinux 0xd7cd7507 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xd7d853d5 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xd7dc1788 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e1da00 vc_resize +EXPORT_SYMBOL vmlinux 0xd7e204b3 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f84d7b nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xd800a50a sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xd82bce0c file_ns_capable +EXPORT_SYMBOL vmlinux 0xd840b963 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xd848254d dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xd84edcd4 pci_bus_get +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd88fccfb unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a5b66f stop_tty +EXPORT_SYMBOL vmlinux 0xd8a70b46 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8d2dd94 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ee7b15 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xd8fc5c55 tso_count_descs +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd91c9807 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd939e6a9 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xd941de9e devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd946e58c get_agp_version +EXPORT_SYMBOL vmlinux 0xd948881f tcp_make_synack +EXPORT_SYMBOL vmlinux 0xd94ffb74 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xd95b4b80 udp_seq_open +EXPORT_SYMBOL vmlinux 0xd95d72ec scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xd96907ca ip6_frag_match +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd972d201 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98cc839 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xd9a203fd blk_make_request +EXPORT_SYMBOL vmlinux 0xd9a27ac1 simple_release_fs +EXPORT_SYMBOL vmlinux 0xd9c345cf skb_copy +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e923a8 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xd9f957c1 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda182b9a agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xda1a1dcf phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xda1ec007 agp_enable +EXPORT_SYMBOL vmlinux 0xda3756e8 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7de909 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xda87c025 tc_classify +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 0xdac1ccc9 key_unlink +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad05e19 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xdb012ccb phy_start +EXPORT_SYMBOL vmlinux 0xdb1a751f qdisc_list_add +EXPORT_SYMBOL vmlinux 0xdb284cd1 sock_no_listen +EXPORT_SYMBOL vmlinux 0xdb2c5986 mntput +EXPORT_SYMBOL vmlinux 0xdb3efbb2 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb732161 kmap_to_page +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7b1ebd ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xdbaa6d64 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xdbbfbe9b iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xdbc486b9 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xdbc4b893 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xdbcfc449 eth_type_trans +EXPORT_SYMBOL vmlinux 0xdbd492a0 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xdbe6c5b7 blk_start_request +EXPORT_SYMBOL vmlinux 0xdc031e23 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0527d6 mount_subtree +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc458d86 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xdc48a900 pci_select_bars +EXPORT_SYMBOL vmlinux 0xdc48a93b register_sysctl_table +EXPORT_SYMBOL vmlinux 0xdc4e628c __napi_complete +EXPORT_SYMBOL vmlinux 0xdc511b69 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc5b44ca xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xdc5b4f7b clk_get +EXPORT_SYMBOL vmlinux 0xdc6d0361 d_splice_alias +EXPORT_SYMBOL vmlinux 0xdc7cdbf9 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xdc7f3ab4 tcf_em_register +EXPORT_SYMBOL vmlinux 0xdc88225c kmap_atomic +EXPORT_SYMBOL vmlinux 0xdc9132b8 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xdcaa1d04 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xdcef3ea3 irq_set_chip +EXPORT_SYMBOL vmlinux 0xdcf27547 update_region +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd3619e3 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xdd418079 agp_free_memory +EXPORT_SYMBOL vmlinux 0xdd779564 security_path_truncate +EXPORT_SYMBOL vmlinux 0xddb37d02 proc_dointvec +EXPORT_SYMBOL vmlinux 0xddb9495a pnp_find_dev +EXPORT_SYMBOL vmlinux 0xddc497d7 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xddd1641d kernel_getpeername +EXPORT_SYMBOL vmlinux 0xddd812c3 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde2b4580 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xde40dc30 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xde4a20f4 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xde4ebc94 phy_device_free +EXPORT_SYMBOL vmlinux 0xde51cbc4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xde54f313 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xde57af8b d_instantiate +EXPORT_SYMBOL vmlinux 0xde70ede0 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xde8a4fd3 input_open_device +EXPORT_SYMBOL vmlinux 0xde8c0ec0 tcp_prot +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9c05ab inet6_add_offload +EXPORT_SYMBOL vmlinux 0xded37f8f jbd2_journal_start +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 0xdf119b94 vlan_dev_real_dev +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 0xdf4a0ef8 block_truncate_page +EXPORT_SYMBOL vmlinux 0xdf4fc797 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5c817c sock_sendmsg +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf662822 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcae21b tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfd6b9d5 __quota_error +EXPORT_SYMBOL vmlinux 0xdfed69e0 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffe55af bdi_destroy +EXPORT_SYMBOL vmlinux 0xe017d5b1 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xe0366e61 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xe03a7e2e security_path_chown +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 0xe0748bfa tty_port_close_start +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0a75919 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0ac9584 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bc8cfc textsearch_unregister +EXPORT_SYMBOL vmlinux 0xe0d92a2b fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xe1008e8d cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xe10f9bf7 sync_inode +EXPORT_SYMBOL vmlinux 0xe11c078f inet_recvmsg +EXPORT_SYMBOL vmlinux 0xe11d1352 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xe11de2ad blk_fetch_request +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe145b606 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xe146bdf9 dev_notice +EXPORT_SYMBOL vmlinux 0xe14906bf blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xe1494afa __i2c_transfer +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 0xe1d0f9d1 __dst_free +EXPORT_SYMBOL vmlinux 0xe1db549e iov_iter_init +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 0xe2074b8f security_path_unlink +EXPORT_SYMBOL vmlinux 0xe22babd1 dev_addr_init +EXPORT_SYMBOL vmlinux 0xe239a3c6 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +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 0xe2a39841 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xe2cfd7f9 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2fb7db9 unregister_console +EXPORT_SYMBOL vmlinux 0xe30f7b7d mmc_can_erase +EXPORT_SYMBOL vmlinux 0xe3107af0 dentry_unhash +EXPORT_SYMBOL vmlinux 0xe3197208 proc_dostring +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe336f6ec sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe3410945 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xe3554051 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xe37212cd pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xe39a194c crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xe3a8a2d2 mmc_request_done +EXPORT_SYMBOL vmlinux 0xe3c56b96 kern_path +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3de216d tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xe3ece530 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xe419715f agp_find_bridge +EXPORT_SYMBOL vmlinux 0xe41b413b softnet_data +EXPORT_SYMBOL vmlinux 0xe42bca8c unregister_md_personality +EXPORT_SYMBOL vmlinux 0xe445db4a acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe45d2d2b seq_open_private +EXPORT_SYMBOL vmlinux 0xe45dee3a rt6_lookup +EXPORT_SYMBOL vmlinux 0xe4655197 iget_failed +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe49b35eb input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xe4d48ac8 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xe4ded130 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe4e3c659 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xe4f11319 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xe4fac66b genphy_resume +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe513ad24 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52d33c3 skb_clone_sk +EXPORT_SYMBOL vmlinux 0xe52e3f34 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe546f0cc udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xe556c3ff pci_get_device +EXPORT_SYMBOL vmlinux 0xe56413aa pnp_stop_dev +EXPORT_SYMBOL vmlinux 0xe57632ee netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5931edd mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xe5a02163 __devm_request_region +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d531e8 clear_inode +EXPORT_SYMBOL vmlinux 0xe5da3f15 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe5e11572 blk_finish_request +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f70607 devm_ioremap +EXPORT_SYMBOL vmlinux 0xe5ff06e6 filemap_fault +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe62c60d8 bio_advance +EXPORT_SYMBOL vmlinux 0xe64542b1 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe65b863f vga_client_register +EXPORT_SYMBOL vmlinux 0xe666e4b3 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe6688bd3 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xe6856751 iput +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69b293f kset_unregister +EXPORT_SYMBOL vmlinux 0xe6bda532 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe6e657b4 finish_open +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f3a780 register_netdev +EXPORT_SYMBOL vmlinux 0xe6f62a92 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe71b6085 skb_append +EXPORT_SYMBOL vmlinux 0xe74707d7 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xe7488df1 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xe7580c0f skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xe7694517 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xe76d94ab vme_lm_request +EXPORT_SYMBOL vmlinux 0xe76fe8aa nd_device_unregister +EXPORT_SYMBOL vmlinux 0xe772a08d sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xe77bd817 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xe77d389a gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe7988b3c param_ops_bool +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 0xe7bf642e mpage_readpage +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e8b9d4 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xe7edc0a0 init_net +EXPORT_SYMBOL vmlinux 0xe7f51af7 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xe7fdd84e nf_getsockopt +EXPORT_SYMBOL vmlinux 0xe817d39c tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe831fdd0 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xe83bd1e1 may_umount_tree +EXPORT_SYMBOL vmlinux 0xe8411cc1 rtnl_link_get_net +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 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8db6d91 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xe90ec4f4 generic_writepages +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe921049c pci_map_biosrom +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 0xe95f64bf netlink_net_capable +EXPORT_SYMBOL vmlinux 0xe96bf41f i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xe980704e __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe99ec418 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xe99fee30 md_error +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9b3d951 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xe9bd00af tty_unlock +EXPORT_SYMBOL vmlinux 0xe9c4b65b phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xe9d4dea4 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xe9f4f129 block_write_end +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea17eda1 follow_pfn +EXPORT_SYMBOL vmlinux 0xea1da58a skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xea27a032 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xea33318f fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xea5779ad ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xea733032 end_buffer_async_write +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 0xeabe3d8d sock_wmalloc +EXPORT_SYMBOL vmlinux 0xeac5531c eth_header_cache +EXPORT_SYMBOL vmlinux 0xead63325 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xeae137e6 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaf1aa48 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xeb024bf3 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xeb0da44c param_get_bool +EXPORT_SYMBOL vmlinux 0xeb0e157c bdi_register_dev +EXPORT_SYMBOL vmlinux 0xeb27d6d6 tty_write_room +EXPORT_SYMBOL vmlinux 0xeb289f34 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb38d29a __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xeb38ec0a blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb7b5e3a pci_save_state +EXPORT_SYMBOL vmlinux 0xeb7d055d vfs_whiteout +EXPORT_SYMBOL vmlinux 0xeb7d2059 sync_filesystem +EXPORT_SYMBOL vmlinux 0xeb9170d1 proc_set_user +EXPORT_SYMBOL vmlinux 0xebc993d2 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec197852 dev_mc_add +EXPORT_SYMBOL vmlinux 0xec19c648 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1c8b8e sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xec22ae97 vfs_getattr +EXPORT_SYMBOL vmlinux 0xec3999e2 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec66fe74 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xec687cd7 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xeca3f929 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xeca8b756 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xecb425e8 input_reset_device +EXPORT_SYMBOL vmlinux 0xecb9c60a unlock_new_inode +EXPORT_SYMBOL vmlinux 0xecbb2d45 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecddf446 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xed292cce elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xed316fcc neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xed41e9be mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xed504642 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed7eccb4 bioset_create +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed959077 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb62635 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xedb86b02 blk_put_request +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd968b component_match_add +EXPORT_SYMBOL vmlinux 0xedbf17d5 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc60aae tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xeddbf3e4 simple_rmdir +EXPORT_SYMBOL vmlinux 0xee1b16d4 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xee1c1e73 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xee22c25b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3774f1 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xee476319 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xee686f48 cad_pid +EXPORT_SYMBOL vmlinux 0xee72606f fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xee74ae4c padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee8d8c3d do_SAK +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea66d87 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeba125c blk_put_queue +EXPORT_SYMBOL vmlinux 0xeed06480 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xeee22897 agp_create_memory +EXPORT_SYMBOL vmlinux 0xeee41531 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xeeefe45b __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef6c810 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xef184e3f max8925_set_bits +EXPORT_SYMBOL vmlinux 0xef4825f9 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xef4df01d fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xef6f77fb __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xef9099e0 posix_test_lock +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefa4d398 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xefa5aaa5 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd7bc09 dma_set_mask +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 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0620386 tty_throttle +EXPORT_SYMBOL vmlinux 0xf06457eb __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0b743e2 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xf0c48a8e unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +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 0xf138cad3 sock_rfree +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf1433423 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1613c7a nf_log_set +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf19504f1 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f7acd9 __ps2_command +EXPORT_SYMBOL vmlinux 0xf1f861b9 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xf20ac160 input_inject_event +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf267b92c mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xf28d7ae0 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2b1b3f9 param_get_ullong +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c707ac console_start +EXPORT_SYMBOL vmlinux 0xf2cb5d8a bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xf2e1224d __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf2e28e89 from_kgid +EXPORT_SYMBOL vmlinux 0xf2f28320 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xf2faeacb dquot_drop +EXPORT_SYMBOL vmlinux 0xf2ffa69f i2c_verify_client +EXPORT_SYMBOL vmlinux 0xf3021be3 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0xf3080b04 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3199512 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xf31bc0ba dev_activate +EXPORT_SYMBOL vmlinux 0xf31fa15d napi_gro_receive +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf33d0b03 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xf342287b misc_deregister +EXPORT_SYMBOL vmlinux 0xf34480e1 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34a10c5 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35c998d alloc_file +EXPORT_SYMBOL vmlinux 0xf367d112 ps2_end_command +EXPORT_SYMBOL vmlinux 0xf367f657 pci_enable_device +EXPORT_SYMBOL vmlinux 0xf3725b3f sock_i_ino +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38b8950 inet_bind +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf396ec85 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3a220c2 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xf3ad3c0f __pagevec_release +EXPORT_SYMBOL vmlinux 0xf3bff403 clk_add_alias +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3ec11a2 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xf3fdef1d eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf41306a6 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xf4177ab8 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xf41fd970 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xf4286f55 input_grab_device +EXPORT_SYMBOL vmlinux 0xf42a263f __pci_register_driver +EXPORT_SYMBOL vmlinux 0xf42e6e9d vfs_fsync +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4649ec4 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf475edde sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xf483a399 swiotlb_unmap_sg +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 0xf4ddc780 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xf4e1ae07 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf510d54c vmap +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf52c3c56 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5533345 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xf5695bc9 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5ba1004 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5eef731 input_set_keycode +EXPORT_SYMBOL vmlinux 0xf6068b1b scsi_add_device +EXPORT_SYMBOL vmlinux 0xf621bb7d queue_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xf62fa8c8 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6396d69 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xf64749d9 scsi_host_get +EXPORT_SYMBOL vmlinux 0xf6528f51 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67d4000 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf690ea38 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf6a2a1dd i2c_transfer +EXPORT_SYMBOL vmlinux 0xf6a3cd23 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xf6aab068 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c91867 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xf6cf511f mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xf6dbc4cd __serio_register_driver +EXPORT_SYMBOL vmlinux 0xf6e3f3b6 make_kuid +EXPORT_SYMBOL vmlinux 0xf6eb94b5 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f071df rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xf6f2eafa tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf71fafc5 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf72ef7cc mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xf7313ee5 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xf733d64c scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf76df7a3 search_binary_handler +EXPORT_SYMBOL vmlinux 0xf788424d register_sysctl +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7a6db24 __frontswap_load +EXPORT_SYMBOL vmlinux 0xf7e23469 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xf8050fac acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8138f9e udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83a00bd uart_match_port +EXPORT_SYMBOL vmlinux 0xf83ec7b3 param_get_ulong +EXPORT_SYMBOL vmlinux 0xf8525a43 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xf8534fa8 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xf853e2f7 filp_close +EXPORT_SYMBOL vmlinux 0xf85b62a3 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xf860e4e3 override_creds +EXPORT_SYMBOL vmlinux 0xf877e244 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf88f6672 __serio_register_port +EXPORT_SYMBOL vmlinux 0xf89a4405 touch_buffer +EXPORT_SYMBOL vmlinux 0xf8a1cb7e ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xf8a8d1f0 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xf8c342f4 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xf8cb04ff get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xf8d2eea1 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xf8d45c66 put_tty_driver +EXPORT_SYMBOL vmlinux 0xf8d7b710 icmpv6_send +EXPORT_SYMBOL vmlinux 0xf8dc545b nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xf90d982b ip6_xmit +EXPORT_SYMBOL vmlinux 0xf92f7928 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93a03e1 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xf9413c49 prepare_binprm +EXPORT_SYMBOL vmlinux 0xf944c35c remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xf9652e2f netif_carrier_off +EXPORT_SYMBOL vmlinux 0xf970ac40 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xf970cfda scsi_scan_host +EXPORT_SYMBOL vmlinux 0xf9712094 dst_destroy +EXPORT_SYMBOL vmlinux 0xf979706a xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xf97e0cd3 single_open_size +EXPORT_SYMBOL vmlinux 0xf97e9bab scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xf98c6bee sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c2a2b1 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xf9cbd230 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xfa06d2fa sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xfa3bf0a1 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xfa53833d generic_perform_write +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa692427 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xfa692cb8 param_set_long +EXPORT_SYMBOL vmlinux 0xfa74695c pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xfa788469 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xfa8862f0 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xfa8d91b0 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xfa90640b dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xfa9be19c blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xfab67860 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xfac26f20 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xface03a0 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xfaced743 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xfad6f80e netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xfad70258 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xfadbee5f alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xfae4bc34 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf33d7d inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xfaf92a80 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb0a6e69 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xfb0d595d dev_load +EXPORT_SYMBOL vmlinux 0xfb11eb23 __vfs_write +EXPORT_SYMBOL vmlinux 0xfb1a7420 input_register_handle +EXPORT_SYMBOL vmlinux 0xfb1f3806 may_umount +EXPORT_SYMBOL vmlinux 0xfb24e0d4 pci_dev_put +EXPORT_SYMBOL vmlinux 0xfb421696 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb99a118 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad25c0 netdev_features_change +EXPORT_SYMBOL vmlinux 0xfbc074e0 fget +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc7027a cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xfbd6b6b0 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xfbd71298 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0beefe skb_push +EXPORT_SYMBOL vmlinux 0xfc21ecef generic_setlease +EXPORT_SYMBOL vmlinux 0xfc3757c2 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xfc37f5fa t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3cc9e3 sk_common_release +EXPORT_SYMBOL vmlinux 0xfc3ffa31 key_link +EXPORT_SYMBOL vmlinux 0xfc483cc3 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xfc4eca55 nf_reinject +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc57fa54 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xfc5814d4 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc7239dd blk_start_queue +EXPORT_SYMBOL vmlinux 0xfc7724e6 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc879df0 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xfc9ee859 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xfca14793 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd2ec69 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xfce78e12 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0433f2 kset_register +EXPORT_SYMBOL vmlinux 0xfd0a66b7 console_stop +EXPORT_SYMBOL vmlinux 0xfd1541c5 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd3bbed2 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xfd8b3b04 make_kprojid +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda789d0 blk_end_request +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc179ae devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xfdc6439e eth_validate_addr +EXPORT_SYMBOL vmlinux 0xfde33aad __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xfdf52b66 bdi_register +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfdfe0b38 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xfe01decc mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe10e54f sock_no_mmap +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe1e9dc7 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xfe2991e6 ppp_input +EXPORT_SYMBOL vmlinux 0xfe383175 inet_ioctl +EXPORT_SYMBOL vmlinux 0xfe58f1b1 keyring_clear +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe892684 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xfe8be4d5 bd_set_size +EXPORT_SYMBOL vmlinux 0xfe95e2de blk_execute_rq +EXPORT_SYMBOL vmlinux 0xfe964a6a sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfea93f5d input_unregister_device +EXPORT_SYMBOL vmlinux 0xfeb5a53b tcp_disconnect +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfed225ec current_fs_time +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfef20224 fb_set_var +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfefdaab5 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xff1743d8 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff20ebca free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xff24b087 generic_setxattr +EXPORT_SYMBOL vmlinux 0xff3bb80f pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff490dcb blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xff56026e sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xff577e9e seq_lseek +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff74bcb6 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff8e8db9 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xff957cb7 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa58cf6 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xffc55954 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffed262c bio_map_kern +EXPORT_SYMBOL vmlinux 0xfff97c8d dma_pool_create +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 0x42dede0e glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x4a472489 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8624e1a7 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x89889881 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 0xce740192 glue_cbc_encrypt_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 0x055b0998 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07fa5e53 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x096d3ac1 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0aa395c7 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f353d58 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11ba4496 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1343c7a2 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14663bde kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x149116f1 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x151f5e8a kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1602fcc6 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1651db51 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x16fda866 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x17a03b3c kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e257ab __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1936ea6b kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x19b784fe reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a4342a5 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1acf8a15 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1deeb00a reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e33bfca kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f5be988 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x213a5cfe kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x22ca61c2 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2371d50b kvm_emulate_hypercall +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 0x2a321cee x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2e6b95ad kvm_write_guest_page +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 0x35049ce0 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38f1b5ff kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ab895e7 kvm_debugfs_dir +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 0x3e9c08d4 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ee59a92 __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x418dcc00 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41bdffdc kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x47be3362 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a588ee6 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a6c4b2a kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4bb9da51 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4cdf1d92 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d223515 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d7db319 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d9ef22d gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4f5db66e kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54602fb8 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5492f32d kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54af311f kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x559193e3 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x55ca91d3 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57004952 kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x571549f9 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59b99dc0 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5cf651fc kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ef9ed14 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6156aec3 kvm_mtrr_get_guest_memory_type +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 0x67cfb092 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a132e7c load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a324ec9 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c75e324 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6d5410b8 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6d76923e kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6e76e034 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6ebdcdd1 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6fa8e1ad __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x700e11e6 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70dbf984 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74419352 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x749b1378 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x762a779c kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76dd9e2e kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x77cc85ba kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7843e880 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x78c8e7c9 kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7b314d72 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7bd473d1 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c12b093 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f249516 kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80800f07 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8441b67d kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84ceb28c __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x85473c91 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86877d08 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8709a166 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87b0ad0e kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87c23a1f kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87f79e2a kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88034875 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x886c75dc kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8bb03e6e __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8d543a64 kvm_release_page_clean +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 0x8e820609 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ec4ef6e x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ef383a2 kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x95a05cb2 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9684deb6 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x97df91c8 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c57bc6b reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9cc98b57 cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9da84e3e kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ec0ef67 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa45598f3 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa8e63a82 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa47c389 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac7c868 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab38e8bb kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab92cc8b kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +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 0xb53b9ea8 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb77cd4ca kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba98644a mark_page_dirty +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 0xbd6becd1 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbda196f4 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbec39fdf kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf05ab76 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbfe398c8 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc0dc6a6f kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc10bd55c kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1c2f046 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1cba022 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3c79bd9 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5033c35 kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5266ae1 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb67ce10 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce486da7 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce74bc45 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce7dd280 kvm_arch_unregister_noncoherent_dma +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 0xd1fbc0da gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd44449d6 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd48c8f21 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd610ade9 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd88ec9c8 kvm_vcpu_gfn_to_pfn_atomic +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 0xd9cc6fde kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdad7aae4 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe125dde1 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe154f65d kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe3c68b27 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe5682c99 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8fe62b7 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9790e86 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9f1f427 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef0da9e9 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf192b83e kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf1dab9ed kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf38496ff kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf3b198e6 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf80620d4 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x0a6b6ae0 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x21894607 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x412e59a1 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x8dbc30cf ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf4455188 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf4bad308 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xfbe8535d ablk_exit +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x142b37af af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x1e055914 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x387df623 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x398b642a af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x3ca75684 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x5196e83c af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x5661abc1 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x881fc938 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xb6380237 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xe8863ee7 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 0x04d2449d async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x20f628cf async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x69fcba1e async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xf89e90a7 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xf9959469 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 0x2202bc61 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 0xa5d1214f cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x0a8f8fdc 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 0x3cc0a2ac cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x3eebbfce cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x4a57750c cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4de6192f cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x944d37e6 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa1459d03 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa88d2912 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xb3f9286b cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xd8dfb997 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xf81779c5 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0xa46e199b 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 0x7ad3c287 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x09e1b819 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x61ac47a7 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x78467c47 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xba5c6b55 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc1c8cb7f shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd297131c mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdeaa5e34 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xfea024ff 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 0x8853f387 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 0x92023325 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x6de4f6de xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x156f56b0 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x87aa95e9 acpi_nfit_attribute_groups +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 0x00c82565 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x02b0321f ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1b667f2d ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1d7258e2 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x23b09c91 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x260bba62 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2829979c ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x311c04af ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x60fcfc06 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7fd29683 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x81f6d4f8 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x84800ae8 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x93acfe4f ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9f9ec3a5 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb5021d09 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbc5d45e7 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc70325fb ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xccdef59e ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd0403bf7 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdc16f34d ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf07b32b9 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfd42da84 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x19a47c29 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x1c5be9f3 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x1c5f376f ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x21e335b3 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2b457765 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x33d7cd51 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x57b2cb85 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5a58b73b ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8d55562d ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xac98e6d8 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb95514a9 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd3d332dc ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xdf496bd1 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xd775e49e __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 0x16c4bef8 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x37d977e6 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x3c547c11 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x632fc4e9 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6ef6a14b btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xcef3123e btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3e54c90c btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4d26fd9d btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0e50fbf4 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2718c736 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2eb9b4e1 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5b503120 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x69a4ff2d btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x770d4f33 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x923ce657 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa433cd16 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa761f7fb btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd780e449 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf3efeba7 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x1dbef7a1 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 0x92fea2f6 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 0xcfa6a154 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0770abe0 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x122f77c6 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1bbb528f edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2bbc2869 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x38c3e6bd edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x49b6d33a edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4bc6ff64 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x634422c9 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x84a4b522 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8848be98 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa8be99a9 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb01e7a0c edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbf7d5bd0 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc420b6cf edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xce4e4406 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd6b6e678 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdaaf3004 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe31550c1 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe3f4cda8 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xef77e26a edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf9e75e92 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfbca6acf edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfc58dbd2 edac_pci_del_device +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 0x00db1516 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xaf7956a3 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xea7c348f 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 0x27b31254 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x5c38d8b5 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 0xfaa1ac9b ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x01b875d1 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0309713f hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x07dadff1 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09a67889 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b3b7671 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1055334d hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x180b4c27 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1ab242e4 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1bdc50ee hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1ecdf348 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30157cc9 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x43aa8c51 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5b646a12 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5e66204d hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x61635cc5 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6acda28d hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x81915e6d hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ae4a7b5 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b2dbcf7 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9047846c hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x96c0fd98 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9ab58b4c hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9ec21f67 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9fc2fcff hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa4703b77 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa5a182c hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4c7aba7 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9976f70 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2151a6d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd50330f5 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd6ebff0f __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe797fc7e __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec2b0e2f hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeeecd17d hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf24148ec hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf30924e9 hid_input_report +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 0xc678ea8e roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x2c9744b2 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x395d7f7e roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8ef86da0 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x98403d55 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfa21da4c roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfe7365ff 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 0xb2f5a9bf 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 0x0202cfe3 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x187d650b vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1fee923b vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x23b3ed4a vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x315e3012 vmbus_sendpacket_pagebuffer +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 0x70b8d203 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x7a3cfefd vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9dea23b6 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa7f6f02c vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc7ee28a5 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xd4b49272 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xd75a511c vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe78387b3 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf031bf09 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf734301c vmbus_allocate_mmio +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 0x082c3fe7 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0ccb0727 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x21c0c913 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2b6f604b pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4e9aaa20 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6239e8e9 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6d0d810e pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7db3855e pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa9b6f44a pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xab4deaa8 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc57f22b5 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc994debf pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd1f7fbc6 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd2556631 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf73422a5 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x06399167 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3a2dd6ca i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x42125d6d i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x44ead5c2 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 0x913e66f5 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa1151230 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc1f3fb46 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc4f87b55 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xca1d82ae i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x3b20fd24 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x7a5d1237 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x9c2a4e2d i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x2d930265 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x47687570 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x14cb036e ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x209de45a ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x418def3a ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x42de63c0 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7f76d39f ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8e9e93ed ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xac79f9a6 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe0d393c8 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe5ef77f1 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 0x29079578 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4cd67b95 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5ff97e9f adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x616b39e9 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x790bd558 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x82512ba4 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb6f498d4 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbbcd746b adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc3b511fa adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xeef0719c adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf8c4a526 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfed916aa adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0ba3f7b2 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0c1e3bd4 iio_update_buffers +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 0x1d75d247 iio_enum_write +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 0x27633d15 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x304518f4 iio_buffer_put +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 0x3c646e45 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3ebb8565 iio_validate_scan_mask_onehot +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 0x5b235da9 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6761722d iio_enum_read +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 0x9008918f iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9aa8dbb2 iio_alloc_pollfunc +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 0xba17fc48 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbd2efc99 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc88c28e8 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd76c4ac devm_iio_device_free +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 0xe237bbda devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf42a7ef7 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf8fcd6c7 iio_scan_mask_query +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 0x38292c5a cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x3b6d15de cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xf7bce278 cyttsp4_remove +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 0x3b2a4a48 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf18aa078 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x49ace21f wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x521f1ba6 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x600dac01 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6b4a7182 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6beba87c wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x76f46cd8 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x79c60680 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x99fbd912 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xab856446 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xba5e6c46 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc7ed9e63 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf837154f wm97xx_set_gpio +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 0x004a9f7d gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x067aab40 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x274523ed gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x468a2d0e gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4a085fbe gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x519eda6d gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5a82d482 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5ab26ea8 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5bb14869 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x69d4f572 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8f8b5d72 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x90115dce gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x961b26cc gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9ac19bb4 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb24199cd gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd6cbf8cc gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe244b0b5 gigaset_skb_rcvd +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 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x215b5a67 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 0x5e86bca0 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 0x760e5b9a dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x833daaad dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8b262fb4 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x99b5f057 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xafa41a62 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 0xcc930bbc dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe7406791 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 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 0xb919579d 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 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 0x2d202023 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3d806ab2 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x4c5e5068 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5bbe4990 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x88d42836 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbd92eea3 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc52f41b2 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x419060f7 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x863dde01 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 0x0408de82 dm_rh_dirty_log +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 0x6af83a1d 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 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 0xb04d9b77 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc13b3af5 dm_rh_bio_to_region +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 0xdba2f93e dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf51770b2 dm_rh_delay +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 0x42d1207a dm_btree_lookup_next +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 0x643e947e dm_block_manager_create +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 0x15becb34 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1f200bd7 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2b179592 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4e3b7cf7 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x744fb020 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x77f79176 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb50cbc6c saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd5a3dfa2 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf9189be4 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfab51933 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x28f86863 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2b1d430a saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x655fd033 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8afde100 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb2a7f29c saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xbe021801 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf42e8c2f saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0578394e smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2957c366 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x360f18cd sms_board_power +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 0x467c4160 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4756fa7c smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5fc3c189 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x716c6cb1 smscore_register_device +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 0x866cbe9a smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa7e2c1f3 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaa5f4152 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb5809946 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc89f0292 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xde224162 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe4700085 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf95cd644 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xff7ebb63 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xffb1e938 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x0ed8c8f4 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x0e6510b7 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xd7d0976d 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 0x831c7fb7 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x037a2c43 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0a8cbbc6 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x107a2e79 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x166dd9df mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x302075cb mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x369f20f3 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5901edf1 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6f235b8d mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6fba6018 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x79655ad3 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7b36a66c mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x828a4942 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x88d46238 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x909ce170 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb3c9da14 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb6d14d64 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfc7de8c7 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfdb7212e mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xff94627c mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1e59dae4 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x37e642fe saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x38c377b3 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x44932b3e saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x47a8735b saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5978343d saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5b6511ab saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6312d0d7 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x792a9259 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x856ec979 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x967857fc saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x992fb71c saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa146054c saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaa085bd5 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xab1b386e saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xad10a212 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc3df6dc7 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdbf93a6f saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xefff15d9 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x09e1d968 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0bc0d980 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x66eb8abe 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 0xa40b3618 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb92df32d ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcb835073 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf460b2e6 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x18075267 radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x448148cd radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xb1842f37 radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xd100a785 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xd5165c1d radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x958ff410 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xaf3d6ab1 radio_tea5777_init +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 0x2f36917f 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 0x462f9b4f ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4b8c054d ir_raw_event_store +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 0x58b0a809 ir_raw_event_store_with_filter +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 0xd2715bc8 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf27c1ca7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf896e7c6 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x3909e50a mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xbdaf9334 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x025dc0d5 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x665731ae r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x071bc587 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x45b63e49 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x4c57a4ec tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x60e4c639 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xadee987c tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x2cf84b52 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xec3db488 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x05b31ed6 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xf59c6d7f tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xc76d312b simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0227d6f1 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x212e630b cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2fec0dc6 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x33f98ead cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x35f5aad9 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3b908a74 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3bd16123 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x49afd7e7 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x539e25e3 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7b594096 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8e4d2d4c cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb6ef1ab3 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbde65824 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd0a0d4e3 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd67b5e6c is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe1eba177 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe54b75d9 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xee2c6bcf cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf22ea415 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf7e64005 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x74a50157 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xa6fe1949 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x04347dac em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x070db52c em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1a1dc4b9 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1eedddcf em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x25205ed9 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x49cc7a14 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x553247f2 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5c04f833 em28xx_write_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 0x89c5270e em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x97bce51f em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xba88e26d em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc35e88db em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc4dcf631 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc890f686 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcf40cd1e em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdcb4f820 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe0609708 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe6cf80d0 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x61405309 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xb75fd1ce tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xbaf7f0d5 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe7da3084 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 0x56d7c809 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5f25517e 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 0x93629cc2 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xaaf87c9d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xbf630a44 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xddb0e0fb 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 0x974fa36a v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xf1bbba0a v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0a6b0c53 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0ed9d44e v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x100daa65 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x176392ab v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1786130e 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 0x21d81513 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x27133501 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2ebd3c74 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x33a86f8d v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5f548294 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61e80f07 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6643bc1d v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6bee32e6 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6bf7ac94 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7914a5c8 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8058cbd1 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x89b6fc44 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8d624173 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x932f9bf8 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa7350250 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb9d5ad8a v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbf4b362d v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbfcd866f 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 0xe4ec5274 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe6950258 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe6f91d49 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf9320c2c v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x08005951 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0ca19a86 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1489f4dd videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x36840159 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x42a0a15d videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x44455c58 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4989189c videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x50d01f25 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6c0c3771 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x736c1cfe videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x85f2c564 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x97697076 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x99457e76 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9f4e87d7 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa0bff4c8 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa7739b5a videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb75cee3b videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb8f4ebd3 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xba2470b9 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe2db738f videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xee0a1c8e videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf75fe211 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf9eee105 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfe3323a5 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x0622848f videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xb1c89635 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xe0fb24fc videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x09ee9b7f videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4c0a4f1b videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa1d663f5 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 0xd6831f3f videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x390de8e1 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xcc4c6c87 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe481a8fa videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x090f01c8 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0b268687 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x117f5493 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x11bed88e vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x14b850c6 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x15caadaf vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a0bdb17 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1bac8703 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x28d1b983 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2c543d97 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x35410c47 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3743e4fa vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3a7da07f vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4115631d vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x42632f52 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x54a8e3e2 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5a2bfa07 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5f83b8e8 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6264eade _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x63c2a249 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x65431fac vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6b0b7902 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8b36709b vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9a763277 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9fe029fd vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa57218b9 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaddb6628 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb7c95cb3 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb7d296ba vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb916954b vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd0a4105f vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd8683a39 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe3b2c85c vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe6f8ccb7 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xed490430 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xef565af1 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf27cf766 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfb5652e8 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xffc3eb86 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x8e6bfa6c 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 0xf37f84a4 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x35dd8a42 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x7601992c 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 0x7365827e vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xaefc2073 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xc03e5c5f vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xfff54fb3 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x4b731747 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x093e450c v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a534932 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2095a651 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x252035f8 v4l2_event_queue_fh +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 0x38ab5a84 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3dff5a5e v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3ebbe291 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6001fd12 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6812f449 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x688b36a3 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7c38fec1 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c2191de v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb137b9fe v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb46db3fd v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbfddb919 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc53b3c99 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6b932a8 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc71a2799 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcab51416 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xce08a6a7 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdbf3b687 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdc420351 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xde4f6d93 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe50670ef v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe869d1f4 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x4d383ac0 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xc84281c2 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xda34127c pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x34aac7cb da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa6dce6da da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xaa1aa052 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc77c1851 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xcb8603a4 da9150_bulk_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 0x723c426f lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc9080147 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xe05576e7 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 0x19a32166 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xd64f969f lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xe827eb93 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 0x0bbd8c7e pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x451e19eb pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb15fd5a7 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb31fa23f pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb6d6f5cd pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd345d3b2 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd6b46316 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdb20b3f0 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xebc6a3fb pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf00b4caa pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf242f570 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x31bb2520 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x507e2553 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x3e175a5e pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x57bc9cff pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x7892e4da pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8a5c42db pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa2f805a2 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 0x0ab87170 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1ab35bc8 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2696220f rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4adf2c9c rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x53cfaeb4 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5527015c rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5bc4e46c rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5c108c89 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5edca161 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6ea4b5da rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x747e6fb8 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x75d222be rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8011cba0 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9bb61193 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa363a305 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa592a124 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa5ae24e1 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaff632df rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb60dd036 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcbc2146b rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd07fd1b6 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd4bf571d rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf31fb2ea rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfbfae9a5 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2b297db3 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2cc1a55d rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2de545f4 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3280b3a4 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x373c24ea rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9091be9a rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xae607d29 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd0797832 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd41c29ed rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xee4b3384 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf5aa2491 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf78935f3 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf7ee1f02 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0e13e660 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0f9b20b6 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x327b6828 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x373bedf0 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3755495f si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b604c3a si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3ecad273 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4af1a9fd si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5ccd87cc si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x667a443c si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x71fa34f1 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x74dcf6af devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x81a3f757 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x846465a0 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x87d7769f si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8b881e39 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x95d6caea si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x971ab77b si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9b494825 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9bfadbf4 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa6a7f112 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaf15fe82 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb9f883bf si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc3b759eb si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd150c4ab si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd15dee56 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe0530bf2 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe222515e si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe382139a si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe451a9a5 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe580c07c si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe88a9b9a si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xebf81783 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf1690c17 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x404ab04e sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x706398df sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7d4cfe74 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa368d743 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd16089ae sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x73aedf2d am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xac347bed am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb64d8438 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xbe0d619e am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x228847f2 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x8fdfc862 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xb9754ca7 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc3f1b723 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x3210ff80 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x45dce1be tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x510bc5dc tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xc9f223a0 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xe96a80bb ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4001b672 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x928b941e cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa389834d cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa634e624 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 0x3301009d enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x44222cd5 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x63b1362c enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x70bbdfcf enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb74b4325 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb89e8c8c enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd6242598 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfbd8f607 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0a5bbcfd lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x44362136 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5af14fb5 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6253f42c lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x707aba75 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x83b97eb8 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcea7099d lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe23d4500 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0c49780e mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x18c7036e mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x23b3f5d5 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x26560d25 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2baac0e2 mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2e50cd63 mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4736400a mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x47f98044 mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5147142f mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5316c976 __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x618e87e7 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6b6158cf mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7650e15b mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7b6bf793 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x93ae76c6 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9d7fad43 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9ed1eee8 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xad5e37ef mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb50b3f03 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbe2d61eb mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc443c323 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xda27124f mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf8cc5cb1 mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf982c406 mei_register +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 0x110c1d84 vmci_qpair_dequev +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 0x253f9a6d vmci_qpair_enquev +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 0x62942167 vmci_qpair_peekv +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 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0d2b849a sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0e9f44f6 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0fb919bd sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x203096c2 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4f56a170 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x55b35454 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x76c839dc sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7a5cdf4f sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa3defe59 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd8cb6440 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd9274af0 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdee96bad sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe9f19e54 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfcb17415 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x323ba3a6 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x50b7d002 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5157a28e sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x59200e3c sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5dcc6212 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x70369e16 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc821b3a0 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xca55255b sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe89ee3ec sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x5da1efa4 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x9f96efda cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa0bfca32 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x45496ccb cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xb6b0a34d cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xc8e2e89d cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x2eec3e41 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x09da175d cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x5ab21cee cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x6791104c cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01f42927 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0f8fd3d1 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15998427 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x16c3dd67 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x20a0e7ac __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x22089652 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x22a710be mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x37aaf219 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3da0a21e __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40931126 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40f17a7e mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x46830bb2 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4cb1c396 mtd_panic_write +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 0x569b830f mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5efacabc mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x65cc1189 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6daf661d mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6fa2ba4c mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x75564087 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7a71a645 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c1db7e6 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x809d722e put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x81bb8b53 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x823ab0ac mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x82c6cd13 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x836166b1 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8ae5a1b2 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x97e51f61 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c5f07b6 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c96fb7e mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa23712ab mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa49546bb unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa8c1ae09 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab811651 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb7e4798b mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd709cfd6 mtd_read_user_prot_reg +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 0xf3f90c7c mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf9ab0d28 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x305e4ac7 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x36ba4919 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8b8d666e del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xab43d2af add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xaf4232e5 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x2f86fc50 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xbd798224 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xfd54cf1a sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x52b88739 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xec78668c onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x4a500832 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0822eb04 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x353d6708 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x35f558f5 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3b05db8f ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x52703cff ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x52c281dc ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x532c1e25 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x56b2fb77 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6591de62 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9fdb68a2 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbdb4fa52 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc85257b8 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe8025bae ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf71e5c76 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1b02d79b unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x44d35037 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5ade23c0 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x941ecd35 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xba1faa54 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbb4fa2bf register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0bc72eba can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x13b3e018 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1f7a8fc2 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x38678081 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x451d6e10 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x51d175a0 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x798902c9 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x881df5f1 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8fccca69 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9ce54d44 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa92591aa register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaf67f3fe can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc88e3378 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe2110c20 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe456dd80 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xeb67a76b alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xebe12836 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf39241e0 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1db51f8e free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x4738cc52 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5a400fbd alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb6f33ea1 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xbb24916d unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd70641e8 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe5511218 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xf0da67ee alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0184f444 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x044a284c mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05fc76d2 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06e75bd4 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08b82265 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x091d9b08 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x095bf3c6 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a450022 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c0f077f mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d53f102 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12034a7e mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1251f842 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16194a49 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16361e5a mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17300a8c mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17ef6acf mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1befbd08 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c18173e mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2134fb79 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23fc34a5 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2513b7ed __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29d9c44f mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a4954e7 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2abb5679 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b2c986b mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c8f2c46 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cccaead mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30cb41dd mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x317a7e1d mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x360cf505 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36390d98 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39382255 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a652a93 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a771772 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a994cd4 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b9c6761 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3be11d84 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3eba28f4 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40e01404 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42ed06e1 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x438e0f6e mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4654e1e7 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47c4a572 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49357e9e mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ca25c45 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54f71c2d mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x556af915 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58842ba7 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5976ed36 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bd8543f mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6252fbb8 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x636b8312 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68ace6f1 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c118975 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ca0df6d mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d7a228e mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72e02ae3 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73c03993 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75947c7c mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76c2ab10 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77082a07 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77845a1b mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79986cf0 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a310ff8 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a725b92 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a7919dc mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bd3dc00 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80873662 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86f1d964 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b4ef625 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b733247 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91660394 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92d1ce26 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94787ac6 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97671a96 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97ae17ec mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9df5aa0c __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e501190 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f384e0d mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0ecd7dd mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa75d6789 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaccf2894 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad7bdffb __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0e16401 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1c84d6c mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3865873 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb45bbbdf mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5c17569 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8042e5a mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba39da7d mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbafc39a4 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbe640de mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcc1488d mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbeaac83c mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbffb602a mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc252ed71 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2cfcdc3 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca6dfb15 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce47804e mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf1ff1c4 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd11ebd8c mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd29e84bf mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3a10b63 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7c0e1a2 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7e720dd mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd863aaac mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd900585e mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda9ba136 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdceab1a6 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0e558c6 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe171e5bd mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8e7336f mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb6a80ad mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec5545e6 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed499c0a mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed691614 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1a0ab5b mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf51251a5 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf659c8a4 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf695886e mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf75e4ce7 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf955fa8e mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb3b71cf mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x041bc56f mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04c0b2ef mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x088a6434 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0928620e 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 0x0bb339f4 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1305e46e mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x132cf977 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x191ece4a mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30329b96 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b5026d6 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b77499e mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fea105c mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50956ca8 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5451a5b3 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72c76f5c mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7477deeb mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74cfe695 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75ecdbd9 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a480f37 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f19b265 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8af1d85b mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d3fb76b mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c20d897 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6aa1f22 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb78503d9 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf315d79 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc22746cb mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5f245fe mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca05a7d3 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca15d787 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd0360e84 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2d4ad11 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2f8cf27 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe998a483 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xead5afd0 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x38730dcf stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x8cac6493 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x92774f29 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xab26cafe stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x4338b5ad stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xa3f52f97 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xfeea131d stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x081f9f2d cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x20988289 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x227f79b5 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x397b9d36 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x665abdda cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6f4552d0 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x93251f60 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9492a349 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9ec81218 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc360fc2a cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd174bdcd cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe49a6d93 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe4de1a03 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xec94f974 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf3149f70 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x12e6c819 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3100a130 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3aae77a9 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4f4a592d macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x17a30080 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x1f444f7f usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3b917dfa usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x433f56d0 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8e8fabb7 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x262ecce2 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x353ff24a cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6a78df35 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x887ca6a0 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x88b05aed cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x970e4914 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb2ea0b57 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xcc6fd011 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe320fee0 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1288fa5f rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x214f2ff3 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x71a8ab06 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9e053048 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xaf22c294 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xda0ad10f rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x09de394a usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0e697699 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1224de8f usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x203c938f usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a7a4dee usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x34c94b04 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3591a890 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3be46322 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x494ff3ab usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4b934eb7 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x57c38686 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5b0b1419 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6a3248ed usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6f0d67e7 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8017273d usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x82ac21ec usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x854ff04b usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8a3094b3 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ab55cac usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x953d5bed usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9b1fba63 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa5fa07e6 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbc411c63 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbcb6f03b usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbef2dc5b usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcc376796 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcea73a89 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd78b3a81 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xda90a589 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdc760eb2 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe22bb3f5 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe863c0ba usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x23998a55 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x34c60c98 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xb8323a5d vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc3d36da5 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1c946f0f i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x463d179e i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x61269118 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x66be654a i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6b09a4c4 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6cd6bb43 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x83fc7302 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8be2d277 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9588120f i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcc0118be i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcd99f27e i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd03faf27 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd9adba87 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf03478ae i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfe870574 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xff09062d i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3d3d0360 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x600103ea cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xba15a678 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xf8295578 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x684e0751 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1de8c272 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x25bee1fc il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x53fc8926 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x86c67b2b il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9c7f2d56 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0215e2b6 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x08231c81 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0eda93c7 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0fc83213 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x15b138fe __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x198b9bba iwl_phy_db_init +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 0x2e05b7ae iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x34cf7ec9 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x37ab264e __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46f9cefd iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4b8d28eb iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4fdc512b iwl_parse_nvm_data +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 0x62f2c882 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x67acd3ae 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 0x7f802d1e iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x82c410ed iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8a345b96 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x909ceeb8 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8e3fa2 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa2647788 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 0xbad7c7e6 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4491a09 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc6d14077 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc8c87e87 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x06347949 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x158aaa63 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x270017c6 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x29494ddb lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x54a9ad69 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5c5be655 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6a66ccd7 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x83712e04 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8d78af98 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa5b2f1e2 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc864ae51 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xca479dd6 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeeb09352 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf0278fe2 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf3d32a88 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf55ea06a __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2351ce7b lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2f8f6b8c __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4c84e19b lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7d8b2185 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x833d60a0 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x87281f83 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc4e8ef93 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 0xdb40c1e1 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x187fbd49 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x315061c0 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 0x38db3355 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x596e99a7 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5a281588 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5f4c0c61 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x640d0e99 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6a0a364b mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x792058fb mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x795daac0 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8e6348c5 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbc481554 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcba57b71 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe070b91c mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe4092446 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf6a4efdb mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfb61008f mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x23359eef p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6a1d5c9a p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7d75aa06 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x843ca025 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xac4bbc59 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbe6323ce p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xeb7de70c p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfa57a7de p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfe19a4cc p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x22646f7c rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x23b5da60 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x2f42f975 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x59c36a39 rsi_read_pkt +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/rt2x00/rt2800lib 0x06b1dfa6 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x19fdc568 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x259c8988 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ef2f038 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2fdeed44 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x328aeaf9 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x34fd948f rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x37f246c2 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ac46ce8 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3c4e8477 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4031f74f rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x42415dc4 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x433423cd rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x456cb7e9 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x581e2bca rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f4a136f rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x65bfe0b0 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7d24cf7f rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x804bcf41 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8967e7f8 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8e1f988d rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x967380d6 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xac4365d4 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb1586ee6 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbb7b8e38 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbf660534 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc6bb45ba rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc6d26c1c rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc6d5d3e0 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xca20b56d rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcb2f3c94 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcd4abc89 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xde09d106 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe59ec766 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9bdfdaa rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf741466e rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfbcac1e4 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfe862407 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0297c476 rt2800mmio_write_tx_desc +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 0x3b31cc7d rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x47687782 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5541a2f9 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x61661914 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7152b52c rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8d5fedf0 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x965f3c75 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xaaa11839 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb0c331b0 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb6e5aafa rt2800mmio_stop_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/rt2800mmio 0xea052c4b rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf666b73d rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0a608571 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ec1547a rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x123b350a rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x30a46416 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36f2d612 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bc142da rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e6ce62b rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3ecaf077 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4abe3c29 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b226de4 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4eda84f4 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x54629f44 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5561a1f4 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6054764e rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x68daeab8 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7403a1eb rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x740f9fb0 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x77134865 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7866997e rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8b682851 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8ece5385 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x939cecf0 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x986c70d4 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9871caca rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9eb42b4e rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa532ecac rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa5942e79 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa7611886 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa85530b4 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf959f2c rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb0498311 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb1a0315c rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb21411ea rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1c41c7e rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd43c8d11 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6983f71 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd80ed436 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe2f6ea24 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe69dd30a rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee2a2fdf rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeec8dc98 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf56577ad rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf96ad359 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa161d76 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfadd2091 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfbed8b32 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x104dc95e rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x4b812057 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x70e19470 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x99aef404 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xc4454625 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x0ff89d42 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x223ce0ab rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x386228c7 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7ec64060 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x11bbd1a0 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2e141760 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2e2fa468 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3c109418 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x59a19d2b rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x693e4222 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x78e53cb9 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x84ca958c rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8c0d5b93 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x93e0b569 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x99dec601 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaeb30479 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe0ed4b3d rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe45f4a2f rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe81ef88f rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xff9fe211 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2dad581d rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8475c294 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x95f4dfd1 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf374b60d dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x088d6697 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0f74889f rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x221b09f2 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x277daa12 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2d6eef6b rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x315cfdbb rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3ddb9519 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x408ae0a7 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x41cabc8d rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x52f6b812 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6c969aec rtl8723_write_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 0x7b06cb4c rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7f956ffd rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x85d144f7 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8ed94381 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9b651a6e rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa09e4dd9 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa7637358 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xab413cc9 rtl8723_phy_reload_adda_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 0xb7deadbe rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbb21ac5b rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc759af13 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd1d2608d rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd76b3c1e rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf515d3c2 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf5571088 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfb71e71d rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x00c10db2 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 0x4113dae0 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x42664742 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x43fa2063 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5c9a068b rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x786640f0 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7a64b969 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x90077829 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa2d3fcd3 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa88657e6 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xab66ce63 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc8e8b4fd rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcab79825 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd7ea8158 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdce9382c rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xeb3897e1 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xec57617a rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x66eb9e2e wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x97ef2059 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa50fb568 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x075973e2 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e1d66c6 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x11d61ab9 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2066dad0 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20d05c99 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x21074f33 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x22cc5add wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2bae8d7a wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2fdc86cb wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3dfa66d5 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4a5172fe wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4c482d6d wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4d2d03fb wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x52a40859 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5492024c wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5b8272da wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x66937cc1 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7449af5c wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76277bc0 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 0x8225367a wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x84d90050 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ab99a56 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x955b09e5 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x95705afe wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9ef0a9a5 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb4cfd04d wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb5efa5be wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbf53d5b9 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce9aa0ba wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd82a2f6d wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd943ad95 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdbe0f343 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0c80edf wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0f49fd9 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe393b44e wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7fab7ae wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee0ab9e2 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf1bf62ff wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf3d3178e wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf4d5b50d wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf62edb35 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf70260a3 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfedd539a wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x24ae7496 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x9231ee80 mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xa9f25223 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x126beb48 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x7fcbfd1f nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xa779cd37 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xeb4c1364 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x06b83d77 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4af9451d st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5490003c st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa5952b0f st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa66ae816 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xc2993aa3 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xdaa2de2d st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xfe7a1136 st_nci_disable_se +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 0x9ce03950 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xae2b5d5c 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 0xeed8b80c 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 0x012b32d4 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x295db9ba intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xcd6b4094 intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xd7c4dcf2 intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x512c5113 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x9b190f54 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 0x438ff065 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x539e922c pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xcffcb0c9 pcf50633_mbc_get_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 0x4a6da122 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6690c1ae mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xacbcbe6c mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x077c899b wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x07c665d6 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1417a2ef wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x162c7538 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8e2a0972 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa1c3906a wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x6a417e6f wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x083380a4 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b2ebfcb cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d1d2f34 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0ddde539 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f956ac0 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1a1dd3c6 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x287962f8 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2e2b02ae cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x31942662 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x364daabc cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x370cf57b cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x37fe1229 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x38e35ac2 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 0x3ad759d3 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x489b16ac cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4914f482 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4c9e9c3d cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ccbdff8 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x599aeb69 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5fecbbe4 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x62a31712 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x698b2df2 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x69a5eb89 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x75398b00 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e2cdf6d cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83dab653 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9284c1a5 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9442f3fe cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x962c1866 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa27c5d6c cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7a37f8c cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad7f0a68 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xafc3bad1 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xafdd990b cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbb40bae0 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbdfef029 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd839cfa5 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xda093d4e cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb29b28c cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb81456f cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdf8248b0 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe053b451 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe7e68379 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeb41ade9 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf2e8db20 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf7a5bc8d cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x62fd6cab scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x89e79081 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x9a489e9b scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd669e6e8 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xde3f49ff scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xea881d7e scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xed10510e scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x02050182 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0a55c783 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1417b582 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x163e5d42 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x289482a0 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3e85e472 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x56c4bd1e fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6c95c367 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9944cd94 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9e6ba563 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xae12fcb3 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb1d2486f fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc3865410 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdb31ec42 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf29276fe fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf544c5c2 fcoe_validate_vport_create +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 0x0028680f iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00c6154c iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x046ee12a iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0623aeef iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x10016160 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x116eea75 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x19f92ac6 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1e3477fe iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x31fcb881 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3aa25198 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4303c1e6 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x478b3153 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49ba1e42 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a03389b iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a3d139d iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5b554c9a iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61f904af iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66de90ea iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6cc75033 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f002559 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x774e0bf2 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c383b99 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f56c844 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98b60625 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99c6768c iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b0c929c iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa2520aa2 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa72d277b iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xadff8a94 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb533f222 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd9a420e __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5404917 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcd67d355 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd2fcd098 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd40b0a26 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd7f82a7a iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdf5d2a1f iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe035353a iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe4f316d1 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe88c469d __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf5511caa iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf7232067 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x170153ec iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x221d7022 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2bb9cd6c iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x612def37 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x684077ac iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x684eb31f iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7bc6ea19 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x93eec630 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9e99d05d iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa563be53 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa8d08577 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbbe7c096 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe64a406d iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe6c0e605 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xecc46b0b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf159ece4 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf9933ba4 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1b79599d sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1ba94466 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1e5b4714 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2402f534 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x308a88d3 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x37b1739a sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3986e568 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3a4db019 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4d02c6b6 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x70eee479 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x751c646f sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x791156d5 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7c8f7ffb sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8db003af sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xab2973cd sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb22444f3 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc2859f1c sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc875e3c1 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcde2d905 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd84722d3 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe29a2bd7 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe45d5aed sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeafe84ec sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfa207e3d sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x03548faa iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0391bd6d iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x083cab53 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x139def64 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x149edb77 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2273badb iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x27cf3770 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29283f3f iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x32b7c293 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3b88a9a9 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f70b464 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5ba3020a iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x62f6af0f iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x649b2036 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7136c707 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x717c9f19 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x73563111 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f3bfb56 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8326f2ef iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x855dc03c iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8ad21a76 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x914ec60c iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9b9b7b44 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9dcf143f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa5e1509f iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xafabf04c iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2af33dd 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 0xbf2162a3 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xce2ab6a3 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2cc951d iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7db0c97 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdcfa85e3 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xde1cbb2c iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4e087a5 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe85a8bec iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf62772a8 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf965bac5 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfb21663e iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfdbfc72b iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfdd73667 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3bddd22b sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4f5d69a0 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4f8d5247 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x90d7e686 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 0xbf8bce97 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 0x41426d21 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4cb496eb srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5cda81bc srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6269de48 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x877f8b3c srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xcecadb4a srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x082b3bc8 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x0ad91b4d ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x5974e6f3 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x96e63fe5 ufshcd_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x09246c6f spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2778bb03 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4e866bc1 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x654a6a2e spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdbac901b spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x090d2eba dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x565a4c8d dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x604934a3 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xaf69d53a dw_spi_resume_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 0x05cea2b0 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0e85b647 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1279926f comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x164d9282 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x18afd0e0 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x28f8f054 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x367962a3 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3bc4d57d comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3dffe804 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e8ae82e comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x45465a4b comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5a6ca8ba __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5df8173a comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60d76fff comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b1f1af7 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6c1e0040 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x74019290 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x79e1494b comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x80512f10 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x834979d1 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9078f38e comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e0827dc comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa531163b comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa76b59ff comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9479c89 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb08a8424 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb43ecd4a comedi_dev_get_from_minor +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 0xbde210ac comedi_nsamples_left +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 0xe20386f6 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe28e5a86 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe473ea32 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe53c26ba comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf58efc75 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf7bfb9f2 comedi_is_subdevice_running +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 0x014b04c1 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x4645fdcb comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x6dc655d0 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x72328674 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x74632d46 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x978ebfb0 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd35970a7 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x21b2c81b comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x37076e41 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x39693f4f comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6e8cc933 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x8ba34931 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd8871a64 comedi_to_usb_dev +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 0x19e4c2e4 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2e7856e1 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x39ef8e18 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x3d9a4723 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x65890920 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xdb10ae85 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xeda2c8f3 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xf7e42173 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ef315 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x25d9c104 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x84d9f2d7 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e0e243e lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1f13bd6 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0d403578 spk_serial_synth_probe +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 0x165d4b0c spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2085d96e spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x24465eaf spk_var_store +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 0x5a0cd8d6 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6ef0c5ef spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6f7eaf86 synth_remove +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 0xa5d3bad3 spk_synth_is_alive_restart +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 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xea2d49e6 synth_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x480632db int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0xf5aa80b0 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x06d8af4c intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xa52c5023 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xc8acdd34 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xfabb76c5 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x151ea5be uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xbbeb6b1b __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf5aa8001 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x0e075cc9 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x8778d990 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x92106c02 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xf401a707 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x0adb8279 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x0b8d7672 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x10414875 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3aa72bfd ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x56d06f20 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xfb4c115f ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3e893d74 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5d54ae9e gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6aa9f5fe gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x801931bd gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x83257cb8 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x87827441 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 0x8b6be119 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x928f6116 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa665feae gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb18cf40c gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb5a032c9 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbc4a4716 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc3555cfa gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc93654e6 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe72314cd gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x047bbdd1 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x2fe6c90f 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 0x1fcf8501 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x7030e667 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xfb94fda2 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 0x2510cd9e fsg_store_removable +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 0x3db0b126 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 0x429a3284 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4981cb5d 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 0x67597a71 fsg_store_nofua +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 0x7291389d 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 0x8c8b3f35 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 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 0xa3053382 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 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 0xb741912e fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xbac6d68c fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc0054d5b fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xce3ee3fb 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 0xdae03328 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xddfe73d6 fsg_show_nofua +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 0xe668ff85 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_rndis 0x0921d2b4 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x386ac162 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4b8e236e rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5e20460b rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6ae3852d rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x73caadb0 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x82bed83a rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9a8ac81f rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb22d5473 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb73a2458 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbf5e58f1 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc014c3f8 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd25256fd rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe9a37d91 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf0a2a955 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x071b7de7 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0bff4761 usb_composite_unregister +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 0x15117611 usb_add_config +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 0x29171fbc usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x457104a6 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4a3d5ab7 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4d6631e6 usb_interface_id +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 0x6cfca3b4 usb_composite_overwrite_options +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 0x828bb6f1 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9c62f253 usb_add_config_only +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 0xb02dd166 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb15c822e usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb230d3e2 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb862ed02 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbba0f7c6 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcd3bd908 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd09b263e usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdb45fadc usb_function_activate +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 0x2aec71e8 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2dee4cf1 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3192427b usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4c3f5267 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x512b67a2 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x86eb2113 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaa7c9065 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaee518bc usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbd942853 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd09ada0a usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf85294fa usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x06a4e2f0 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x9fc47611 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0c014f33 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3ce4aee6 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4c7a0da8 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x52f2abc2 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5e4762f1 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x670ba772 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x74492fb3 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8154669d ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc4597bce usb_ftdi_elan_write_pcimem +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 0xc9614373 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x1c1c10f7 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x7bec9599 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1547fda6 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1e2be37d usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x223f2931 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2b03d07b usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x38092cda usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x41a54ed8 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x488cbf6e usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x498b9087 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x501c6d0d usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x59527617 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6c631013 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6d03fd45 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x75d435e3 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7cc3a0d7 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7f8c271d usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb141708d usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc1f325f5 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd35cef0a usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe2c68f30 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe5cffeb1 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xff477725 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x111039c8 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x12119e0b 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 0x1eb849c5 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x22cfb3a5 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x27630e5d usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x29d46cca usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x490c1dcb usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4c1f0039 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x69fff714 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6b836753 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x708e9251 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x829b002c usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8b64a484 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xabab441e usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb2bcbca3 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb9eea035 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbdd2493d usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcbecddad usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xda8f7361 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xde32b05d usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdecc02cd usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe5c359b2 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf6347622 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfc2d3200 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0b8a5ff0 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x15183bea usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x34ec67b1 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3a5b9352 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4cbce366 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x69f4820e usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6df7b510 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8e1c87c5 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa1a5a7b7 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa6ebad13 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd7a4828b usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdb35e931 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1ecf2c58 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x8810507d rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x8a8b9607 rpipe_clear_feature_stalled +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 0xed67f798 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xef66fa23 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf23ad414 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf7e551ca __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0767b1a6 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2f82d7c3 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x471857e1 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x571e66bd wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x629cad58 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x692e4816 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x777d199b wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7c58e8d0 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x85af78ea wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa605ea3a wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa739f1a1 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa834424e wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe63979db wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf34585f3 wusbhc_mmcie_set +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 0x1fa10a83 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x74fc26b4 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8d7c7f83 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 0x003d296a uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x05f28950 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x061187a6 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x11833015 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1198e4b6 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1eb26136 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2048eb1f uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x23c669d4 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2feb2b5f uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3086283c uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a32e156 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x44c9e733 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x52176663 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x56f1c968 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6c66f658 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d4f4be1 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e644d1c uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x773aba8e uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7910aba0 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8f68fe1a uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x911b508d uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa13c0dc9 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa3a0e55d uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa6a9f394 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xba876b5c uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc94cf50 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc1737d58 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd8e76836 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe221ff77 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe585148b uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe5b89f4b uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe6ee6d97 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe976351a uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xefbc841d uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf0406d5b uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf3404095 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfb8306b1 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xf91e3993 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2b58fb29 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x656daa18 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 0xbab6ad76 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 0xc6f2c9cc vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc9043153 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xdcea8b2e vfio_group_get_external_user +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 0x11586689 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x22fa2500 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x23e027a9 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x26732bf1 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x330a3de6 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3629a5ea vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x44c12bec vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4f2a1e18 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5269d71f vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x64f7583e vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x689bdb31 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x68afc93e vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6a19187b vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8681a599 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8b4d6bbc vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x96c636f4 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9da9d8bf vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa0945d0d vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaa92d0d1 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0b1fffe vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb3b3e793 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb8bc67f0 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb96b50af vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc36c3ef8 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd281b064 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd421103d vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd7f687ab vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd863175f vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe8f0f0cd vhost_poll_flush +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 0x0238dbfc ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4ff9086e ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5d335030 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6ad17f2a ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x712bcc0b ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdace6175 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xee4faed7 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x00939ff9 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x14fddb7c auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2f2494e0 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x566ef23b auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x7b6d48db auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x84a9d7fd auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x8a1c7dca auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x8dcd484e auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd300360b auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe40cc963 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xf56d3fa6 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x65b742e6 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x71fc6d85 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x80760296 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xe6b5ebe6 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 0x53cbb5a1 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 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 0xa5dccd80 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x89a3a6db dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xad5b1d68 dlm_posix_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 0xfb93b673 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1c541d52 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x32ca41d5 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x34c43a16 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9d370d68 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbd983d70 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xdc19a32a nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xeebfdef9 lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00fabe9c nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02969eb7 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0350f201 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x041fe297 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x044c6a0b nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x049e07a1 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04dc30ee nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x060ca49b nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08c61817 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b77647b nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d71a187 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e524bae nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ec60514 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1684e70b nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c8ff1d1 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d2bcad6 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f7669d5 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f7f8bd6 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fbbdd9e nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20e7e106 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24bab3d7 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x295a7ba9 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a6d1703 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2be19f0c nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2fd3ebd7 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2feabe0a nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31c10bb7 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c0abe84 nfs_alloc_inode +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 0x3f7d5409 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x403e64e7 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x436221e0 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x452b6318 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a493254 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b8159b8 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c6b4ec8 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f77e2e9 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x510e210e nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52c8f780 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5642e6e8 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56ab9d27 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59beeff6 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a066e54 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d314e6c nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fd5f5e2 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x646f9ddd nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66a9874a nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68cdd692 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x698877b4 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d09a29d nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d6c22a8 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e2c28aa nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ee381e5 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ff3511d nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x705a05d6 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70eb266b nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71e64c1e nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x721036fd nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7abb78f9 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c658331 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7cc6b80a nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e9dfde7 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80af6a18 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80c0926c nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81478a0c nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82eb1515 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b49bc94 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b680f75 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cb00921 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d1335ed nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8dd492e3 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e13b9eb nfs_umount_begin +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 0x94e737a0 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x973438ba nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9981964a nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99b1c7ac nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b545047 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa007ce80 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa100154d nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa49b9c9d put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa646c4ed nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6b927a8 nfs_retry_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 0xa9a2505f nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaf0f32b nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac01271f nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb88de4d1 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8958b1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8c067d9 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb535d29 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb64a12d nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbcec63f2 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd98765d get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdfec7ff nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfee0d2f nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2e2e4e6 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5d0d6c8 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7b55aa2 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca44ec63 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca5e29c1 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd4345b4 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd69746b nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd45532f7 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6120936 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7f89dde nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8710c74 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda8131da nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdba83686 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe800a6f5 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb2fe910 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebb8a1d9 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebc98d1f nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed1e24a2 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeebd9cd9 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf040ad1c nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf29be09c nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf507e9f5 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf64120f9 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf69feec7 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf924632a nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf974c7bb nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf98e06eb nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9a7dcdb nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc58c6c2 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfeefac6d nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff5b2b3e nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffd39c5f register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x89afa3af nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x02bf28af pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x05a05e05 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07d57f72 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x09e009ea pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0aa22360 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0bb490ef pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1241ffe0 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1406139e pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x163f419c nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a32f047 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x227c4c0d pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25f1ba83 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x28c4981c nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a55567a nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2bc68073 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c6d34f7 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x34c1cd86 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c96ffe9 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4040dc16 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5fe93652 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6123a386 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x61d4c3e0 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x62ec2132 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x62f53d99 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63a14954 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6571d7a3 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x693c44b1 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7587f7bf nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x783ba08f nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x825bb67e pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x859adb2e _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x938b6432 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x954e2343 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9bfc68fb pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fd7eb3e pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf6a62d9 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xafd97d79 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb706d64a pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbb03902b nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbb22820e nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc74607e pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbdeb1c65 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe092958 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe27e92b nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbed55261 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc000d206 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2d8129a pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xccd23920 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcffef061 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd69555af nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdad7cd93 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xded87b03 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee3cf442 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf14c0968 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf3a37854 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf78296b7 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfa1fd59e pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1d1880cb locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x9fc80439 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 0x180958c4 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 0x1edf01c8 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x25c66af1 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 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 0xb45d7b3f o2nm_node_get +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 0xde543daa o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe8ab6a4f o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xff8ca149 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4cff378c dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x52d90f3d 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 0x7f532589 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xbc0e3609 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc9af4e6b 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 0xe17b841c dlmunlock +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 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1bd41f82 _torture_stop_kthread +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 0x4c958900 torture_shuffle_task_register +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 0x8245a8e1 _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/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 0x18817ac3 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xe6c4c142 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x10339742 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x82d8dd2a garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xb9444a4d garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xc63a30a8 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xeb74efd9 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xf206d31b garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x002cae2c mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x4e17d3ad mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x54f8aede mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x5d1ff020 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x811fbc82 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xbffde972 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0xb77a4eb3 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xc420d55e stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x579de720 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xfc519386 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 0x8aac4483 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 0x01ef3040 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6b6cec8c l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x744a6ce1 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x752a9654 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8c7b2e68 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xad15afef bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd3e8197e l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf85184b5 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x55e38fa6 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7024b83f br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x71ffa6cf br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7e68e1aa br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb6fefafa br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd22678f9 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdcaae6cd br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe1543a14 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x8db0b6fd nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xcbc6eaf4 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x041e1419 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x19f91d02 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2062ce3c dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x219ff428 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2ab4b9c1 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x34ec08dc dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3f55e51e dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4a1d5573 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b721b41 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4d42e7e6 dccp_sendmsg +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 0x50fc3e79 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7db930e1 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x870f760f dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x96300bae dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97b16e26 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa6d90efc dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb2fd87ed dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb3b259a8 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc2487f0f dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc6aeec41 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd54ca828 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd70a1e89 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd8439746 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeefd67b6 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf220cff0 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5f51bd8 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf872855d dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf8b4aa63 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf9f85785 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe43f945 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xffe95080 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5e6ec604 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6fe2bcee dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8671bef2 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe104b1b7 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf11604e0 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf4994cfa dccp_invalid_packet +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x18ad800c ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x20b4bc42 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x9cb7f220 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xedbdc51a ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x64408add geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x9a4f0f24 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xe74e65cc geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x06227f25 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2872da33 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x30f69485 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xab092069 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xaccbac39 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x108bb6d3 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2ee72576 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x38af6961 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5444d2b6 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8b071ac4 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf54b93ae inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0456d46a ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x116aa3a0 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x25011be4 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x25036de9 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2846ceae ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x34bd01de ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x37321262 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4bb6c7c2 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x634629c4 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6d8ecaff ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x78b235d8 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb84b4872 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd1d39e15 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf7af8dcd ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x52554c34 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xb2f7b7ac 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 0x31a31db5 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x4e316ac5 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x6968c661 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x70ab2fc3 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xd8efe695 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x1ccc54c0 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 0x67e99e37 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7c8a994d nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x89826b9d nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x96e63ef3 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc267b7cf nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x502ee8e8 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x16cc94c7 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa54f2f17 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xaf9fba88 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc9260065 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf84b68da tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x4d034bcd udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb1b1a5d3 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xd089fc91 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0e5f505d ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x784db8d5 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x9e9c71b4 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc2da655b ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe1edeec0 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x59ad66d2 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x5c4108cb udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2acd4d89 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 0x1f2bd794 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x356cb669 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x62403240 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x8536796d nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xdee0721b 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 0x4a70b769 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0cd9b975 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0eb8a7cc nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x1d18f0be nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xdd9d95c4 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf5155c08 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xd0be9a11 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1bbb52d8 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1daf9753 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x268e9fa6 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2e0f54e6 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4865091a l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x777bc2f0 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7a285abb l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7e894958 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x82385297 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x874052cd __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9ca118a1 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa8bbdc51 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb8e23ab6 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbd2f5a72 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe7a86c53 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe92b1021 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x8dde5952 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0118e5f2 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x226172f3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x234637e0 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2c3f816a ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2eda03d2 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x335989b6 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x33afd28d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x415b0656 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x43f4d4e1 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5e1265c9 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ea67951 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaedb5631 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaee722da ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb9a7274f ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc7cea193 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe47a71d0 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebdf8959 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf3e03844 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf8fada91 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2d13292b ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3ed39820 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4cb49f8b ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5810245c ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5a60d2e0 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x69b62213 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7eba41ea ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x84146f0b ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8d526d48 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9fad8774 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2a10582 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xaf62de76 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc102ec02 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 0xdf5d279d ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe1f0b025 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe6b9caf6 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x04cd061d unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x20a279d0 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x383a7740 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6122487e ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00067be0 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00d4de06 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x014ace55 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04afb73c nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x086afcdf nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d6f4eba nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15ee599d nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d133ffd nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f5e5959 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f71e577 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x225c5c07 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2353e1dc nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x296d96c5 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a8c0302 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x463a500f nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c320bfb nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4fabaec4 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53153734 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5373c0d0 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x598cf576 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e4fb046 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e6c2c6e nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ec5e27a nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6252e96a nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x63777809 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x639cee1b nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6479e310 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67b9200e nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x686407f4 nf_ct_l4proto_register +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 0x6e288e7a nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f5cf48f nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x726bc8f3 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c48d913 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7fb893b8 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84ba819a __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x882c0d6b nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8cbde206 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ccf13e4 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d205478 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9016de4e nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90706211 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x91be1f55 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9210bf72 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92cff1c4 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94b426a3 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x973e401d nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a9defc4 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa41c8168 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa51f9f9c nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa69380e9 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa8ab8d46 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa98a0524 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9eb1f16 nf_ct_l3protos +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 0xb144e807 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb53f8334 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb72cede2 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba8f56e1 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbaf4b671 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc830947 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf52dbe9 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3a34dd0 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf7e26c7 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd13456b2 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3ac395f nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4a5610d nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9b4af14 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9d70324 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc630e77 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdca89c3f nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0abeba5 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5aeb959 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe693038f nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe72ed282 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xecb5ba83 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1683444 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfabc6061 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xd0eaef14 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x42d2fc79 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x4caf205a nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x403c3667 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4c2920e5 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5578c0bd set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7478e626 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7a9cf646 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8bed401f set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9ff04be0 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb00ba5d4 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc8ec8d51 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd6ea1ca0 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xb99d10ed nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x03558058 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1dc81ed7 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7021af10 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x72fad758 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xbfeeff20 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xcd4cbd91 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0c04a8b0 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1ebcdc46 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x50691e8e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8395834a ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9a9ece86 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd0fe4ec8 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf7702d87 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xa1fec6ca nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x83bd87bd nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9487318a nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb2e8fbd9 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xcc8692c7 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xd89f0edd 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 0x1e22ab00 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3aa53c03 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x62105c2b nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x676096f7 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x78cd118e nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x84cb8686 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9e70b90f nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc05d20ce nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfd3242e7 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x07396952 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x22ed6451 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x0edb3999 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x767aa9cf 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 0x03c3ffe4 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0723a6ea nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x22ab3297 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d753fa6 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x40864e3f nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x60a0abdb nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6592f0bb nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x901e63c6 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa372b65d nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa62ecc54 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb5dd2468 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf2f9951 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc3261314 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf600107 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe38cc7c3 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf09c7c45 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf9c06ec1 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x29f8d8bf nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x39c3c7d2 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7945ea6c nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbf86b197 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc3d3f8e4 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc6b633cd nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xecc60767 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x85ae7c66 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbf044926 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xd82e2434 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x6923e176 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xb2a42fda nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xc7b1c349 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x102ee2c6 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x23f096a2 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x69ae4e12 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x75612f02 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x864b049d nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xda987d53 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x6076b196 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x84f774c7 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x992631da nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x5be189f9 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xd26ccb59 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 0x023f3a5d xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x362b7c84 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x37ddc7a8 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x44948395 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x65e1473e xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6819fff5 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6b97bd7f xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8c9c6566 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9e5d951d xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xac5a7a7b xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaf934b33 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd4293659 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xee7be129 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 0x707311eb nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xca62a8fe nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xd1e4ab86 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x2a7d07d8 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x492040cf nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xcf700c89 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x18cd3d25 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3300609b ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3fd29d92 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5c822dbe ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x8998f54f ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc95c6186 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd10175b2 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 0x0dcc7237 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x144281bf rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x28ad631a rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2c214302 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 0x3a297199 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4cb40374 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5491b286 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x56cb5ae7 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x65fa14e0 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x699e611e rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x779d1e0b rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x791050bb rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x85df4bff rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x8fef818e rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x928db634 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x98b8cf70 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9f31f450 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xa92482f8 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xb41b6b60 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xb6ed419e rds_info_register_func +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 0xe9e7572b rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xf01220d9 rds_inc_put +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x0b630f39 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x23f40e2e 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 0x0f951d59 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x4e720a17 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 0xe9cbb99d gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0240d501 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02e82dbe rpc_get_timeout +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 0x087f8ab9 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09445227 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09b5fddd auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a61b410 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0abaabd9 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b1f5adc svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e31652c xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0eff8c6f xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10bc34e4 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11cb09c5 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13402b9d rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19225916 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b312f21 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d23eb7e rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d482d62 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d8b95be cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e19caa7 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21af4054 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21bcdb05 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x224b85b2 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22f130ef sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22fc49b5 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23ff57bd rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24618be4 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25b625dd svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x279bc83e xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28159dac rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28364c43 rpc_d_lookup_sb +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 0x2940c192 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a85894c svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c3e45a9 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d819233 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e04c542 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f171e7e rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ffb78c5 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3267c62e xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3330f61e rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x353bda73 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3602bd09 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x361ffd9e rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36d850ca xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36fd7f2d rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x375cd4d4 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x379cde10 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x385edb1b xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b7c7bd5 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ca39cb4 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40e8d306 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4260584a svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42b01a89 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4471ff62 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44b1cb03 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47ee4cef rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48afaf2e xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a16273b svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b2dbb7f xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c6242d5 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e4c3df1 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f8a6de6 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x503fe6ea rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53350e03 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53d204f7 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56562f88 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56d8ddc2 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x596f23a1 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a23b98d auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a3f7076 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c4c54d0 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d045201 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fb19472 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x604120b3 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6072107c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60e12635 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6128c4c1 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61f7e5fa rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x647b1006 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x656b3319 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x658f4dd7 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65a07f61 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6701eee4 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x675e47c3 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67cf3db2 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x693d140d cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x695a414d xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69d527db svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a12cd35 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a3bc868 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ad040f1 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cd7f884 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d836721 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e49f96c xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e527c1f svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f4331f3 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70004195 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72993f46 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7384bcaa svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7505c1bf xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76d132a4 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x770f23ba rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7820e139 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78756d68 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x791bd948 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x795a7f9d _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ca1c68f svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ceb0714 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8062fdac rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80fe93e7 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x835261ac xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83cf2497 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x845501b7 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x856fdb3c xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85ce8416 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x880a766b rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cf82f14 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e0de9dc rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x904f484d xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9148277b xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x919672f4 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91ab431d svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9311f4f5 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93ea8e9c xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x946281bd xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x950eaa38 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x960fc36e rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96a50232 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96acedd9 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98667382 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98a63ceb xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d72946f rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1908122 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa554cc15 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7c4dd02 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa854d49e rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8ab714b auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaea4fe36 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0c5dd58 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb10fe18c rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2c1aaac svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3e853ef rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb777d0cc cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7da2ee5 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb916eb7f write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfde9f1b rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2a06098 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2fb2e3b xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4937fbc cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5947ab2 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc59b545f rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5ecc002 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc723a8b3 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7409946 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc895e4c4 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8db9084 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8ee6ad9 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcda5c163 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce56f1f4 svc_xprt_names +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 0xd23798f2 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd392eccd rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd423990d rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd735f7d1 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7777da3 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd87a0ea0 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda0de67b svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd496983 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1a86548 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2995211 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5f94078 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6ad0194 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe82b7ba9 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8847ecc rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8c67fd5 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8ef2e1a rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9b35d11 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb344212 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec174f64 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedd62a43 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1da4f2b xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3fdedb9 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf62b68a3 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6c1a178 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6c23cfe rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8cc8315 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfac89806 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfed6ebdc rpc_run_task +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0b562b6c vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x10aaaa19 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x120dd1e6 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1d489259 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2bf8478b vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x53038e4c vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5ada15cd vsock_stream_has_data +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 0x772c495b __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x783dffa9 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x919f394b vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa774be1b 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 0xe117cc9c vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe3ebcb4b vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x065b5ae8 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0b609bbd wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1cee5799 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3c8d7506 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x41ed7530 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4dbed5de wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5948a418 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8624bbb5 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc06aebb0 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd18762c2 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd66a8794 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd86852d8 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe305f399 wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0215180f cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2ecac208 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x62e78208 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x676f7e98 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x704633ec cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x84e708c3 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x951fa775 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x960f67e7 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa2c641bd cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc19f53af cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcca2f23d cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf77e9b88 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfc0a027d 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 0x02432de3 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x64e91f2f ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc627b675 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xefbd3722 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x19921067 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x6477deb0 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x1ca2781e snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x8d044650 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x99bdcaf9 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xbf6ba00e snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xe756cd43 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xec9bcbb9 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xf0697042 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x18313e9f snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x21157cd5 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x814cbf71 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 0x5c26fd06 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6d4255cd snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x71761588 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7425cfa1 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9583fe69 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xaf55f87d snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xb8cf10ac snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe36d9194 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xfa46b94c snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x22813313 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x401e31ea snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x426968f5 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4af299d6 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5cadc934 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5d75d36f snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8b53b4f2 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x95239174 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb1cab5f9 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xcf353b94 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd12dc832 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x035d68a6 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0610e7b1 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x065955fb snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b1e8d56 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b896fa2 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0c2da977 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0ff3b9f1 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x147b6947 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x15e39c69 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x15eaa988 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1c000e7f snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2543c151 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x25a64188 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2d8114ba _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e4f3afb snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x30d0bd55 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x396a9053 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3d6cb8c3 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3e8af12e snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3e8c5621 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49ba9724 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x52aef736 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59154a84 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5af56cf0 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x604aca68 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x662ab536 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6e59545f snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x701c43ae snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x725627da snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x74c1874d snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x75857905 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7768f4ba snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7960ea64 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x79807af2 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b2a950f snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c281ebc snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f32f2a7 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x858ca5a9 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x883ab543 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89024d04 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f4c9418 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f79efad snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x94d588c2 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x964b09df snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x99dcad2d hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a2b709d snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa8cee5f0 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabe668c6 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb4117771 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8667b71 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb96bf749 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbc39a191 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc1057a7f snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc361116c snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc6517757 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc664ef04 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcf2fa10a snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd5474d95 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd6a9baa7 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda0244d6 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde27ce7a snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdf072f95 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe12806d2 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe2214569 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6b6dcfd snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea715fb4 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf9bd1195 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfba29a63 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xff1fa8ab snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0b70bb56 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x14e0d851 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2787a947 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x48c13d83 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc9d99bbc snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xea0123a2 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x038be816 hda_get_autocfg_input_label +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 0x06a539ea snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a03ce0e snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cf29080 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e012aaf snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ea52242 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f103458 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10f04fcf snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12d34786 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14481153 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x182245c3 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1be99c26 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2083e165 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22774977 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b9ea414 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ca62351 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e50eedf snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f860d8f snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32ae511d snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3380d3f5 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3401bd95 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36a158cb snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3859e308 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3978d15f snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a4eaf94 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c72e2d0 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d448800 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e278069 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e6ff482 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41af203b azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47bcffd6 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4941fd7b snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c0c6fba snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50856c46 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5181f36f snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52b93608 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53f9e67e snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54b7f0df snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x589dbf21 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59dd53d5 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59fea0fe snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f435439 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x604dec29 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62447d05 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x628dfbaf snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63128cd2 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64954ed5 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69be0219 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a9f2bfc snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b05b4c1 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dab9995 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6db1ad45 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f49ab58 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71dcef74 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x730ad35b __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74b6ddda snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bcd2dd8 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d4047f3 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ee3d83e snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fbf2299 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81cbf3ce snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83254426 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8926e837 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a41fa1c snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8be7bb84 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c40f4df snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8dde28da snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f8f52c7 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9160d662 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91eb2780 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9530a467 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9570d2dc snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x960b345b snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96595b2c snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9666a36f snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b6fe05d snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d77d1f9 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2ea242f snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3733f39 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa908be6b snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9c2f146 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaaa24c27 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaafd17cd snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab081ad1 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacfdcb3b snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaed4a66e snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaed85a9d snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2a43bf4 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3f2de41 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb818e6f0 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8a048b6 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb9dbbae snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcbce33c azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbdd8f039 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf0f0e2e snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf621d08 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf804417 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc10e49b3 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1cd6f97 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5c5524a snd_hda_multi_out_dig_close +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 0xcc796acc hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd82e8d7 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1cdf3f8 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1d79de7 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2faf529 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd39e2e09 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9f463ec snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbefbf8f azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde583c76 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfaa7276 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe209e49d snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe23ad61a snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2a78fe0 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4da45b8 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe692f11e snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6b25eb8 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7027a54 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7d8d5ec snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9bf1f12 snd_hda_sync_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 0xf179cc70 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf301eb2d snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3c58f0d snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7ee3589 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfafc1147 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcc545a9 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3237d066 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x564651a5 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5bc23dd4 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6275bb4d snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6a15c931 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6c758705 snd_hda_get_nid_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 0x80a95273 snd_hda_gen_update_outputs +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 0x883736f9 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8c1c2200 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x93bee4bc snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9f2c24d1 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa3670b85 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb899c92a snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd1f5499c snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd48cf14d snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd67982e5 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe352a12d snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe507f15f snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeabc3001 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf8f7391b snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfaa384f9 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xa76c7248 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xc0a2b3a0 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 0x95b6d207 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xed6111a2 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x14331264 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x33a0c17f 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 0xea0a6c06 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x10d1f2b2 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xb3d4067e es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0xb4535dcb max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x078c32e8 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4d665d9d pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb70b5682 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd3cd12f0 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 0x4c838691 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xdb2ad71f rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x2a48faee rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xa3603b47 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x0b218a9e rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x225e9400 rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x7cd5d1fc rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xa40509e3 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3066e59e sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3ba2c65b sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x67d7e52a sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x84b35ac4 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xe9767a5a devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x500548fb devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0x55ee9aef sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x204e7093 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x823a322f ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x14df75f2 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x61dda620 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x0125ae0f ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x09c7ba04 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x92fdeaf5 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc8063100 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xcc32369f wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xc9c25042 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x1dca97c4 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x49543993 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x8dfe877b 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 0x93684e0a sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xc984cfa1 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x3caba92e intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x45b308eb sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x8329331e sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x88f408df sst_context_init +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 0xb2c475a0 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x7dde1392 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x8857d454 sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x8d6f87ee sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xda61f0d9 sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xdb478e45 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0251bf26 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x060b8b8b sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x07f413bf sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x090ffb72 sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x11950fdf sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x13275500 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x145d5085 sst_dsp_dma_put_channel +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 0x20a13463 sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2ae39171 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x303d7dfd sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x324f491e sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3348136e sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x37797001 sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x37be48c8 sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3978f18b sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x39c16604 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3ac0d97b sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3f0f5291 sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x423ef191 sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x45a08bbe sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x45c8f1f8 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x45e3955e sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4999a0f1 sst_module_alloc_blocks +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 0x4ba6ade5 sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4d2dc1bd sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4f78d1b1 sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4ffb70bb sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x54dcf47b sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5b0ab6b7 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5be956fb sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5da9149c sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5e5aadbe sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x64d8dd0b sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x762d296d sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x88533d1e sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9ba9e1b7 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9ef6957c sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9f33c5f5 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa14bc835 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa4046dbe sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaea9ae1f sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb1c73ee0 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb2d43db5 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb67c6bfb sst_module_runtime_get_from_id +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 0xc4cb9d21 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd01a0a50 sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd1742aa5 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd5602d5c sst_module_runtime_free_blocks +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 0xdb5e58b6 sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xdd2567e6 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xde672277 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe14f7472 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe5126170 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe780c450 sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xeb3caebd sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xed11cc8b sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf7375149 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x0fe283ed sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x5d48ac90 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xa6e73cfa sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xaf5d5bde sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xc6eaae99 sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xc86d58ea sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xce759ef4 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x1bd45814 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 0xe7cf5b69 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0070b1d1 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00d5cd5e snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03b826ff snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03f1f70a snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x055b67fe snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a38f80b snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1038b91d snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1088d42a snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1331fe16 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x142f37d0 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x193a1836 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1945d0f0 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19489da9 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a9ef908 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ce35678 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d3f104d snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ef906c5 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f178cc6 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2082595d snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20e396d4 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2590a6b4 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27399fce devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28cea85c snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29847c92 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a8a8b45 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e3a434e snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31381877 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32a086e9 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3339eb7b snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33f29556 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b98372b snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3cf86f5a snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3df3d912 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f6baf89 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x410529d6 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42fbced6 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4530623b snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46bb0562 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48fab76c snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49bf4855 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b925e3b snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bf872f4 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bf89b92 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5106a034 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x522675b9 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5239475b dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52baec9f snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x531f4c4c snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54eafd29 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59b2481f snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59e2ab48 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5bca297b soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c3887f4 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61f21704 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61f83b25 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64c0ddeb dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6548a0a8 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65f3f7f6 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6652fd84 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67928ebb snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69991387 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a13f2c7 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a5ee775 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cbf474e snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6df33294 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ea45a11 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ed7e3c0 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f7a067b snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73caa047 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x762a6578 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78422f62 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79bf8db8 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a29a4ca snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b4edec4 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d7d7992 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ebcfffe snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80d1d269 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81814873 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x819594d8 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8861c2a8 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88aa6794 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a0c0291 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a16e0b6 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c727d2a snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d64a081 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ed79761 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x945fcfe1 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95595477 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9559dd05 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98b9fece snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b6691ac snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c458748 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d14e7b2 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9efa2815 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1055d77 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1798b7d snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4e081ec snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa62da3d3 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa675273c snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6961db6 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7d52757 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa81f4244 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9823f50 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9d95137 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb437fc20 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6a2e6e7 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8257bd4 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9e64f60 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe3e7da2 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf2c6e2b snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc342bbb2 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4bf911d snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4fc8c95 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc52da1f4 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc65839b1 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8801ad9 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc946118e snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca8fc5e8 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcaddd717 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc0854f8 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc4c83e5 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd7c51d0 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd07b94e8 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd21d3710 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbe54c58 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc448638 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc9a92e5 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd0dc2b4 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde40f254 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0a46005 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3be2c02 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7be9507 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8ab1fff snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9abb2bf snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebc341f8 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedf383e8 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf004db2d snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1077e19 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3a424f5 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3e07b94 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5635119 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5800969 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5962e2a dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5ec1cb9 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc48cbc1 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff6222bc snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2d52dc18 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7173697f line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x72ac7219 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7754f16a line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x865bd65c line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ff53b1e line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9bc60345 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa1526521 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa71351d3 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xabebfb63 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xaf62ff12 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc1d708dc line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcb757684 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdc09688a line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe6a4404b line6_version_request_async +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x003617e7 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x0039c3e7 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x003c9812 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x00455158 crypto_alloc_instance +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 0x0076625e __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x008fc741 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a5b121 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x00ade3d0 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x00bdf78b xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x00e3f5cd serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ffe065 cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0163963e acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x01770e42 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01926211 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x01a310af scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x01c5154c dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01efc9d8 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x0211a721 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x021af86c inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x021b8826 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x0230b975 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x023c3ef4 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x024664bd rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x025605a3 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x0270ed06 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x02726bcf bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x02b05ef4 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x02bb769c iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x02ca38e4 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x02ca78ac component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x02fbddb4 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x030d15f6 xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0x0316f8e6 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x0324b11d sdio_writew +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 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03d8a65d pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x03d98829 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x03e1fc67 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f1ff83 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03f4b6d3 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x043edf42 usb_store_new_id +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 0x04987c44 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x049a14bc acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x04a416af __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x04bf26af ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x04bf91d8 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c944ec desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x04d7cbf9 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x04da1028 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x04dc6f4b blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x04e91ed2 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x04f15492 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x04f3376b sdev_evt_send +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 0x05162eb7 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x054e5728 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x055ef5e0 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a05be6 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x05a85ec9 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x05bd4cc3 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x05c31694 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x05c41588 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x05e3eca5 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x05ed67c8 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x05f09f0f perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0604ece4 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x06144860 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063feffa regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0658fd8a gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x06885065 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x068fa3e8 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06a1c277 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x06b10951 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x06c982ee bsg_setup_queue +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 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x0704c93c device_register +EXPORT_SYMBOL_GPL vmlinux 0x07191d43 regulator_get +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 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0763d365 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x0775a91f inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x0778fc0e blkcg_print_blkgs +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 0x07d74a7f gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0808e982 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x080d0551 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08274e00 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0830ca4a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x08423b26 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x0851b7ef crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x08584056 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0859cd9b ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x085d6272 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x08a77ab4 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x08aad163 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x08ad744f single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x08d6a382 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x08e45998 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x08f8073d kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x09199dc6 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09241c32 acpi_dma_request_slave_chan_by_name +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 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0980b6da bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0983df26 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x0987d68c pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x098ce98c irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x09956893 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x0996cffc __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x09b16ce8 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x09ce7652 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x09e342dd vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x09f96484 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x0a143837 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x0a37fe04 rdev_get_dev +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 0x0aab4b8d key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0ab50799 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x0ac79262 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x0ae1fa9d ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x0afc54b2 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b368d87 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b60f2e6 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x0b6dccf3 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x0b715d9d __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x0b93231d ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x0bb641ff save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x0bcb41b6 adp5520_unregister_notifier +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 0x0c20999d serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c4480d8 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x0c480247 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x0c4a0818 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x0c4cdd18 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x0c56e4bb pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x0c59c831 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x0c60a532 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x0c771274 ata_scsi_port_error_handler +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 0x0ccd7747 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x0d02eeb1 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x0d444c5c usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0d46af01 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d5b681b find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0d63b16b power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0da70e8c __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0dc414aa ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x0dd3c04d bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x0dd438b3 netdev_set_default_ethtool_ops +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 0x0e0531fd fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e19672a regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x0e52ccc8 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e54957d tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x0e5d9e24 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x0e642277 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x0e73d447 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x0e77d771 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x0e7fedbc sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x0e8d98e1 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e942ae0 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0e9a6d37 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ea72851 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x0eb1d9be bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0ec11494 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x0edb8a71 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x0eeaedd0 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x0ef611c6 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x0ef9fc5e virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x0f02094d call_filter_check_discard +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 0x0f4fe9ef fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x0f5f608c inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x0f6a926b extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f97d527 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fac122e blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcb6813 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fdf1bba xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0ff19367 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x0ffb7b8f crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10855f20 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x108c184a regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x10915957 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x109a37d0 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x10a08611 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x112672fe i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x11454ffc usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x114928da regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x115939ab gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x115f9337 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11919484 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x11b3c20f acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x11c65d3b ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x11cd3b83 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x12139ddc pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122d7e55 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x12365e8c percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x12371825 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125099ae crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x127a187b set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x12829bff pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x1294d80a get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12b7164d phy_get +EXPORT_SYMBOL_GPL vmlinux 0x12bbdd51 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x12cb0760 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131bff35 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x131e01f3 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x132d0f07 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13772837 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13c2dd3c ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x1401c5dd gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x14068f8d __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x140cd291 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x14116cba xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1415ee65 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x143b1dcd devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x145a50cb inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x145a7865 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x14724c2b relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x148efce5 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x14cfbd8a con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x14d0afaf trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x14fd1fea unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x1502f45c sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x152beb5b __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x15504c42 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15d4c199 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16320ce0 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x1633a6be pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x164934f4 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1665aff8 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x16a561f7 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x16a5752b thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x16c626c5 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16caa563 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x16cb44b0 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x16cc975c pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x16e0df7c blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x16f00e65 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x1707cd33 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x1713f430 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x1714b7dc pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x1734b2d5 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175cda20 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x175f52f8 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x17644a40 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x179614b7 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x179b430a tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x17a92f2e xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x17bc4f54 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x17fe1e76 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x18056139 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x181afc15 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x181ef845 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x184f41d3 __gpiod_get +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 0x18714b70 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1899cfc8 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x189a8d64 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x18a1b946 rdev_get_id +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 0x19397782 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19413562 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x194c90e3 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +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 0x19a868cf perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x19b0e62c fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b5fea7 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x19bf6700 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x19c96b7d phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x19de0171 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x19ec397e ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x19ee99fe regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x19f1c270 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x19f425e4 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x1a0475c1 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x1a144600 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a4e9846 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x1a5d059e devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1ac5cde6 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1aeafb77 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x1b15cfce __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x1b16536b usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b42e259 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b612db4 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x1b7a7dc0 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9e24c5 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x1bb8500e ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x1bbe544d crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bf573f9 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x1c1ac486 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x1c2759bb inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x1c357197 regmap_get_val_bytes +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 0x1cc010f7 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x1cdde0e9 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x1cfec64e xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x1d0d1c47 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x1d36b27c xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x1d3e2659 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58add0 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d59b905 restore_online_page_callback +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 0x1dab6495 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x1dcd9626 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x1de26a53 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e001f99 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x1e0867b3 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e280201 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1e50b820 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5ff9a9 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x1e68b064 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eb7d0ed ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1eecb183 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1ef0f12c regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x1f244381 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x1f72507b sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x1f7f6fac register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8d6ac8 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fad89be crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x20191f92 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x203354ac dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x204af089 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x204e66e6 percpu_ida_free_tags +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 0x20b056a5 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x20bbef4c crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x20c8fb12 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x20fae682 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x211055b2 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x21369b6f usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x2142b138 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x214d6c23 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x21638c16 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x2169f3d0 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x21799234 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x21943e60 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x21a494b1 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +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 0x21cfa09e __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x21d1a53f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x21edb7ca xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x221eccd4 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x22534460 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x225d1a61 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x2280ad9a inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x22828549 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x22d1f4d6 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22dbfd9b invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x22ffdc09 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x230063ee rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x23048011 __intel_mid_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0x230bf0bf irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x2341f3d2 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x235c0cb7 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x23631f3b inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238942cc blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x238b3ba0 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x239f3af4 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x23a0d777 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x23b60b7e sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x23b9d6d7 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x23f09b5e locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x240d9d69 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x24199119 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x241ce551 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x2434dd96 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2453fda9 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x24637580 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24bf9b84 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x24c119e0 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24e38616 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x24e65afb usb_hcd_end_port_resume +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 0x2512e89c invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x2521a6e1 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x252f1e24 usb_gen_phy_init +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 0x254f36d5 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x2553a98e __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x256184a4 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x2571b528 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x25886455 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x25b585e1 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x25c335d3 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x25d70bc1 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x25dfd7be blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x25edbc68 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +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 0x265edadb security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2679c161 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x267b986c scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x2689f070 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x268ed01d netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b0c843 xenbus_unregister_driver +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 0x26cdcae6 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x26da00c7 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x26f29d0e dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x270e4095 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x273ba9d9 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275094f3 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0x2750e1cc init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x275b08e3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x27772f71 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x27793c95 led_trigger_set_default +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 0x27eb69ba filter_check_discard +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 0x281022a2 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x281d54e1 perf_event_enable +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 0x28569869 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x286c9e86 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2883b0ea devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x28b4cfe4 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x28c9649c PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x28e5ca2a usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28f258c7 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x2952ff12 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x296d5ac1 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x29769348 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2986e33f blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x29d64684 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x2a34c6c2 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a3aac8d get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x2a4649e2 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a842af9 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a998803 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a9ad9b0 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2a9aef9c device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2ac5508d genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x2ac9c133 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2ae3e0be blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b02fce3 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x2b21aa6a usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x2b2bc136 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x2b32278b cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x2b41a6a9 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x2b588350 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2b72ac68 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x2b8e5b30 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2ba6630e led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x2bd57b8c unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c19d43d get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +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 0x2c97e0ce mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x2cdad80b relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x2ce7d368 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d03b119 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1e59e1 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x2d2319fb regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d50d1c7 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x2d531af9 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d938be3 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2dd1052c nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x2ddd08b3 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x2de39c08 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x2de9cf57 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2e164342 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x2e17d333 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2e183ecc da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x2e208e81 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3bb7c7 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x2e6678de list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x2e6b5c7c debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x2e6f1c29 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x2e94d316 da903x_set_bits +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 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1848d3 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x2f25a120 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2f3a1778 crypto_unregister_shashes +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 0x2f544eb6 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f645d16 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x2f7208f3 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x2f72e73a device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x2f797d4a tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x2f8b6b0b __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fe3b63e blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x2ff0ee7d regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x3012909b ip6_datagram_connect +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 0x305bb14f lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x30704d80 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x307ba68f md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x309b3293 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d6f790 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x30eb4bc9 pstore_register +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 0x313eb2bc ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x316cee70 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x3186bcd7 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x31972706 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x319dc976 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x31ae6165 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x3201a064 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x32268c58 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x322f3511 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x32365587 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x324ec40b device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x32557712 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x327abbc7 __lock_page_killable +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 0x32ba17e5 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c438f0 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x32c95f34 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x32cc10d7 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x33033ade devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x331bfea0 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x331dd9ab unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x33213a96 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x334a10f0 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x3351db97 shash_attr_alg +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 0x33707413 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x337a1f4c xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x337a76e4 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x338198fd sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x33940d7a mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x339f686d dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33bd9166 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x33cad181 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x33cb2859 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x33d4a91f ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x34040192 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x3407a9d7 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x3434e1b8 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3438d1bd crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x344113d5 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x346753f3 wm8350_block_read +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 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34bdbc75 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x350da4b2 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x35312169 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x35495625 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x355e5106 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x357ef791 dev_pm_qos_remove_notifier +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 0x35c7719c device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x35d82e64 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35e9f7e2 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360b1fb3 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x3619a6b5 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x361a7b76 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x361d0647 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3620b70c __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x36406b0c power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3671ec05 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x367f0231 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x36909835 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x36918029 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36acf0c8 dev_pm_qos_add_request +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 0x36d5d86e cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x373dba90 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x37443317 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x378dfa1b page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x37934931 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x379568b9 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x37aa4ca8 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x37cdf784 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x37d00041 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x37d2612b hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x37ddb098 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x37de662b devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37fd6ee8 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x3856832d pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3859da2f sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x3879a171 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x387a7e10 hvc_poll +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 0x38d33779 device_create +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38fa9d07 nvdimm_bus_attribute_group +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 0x3914b1bd regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x39305cdb srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x394d0994 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x3971d6aa usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x3988e563 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x398ddbdc pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x39bb7d85 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39dd068d device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f41bc3 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x39fb8262 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x3a013e0b iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2ff838 regmap_field_alloc +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 0x3a56a2a5 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x3a6a95f0 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a82ae41 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x3a8308f7 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3a8c41c3 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x3a92b164 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aaebca8 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ab62b37 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x3ac85ed2 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3b071c2e usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x3b1f7192 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x3b320df9 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3b40e47e virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x3b4793c7 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3bdf1a5c devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3be586c8 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x3bf22109 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3bf95fc1 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x3c11636c class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c1e33ea trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x3c288353 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x3c3d2116 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x3c5110f4 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x3c87209e ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x3c8ac6e0 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x3c8b22f0 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3c95457d blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cb51345 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x3cc564ac pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce8c7f0 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3cf1f102 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x3cf57c99 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x3d3409f0 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d432b6b __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x3d509c42 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3da94b4f clk_register +EXPORT_SYMBOL_GPL vmlinux 0x3dac5a3b ata_bmdma_dumb_qc_prep +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 0x3de2b4f6 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x3de333d0 user_update +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3deda8dc class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x3e134263 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x3e1ed637 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e3c04ac event_triggers_post_call +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 0x3e866b5f nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x3e967241 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eb56f88 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x3ede2364 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x3ee0437e rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3efdb8f1 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x3f0ecd7d find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3f1c9a89 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f4769f4 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x3f531493 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x3f6528bf ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f8620fc acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb45f6f crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x3fc41569 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x3fc4b787 blk_mq_tags_cpumask +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 0x3ff0fa31 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x4002b936 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4008e203 nd_cmd_out_size +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 0x4052f294 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x406ede02 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x408212ba hrtimer_active +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 0x40e31383 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x40ec8aee wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x41058dab rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x410badfb pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x4121bf47 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x412b5dcc uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x4144acc0 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x41476236 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x4163c1fd regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41cb39c7 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x41e9dbee regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x41f4ce5d inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x41fae6b0 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x422085fd devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x42316adc usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x42425328 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x42483207 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424d03a4 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x424e2791 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x424e9547 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x425679ad pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x426af444 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x427eef68 ata_dummy_port_info +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 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42eb2ebe usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4304dbe1 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x43570e9e pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43685ae0 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x4373ab75 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x4377e6f5 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x438d13e7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4393c41e inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43c08466 fb_deferred_io_open +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 0x4431c117 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44ac21ed regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x44aeae28 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44f93ce2 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x44fdd191 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x44fed9cc platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x451def9f attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x451fe923 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x4560afc6 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4578071f find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x457d578c led_classdev_suspend +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 0x46011286 gpio_to_desc +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 0x46232763 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x462e02c8 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x463c49bf skb_to_sgvec +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 0x4655e5c3 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x46694475 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x466f9798 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x467dd04d usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468f07d7 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46921ffa rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x46b7c0dd __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x46bf94be tps6586x_write +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 0x47235a4b irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x472fd72c inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x473e1d3c rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476e4928 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x4776ec7c spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478f4c1d regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47f2f112 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x480ffca7 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x4817a732 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4830b45e uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x4851ed8c usb_phy_gen_create_phy +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 0x486d8f30 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x4879bb6a rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x492a0082 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4952547a rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x497488a5 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x4974a82d rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x497e42b5 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x498015ab iptunnel_xmit +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 0x49aab3a2 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x49e76694 acpi_device_update_power +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 0x4a673c06 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x4a6f4d03 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4a942401 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4a9e4af0 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x4aa0605f phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x4aa21ba9 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4adf7495 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b100406 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x4b163ce4 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4b308520 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x4b4ab8c8 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x4b4c1b26 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x4b5d9200 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x4b6b1907 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4b6fb5ff __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x4b8230da mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x4b8526a0 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x4b9c03e2 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x4bba7cbd devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x4bcf503d swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x4bf7296c smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x4bfc1241 xfrm_inner_extract_output +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 0x4c531186 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c65d322 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c9f4334 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x4cc58404 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x4cd64a6c is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x4ceb23e1 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d0e6799 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x4d0fc9f1 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4d1c91b8 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x4d2d764b key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x4d35bfa8 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4d465159 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x4d796ee2 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x4d89530a unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x4d89ea0e platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x4dbc9c19 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4dbf50c6 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x4dc3f2cc nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x4ddc3f84 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x4ddc7409 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e02aeb4 perf_event_disable +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 0x4e29a0e6 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e3c3b33 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x4e4c1c8f __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e5e6892 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x4e63c84d bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x4e6df223 fanout_mutex +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 0x4e9141f6 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4ea3fa96 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x4ec48358 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ec4b063 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x4eccc24b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4edc1728 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x4eee3815 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f080271 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x4f12cdde pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4f2fd0bb digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x4f4a5c7e ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7bfe2e security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x4f9525de rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4fa77f71 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4fac33e0 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x4fc52e8d __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fca64d2 __pm_runtime_resume +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 0x4fe43531 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x4ff625e5 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x500ee5a5 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x5024042a sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x5029cdc8 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5041319c pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x5061ce46 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x506eec12 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x507b76fe flush_kthread_work +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 0x509a6f6c is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x50a1da53 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x50b94ba8 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x50c65e62 ata_scsi_change_queue_depth +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 0x510146e2 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x51049c58 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x5118931e dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x51196f8f ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x511c1b82 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x514d58d8 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5165858d tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x516c2d8a serial8250_rx_chars +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 0x519c60c1 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x51af9f16 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x51b6959b pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x51ce0ad1 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x51e69396 ping_err +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 0x52414f24 fat_add_entries +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 0x5264ae50 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x526719d8 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x526ce4b9 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52f102db __percpu_ida_init +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 0x538a06cb ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x5396e5ba inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53b3b2f1 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x53bfb1c4 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x53cd3369 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x53e0d96e ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x53e244b9 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x53e9f33e ata_wait_after_reset +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 0x5431a564 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x543d311a serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x543dca30 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5481e772 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x54912a73 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a7de4c acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54d88334 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x54e35288 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x54ffa54e blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x5511e029 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553e0f80 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +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 0x55ab5b3c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x55cd243c ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x55edd53d unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x561fc1db mbox_controller_unregister +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 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56457864 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +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 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56bbc3c1 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x56d4f655 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56d8647c i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x56e2f037 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56ed1d43 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x57052a33 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x5716216a each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x571641e7 tcp_send_ack +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 0x577e8dc3 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a903dd blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x57ab03f3 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57f47385 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x57f62e61 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x57fdb17c ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x5822339b __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x585cada4 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x58629a81 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x587bd46f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58bd9e29 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x58d50b59 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x58d6b2fb ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x58e1c528 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x58f74152 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59030328 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x59077d85 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x590e4a73 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x591119b5 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x593fa8e3 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x5954ddd3 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x595c837a input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5970fade xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x597b1aec __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x59812bf0 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x5984eaf5 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x59db27bb usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x59dc37ec get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59eb82b4 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x59ebc9d8 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x59ef0464 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x5a174d81 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a505a8b acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x5a50f9ee xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5a65e85a ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5a7ab630 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5aae8246 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x5ace9344 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af9a0ca skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x5afceb81 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5b06093c inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b1a7224 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x5b1cc91b spi_add_device +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 0x5b406715 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x5b701f74 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5b882308 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x5b91f427 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5babf842 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5bbe095e tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5bc8d9d8 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5bcbf134 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd8d9c7 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bde3ff5 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x5c0525d5 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5c1572c8 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c17083b regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c18ea21 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5c312e73 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x5c39169d ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x5c3b4fd4 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x5c485bac ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x5c5490c2 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c6e2b11 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x5c710c2a wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5c82e642 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x5c88d8d3 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x5c8fd2fe md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cdaabe0 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x5ce0fec6 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x5ce19432 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x5cefa1a0 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d5b0669 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x5d5ca512 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5d77a47b dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x5d889eec handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5ddb91be subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x5e344573 ablkcipher_walk_phys +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 0x5e73556b pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x5e77ba35 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x5e8869af vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x5e9a52b7 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5ea83b43 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x5eb983d3 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x5ec545b4 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f3208f2 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x5f62a37e rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x5f6323c1 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f64f266 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5f725cc1 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x5f7a6643 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x600188a0 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x60081ce1 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6034b63c rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x604853fa ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60527861 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x60828865 sata_scr_read +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 0x60b1a8af raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x60b7c9e2 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x60cc3cf3 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x6123e646 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x6130bef9 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x614421b2 usb_hcd_start_port_resume +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 0x616ff6ab scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x61a769b3 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x61b01271 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x61b0f0c9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x61bcf717 ata_pci_sff_activate_host +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 0x61dcda8c spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x62001c27 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x62135e87 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x622ba9df find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x62545d03 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x62659d5d pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x6269f284 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x6280c2c3 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x631590df gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x6317e1cb register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x6339f34d max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x6369f2fa usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x6375b847 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x637e81b6 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x63ad935d x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0x63c710dc ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63caf20f verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x63e6fd5d mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63ed3168 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x63eda440 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x63efdd8d devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x63f3ab6c efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x64275b31 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x642e4572 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x646311d9 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64c2a6c7 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x64c37430 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x64eb596d rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x651daaa1 uprobe_register +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 0x6536f68c ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x657feb9f usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6618470d tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x66403d33 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x6641de6a rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x66523729 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e38697 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x66eceb7d rio_lock_device +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 0x6734222b fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67522e06 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x675a36f4 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x6770cbf9 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67abc086 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x67aeffea rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x67e378c9 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x68205104 xenbus_dev_groups +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 0x6849f6af blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x689275ad crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68a5fb9c thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x68ce8ccd crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x68fb1e55 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x690b2921 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x6916702c regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692e8673 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694718ec dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69ad5193 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x69caa2e0 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x69cffafc perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x69d18f7e map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x69d5ceae usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x69d86300 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x69dd43c6 usb_enable_autosuspend +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 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a58515b blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a65f151 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6a6a3e5e wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6a6b6286 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab103cf crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ae57ca5 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b11d3da pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x6b127511 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3828db wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x6b69f8d1 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b876657 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x6b93c84c dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x6bd7fb18 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x6be7b0d2 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c00514c dev_attr_link_power_management_policy +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 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c40a520 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x6c420e29 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4c875b fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x6c5233d4 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c6ab5f7 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c7b5203 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cad47d1 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x6cb885f9 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x6cbc6b3c file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x6cc90a14 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x6cd1f53f nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdb31a2 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x6d1694d7 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x6d1c8c42 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x6d217d31 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x6d225d04 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x6d233e2e ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d339861 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d33d5ca usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6d4db458 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x6d674963 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x6d6fc51a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6da0a1c4 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x6dad03dc fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x6dbcbfbd nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x6ddb96af da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x6de70197 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x6deff636 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x6df03d21 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x6df95bc6 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e1cd3ab ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e58f573 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x6e6e968d fuse_do_ioctl +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 0x6e9fd061 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x6ea3644a crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x6ea5dbd9 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x6eb1f9e3 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x6eb57855 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x6ee9ab4f bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x6f001521 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x6f09e308 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6f0fa03b tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x6f137f00 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6f14236a tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f241e97 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6f3d1d57 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f5bf106 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x6f666b63 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x6f682280 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x6f72adfa wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6f7a078e clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x6f7be297 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x6f7c1e8b sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x6f9bcf34 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x6f9f38e5 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x6f9fac56 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x6fa3cf41 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x6fab1eb9 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x6fc1c4ce get_net_ns_by_fd +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 0x7019dfbb usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x70201233 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x702ad29b bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x70524b23 blk_mq_freeze_queue +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 0x70a52cba __sock_recv_timestamp +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 0x70ffd99a dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x7103b6a5 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711e4e6d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x71598edc device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71851073 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x71896c9b elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7189ac68 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x7193addc usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a66a73 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e417e7 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x720e01e0 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x721d2ce1 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x721ec3ba acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x722bdb9c phy_create +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x7258cd40 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x72640d9a regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x7268a293 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x726ae878 usb_register_dev +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 0x72c60c96 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x72cbdecb rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72f8a2ad usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7326e126 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x7330aa0d sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x7331f213 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x734dc241 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x737a2c44 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x73963cc4 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a720c5 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x73b3f0b9 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c4cc41 ata_sg_init +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 0x73d7e8e1 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x741051cc bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x742b9279 i2c_new_probed_device +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 0x74533d0f acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x74605bae dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746827de tty_ldisc_ref +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 0x74b9f79b hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74c90dd1 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74ee2fef dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x75022ff0 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x7503d2fc blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x7513ac59 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7537bd36 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x754d31c2 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75b0f66b ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x75bb797b ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75cc5f17 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x75db49c4 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x75fe5ce1 mmput +EXPORT_SYMBOL_GPL vmlinux 0x7602616d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x763115a4 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x764b102b dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x767fd168 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7689ad76 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7690d720 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x76a88019 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x76af1091 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x76c072ff regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x76ce1734 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76ea609b pm_runtime_irq_safe +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 0x772dfb00 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x773498ae palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x774e51b5 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77589bf5 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x77899325 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77b318e2 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x77b4e5b0 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x77c7e882 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x77ed2602 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x782821d3 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x784d6d61 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x7854a270 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7867169d crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x787ea5a5 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x78a7ca6a simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78d97266 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x78f6a289 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x790a25e6 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x790fe7aa to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x7913741d __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x7932bb12 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x79397047 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x793a67f4 rtc_irq_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 0x7957b5ba ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x795b1b64 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796edcab register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x79763252 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x7989c811 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x79a0f715 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79b3ecd2 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x79b57a9e fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x79b7518e raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x79c4abe2 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79e7d0e2 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x79e8d2bd power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a256e30 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a342dac relay_close +EXPORT_SYMBOL_GPL vmlinux 0x7a6d020e ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a956db0 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7a96b83b usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x7aa11797 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x7aa4802a dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x7aaf54de udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7abf5a6d dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ad582b4 wakeup_source_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 0x7b584ac4 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7b831044 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7ba31a44 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7ba658cc devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x7bc38910 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x7bc4c8b5 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x7bddabfb perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x7be651ce irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7bf5d488 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x7bff4171 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c294f2f usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c7cb3be pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7ca87cfc init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x7ccfed03 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7cd4f92b regmap_init +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 0x7d04fe29 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x7d226d30 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x7d23c682 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x7d3be80f gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x7d57cfc4 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5ce8a5 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x7d7b9611 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7d9c2402 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db20d44 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x7dc481d7 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x7dcb5524 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de62255 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7df05e52 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x7e017353 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x7e0519b3 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x7e0bd874 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7e294e93 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x7e379641 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x7e5709d9 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x7e58aa50 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e66258a usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x7e752a4b pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x7e7c8e79 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7e7df293 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x7ea58972 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x7ea77de6 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x7ea96e8b component_del +EXPORT_SYMBOL_GPL vmlinux 0x7ee3613c cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x7ef0910a pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x7ef9c00b shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x7f096180 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x7f0b55e8 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f351278 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x7fc79d74 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x7fdf3be9 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x7fee894f usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x802031ab ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x802cc738 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x80540a8d max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x805430b9 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x80622ce8 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808a131b smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a88f20 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x80b43d43 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c6ca21 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80dc47c5 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x80e463f2 tpm_calc_ordinal_duration +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 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 0x81832d67 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x81986a22 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x8198820e blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x81caa9f1 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x81e6b623 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x81f702be ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x821c3086 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +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 0x8276dd3d iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x82978442 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82b31059 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x82d2cbe8 gpiod_put +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 0x82fd5c9f scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x8318d799 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x831d4f76 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x836666ce alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x8367930e reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x836a7489 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x83891bc6 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83995fad ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x83a4f648 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83a7fe57 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x83ba5fbb hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x83bea91c sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x83e27f3c xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x83e81f68 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x83fbc395 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x83ff873b device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x8401061f pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x840fa8e1 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x84115784 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x841adbd1 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x84215d35 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x843ea384 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x8440baf0 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x8462bdcf btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x84989f70 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x84af7d82 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x84cb7c72 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x84dde3c0 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x84e48f7d uart_insert_char +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 0x85166e25 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8528d03f xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x8533ad77 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x8557107f tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x857254a1 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x858b4c68 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x859bfb68 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x859ea41d bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x85a0be81 pci_cfg_access_lock +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 0x85e6949f gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x85f2a5a6 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x85f82dd9 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x85ff65db shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x8609e7e9 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x8616241e ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x8623d105 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x86475fbd __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866c1ab1 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x866d76a1 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x86702920 rtc_irq_set_freq +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 0x869b3cf5 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86ac5ec2 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x86af6d6d dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x86cf1d7e regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x86d91c2c regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x86e69416 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f232e9 ping_proc_register +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 0x87249f39 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x87319c53 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87428d80 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x875f2097 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x878e05db virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87b975f7 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x87ec1945 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x87ef953f inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x87f25512 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x87ff7987 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x884ed374 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x885ef5a4 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x8863b086 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x889e8dcf usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88e70428 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x88f7f64c usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x891a0241 locks_release_private +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 0x8928ab33 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x89360bcd proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x89449932 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894a8aaa tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x896249c3 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x89895d61 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x899d10aa sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbdcc1 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x89e800af kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x89fd2894 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x8a01eda2 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x8a4e8eb5 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x8a50e314 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a59240a wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a795ebd dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a8085be blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x8aa08803 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8ab93554 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac10fdb ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8ae01a0d gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x8aefc3a8 scsi_queue_work +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 0x8b4c6593 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x8b4e7c04 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x8b5d655e usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x8b7335ba acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x8b85c4cc cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8ba96ca8 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x8bc0f86b pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x8bcbc696 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x8bf670c5 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x8bfd5d35 dma_buf_kunmap_atomic +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 0x8c182b89 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x8c1d6cb0 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c667b05 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c77608f ata_std_bios_param +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 0x8cce6edc input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8ce7c2cc scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x8cef93a2 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d2346dc blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x8d3073d9 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x8d6ddca5 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x8da37f5a ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x8dab0207 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8dbd2957 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x8dd06f44 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x8dfb9555 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x8e08e3e7 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x8e097873 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x8e2692ea bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x8e26aa6d usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x8e3cb622 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x8e592f82 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e821cb0 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x8e91ffef usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x8ea95f31 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x8ed9f3c6 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x8edf9b30 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8ef381f7 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x8f05aa82 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f273e17 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x8f37fd24 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f6ebaaa perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x8f92233d acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8fa03f5c usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x8fa37e1b ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x8fe43587 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x8fe605e4 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x8fffe016 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x9002c2ca __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x9026ddf6 blkio_cgrp_subsys +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 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9066b0ac reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x90774d18 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a180ef input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x90aa48f9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x90cd0f57 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x9103dcaa reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9131f23e fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x913e2c6f __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x914ed183 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x9162c106 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x91641e6b devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x9169c1e4 da903x_clr_bits +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 0x9188336b rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91de4dcd cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x91fba1fe crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x923747db gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x925f5a0c xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x9288dcee i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x92a1db3b pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x92a24104 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x92a94816 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c5cfa4 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x92c85fa1 sock_diag_register_inet_compat +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 0x9312723b subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x93129861 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931430bb tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93788ac7 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x9386eafc class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x93876446 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x93945e87 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x93e68579 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x93ee6626 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x93f2d7fe md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x9416a335 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94346ab1 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x9438418c od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9462987a platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x9479bb8e usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x947cca4d xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9489af76 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b65b67 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x94bc1d2f pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94c9550f fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x94cdd723 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x94d4f403 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x94de0154 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950b1f6f tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x950f7f6e usb_match_one_id +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 0x955ef13a devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x956af0a7 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95b6d46e fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95ebdc74 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9630af30 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x9633343d driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x963d1b0b kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x966679f4 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x967d7c02 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x9684eca0 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x96a05b4a mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96e41409 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x96f4ee4b ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x97002889 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x9710444b driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x972c27e9 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x97356e93 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x97396a63 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97ad79a5 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x97adb9e9 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x97b61d30 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e12c66 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x97e71bc4 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x97e92223 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x98230758 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9849f841 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x984ca8f7 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9861fb05 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x986dc268 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x986fc2aa devm_hwrng_register +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 0x98b6be2c xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x98dfe3fa fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x98f0efa9 get_net_ns_by_pid +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 0x99333ea4 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x993fb138 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x994b6612 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x995ad0b2 system_trusted_keyring +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 0x9986eba1 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99e99eb2 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a42ba9a inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x9a6411d3 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x9a7c6bc8 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8c29ab pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x9a940877 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x9a9d2c04 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9ab8a272 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac77d9a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x9ad879c4 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x9adafded ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9afb0838 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x9b11437a disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9b1e4f88 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9b3d0fbc subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b46aa0d __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b7a8e01 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x9b934edd dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9b97a7ca ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9bb65b31 ata_bmdma_post_internal_cmd +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 0x9c05d7f8 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c35ece0 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c48abd4 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x9c55faf6 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x9c5de7b7 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x9c8d48c2 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x9c8e4934 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x9c930cc2 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x9ca4cb36 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cd798f6 usb_remove_phy +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 0x9d0d9c10 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x9d0fdb0f irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9d1475f8 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x9d255803 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x9d25e721 xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x9d35b32b devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d43bddf gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x9d62c898 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d8c5478 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dd41af6 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9dff951b scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x9e069a06 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e475e3f __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9e53f5cf dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x9e67fabe __class_create +EXPORT_SYMBOL_GPL vmlinux 0x9eae424f ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed652ca gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f12905e devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x9f362b3d __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x9f40f4b5 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9f5766aa kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x9f57f767 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9f925400 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x9fa45b54 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x9fac11d2 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ffeb758 intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa01f5dc0 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa046ae34 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xa0489abe spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xa0687e55 ata_eh_analyze_ncq_error +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 0xa0959858 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa09ba02d vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0c70e25 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0d6e622 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xa0eaa655 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xa106ba88 serial8250_request_dma +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 0xa128ba4d unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa12a1c9f crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa165baff __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xa174808c adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1936369 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xa1a3fd90 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xa1ad9f24 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1bfdab6 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa1f59150 lp8788_write_byte +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 0xa24879fb spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xa25aea44 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xa264b716 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2a11662 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2e0a1a4 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xa2e444a5 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xa2fb4b92 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xa30403f0 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xa319ecc7 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa3639cb6 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xa36682ca __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xa37342f6 pci_dev_run_wake +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 0xa3a93f42 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c84f4c __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xa3cf911e ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f32e71 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xa3f9656f skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xa41e8b3f pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa42d2a13 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xa431da1c debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xa4353ed3 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa452475c crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45aa3dc task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xa464a4ea acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4c83dc5 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa4fff039 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xa536c5db regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xa53f8c4d platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa58b0d10 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xa5981c0b cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xa5dd473e uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa60cf313 inet_csk_route_req +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 0xa635e96c find_module +EXPORT_SYMBOL_GPL vmlinux 0xa68d43e9 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xa68fcc39 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xa69881da mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xa69aadc8 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bb43d3 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xa6d6706c device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xa6d6c0d9 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xa6dc58d6 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e96b5d device_del +EXPORT_SYMBOL_GPL vmlinux 0xa6edbfc5 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xa6f1c47a devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xa70afc71 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xa71db9f9 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xa734c1c0 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xa742a033 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa778b96e nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xa77cda56 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa77ed5dd sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xa788bedb tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xa7a45d6c ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7f71a6d napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xa7fae3cb alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa80c4849 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xa815f8e4 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xa824658c mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xa8265152 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xa8292fe2 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa83f73f8 split_page +EXPORT_SYMBOL_GPL vmlinux 0xa8435b84 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa855b788 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xa8835958 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xa89fbc83 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8d13608 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xa90aaba9 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa9140939 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xa9238c1b device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xa93135c3 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa942a1b2 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa9565b79 fuse_dev_release +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 0xa9d462c3 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa9da8e66 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9f26b90 rdev_clear_badblocks +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 0xaa30dba0 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xaa5eeeda mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xaa5ff7c7 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xaa64e0da securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xaa83eb7c pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xaaa4aeac __module_address +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaac9b8 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xaac95690 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xaaf16ff2 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xaaf23ce2 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xaafd5feb inet_csk_addr2sockaddr +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 0xab4aa6bf dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xab52a5ba sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +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 0xabae94c4 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xabb64d87 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc672e6 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xabf177b2 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xabf2e51d get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac568f71 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xac688698 bus_register +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 0xaca451db pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacc54af2 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacead183 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xad08f964 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xad320504 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad49dc16 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xad51e826 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xad787496 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xada89bc0 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xadb58672 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xadbb00e5 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xadbc72e0 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xaddd4b1b rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1227df ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xae175382 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xae1a804b acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae92b83e aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xae9b914d i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xaeaef471 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xaeaf2c70 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaec3d9d4 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xaeceaecf virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xaecfb538 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xaef1e58b platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xaf2fa0a4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xaf4cd6d3 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xaf6bd20b regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xaf7f162e get_device +EXPORT_SYMBOL_GPL vmlinux 0xaf912d05 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafa93b86 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xafab2aea pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xafae896a pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xafb1044a regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xafc4baea led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0318417 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xb032163a xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xb0354bef xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb048da19 register_mce_write_callback +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 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0ee91f1 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xb0fd1d90 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb10b81e3 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xb12ed72b arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb132ff95 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1424b73 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14873aa power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb1693f1c mmc_app_cmd +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 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1aba5a7 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bcaa4c acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1bfe49b __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c92da2 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1f1a263 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xb1f1b32b ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb24078fd skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xb25b969a n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xb26263fc extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27480fd sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb2789aa3 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xb2807548 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb28ad23b rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xb293d9dc debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xb2a3cd66 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ec070e __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xb3015176 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xb31d8f14 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xb31f989e device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3518871 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb355d93b inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb356613c xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xb3bd4198 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb3e61785 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb46ed5ae pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xb4afee38 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb4b7e1cf cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4bbe806 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb4bee0bb dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xb4d2c090 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb4da63b3 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f29f92 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb5018a0e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5279dc6 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xb52e9306 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb52f707f skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5557412 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xb580e818 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xb588f0a4 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb599fec0 power_supply_register_no_ws +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 0xb5f891de sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xb6034fdd tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb60d7ac3 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62bfb6f thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xb6377f32 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb6600228 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb678f52b __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6816dfc wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb6866d27 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb698023b arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b3af84 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0xb6bc49a9 __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xb6c331ca pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb6d3add2 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xb6dbd568 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xb6dea76b rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xb6dee91e alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6e94ed6 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xb6eef627 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xb6ef1a6d crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb6f2c578 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb700b316 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xb70147a8 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb74099fe pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb760133c pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xb775f38b led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xb77c5576 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xb77dc5c0 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xb78081cd ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xb7990a5b regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xb79ea685 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xb7abe8ca wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb7b02609 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7f78ff8 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb7ffa9ca rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xb813be27 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xb81cbfc1 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xb8478b9e get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xb852764d of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xb861669b gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb8683c10 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xb87a2baf wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb8856a03 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xb8ab1ddb irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xb8ac847e usb_hcd_map_urb_for_dma +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 0xb8fef3e7 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb93bcf70 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xb94c01f5 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb94d115a pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xb9912875 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9a741b9 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb9a9a24e dev_pm_qos_flags +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 0xb9e41402 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xb9ef2db0 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xba0a949b class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xba117598 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xba16fecd component_add +EXPORT_SYMBOL_GPL vmlinux 0xba188eea fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xba1d48e5 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xba218224 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba35f041 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xba489401 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xba4bb691 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xbaa2091e ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xbaacb3ab sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaccff32 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbae89479 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xbaf119ad devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbafc9efc anon_inode_getfile +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 0xbb2105d4 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xbb3ebde1 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb68a23a perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xbb6a5d53 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xbb6f8cca xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xbb790dc1 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbbaca396 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbbe5b7a ata_pci_device_do_suspend +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 0xbc12f372 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xbc4346a0 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xbc6b921a cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xbc721df0 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbc84d772 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xbc9e5697 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcae1e89 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcbc57f4 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce80328 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbd02939a __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4f53da nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xbd594c8a nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd8dd42e ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xbda5999d led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xbda5c03c devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xbdbdaf80 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbdbfce5b usb_put_hcd +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 0xbde74c88 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xbde9aaf3 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbdfb69a3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xbdffb0d1 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xbe175035 __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe44f080 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe80951c devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xbe826d10 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xbe9f6d9a device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xbea4011b xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeafdf42 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xbecb54b9 put_device +EXPORT_SYMBOL_GPL vmlinux 0xbecd5bec tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee5c038 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xbeeb03cc regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xbefd23f9 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf17be01 device_add +EXPORT_SYMBOL_GPL vmlinux 0xbf28da0c ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xbf339f75 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xbf489ede sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf4bdddb perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xbf4c6a39 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xbf54f408 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xbf84816d sata_pmp_error_handler +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 0xbfdb677f ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xbfde5537 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfee853f task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc00810ad get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xc0190e1b ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc02603c5 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xc0321d39 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc03744b8 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc09915ff eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xc09afb26 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xc0a148a4 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0cf4853 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d83abf tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e55d87 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f1aa72 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc0f71779 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xc12e0ada srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xc14eba5f cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xc1508011 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xc156d16a mddev_init +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 0xc18c3633 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc1a0be64 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xc1caca1d led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xc1d17f8c nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xc1f59728 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc206beee crypto_blkcipher_type +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 0xc23ff35c pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xc24383a3 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc274c978 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc2884b7d fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc2889a67 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xc2946120 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xc2ae6365 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xc2b7b429 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc332fff1 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3517bc5 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xc367c304 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc38bdc79 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xc3d26b1e ping_close +EXPORT_SYMBOL_GPL vmlinux 0xc4144288 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xc42347bc nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xc4267b41 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43f6072 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45a7df8 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xc4635659 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc475c0f9 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xc4838495 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc52e8bac tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc53c2a6b ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xc53e164b netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc544231e fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xc55b7753 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc57f4b28 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xc5850d7a posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xc5a532a4 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xc5f31fab subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xc5f783e2 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xc5f9f0a1 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xc603d075 debugfs_create_symlink +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 0xc633e2b1 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc660f1a6 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6728eeb trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a09676 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6aa1b54 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6b462b4 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xc6bca132 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6d8d967 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xc6e3ed34 input_class +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7064001 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc71251d1 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xc71dfe3c kick_process +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc74754f8 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xc748e3d7 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc755b900 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc76a20b1 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc7776970 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc7914073 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc79f5b82 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e770b1 of_css +EXPORT_SYMBOL_GPL vmlinux 0xc81ad80e ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xc82b8a12 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xc8309187 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xc83813ba device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xc83cd785 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc852d569 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc8671946 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc89fdec0 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc8a77b86 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b4c2bc debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xc8de50d9 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e627ae scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xc9028cd0 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xc9049c48 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91b8cd6 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xc928d9bc debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xc95569b9 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95a3a29 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc965ff32 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc9a46ea2 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9ee3303 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xca3d3782 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xca4a0144 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xca6000ea ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xca650553 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xca6cf1df pm_runtime_set_autosuspend_delay +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 0xca9e3ace spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xcab15023 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad36aac blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb2a9bb7 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xcb34cd89 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb51b8f7 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xcb543ce2 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcb6cd4b6 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xcb755755 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb8f0dd7 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcb930eb4 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xcbd48c3f hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xcbd7ed58 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf0dbda usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xcbf24513 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc41133b irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xcc49f30c nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xcc4dcc75 blkcg_deactivate_policy +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 0xcc866042 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xcc94510e dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc9e2c50 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xccbe7dab gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd6bbb5 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccef79f3 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xccf9b52c crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xccfa5c60 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xccfe4b86 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xcd0650e5 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xcd1516df register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd3ea692 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcd4036c5 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd700567 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xcd8938b4 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xcd89708d vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xcd8bfc4d regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9fa8b6 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd10f46 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0xcdd33690 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcdd4a254 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xcddefb98 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xcdf94a23 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xcdfc97ed acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce5db805 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7195cb __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcea37626 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xceacfdae rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xceb0cf27 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcec45a94 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xcec84213 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xced1c1a0 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xced2beb2 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf3a9c57 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf6e9ffe crypto_alg_lookup +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 0xd0384033 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd03ecc52 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xd03f6497 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd050619e da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xd05b23f3 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd062fc6b md_new_event +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 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0db5e37 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xd0e2c156 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xd0e6fa37 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xd0ea4ae7 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd12637b4 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd184b9aa inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xd1df598c devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f87da7 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd236ce81 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xd25575fa nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd296f0c3 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xd2a956aa sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2d1927b hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2ed6de6 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd322a387 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0xd3234fa6 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd324fd82 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xd32faae7 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd35611a2 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd35b2473 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xd36eaaa7 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xd37ecaa7 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd3b47b79 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xd3bea278 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xd3cc68d9 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xd3cfd79a dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xd3d5f602 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xd3f2384d debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xd3f3b14b efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xd3fa5f85 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xd401ab2f wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4067e39 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xd408d441 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xd40b7961 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xd4135db1 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xd416d71e devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd431949f unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd45e0b47 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xd45ea32f hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xd4711ece show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xd4729d87 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xd475d965 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xd4937cad blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd4b94ab5 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d5d94f ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xd512f980 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5156d1d bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xd5209e14 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xd5242c04 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xd5396ba3 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xd53b1f29 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd5470369 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd576d232 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd586abed sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xd5a80e85 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5bf0a7f max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd5bf5d49 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xd5e9d63a acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xd5ed2015 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68c7c81 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6cac008 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xd6cadc58 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd6d7a85d dma_buf_map_attachment +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 0xd733538a blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd736d610 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd73b5b77 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xd75528fd fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd7692c38 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd79fba3d regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xd7a85c5a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7c91b4c ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e1638b pci_check_and_unmask_intx +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 0xd82d4c4a swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xd83e543f devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xd8525cfd gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87a9e56 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xd87b101b pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89820fe pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd8c76c4b pv_info +EXPORT_SYMBOL_GPL vmlinux 0xd8d862ae __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd8e5d45c __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xd8eb4314 ata_do_dev_read_id +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 0xd94fa823 alarm_forward +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 0xd97a4ab7 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd97ca9fd seq_open_net +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 0xd9c5222b sdio_release_host +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 0xda034782 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xda04306d pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0xda250273 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xda326d90 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xda7d7b21 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xda8d25d3 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdabb397f register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xdae08e46 gpiod_to_irq +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 0xdb16d538 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xdb25bc53 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xdb397701 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8c9ed3 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xdb9e790c sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xdba682f7 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xdbb10e50 bdev_direct_access +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 0xdc148a2f unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc29aa80 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc6f539a __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc988d75 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcd2226b of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xdcd75b91 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xdcdf24cf debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdcea1522 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd21fc0b dev_pm_qos_update_request +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 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc6d807 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde018ed4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde2c9371 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xde33eb0f __pm_relax +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 0xde6d2815 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde7efac1 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde9b2829 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xdeaab616 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xdead3d2f spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xdf05092e blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xdf0a1e5a wait_on_page_bit_killable_timeout +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 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 0xdf85128c ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xdf8bfdc4 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xdfdcf593 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xdfe2b5e0 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xe000eeff devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xe003e044 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00aaa95 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xe00da164 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03ef89f pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe04a8a3b gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe064cdfb mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xe06c1030 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xe07c3da9 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe093cd7c sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe0a36882 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0e3a4e5 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xe0ec3bf4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe0faa759 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe0fc440f exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe12e8339 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xe1363647 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe13c620c acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xe140ba32 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xe152b7d2 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17aa5ca gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xe183ed61 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c6906f pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xe1ccaf54 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xe1db273d ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xe1df7792 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xe20286aa watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe221c85b extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe261f49d unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xe26c970f blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2a77dce thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xe2aef57d tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xe2b55dec platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xe2bf71a2 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xe2c21b44 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xe2d4b67a raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xe2e63ce6 md_run +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3159142 usb_hcd_check_unlink_urb +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 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3ca88ae acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xe3eff165 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xe3f3b549 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe3f55260 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xe3fcbe23 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xe4032c63 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe418fde4 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe452ffb9 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xe461ebb5 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49a6fcd sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xe4a43cdd unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe4a501b5 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xe4a5d51d disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4ed6233 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xe4ffa1ac percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe523bdc0 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xe52e6576 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xe53606bd nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe53ea1a1 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xe53f223b bio_associate_blkcg +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 0xe59d4698 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xe59e1efb unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xe5a8ee41 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5c5f2f4 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe5c97db2 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xe5ff5d77 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xe607793e pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe614488b ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xe628c2a2 fat_alloc_new_dir +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 0xe6938444 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe6b16b35 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6cb7270 tpm_chip_register +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 0xe6f1f73d rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe70facae tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xe71eb2a9 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe73b0733 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xe75dd222 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76f26f3 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7b27987 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xe7bf05a1 put_pid +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 0xe7d85196 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xe7e9cbbf iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xe7feaa6b pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe826bad5 posix_timers_register_clock +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 0xe865321a gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe8883e3b regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe8983920 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe8994640 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe8ad65c4 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe8c19657 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe8ff030f acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0xe904246f blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe92ba717 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xe932df04 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe986e9ce skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xe9901287 trace_event_buffer_lock_reserve +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 0xea3964f6 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea47cebb crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xea496204 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xea9bcc1d crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xea9ddc2f xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xeacc7e5a ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xeafc53e8 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xeb253afb uart_handle_cts_change +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 0xeb402f07 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xeb48cd40 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xeb5eb964 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xeb62d54f __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xeb65b161 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xeb6f74d4 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb8bc2f3 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xeb989e8b free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9cc43b bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xebaf6cfa ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xebb60985 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xebbf367d platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xebcbcce6 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xebe9568d fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec14d15d usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec32c2a0 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec6fa369 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0xec9e4777 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xed0855bb ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xed148e53 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xed2a0295 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xed4fd0cf apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xed5df863 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xed754769 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xeda84aba exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xedab2e83 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xedb91f55 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xedbb6e98 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedcdffd4 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xedea6f15 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xee04884f acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0xee10c0bd ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xee1a69fd regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xee1afcc9 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xee4032fe ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xee515d48 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee785194 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xee9b464e cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xeed5743f usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xeeef7a57 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xef0f9c53 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xef1a53c6 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xef1ab2fa sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef3f02b5 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef5805cf nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xef58f308 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xef6a7317 ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefe34fd3 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xefe861a5 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xefe99a09 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xeff5f575 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf01f950b remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xf02fd06e usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0457a88 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf0468906 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xf04eaa52 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf05a6d83 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf071dd01 user_read +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0944d6a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xf096cae5 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xf0b00343 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xf0b32787 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf0bf8c73 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xf0c4a740 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf0c4cfa3 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xf0c53913 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xf0d41c1d skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xf0eb86c5 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf10cebf8 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xf11d6907 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xf12b8e84 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xf1566ca8 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf15bf650 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xf1796f07 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf17a6159 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf197b8b8 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xf1a363e1 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b3686b queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1c9c5d9 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf1f96a2e regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf1fc1548 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xf2003cd8 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xf20af0a9 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf20b5e65 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf20c851e ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2247ac0 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf22826ba ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xf235879c usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf291252d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xf2918c5d clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xf294e99b ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xf2d80c85 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xf2df47d9 ata_bmdma_qc_prep +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 0xf31bfee7 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xf3200be0 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf347c696 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xf34b19e9 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0xf34fe3de __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xf353be64 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf36a0c16 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xf36e2e64 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xf37e1fde rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38c6446 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xf3a19ba9 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b6ce7d usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xf3bc5b94 regulator_get_current_limit +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 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf42d5a3f pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xf46bb7f8 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xf471143c cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf4993c4f crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a48f3a gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf4bfd933 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xf4eb8f6b pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xf4f7d0b8 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4ff0ef7 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xf5036133 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xf514ff1c vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xf5484a4f platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf552cfa3 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55e36d8 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5886392 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5af510b tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xf5b8e0bc regmap_register_patch +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 0xf65ac44b debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf66807cc devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf66b2a37 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xf66d3ea8 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xf6757b8f devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf67cf356 device_move +EXPORT_SYMBOL_GPL vmlinux 0xf68f8c05 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xf6a9e93c trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c839ea __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +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 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf738fdfd dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xf76e3f47 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xf7963174 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf79cb4a1 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf79cf917 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xf79deeb8 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf79fc559 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xf7b718a9 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7d7c3d4 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf7daadc3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf815c271 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0xf823dbf2 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8844bc5 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xf8a7e14d ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xf8a94ac9 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xf8c79747 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xf8da7da7 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8ebe870 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f3bbd9 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xf8fa45cd devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf919be07 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xf91ee265 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93ccef6 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xf9432d97 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9546c41 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97ac30d sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf98a174e ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9aa0efa nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9c679e4 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9e32fe2 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xf9e52367 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xf9efcac6 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf9feb1ab i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xfa033d05 kernfs_notify +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 0xfa1feded usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa576b06 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xfa578630 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xfa832bd1 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xfa87b178 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa78efa pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xfad6f602 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xfae6ff55 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xfb1834a3 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfb1c5079 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb28131d __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +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 0xfb9af334 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xfb9ef67d pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xfbac4920 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbdf128e tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xfbe33c8f ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xfbe69376 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0e385b wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xfc126508 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xfc1e73f5 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xfc202f99 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc7bcae9 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfc97d7ba ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xfcb3af02 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xfcbf6552 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcd410e3 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcebad73 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xfd070311 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xfd0971c2 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xfd2293d3 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xfd3caabf udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xfd4d224d irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd527c1b sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7ed513 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xfd842e23 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfdb9dd51 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfdfb39c5 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xfe187300 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xfe1899eb spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfe20178c xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xfe4428fe sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfe505889 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0xfe66797a rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xfe6740ea tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe909e18 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9e2af5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xfea04036 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xfebe72f2 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee02f24 alarm_cancel +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 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff361fab cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff639e95 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xff6c2564 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xff7103fb usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xff7901af virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xff8da0f0 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffb2e31e tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xffdfa1a8 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xffe70103 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xffff25d4 sysfs_remove_files --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/i386/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/i386/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/i386/lowlatency +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/i386/lowlatency @@ -0,0 +1,19536 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x26f7e8df 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 0x9cc09f8f acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0x1ef98d91 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x7d1a9fe7 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 0x055f226f pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x2a76d098 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x6168e4fd pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x630ea7a8 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x646a6158 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x7be42b0f pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x802edd38 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x99879bd5 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x9a829b76 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xac0d83b1 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xd6db4ecb pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xe49435a1 pi_schedule_claimed +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x5d9af8ba 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 0x26b19232 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 0x746a41de ipmi_get_smi_info +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 0xa494c8c0 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xba7128a6 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xbcc2f4ae 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/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 0x0827f4d4 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x4664a544 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x729b9f98 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa9ca899a st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x3ad81219 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x8c1fede4 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xd2ede56c xillybus_endpoint_discovery +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 0x91458447 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0x5a27252d 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 0x00c92b71 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x013a611e drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01461924 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x018ef9d3 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0207b834 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04e3e03b drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06867e67 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06dbf626 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08d0d73c drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09f51c39 drm_mode_destroy +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 0x0b66acce drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b966f98 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cb22e51 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d8223cb drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d9677e6 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ecf8856 drm_bridge_mode_fixup +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 0x10bef9d4 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10cb8530 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x117f0d58 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11952160 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x121b13e2 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12a2b52a drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e79757 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1537d386 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15531cfc drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1679db70 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16a48885 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17951049 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18b7b2a4 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18c0cac4 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +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 0x1c872546 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cef4da5 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fd317f7 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20034321 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x200be9e1 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x221c4c3c drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23597e1e drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x235d63fa drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24b7fde5 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25b0140f drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2765f9fb drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2847406d drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x297d49fb drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bd126b3 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ca9a665 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d634b24 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fefdc37 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30464556 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32be0882 drm_mode_group_init_legacy_group +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 0x361b9a62 drm_connector_init +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 0x3a1620d4 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b4d1c7a drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bcb589e drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ce636b9 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d053054 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e3c454e drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eac9b2e drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f4a8764 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f963ec9 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41a6211b drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x432e6f81 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43c5d77c drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4561816a drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45a3da77 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45e31742 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x468bc3ac drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47401353 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47447873 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x477d4b18 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x483d4468 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48a626f6 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4921f1bc drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49509fad drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4af6394b drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b814797 drm_crtc_handle_vblank +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 0x4c80e4d9 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cc64e18 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d2f98f0 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dbed9b8 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52657e36 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5534237a drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x560c51d4 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56523959 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56e0d108 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58010a99 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x595b43b5 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bdeda70 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d9102ba drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6049e017 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x625c19fc drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x625ec12b drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6279e94e drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62c34719 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64962ffc drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e4bc47 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x659df2cc drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66a70c45 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x670ef355 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67a9bd13 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67eefa9b drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6876340a drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x689eaf97 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69d60f12 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a69bfe5 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b37bbb4 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b9d1bb6 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bdf155c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc98631 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cff3089 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d704a1a drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dc38ccf drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dd16d91 drm_mode_equal +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 0x71a1840f drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7267a951 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73164eef drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x752fb75c drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7721a420 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79619b6d drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a1e0a66 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b3a5b70 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c27a855 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ca5bda6 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cb28130 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dbe6a23 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7de16214 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e7e302f drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ffef199 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82a325ef drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84351612 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85149084 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8617f8e1 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x862cea34 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8868a73a drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8880aea1 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x894f9102 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89904d03 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ba54649 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6613cb drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c7af55b drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cd7d59e drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ce4f2de drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d4cff1e drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d8e6c76 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e9576b6 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91af809c drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91b49632 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91e53a04 drm_dev_unregister +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 0x9251e031 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x928c4b6d drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92aa437c drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92df5da7 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93288bec drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9470d4e2 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94899c39 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x959b9c8b drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95b9341f drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95cbe316 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98a88d8f drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9902eebd drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a26a124 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9afc28ac drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cc15c2e drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d0fdc71 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e657813 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ebd8953 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f47feb6 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f90e035 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0bab3ff drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1e3942f drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2e52d12 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa41be7f3 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4681296 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5903fe0 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5d7ab1e drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6709f3a __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa72ce999 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa78a6d97 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9acf488 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa7da11e drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacd07bb1 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacf06946 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacfafed0 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0e84615 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb134dca5 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb14fb7ab drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2578ff3 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb26560d2 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2e4e4f2 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb381199d drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3a77a21 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb43422bc drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5949ab7 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5dd0648 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7c38bc0 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbb30003 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbbcce30 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbe35242 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcf347b3 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe5bfe48 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbec212bc drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfc59668 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc05341fb drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc168955b drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc214dea3 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc242437b drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3701fd6 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc518edc1 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5d49611 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6c1184e drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7946ca7 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc80494a7 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc91553cd drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9a9d756 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca3d4b34 drm_legacy_idlelock_take +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 0xca9a039f drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb9626f0 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccfda07b drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd6c630d drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd01ae8ad drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd05d6f19 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd18f53d3 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1c58cc3 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1d4f2bf drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2a12226 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd60fe6e0 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd774e281 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7abf65d drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7b8c80e drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7ce557c drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8a760cf drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd99cae4e drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9febf13 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb077685 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb156b1d drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc047bdc drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfb02df7 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0b4a724 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe15b38c3 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1a19376 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe212fc2f drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe290928a drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe34a6bac drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe37b7641 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe38b490e drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe476409f drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe550fa78 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe55dfcb3 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5aaf9d9 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5abec86 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6ab63f4 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe84a331a drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea3ede8c drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea51e764 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeabd6c26 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed414f04 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee765187 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf10252e6 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf192f7f7 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f4e7e2 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2a85592 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2cd98ee drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3a5faad drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4b2cf57 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5fd3491 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7939e89 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa1dcd8b drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaaea705 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfccbd0a4 drm_gem_object_release +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 0xfde98b02 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe48e4de drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff077310 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff1e02e0 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffe91e20 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028c037c drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0529a2a8 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x060fff7d drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07668062 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08c0559c drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a23a808 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b591538 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f7ac556 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13a83512 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1507229a drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15e1750b drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17466633 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24136a7b drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x273b20e9 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27b2a501 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28a7e069 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29d52774 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e85cfd0 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x303210d0 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31d7ca1f drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38285910 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38b19e7d drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4193bb14 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x447db064 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b223e33 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b76b551 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cdf5dca drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x523550cd drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52614255 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57021984 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59e4b54c drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5dd7c72d drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61af1687 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63228ec4 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64e54eee drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64ee717f drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x675dbfd3 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b30ec34 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d33fa2d drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x712724a9 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x720f3f79 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x742621dc drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x746ac6c3 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78c6d4d2 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d506601 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d8f6b6e drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e6748cb drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e9639c0 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ecc7014 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f249f8e drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fb4ef03 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80952c9d drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82001bc3 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8332450d drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8570e2e9 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86d919b1 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8bb52035 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8de43ffa drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8df3e99a drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92a2cb9f drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94e5fe6d drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95c166dc __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97281c10 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98500b8b drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a9419f0 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e79861c drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0adde36 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2ff3a7a drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5886445 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5caa7f5 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa719d2e0 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7411802 drm_primary_helper_destroy +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 0xa939dc7c drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae82a21e drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb109c8e9 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3eb0cfb __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5802ff6 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5f26a4b drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb69f616b drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6eea7b5 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb827d56f drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdd6e601 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfc80c32 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1bf12a1 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc57695c7 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc65b732d drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7d7f0ba drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0418cd2 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1de6eb9 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6002e7a drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb705548 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdba4997c drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde2323b0 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde907ead drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfc15540 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfff1d67 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe05f096e drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe08c3d92 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1ed28a3 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe31c44c1 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4b19ee1 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe88a6240 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef163f9c drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefebd561 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf06859aa drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf18bea9b drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf71f2a13 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9b18c03 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbbe4d85 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x03412e90 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x047c9c02 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x078842ea ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x098dad95 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a26c74b ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0de565aa ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0fd04eff ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0fd52e60 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15872cfa ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1799ad45 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x198c99df ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ae9ef34 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1dd02d74 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x210f87b3 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23c8aa41 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24e419b7 ttm_dma_tt_fini +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 0x2b9dd0fe ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c50db7e ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33b5ec73 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x357dfd38 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x43091984 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5152fa1b ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564d5bd6 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ccf3ff1 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71040579 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a9b3142 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7b24bb0e ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d8e1a26 ttm_bo_unlock_delayed_workqueue +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 0x869f9615 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8972923a ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a2109e3 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91d923fb ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x930e2c64 ttm_bo_mem_space +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 0x9c08d287 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9da75185 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ee285e1 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa44a6d33 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7706fec ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaed6b409 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf39d97d ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb2631cf7 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb5faad63 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6c1f3b7 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc544c2f ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe2d4949 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3edfada ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcbd5435d 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 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdaf9cfc3 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdcf1ce4e ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xded24b37 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3570e47 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3b3ac4a ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe7a90e64 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf172fb5f ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf31e8a5c ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x98109445 vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xd09e1496 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xfe12172b 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 0x17e670e4 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 0x08e2f21e i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x19f70e3c i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xb2105220 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x87aee61e i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x985093e0 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xb76be16c amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x029ff06e mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1ccacbad mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1d870ba4 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1ee0776c mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x21aa4a77 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x49135055 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x50906f3c mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5374f8fe mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5765684e mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5eb8e1c5 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x687d96a0 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x838be951 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x98e392af mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc357868c mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcf43cfb2 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xefe0594a mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x7f351032 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe16a9a9e st_accel_common_probe +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 0x4633c026 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7386e25b ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7af2361e ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb154b478 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xbcd7d55c 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 0x08ccf595 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0ee6c021 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x29aa7e7c st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x441133b3 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4417ba0c st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x53907a13 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x62062c3a st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x683a728b st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x709019e4 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x785c1fbe st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa2ab6eec st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd8a73cc7 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xedfe69ae st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf019450d st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfaa3ca4e st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x3e5bffaf st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xd600d379 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xc589b238 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xeeb84d1f st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x5840873d adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x6b527d3b adis_debugfs_reg_access +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 0x2ded6bf0 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x4ea766c6 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x4f015f5e iio_trigger_poll +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 0xb64a9879 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xb8751651 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xdaffefdd iio_push_event +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 0xe47f945f iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xeb504cf2 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xf265648f iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xf8383e5e iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xfae88676 iio_device_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 0x26642bd3 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x3eccce6e devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x404c1019 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x663f9698 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xbd80f4d8 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xc0dadd92 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x7e2f81a7 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xd86ec11b st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xe2de63c6 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x041bbf44 rdma_copy_addr +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 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x02127b22 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x02ef1665 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x05a96f5f ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0f2f4799 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3dd8cddf ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4e8aa433 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x52650d8f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x56405c32 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8ea70962 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x92eeb861 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x95b3d39d ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa64b0b53 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbf673221 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe152a9d2 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe8c45188 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf76570be ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf8d6c349 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0027a574 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00c8d3a6 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06535f59 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a40329f ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ecb03f0 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ed7eeeb ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1305e07b ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1313f978 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15c87f4c ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d65027a ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x211c99a9 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22848e17 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23441c98 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x245eb41c ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x247c3a4c ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x283c7388 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x289396b6 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b7c4354 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32b28787 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32e71d1f ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x337d7eb6 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x356afd06 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35fbe84b ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b534a2e ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f8bd38d ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x439e4faa ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4505e40a ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47cbedc0 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5068c771 ib_destroy_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 0x54a8c675 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54e30345 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57cb1b29 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x591b51b9 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65e542ab ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66d89431 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6880fd13 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69605827 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cf4c2d1 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f6df20e ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x790b867e rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7c8ac273 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7db87101 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8187c95b ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86b41807 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94647179 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x956c5611 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9866e36c ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x988d4855 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99298d39 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f53acf1 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0cf900b ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0e1f4de ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3f00ebd ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa40e9301 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6ef4dbb ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa809c89b ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaea4a94b ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2faef60 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb9f42ded ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba1d6aac ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcfa3362 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf8c9a4b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0ab3430 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0fa448e ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc246c8f4 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc557a5fd ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5dbcd7b ib_dealloc_device +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 0xc7d7ed16 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9d3a3ff ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb3d4764 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd04c5ea5 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd14e942d ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3339bb6 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd499a103 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb3a3f91 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddb72ac7 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdecdb109 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe19cd132 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe617b018 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe78e9989 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea1f3a88 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf391d361 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf40146ab ib_query_mr +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 0x09b3adeb iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0bb02434 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x34718cfb iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3938ead9 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3ce211c9 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x48a354c8 iw_destroy_cm_id +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 0x737fc76c iw_cm_disconnect +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 0x9389fdf5 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x981f2ac2 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x985d33bd iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa2d6efec iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa3c21474 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc8a12fae iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcd0438f9 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe64e07b0 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x072264ac rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0cf4feff rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1fc1d47c rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x336ba16f rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x364ffbdb rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x39ff75a5 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x448af66a rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4581faf9 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4dbc3164 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6841422e rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x887f6670 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9416ff00 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x95036d2f rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9df92858 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9e3bd275 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb9907c0f rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc0dc63bf rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd30d194b rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xda84b7e7 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf9298f44 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfde50436 rdma_create_qp +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0382351f gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x274c16fa __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x651ef611 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6cd20cda gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x822af2ed gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x862c3f09 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd66782ff gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf1018044 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfaca7d18 gameport_open +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 0x413e3d7a ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x4c4dec04 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 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 0x399ea1bb detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x39aa9adf capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5a494544 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x611fb891 capi20_register +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 0x7cc3649f capi20_put_message +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 0xa23e5fd6 capi_ctr_resume_output +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 0xc796e05a capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdb5b4a62 attach_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 0xedbf6af1 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf056d9c5 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x07bb83bc b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x11697b40 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2323eb7e b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2a79e53f b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x308156a5 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x484db88e b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4d2daa13 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x520f3ecc b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x53595595 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x70d87e48 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x98e30feb b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa5cc644a avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbf0c5252 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe1915891 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe8e8099b b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2b33bc7a b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3e531e02 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4a09b126 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7464ef73 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7b336a8b b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x858e257d t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaaecbb11 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcade0054 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf08906ff b1dma_reset_ctr +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 0x03e6018c mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x12d89640 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa93b0ba7 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xfb7da13e mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x9e53ab7a mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xd4e27810 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 0xebc6b376 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 0x0e8cada5 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x4243710a isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa07d1e56 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb308de77 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xc03e43e9 isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x18442780 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x956faea4 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xacb6c26f 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 0x0c25d366 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x17f8ad3b mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1d3e03f3 get_next_bframe +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 0x319b1719 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5147940f dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x72c507b6 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7fd7320a mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x859b18fc mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x950174e9 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9b57f68e bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c56f3c9 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xab26e873 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb36bbfcb mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbc341b4c recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc83231b6 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 0xd6d9b454 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd9ed34d2 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe0b02ee8 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe1a4f33b create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe24d9784 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe4e99cd6 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5d1b8fc bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf2f5a201 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 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1287ed46 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x52b4b605 closure_put +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 0x75105b9a closure_wait +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 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb9913796 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 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 0x4fd98e4f dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x97e17ce9 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xa49d3a71 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xd2a225af dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x568b8ac6 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x747ba8a8 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7562d231 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x84179d63 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa89684b5 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd4de3299 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0x9f8c3e3d raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x250dbc52 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x28f6d9a1 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x299a7f9b flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3c1e624a flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3d4a75a0 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5b6f4d75 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x718b3b3d flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x843c04af flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x845acf5b flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa9a5f7da flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc048df50 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf237d8d3 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfb647331 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/cx2341x 0x18002d06 cx2341x_handler_set_50hz +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 0x8d94dbfe cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa65174e4 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc006d669 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 0x8b484c77 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x450c9b68 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xe5fba77f tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x06b09eae dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x14dbf131 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e5f0bdd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x26f77995 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2907e8ed dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x29c40197 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2cf288a0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32af111e dvb_net_init +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 0x3f6b33b7 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x527d2fad dvb_dmx_swfilter_raw +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 0x70de704a dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x72f66ba4 dvb_dmx_init +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 0x868aedaa dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8815a148 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8cc5db2c dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x90382d08 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x94cf4efd dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ab4d06a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa55bdfca dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa62fe600 dvb_frontend_suspend +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 0xbd018393 dvb_ca_en50221_camchange_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 0xd5c970bb dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd71583e9 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdbb554f4 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc42835a dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdd598b58 dvb_net_release +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 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 0xf92a3cf0 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb88d17a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x56b13b80 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x71d95663 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x57d25076 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1310e9f2 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x25da9854 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2bf72401 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3e28d540 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x670aeab0 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7c28788b au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9d336d05 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9ed10651 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb31e6cf5 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x136a54fa au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x53b50a87 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x9aedbce2 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xbcd3a615 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x5574703e cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb3d1c03f cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb575682a cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x45f7d16f cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x852b2d5b cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x7521ffbb cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x94fd6692 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xfe2e71d1 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x8d7a53ea dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9866e718 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb1a54833 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe83157fa dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xfa4e138f dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x040c003e dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1b2abca5 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3357c817 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x462f9a0b dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x50eb9bda dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x634d46c1 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6702e869 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x74c66124 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7f843d2d dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9e047bd9 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa4207e8a dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb829f026 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd52d63f8 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xecacd37a dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfd31ba95 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x438dfcb5 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3eea03a2 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc286e8fb dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc996103c dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd4b5cd7e dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xde7da83c dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf9ba9170 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x20165470 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2d1577e7 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x7089702a dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xaa59d2f8 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf376bf69 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc82e597c dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3922511d dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x65e00811 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x6a78833b dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x82ff4767 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xeac5bd7d dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xee79d2be drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x0f9b5f80 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x5bdf6f6b drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x0784f0d2 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xe8b7b874 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x4906207a ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x9ff08fe3 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xafd9655a isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x75a8f28f isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xc5a23fe3 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x3ab1f8a6 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xbca03312 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x05e59017 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xa0a3f1b7 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x2213fc25 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x5fce1605 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x681bcfd6 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x38f44d85 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf7e819e8 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x0ca5ebde lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x28f3c60b m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xa6001c1a m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x7f29ba4e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x71001ac8 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x7d960cfe mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x38a8e7a4 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xf1231249 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x15124eb9 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x1c24c5eb nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xaeccbe8c or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xd63d596a or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xc9b51871 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xc578d054 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x3ab8e12f s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x8fbe963e s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xc52b3376 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xe73a3dde si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x0384c4ca si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xf6fdb777 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xa54875b6 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x22ee305d stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xf7293aac stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x706cea90 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xd12be022 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x7365da10 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x512b363d stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x11b3fa70 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x12eac26a stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x8ec7a24d stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x250e83e9 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xefb37f0c stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xc1cf9812 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xf72fb7a2 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x55499dc9 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x60fd9e6b tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x414de04f tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x75584827 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x41f9659c tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xb4519235 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x5b1f9d82 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xf757bcbe tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xc9690b52 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xfa337af2 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x58243b28 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x3ce3a76d tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x1053b163 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x7c6fcc09 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xdec739f6 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x60fc7539 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x8bebdaa7 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1ffe1481 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x470b584f flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd14824b0 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe4f3e98b flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xee770255 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf709ccae flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xfd3a7175 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x13561303 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x2eaffced bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x79973c77 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x8891228c 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 0x1b2bf1f1 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x44d6dab3 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xa3a2c8bd bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2d247dce dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x37481f57 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6c621895 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x796cd56f dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8b4d07f0 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x93718b1d dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xae384c1e read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcaeb6f4e write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcc25cd0f dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x40e064b4 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0d1f0e65 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x26c34742 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x8cb37ecc cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xae61c4be cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdc6a7620 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xc9f1c19e 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 0x274e3062 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x281cba67 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x46ae0777 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6e255ca6 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7799bda5 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xbfbf3097 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcee66232 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x0475388f vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xe4cf39a0 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x23822d8f cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x75158679 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9ef35bb3 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xd32e1023 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x17cd8c4a cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x462d95a4 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x613afe55 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xadab5e80 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb1a095c9 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd85adacb cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xef04cdd4 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x03970225 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x06b13579 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x117da84c cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x322e46ed cx88_vdev_init +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 0x6339debd cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x634d5c05 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6919ff31 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6c245351 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x93159dc0 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb4beba11 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc1863d67 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc35a2cf7 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc4d7243d cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc8910112 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc8cd5f34 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc925afd8 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcb05c4a3 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd36fb3df cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd7f3dda8 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfb154c8f cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x06d3cff4 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x108c6a07 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1ea23a6a ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x361de4ef ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x36b49651 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3e72e93d ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x67bea3b2 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6a90ea10 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x78175db9 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8653dded ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8f74fd7f ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x943c1ecb ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbfdfb9ff ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd05b8375 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xedb625a6 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf76b09dd ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf990fedf ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0cb56e56 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x39a721cd saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730b22fb saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x837885b8 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x96b8fcee saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb794edf1 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbd37a5c6 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xce01d49a saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdb4f7d96 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdd589a49 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe3f97651 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe663b516 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xd4866d73 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 0x203b0397 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x542f361e soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa73f6d03 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd6dabeb3 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe6544deb soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf0977f07 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xfba560cd 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 0x0341f5a0 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x26591772 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x82be3901 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xac89d381 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xbeee91d3 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe11cac75 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe7995ca2 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x344bdb29 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x422b8f85 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x44cf7068 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6b5876da lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc2e5e045 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xddf84264 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xecdf1666 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfc1250f9 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4a8483ff ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x6ab41d93 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xb09480e0 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xc6e31f17 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x21bbc5a6 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x48018bce fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x6249db81 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0xe8d5ced7 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x1462067a mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x967508df mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xae3dbffa mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xdaee8dce mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x6822d6c3 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xa3418ee4 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x7e966795 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 0x63985745 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xf9c28e7a xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x925e3bf6 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x215ba24e cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x5019c401 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x231b87ac dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x366da2ff dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x63b68c6d dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x80bd9a59 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x81d0220f dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa5195677 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbb939e64 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdfdda019 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe4a89863 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2d77d311 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6242d8cd dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x92b9827f dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x97b2a4ac dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa8e09bcc usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xdad9df40 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfb23ef81 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 0xc96244a7 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 0x184e9ad6 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2b9e4ed6 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4d47b69c dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5cd8bb83 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x81184c0c dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8c826b52 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8ddcccd8 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x98da1f83 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 0xb6efc543 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcb829001 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfdf6ca9d dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x1e5b0a4a em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x45eca694 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4b15a80e go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5279c552 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8fc9f6c8 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x9063ce03 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa49ef354 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd12dcafe go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd58881c9 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe3be2f25 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xfc8d78ec go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x453395a3 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x583299c9 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5b9f0677 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb8d5f6a3 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc4ef8b9a gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd77f82c4 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd84671e7 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf416358c gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x60838a25 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x6edd0d93 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb3e10ae9 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x9f69d0a6 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xb4aed16c ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x07afa9a3 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x1a3049ac 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 0xd7a7d3e7 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4c1bf37b videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4d411d9a videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x751fd159 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x827cb141 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf8ddea06 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf97878ae videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xca58772e vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x32389edd vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x88cdd761 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x919c7085 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x979b3ec4 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9f7cfb9b vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xbcdf4c08 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01dd30b1 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x05355ba3 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x06e8f7c3 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0fe363ad v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0fe3ccb3 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x13a912d1 v4l2_subdev_querymenu +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 0x1bef0692 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1d1f9b04 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f009b00 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2196983c video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21b60940 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x24c24c97 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x25a47f62 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x288f6c38 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e87fb2a v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2feede87 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x344010cb v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x35adc94c __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3793ba77 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x37bf252e v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x39209dc5 v4l2_ctrl_activate +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 0x3c21a767 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c5f0232 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c73ee48 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3d2dc569 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3dfcd078 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f4a62f2 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47702317 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47d7d52c v4l2_ctrl_add_handler +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 0x5523d1e6 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5931489e v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5e0f7fd0 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66d6bfde v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a2efdc1 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6c1b602c video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6ecd3c51 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76a436c5 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78672f2e __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79c2eda6 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d6cb7f4 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7dd98b14 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7fafd612 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8434b730 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8675c91d v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x888aff8d video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88f0bae7 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x895f8c06 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92b662bd v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9759c409 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9dbd3d5c v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac0466f5 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xadb64c20 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xae549538 v4l2_clk_register +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 0xc3551036 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc88ddd23 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1c1f2bd v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd328e13d video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5acef89 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5e875a8 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdde70183 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf08daf5 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe1478181 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe20c9e5d v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe643392e v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe8120a74 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea2815d1 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf37b8556 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3977bf0 v4l2_ctrl_handler_log_status +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 0x001c3327 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x07f20b1a mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0d318b77 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0e336577 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x26ad6ab0 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2be7a0a7 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x31618855 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3ea8e111 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4375d592 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x46e0530d mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5f5234b2 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63149021 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x657e931a mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a10981b mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8000cd51 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x85da970a mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x85fa5221 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x980f39d6 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x99236213 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9af8d01e mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa57e7844 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xae7b0089 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb5288735 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb9671a50 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 0xc90372fd mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcd8077bf mpt_findImVolumes +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 0xead16a4a mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf0ac7f7e mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf289eb2a mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x10db9c77 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15f401cc mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x28c1c737 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x316348e3 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x31d6bad8 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x37e33fc7 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x49d26ae2 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x55a0bf82 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x66ec6b8b mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x741a654e mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7f933f13 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x826145be mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x83ef8f0a mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x844bee96 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8aabea6a mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9033f362 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x93744a12 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9a4d1e93 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa7278f11 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb504bbf6 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcbd1ae5c mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xda8bbc68 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xde948d40 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe2db77bf mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xec7f3822 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf65155c2 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfea9e620 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 0x6bc7af8c dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x77df9984 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xa189b566 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 0x323e2516 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x6727907d tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x752030ac 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 0x68dd4b4f wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xb8399664 wm8994_irq_exit +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 0x71a3a797 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xb6675cba 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 0x5e3011c6 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0fd145a2 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x21950f09 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2b9b3af0 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x961ab0ac cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa66a359e cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc5ffbaca cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd90f4255 cfi_build_cmd +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 0x90b381b5 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xee928851 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x6430b375 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x0c696387 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf26ddc49 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xb5ff93ce denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xcafa9cb9 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x197a0fba nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x30f1fcaf nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3f787ad3 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x943dccb0 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa769d986 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef66e001 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xd03e84bd nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xd5edeaca nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xdb5d702c nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x2c207d03 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x99ffc882 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 0x3531e52e onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x43785038 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x9b213cec flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfa010222 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x12b83e0b arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x26d47558 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x30854a5c arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5413368c alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x564ab20b arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x77bcc102 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7e0cddb3 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9c13d286 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb108f273 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb5fe0bd5 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x20f187a5 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6585cdc3 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x8d3541c3 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x16b32da8 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x24e2951f ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3a198d8a ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x492eb1cf ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x51aa1f19 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5675aa67 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x79157f3d __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7a525daa NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x91c954d5 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbc844033 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x414b65ea eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x5040c3cb eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x5f7ce40f eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x8abb7ce9 eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x8bfdd1b8 eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x8f68999a eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x9b5ea84d __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x9ec70815 eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xbbaf5a59 NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xef8bb4f6 eip_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xcc1ff115 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x4aa2a952 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0595a478 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0739405c t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x15900217 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1f1bec85 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2461dbab cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2c1e9356 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4b2a5299 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x57e4d047 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8eae1c5d cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8f55f6fc cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa0c5163b cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xaea3682e cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb39b477f cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb3f45999 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd18120ac t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xea5ec112 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x124881d9 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12cc0d1a cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x27e451c5 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x34b45dad cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3dfdb2ad cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x455a88f6 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x595bab82 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a15e327 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x65107adc cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x666e9b69 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2636d3 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x75b84f40 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x760c1b69 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x78c0eeda cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7aeac89f cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7b5412f8 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93196963 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96495200 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa14c9cb7 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8262b8f cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb010e925 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb3cec906 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb4a4771b cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc002c8ec t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6f2224d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcfe8972d cxgb4_port_idx +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 0xe36b8438 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe76906b9 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xea8b2cca cxgb4_bar2_sge_qregs +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 0xfce1883f cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfd3b0b23 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x2dce0730 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x3ab8bc64 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 0xf1675f8a vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x59cd3f0c be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x7e4d68f7 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 0x0173f6a8 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0273d9de mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b1d1cd4 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ecb5783 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x145bb058 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x179191c8 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ac26907 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b2f0a60 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x225ee780 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22647673 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25934fe8 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d1a71e0 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b99905f mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e46c0a9 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d8bcbdc mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x516dde26 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56e283a5 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56e5f8ae mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x604b54c0 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67a41ce4 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67bac0e8 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f2c8462 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d4ba9d5 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f1f306d mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82760427 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d0843e3 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95665802 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98a61a9f mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5d5ecd5 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf27a8fe mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6c7b644 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbc852c4 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd687c4d9 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3993949 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7068a64 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8dad70f mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02dec549 mlx5_create_flow_table +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 0x0a24cd03 mlx5_core_get_srq +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 0x18d87aab mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1963f822 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x263fe227 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28aa9e8b mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x34290c21 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x363f0d78 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b55313e mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e82c3c2 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43da603f mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48ed1005 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a2a8e0f mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4edccb10 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f0e9bc5 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5303cf78 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ab53880 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c384b07 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5def2874 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66fea67c mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d55dff4 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d4e1334 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x957de9b6 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b7f19ee mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0216803 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa06b74ba mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa478d27e mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4f1fee1 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa63ed19f mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac7cd118 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6fe041a mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb99a0b0d mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc47c2594 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca086a5d mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcc4ab480 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdfc348fa mlx5_core_destroy_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 0xf43615d5 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x342b5800 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5e3fa0a0 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x95ea5fb5 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe6afb1a1 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf6c473f1 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0ecf2c12 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x1072df8c sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3dde3779 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5fe218c6 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x671367d3 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x73271b82 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x88b24dc3 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x89c36633 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe06a703e sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe72ff67c irda_register_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 0x466e4848 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x53cc8005 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x6ff21ed4 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x894fe36e mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x8f71e722 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xa93b8038 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xcfe87bfb mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xf5397b25 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xe6480ef0 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xf47675d6 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0xf46d95f0 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x265d8910 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa40b8d51 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xbf719230 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x67ac50fb sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x27ebed15 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x7a8b335e team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x897db395 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x8c911d0f team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x9665fc88 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xde583942 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xeebfdf15 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xfeefddd2 team_options_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x0decc448 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x27a6c798 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x898adad7 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x013f6557 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x023df01d attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x15862ab2 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2575ce48 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4420c4d6 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x49cca0d4 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x71a06509 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x979c9c3b unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xaeb99be2 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc1317142 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe60b6c70 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/z85230 0x05cd317e z8530_shutdown +EXPORT_SYMBOL drivers/net/wan/z85230 0x0f221ac9 z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x5a9e843e z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0x5aed672f z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x6d9d9ede z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x71ed4607 z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x752387c6 z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0x80325f3c z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xa133f4bb z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0xa5fe7d87 z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xacc5f23a z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0xb12d4169 z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0xc667341c z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0xd21d5db5 z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x17084b63 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x3923124b reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xca6a3cf3 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xed45e38a init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0a160a97 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2e6d0b9d ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e1eafc0 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8217cc7f ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x83fd05c2 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa2b13a07 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb0e19eea ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbc04d7ab ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdf6b8543 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe3110f52 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xeffb0bec ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf03ea586 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1de84f97 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1e868125 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2f45f2f9 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3093bd93 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x33c7c3b5 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4814cbd9 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x61e0ec45 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6b1bef11 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x73ab255a ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x86843da7 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc0f54b82 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x053db513 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x118f8aed ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3350913d ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x355803de 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 0x98392de5 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9c567171 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9c8ddcbf 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 0xa995f02f 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 0xdb15d1a0 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfe68d265 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x04afc964 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0503ff76 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x08f7317a ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0d8be65e ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1fd617f3 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 0x333fde9e ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3a78a70d ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4a22674a ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4d100935 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x50deb88c ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x598a44b2 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x70d834c5 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x74942f1f ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7ee8f240 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x84761f3d ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x880afd6f ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x88eb9ae4 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x908d382b ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9d0b3b88 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa5878ac3 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd1b08130 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 0xdc60f15a ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe73739d2 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01323954 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01622dee ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06376b01 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07f8b136 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b178fbd ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0df7f92a ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16c2c138 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ac88456 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1fa5b447 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2317f042 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x256a85db ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29d2b30c ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a607284 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2aab192f ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ac74fb2 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2de499f9 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33a03a7b ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3434aaa7 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3863d1d3 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41bf49e8 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4283faca ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44de54c5 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4565e243 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48b9b503 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49e4d8df ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a40d211 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b010fbe ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4be0a3da ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d8a7299 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f85808b ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51c93276 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53bd1538 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5470e4ee ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58ee975a ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5aa0c6dd ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ac58ff0 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b5f6431 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d4ce8a6 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f92b61d ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60ce92b7 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60f84429 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6250e4c2 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63195cc4 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x636d3926 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66bd23ba ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68d3e87f ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a77922e ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77a31ce7 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7923906c ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e7800da ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ea9189e ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80f0e994 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x898f6e5d ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bdd335d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f09014c ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90de7f38 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x918cc904 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92dd9912 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93a6052d ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b8afd7c ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e3e1fa6 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1d67100 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4fdef9d ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6513078 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaafba856 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac452d3d ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae135d99 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf8cf4aa ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0b6367c ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4d6915c ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7261f1c ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbeb53266 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc003aa6d ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc16b0be2 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5fef3a3 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcad27a38 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf03462d ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0207d51 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1d72a58 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1ef3f2c ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd30195bf ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6480568 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd83cf5e8 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd94066b ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe12d40bb ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe13eb9a1 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe28f49dc ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe34bb58d ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe50f11b3 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe810c453 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8dfb7c2 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe95cf2f7 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xece8cd49 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef380cce ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0202022 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf12c1998 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf18a2d27 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf35348c1 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6b011fa ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf963508f ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf97b8a58 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf97e5614 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9fcb071 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff65f44b ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x6eb84531 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x7d07c815 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x7d78ee29 atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x257bb2d1 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x57a11a5f brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5a447ac4 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x64be4353 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x681c5385 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x830f3a88 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8d79b425 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x93761dd6 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x96fb06c4 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xafc23d9d brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb4710f50 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf32d98e5 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf98d3712 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0f2d93dc hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x154c8129 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x20b5090e hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2ec91da6 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2f85cdbb hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4b30b457 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x614ea673 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x689c24d1 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x710315ca hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7656e030 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x89511234 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8e3940cb hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x905e42df hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x99e18eaf hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9ab0603e hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xac5b6534 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 0xbf9cb5cb hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc2955386 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdb7bac4d hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdc24f769 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdde81d53 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe5801a41 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xefe188c5 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf4fc506c hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf65f8c2e hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x14ad4102 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1bcaf9a3 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1e67d032 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1eb5d42b libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x39d9f0b1 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4de56248 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5c2604bf libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x66b8c7ad libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6ff21d86 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x72c2d243 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x899a1a98 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9eb8d321 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa0fc139a free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaa8f8ab0 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc5c9f73b libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcc11799b libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd016ed42 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xda231caf libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdf1ceb79 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xee0dcdf0 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfee81c97 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02326174 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x039368f1 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07ace298 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b8c12df il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e278423 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ee07931 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f02e3d4 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x119cb8ca il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13dd3f65 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x159e559c il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15a70c51 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d266774 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e081213 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20af4ba6 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x242adeb9 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2442f2f5 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2942a841 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ad98dd2 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2bb7420b il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c457a34 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ce1cf5f il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d349d37 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d644043 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2de786f6 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e511104 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32abc130 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x386e46d2 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39b8839e il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x40dd43be il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4166b2d7 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x418bf1fb il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x526c4f92 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x573a50e3 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x584c428a il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b7cdc42 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c30ce4f il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f0b8ed7 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6217dcfb il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64ac8f46 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x663b52c7 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68c5a465 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a48b1c8 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a620b8a il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x749d5ec0 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76cf831c il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78ab7726 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7afd5ef2 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b933ade il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7fe3a274 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80aad518 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8557511f il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x860bff6f _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a599767 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a9abe8f il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ed04389 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92d84fa6 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93d9f7cb il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c50fe9e il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e7fa1a8 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1dd391a il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1f70e68 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2677ee9 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3025bd9 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa31a3352 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa42f2298 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa54ed334 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6fc3271 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9966c05 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa998b0b9 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9a017b8 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabc2ba05 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1aca0d1 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb339d73d il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb56d41df il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbadd8f77 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc00c8788 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc55ca03a il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc60dc08f il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfd9b047 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2c0f238 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd32577f4 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda06fb65 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdabbd2da il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4546b37 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5203d8b il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe61b174d il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe90094f9 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9bc5aff il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xebad0795 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec3537f7 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee541df0 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf32e9312 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf52a6ec2 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf74ee96f il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf802c0ca il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd3de836 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfdab0769 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff2620d6 il_check_rxon_cmd +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 0x07c2db9e orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0eb295d0 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x46c1b9ab orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5567dec8 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5f1ee8b3 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6055db7b __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x63210250 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6953f255 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6a3bf3f0 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6c56e327 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7ec73fb0 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x87fbe52a orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x93318969 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa9d5bd0e orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xda3a544b orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe4ed774b alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x7237bf9c rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x000060c8 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05c07061 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x12eb5add _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1497406b rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x15644816 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1fa7aba4 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x29c32e10 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2d8e14d1 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f1d7f7b _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x36252dc3 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3d640a9e rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x464d7d07 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ff91147 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x546644a7 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5fb25a33 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62b9c61c rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x645fde12 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x64ea0bb4 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68f428d4 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6a171846 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c3e7f9b _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x77ec21f0 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7866dd3a rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7ae2b451 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7b7408d7 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c8a5267 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x84ac9fe8 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9539abaf rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e2ac2ec rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e9ad05f rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb872752f rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc417e2c6 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc64b1933 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc8f8f911 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdcf038b1 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe4a7ac74 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe821236f _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea09debe rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed2350a8 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf12f8fa8 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf39edb03 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 0x21399a35 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x8648e9cb rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x86819176 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xcc2f0d6c rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x2402936c rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xc38171bf rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xc55c85f3 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xf1986c03 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0c62c91e rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x112ea70f rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1bdd2ac9 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2207808d rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x28cf4c32 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2f3378ec rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x330f14b1 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3d2b590c rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3de0ecbe rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4d2fe052 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5319eb80 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x55f07a72 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6388e383 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x70bf645f rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8653cb58 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x969e114e rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9bd13daf rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa18ffee5 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xad9ff4fa rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb0e332d1 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcff795f4 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd016921b rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd3312562 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd4d1a387 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd5d756c4 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdbe107cf rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdcb5a0c6 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdd75ccfb efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe1974d2a rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeed27231 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x39101c7f wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x86c3b9cb wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x8926de2e wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x8e73e6e1 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x188ec2c1 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x51f58280 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x4bf2b3bb nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x8e6b0bf2 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc27ec467 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x86753c0c pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xfedccecd pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x10178b19 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x23947e29 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x66147c21 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7522a0a7 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x884c5e33 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xafb15e81 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb4725710 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xbaf4330a st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xeafb9353 ndlc_open +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x028970d4 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x12f304e6 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1b316022 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1e24b86a st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2cc5f64d st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x327b694e st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4addc0e0 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x55253c35 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x99aff0d7 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc5cd8a57 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc5fbf55e st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcabcbf07 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd3f5dc40 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd4c7fcbd st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe41b8879 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xea4d48cb st21nfca_se_deinit +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 0x31512988 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x650d4234 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0fd24cf6 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x1277dde2 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x15612d9e parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x16562dda parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x17a978d2 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x1c3176b9 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x1c6b6373 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x1f0c2661 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x1f97e3b4 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x29689fe6 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x2ceba0f4 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x3225da97 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x3449df88 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x81eb5214 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x93665641 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x9531f24c parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x9d384bf2 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xafaa23a9 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xb304215b parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xb8908a56 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb8ed6bd5 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xbc424574 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xbff4f873 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xd3ba1e9e __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xdc86c2b9 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xef284ec3 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xf6ea2b29 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xf746c63a parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xf7903ab3 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xfb66759c parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xfce6ae12 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xffb4babe parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport_pc 0x6f54185c parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xdfe047c4 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x050b0156 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x21326145 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x24a4976e __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2d99b2e5 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x32e13e42 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3960f26f pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3b54a8e6 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6e627125 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6fbee270 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x83305188 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x89aaa25d pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8d518aa5 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9bdbad38 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa7307490 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa8491a6f pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbc7a1b07 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc11d370f pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc6246ac6 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe38b4e90 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2e25b34c pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x37ed2cb0 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x429b2aab pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x689eb5c1 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x87a59824 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x978de793 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbef3daa8 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc5734c80 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd175fd02 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xedd2ba37 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf0f9c804 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x8ebbe1f9 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd10507cc pccard_static_ops +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x2d91acec pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x34a2b387 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x418fdbd5 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x6c7e8404 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x24b16dd1 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x7a6eb822 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xd45af1b4 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xf1421ae0 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xfa8a8d43 ptp_clock_event +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 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0x44d10536 NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x4ff3eb13 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x71455e3f scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x80cb3efd scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x87b0cbf2 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xdbc1f439 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00ef9a0d fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x160d7f5f fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x31cafde4 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x667cf36d fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x75f63a5b fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8cdc9a8f fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x96a62802 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x978c3050 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcd23edd7 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd8a6daf5 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xde59a7ad fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf2a89c18 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0047844a fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06e01970 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1182768d fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b997787 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f2052c4 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25b7180f fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x27b899cd fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28f179ca fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2a5d8818 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3646882f fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e63c5fd fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x441f36fc fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b10b6b6 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x51799e0d fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5799c194 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x65055223 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6fdef5cc fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x717ed181 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7aa32cdd fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7c048e82 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ed59537 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8328635e fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83e2a27d fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b54e71b fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b7c2a73 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8eb7b03a fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8f20da1b fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9911e090 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99ad1f18 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f38ee3c fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa86ba484 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb00f5f25 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb7e7fb6f libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd27145a fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc0a9e9b1 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc64819d6 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc64a85e9 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb7db21f fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xce771ba3 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4b9cfe7 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1603626 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe42c6706 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf4716684 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0335b140 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x27af7502 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x33c65478 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x692223f6 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +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 0x8940a33d mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x01555c22 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x04899bc2 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x048e49c8 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x06d020cb osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13bb4af3 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x209355e9 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2a6b83fa osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b13078f osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x48e3b413 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4eaac0da osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4fee6b08 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5b391390 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5c29337c osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5c3cad14 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5c51bd59 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6baa8191 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7cdb289b osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7f5e45a9 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8bd2edbd osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9d01bfc8 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa3570b2f osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa5c75ab5 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xabd4956a osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb37d2293 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbb0aa20c osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc764fa2e osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xce75fde4 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd03b4db7 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd3ee8cfc osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd8cd5472 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd8e18ec9 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf33ece4 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe880ee17 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe9b9bb55 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xedcbda5e osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeede52d2 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x67d099f5 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x718560ed osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7feb0cf4 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9a141702 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xac6ded32 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc467244f osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x14484cf6 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x18588cb1 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x25788863 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x28a4029a qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7b2b69dc qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x80441d06 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x83a34c37 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x95850488 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa0033291 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc427241a qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe8395357 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfea480a6 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0c4b8fa5 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x31c1f0fd qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x6f8e0bbe qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x72e3c5aa qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8937e9f8 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x89b7d84a 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 0x0a2e4b42 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x3a651c06 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x4f772eaa raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x17e7f452 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x41b0d5b9 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x48661b70 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4fe1d526 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x66db657e fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x70a58867 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x90d61d3e fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc291ec39 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd41f274 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd7e6a08 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd1435040 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdd8132e9 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xde5da710 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0ce4951f sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1907c3bf sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x22133600 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x26588985 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3115b991 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3d25fb0e sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3f3b2f77 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3fb45b1b sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4041275c sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4a5195a0 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5e4d4ded sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x66fe1c66 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x67d12963 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x718c43f9 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x74b0558d scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x79a7f91e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x79b3e8df scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7da5a0b3 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7e8710bb sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81eba5b3 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9cd604f5 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaf9ec293 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbc2e16e7 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcab91cfb sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd416c547 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda01ff8a sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf1cdb16a sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfb6db234 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2521a292 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2c9ad622 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6bb5b17b spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7191ea6f spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb8dff3fb spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x380f77fb srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3d27f498 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x68974d64 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xfce2e6d3 srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4a589e9a ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x9ed56c47 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa1265c2c ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc595fbf9 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd6ef489c ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xee21e582 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xfe62ae18 ufshcd_shutdown +EXPORT_SYMBOL drivers/ssb/ssb 0x07db7cdf ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x0b45293c ssb_bus_may_powerdown +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 0x2a02f169 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x2f6ea85d ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2fb2d912 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x40762b71 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x4ab25c09 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x55a0f7cd ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x66681c1c ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x9250adec __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x995ed37d ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xb9dc14f6 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xbc340d80 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc4afe7b4 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc6b84e98 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd1a1ef08 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xde683322 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xe9383070 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xf769a60a ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x019bd9a5 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x045e8dab fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0f91af38 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x166e1c04 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1acc97a0 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x24a24c8b fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x30f87252 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x33598536 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x38d9d71a fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x47b589b5 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x50c099b6 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5e914984 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x61f24b22 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7d0781d6 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x83b84ec1 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9aac779f fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xacecd613 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xad800982 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb641aaea fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc17c4948 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd8c8c04b fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdd08768a fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe7f477d1 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfba481d0 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x18e29dfc fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xc453836b fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x9e72b0fc 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 0x00d9e9b3 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x00e34c4f lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x00f5f71e lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x13740d9a lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19836fe2 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b987b29 lnet_copy_iov2kiov +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 0x2f6f635e lnet_sock_read +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 0x42034177 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4b9a3f18 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4d5b591c lnet_sock_listen +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 0x6370adcd lnet_finalize +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 0x6875820a lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x687cbe8f the_lnet +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 0x73b11738 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7eb1d907 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x82f04c0b lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9dca4aef lnet_parse +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 0xaece4a01 lnet_register_lnd +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 0xc8ecc973 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcbec20f3 lnet_sock_getaddr +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 0xe4684f3f lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8a3e78a lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf77d4268 lnet_net2ni +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 0x21695e1b seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x4646ac47 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x708a57f5 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x78fe1d71 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 0xca3d18c2 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd1f9b730 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xefbe838d client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x521d8bbb fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x5cf89d6d fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x815bf4d3 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x90a2a97e fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc08ce711 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xed73ac23 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf8a2ebf9 fld_client_debugfs_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 0x0e4820ab cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0edc903a cfs_hash_debug_header +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 0x2ec5ab31 cfs_hash_debug_str +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 0x59d50958 libcfs_kkuc_group_add +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 0x85f042f9 libcfs_kkuc_msg_put +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 0xb42e0241 cfs_crypto_hash_update_page +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 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 0x0678436d ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x85f7b4c6 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xbccf3b75 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xd232a4ef ll_iocontrol_register +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 0x47be5754 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x4d069d2b lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x4d21b98d lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x88b0656a 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 0x003c2473 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0045c2be lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01568298 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x019bd9d4 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x030996e7 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x032ee385 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04496cda llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x046c0f64 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0523f59c cl_lock_state_set +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 0x06d82d96 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0758fadd cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07682fe0 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x078544d0 cl_io_commit_write +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 0x0842df3f class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088dccc2 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08c3cdb3 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08d24860 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09a663a1 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09aa7f24 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a563966 cl_io_sub_init +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 0x0c94f635 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d986017 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e11ece9 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f262d48 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x107a755c cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10c10096 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10c7f78e obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10dcce63 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x146dfbcb lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x151dd7d4 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1549e34b capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16fe875d cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x186d0367 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18e82a14 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x190deef4 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1955a0ee cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a2e80ae lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a393eb4 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b99a58b obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c88d20d cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d092186 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1daa9edc cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e6fc11c dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f5b55a1 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2046a34c cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2076281f llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20f6b332 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x212e9620 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x220d213d cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2400a14a lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x243017f6 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24601e7a cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x247c432f cl_lock_state_wait +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 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27d1d89c class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2965a1bc class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a7919b9 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b3a238e class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c313807 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cceb7a3 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e54dd42 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f21aa06 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f33ff0c cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30983807 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30c4d82e dump_exports +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 0x336e0542 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34079cdc cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x343101fa cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x345b0d3b cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34fe5db9 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35152d8e cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35396031 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36d910be class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36dcbc4f cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3774f716 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38261d4b cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x386a9e17 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x395ba571 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39b3fbe4 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a5aace6 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a61dfeb llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ade70b7 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b319a7d cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b7ec6f7 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c01da04 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d15478b dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ea5331d lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40812044 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x410c6d9f cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x411a8116 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x412d1353 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41876c7b class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x427715ef cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42a381aa dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4357b315 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4371cc04 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44106ba9 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44addc98 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44ef4948 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44f0faaf llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45e2bb4c cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x478dc9ab lu_env_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 0x486903ab cl_page_list_own +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 0x49d6bbcf cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a7294e3 cl_page_list_splice +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 0x4b16ba04 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ba58b28 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c276949 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d847ff5 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f18eded cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f70432e lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x502a50a3 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x507df89f cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51319338 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51906a52 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52c78ddc cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x540b0937 lu_context_init +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 0x54f6e76c class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5544372f lu_device_init +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 0x56f4dd0d cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x574ff84b cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57fe8a24 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5847930e obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58b630f5 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a013a9e cl_page_completion +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 0x5be860cc lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f98b95a cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ffe3751 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x627074e2 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62a3fea7 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6303deac lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63060405 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63728e22 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63f12371 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63f3860f llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x654d1938 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6573806f cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66d78c3e lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67732fc3 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6882c635 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 0x68bd49da lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68e1865c llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6964099c lu_object_put +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 0x69e34e3c lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bcea532 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6be3d28d cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bfd846c llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cd65a0a lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d63338d dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d7b6f4e cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6db5d7aa dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f246cac llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f7b4033 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcb7042 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70244cf8 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70deaea8 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x717964a5 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x737c44f5 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73dd5a32 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74839d1e lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75205d60 cl_lock_descr_print +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 0x76646b8c cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x769e2a65 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76c4a3b1 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77498d25 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77a650e3 md_from_obdo +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 0x79071146 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a3ff897 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c30954d cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ca155a7 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cc1d778 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d89c011 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d965010 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f0d68b1 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1e5fd3 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f2ca270 dt_lookup_dir +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 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 0x8185a294 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8190e876 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81eb3905 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x820cc8bc iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82968952 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84242651 cl_lock_error +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 0x85303497 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8550c897 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85898443 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85e80d5f lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x869768f7 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x882b9281 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x891e25b9 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8952b068 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89f4cb81 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8acfe696 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8afe782b lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b68fa5e lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b8a6566 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8dd0572d llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f040993 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f649dee llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f845d85 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x900aa7c0 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x902302f8 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x910668ae ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91194faa lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x913e4a44 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9154c771 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9196c73f cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x920d2290 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9210127d lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9221d024 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92456342 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92b7a99b cl_page_gang_lookup +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 0x949c4d84 cl_lock_closure_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 0x9654eb6d obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x965bad53 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9709ce39 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97439c1e llog_cat_cancel_records +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 0x98019cb9 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x986322ed cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98a9dfd8 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9946a0f0 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9abbac83 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b0897aa lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9be54b54 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c8e69fe cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d0526b4 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d541230 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d884ea0 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f168304 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f4b6c38 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fb04863 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0d77a20 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1a1d3d3 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1bd5d62 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2446dcd cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2d12f99 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa335be87 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa39057bc llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5f97ada dt_device_fini +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 0xa6819c67 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa75d525c cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7c728d1 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa84744b5 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa885a96a cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa88c13ca lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8de7336 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa973b6d4 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa6e53f8 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab08d9dc cl_io_read_page +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 0xad252658 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad27e77d cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad9829f1 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae562f8e cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaebb3ed5 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf73847f cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafeb384c lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01192e2 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0fac367 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb137a30a cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb19c4460 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2a4a9f1 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2ddda4d obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb37696db cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb44d1f8e llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb59a537d dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5a68509 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5badf0d cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb697e79c lprocfs_alloc_md_stats +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 0xb79ed802 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7dd3c78 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb83f1224 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb896b5cf lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c62bd0 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb94fc914 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9fc14e8 dt_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 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc920f2d cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd36ce5c lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe501a2e lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf97ff92 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc060592b cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc074e4bc lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0aaf2a5 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0b0515c lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc168134f lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc17ef93d cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc28ca1a2 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2cae60a cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3a201b8 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc404837c lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5380b7c cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5c0d691 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7287542 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7c30cd4 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc85a5c80 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc86f1f21 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9a58ec5 cl_page_list_unmap +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 0xca109da3 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca4c004e cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca9c8fc8 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcabe64bc llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcafca5d4 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +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 0xce963b4e cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf7390f8 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf847171 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd00e3610 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0101fc1 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd019764c cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b3bbfc lprocfs_rd_conn_uuid +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 0xd16843cd llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1b7af79 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1d0a59c class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1e87579 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2017930 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd437c1d3 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd49e8eb9 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4d42014 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4e18137 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd568e901 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6f1ba46 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd773fd96 cl_site_stats_print +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 0xd7cec35b cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8056dca cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd895c95e lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8a8c0c7 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9edc438 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda0eaac7 cl_page_disown +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 0xdad47204 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb49a089 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbe59c68 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbf193f9 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc462bed cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc096f3 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc0eff6 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd0eaa43 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd2c58a9 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde53fe6c llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfb97749 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe09ddcdb cl_page_clip +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 0xe1ae46b4 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe23898ab 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 0xe38212c8 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3838b1f class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4214f25 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4ea0bf1 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe53269fa lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe560956b cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe695d0d1 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7320740 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7c67ac2 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe80f5296 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8146806 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe88c98f3 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8b90b5c lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8d8b16f lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9789601 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea856adc cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebefe241 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec0e6460 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec54a26d cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec5eb34b class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec73c628 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xece5a0ed cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee9d2301 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee9e5aa7 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeb964de cl_page_assume +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 0xefb4c9de cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0d5d669 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3773de9 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf43ff915 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4879eff cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf508565c class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf561eb9a lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf65a2708 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf67ea62f cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf68522cb dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf70be5ea lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf758aa5c dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf782ae56 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa1e4308 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa5111b5 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfaf29e2a lprocfs_rd_u64 +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 0xfd740586 class_config_parse_llog +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 0xfdca4465 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe4f431c lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffb56cb8 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffbb3ff5 class_disconnect_stale_exports +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 0x0171a035 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01f97c6a ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x028aba02 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02cca087 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0303f474 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0353b3e9 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03ef7ae1 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04d60f17 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0606da2c ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0615fc7b ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06372562 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06f7c1f1 ptlrpc_request_alloc_pack +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 0x091f3593 ptlrpcd_alloc_work +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 0x0a893851 ldlm_destroy_export +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 0x0b6bd021 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b98584c ptlrpc_prep_bulk_imp +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 0x0c741e17 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ee07004 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fe140ea sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x106af0c5 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x107370a2 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10c22067 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10cc9e27 lock_res_and_lock +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 0x12d95f32 req_capsule_init_area +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 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x175f937c ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17920ab3 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18f8aba9 ptlrpc_request_alloc +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 0x1a41041a ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a68e40d ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a886f5a sptlrpc_target_update_exp_flavor +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 0x1c588bc1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c7b9e2c ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1cf5ff42 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d001763 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d5926e0 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1da642b1 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de89169 ldlm_pool_set_limit +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 0x2029dd83 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x206cb300 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20783695 lustre_free_reply_state +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 0x212d1015 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x213879c4 sptlrpc_gc_add_ctx +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 0x21976372 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21bd620c ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x22784da0 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24170089 ldlm_namespace_free +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 0x24f30cb9 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 0x25c51280 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x267285db ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26783b55 ldlm_pool_set_clv +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 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 0x2a68e386 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ac4b43b ptl_send_rpc +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 0x2f02d7f7 ptlrpc_register_service +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 0x30d48180 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3100beaf ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x320be661 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33149f47 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x341fb66c req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x343cd69e ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x34cdd2e2 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36739da2 sptlrpc_cli_wrap_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 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 0x3a4c8f43 ldlm_pool_get_lvf +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 0x3b553093 ldlm_lock_allow_match_locked +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 0x3d2932d3 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d8c2687 lustre_pack_reply_flags +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 0x3f529956 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3fcc56c7 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4126cf44 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x417e3ca6 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x421c42c6 client_disconnect_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 0x44afcdc4 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45aab9bd ptlrpc_obd_ping +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 0x460d6711 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4711d99f ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47ab54bf sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48926661 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48d7228c ldlm_pool_add +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 0x4bbb5354 ptlrpc_resend_req +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 0x4e5785f2 req_capsule_set +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 0x53a4d42c ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x544953f5 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5492c38b ldlm_replay_locks +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 0x57e346d1 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x582775e4 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x593e9faa target_print_req +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 0x59701f2e target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59a2a9f7 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59aa27fb ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59dac371 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5adf802d ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b47e0b9 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c4b138f ldlm_lock_fail_match +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 0x5d47322a ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e1a2e14 ldlm_resource_iterate +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 0x5fc5ba67 ptlrpc_start_threads +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 0x62fe6a4e ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x631484f0 req_capsule_fini +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 0x6396447f req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647d000a __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6727fca0 ptlrpc_recover_import +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 0x6ae183a9 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b1c6389 ptlrpc_service_health_check +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 0x6e270781 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 0x6f85eb2b ldlm_init_flock_export +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 0x70db7de7 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7189205d ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71bdf35c ldlm_lock_match +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 0x7280fe61 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72d483e0 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x745f68b2 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75077285 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7652abeb req_capsule_field_present +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 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a72e4f6 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a91e43b req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7aefcc37 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7af72beb ldlm_completion_ast +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 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ddd6b8d __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7eb0a6d4 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7edde947 sptlrpc_enc_pool_put_pages +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 0x7fd23a3c lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x803b68a3 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80949153 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 0x811f23fd ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8200b709 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82358b77 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8239fbe3 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8280a184 ptlrpc_request_alloc_pool +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 0x8522cabb ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8554c23c sptlrpc_import_flush_my_ctx +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 0x88c42ac0 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88cd5a9a sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x892d1e3c req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8955381f ldlm_resource_putref +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 0x8a2a4a15 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b395ff1 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 0x8bca1acd ldlm_pool_get_limit +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 0x8e611f97 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ee21840 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f2b58cd sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9002840d ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9110365c req_capsule_server_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 0x925332a0 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92559c07 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94677a1a sptlrpc_register_policy +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 0x96a0fc3d ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9787a7d7 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97ebab91 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98acd8a7 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x997f58eb sptlrpc_cli_ctx_get +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 0x9a415edd ldlm_pool_del +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 0x9b8f51aa ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cddae84 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d24801b sptlrpc_get_bulk_checksum +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 0xa011e842 req_capsule_other_get +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 0xa2ca6c5d ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2cb0f07 ldlm_lock_convert +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 0xa54c0ce9 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa61ce406 req_capsule_server_sized_get +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 0xa85453fc ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa86e45d5 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa970eacc ldlm_cli_enqueue_fini +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 0xabafdd22 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabdd07c7 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac4dab26 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad3700fb _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad64ad9c ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae4645e0 ptlrpc_unpack_req_msg +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 0xaf503d67 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf95062d req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafd2bb17 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb101d9df req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb156cd91 req_capsule_client_dump +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 0xb334cbd9 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb36a5417 ldlm_cancel_resource_local +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 0xb53244ad sptlrpc_sec_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 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb73e9967 ldlm_resource_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 0xb93b5d0e ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb95c0649 req_capsule_extend +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 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 0xbe8fd3e9 ptlrpc_req_set_repsize +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 0xc09a1225 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc264bc71 llog_client_ops +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 0xc3f57bb6 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5f8a513 req_capsule_client_get +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 0xc6d4a499 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc77c6c98 ldlm_namespace_dump +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 0xc9a42ceb ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5019e4 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcac52c32 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb11a0e9 ldlm_lock_allow_match +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 0xcb77aa12 client_destroy_import +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 0xcf351167 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf7b3c5d ptlrpc_init_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 0xd151c304 sptlrpc_target_sec_part +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 0xd2feb270 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd32d4b54 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6690133 ptlrpc_retain_replayable_request +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 0xd7c9b08c ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8e095cf __ldlm_handle2lock +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 0xdac40f79 ptlrpc_restart_req +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 0xdd7adab6 req_capsule_client_swab_get +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 0xde525934 unlock_res_and_lock +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 0xdf873324 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe117aad2 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe195007f lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1e12f8a sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe252c099 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2dd144d ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe337fb45 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3738053 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe38097a2 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe50ead02 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5c1f907 ptlrpc_pinger_del_import +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 0xe6c7da3a req_capsule_filled_sizes +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 0xe79b1264 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +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 0xec20ae33 sptlrpc_unregister_policy +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 0xedcab92c client_obd_cleanup +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 0xef501f01 req_capsule_shrink +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 0xf14ca4aa ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf214c181 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf22120a8 ptlrpc_request_set_replen +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 0xf3b54fdd sptlrpc_gc_add_sec +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 0xf442c04e ldlm_cli_update_pool +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 0xf68eabd7 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6dab918 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf74129af sec2target_str +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 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 0xfd4eee35 ptlrpc_request_pack +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 0xcb51eeb3 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x037c2fe5 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0be33a37 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d9a66df rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x16fae7be rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a781b97 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1d2dabf3 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2616b9eb rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x276e24ec rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28dc5d03 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2f907cd5 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3e436629 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x419095f0 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42a6d7ad HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4919d1c9 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4c975539 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4cfdceeb rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4db1e463 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x53fb444d rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5542699a rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5721725d rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x68142888 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6902e51d rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70753695 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7146f477 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7c49dbe6 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa04636fd rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa1ba548e rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa3375354 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa932806 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xab34d044 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xac96799b rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xadb5ecc2 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb50ded6c rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6d9b6e2 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb8ee4e2a rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xba99cc63 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc3c31eb1 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7069f1e Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7efd558 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc95eea70 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcbc3b8cb rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcc389915 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd2fc44bc rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe20c064d RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe4811882 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe8d307c0 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf13d3f26 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf2efc37d rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf552027e rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf930f634 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00bb616c ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x09b9e853 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x103ce0af DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x146545f5 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x149d9faf Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14ed00f2 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1613bc7b ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e660d91 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x207da617 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x33d90c60 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3d329fcc ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41fea376 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x438459b6 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x43ce17e9 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x45365024 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x48314710 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a4bbdd0 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55cc1a1d ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x572d9677 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x574d510b ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x605f8c7c ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6fbbf177 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75ddfea9 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x77ac3616 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7918c87f ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7a12877d ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b3d0188 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x80d11143 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x85cdf013 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x891ef525 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8925e0ee ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c98c5b0 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x93fd99e8 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x94c89f15 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9cfaa469 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa18e1f29 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4ff0eff ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa98da6a1 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb61ae00e ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb6ced792 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc5f727ad ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xca69a3bb SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcb69947d ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcc38c3cb ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcccdc3fe DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3743d9f ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdb36e139 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd5743f3 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdeca8cf4 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe487ea04 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec07acd1 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeffde207 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf5f52afd ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf97cac44 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1474aad5 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x25281294 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2e3a4479 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x31ea988d iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3c2dad11 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x41d6f014 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4b1aadc2 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4dac87fc iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7d141ea9 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x81b01c3c iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8352f55f iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x83c108b0 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x88671b09 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x899b3b10 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8d2da86e iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e8bbe98 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaaf15792 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb2603a58 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbcdf8bac iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbe11cffd iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbf473a80 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc11a82db iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc3475e8b iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe33282cd iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe464efe9 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf0cf649f iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf9c8d084 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xffcbe7be iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0610f60d target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x066a798f spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x1db1826f core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ef4ab51 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x22fba914 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x25976aa5 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x28b0cf67 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a40e74e spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x306ae377 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x3339ca93 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x3396cb67 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c4af3ab target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f8877ac transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x40bdc276 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x419fde92 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x47ab9a15 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c699643 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x4caa25ff core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x53354e14 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x57ff77db passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x69e298dc transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6cb92ba8 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x702e64d2 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x76c3d28e target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x770e429b sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d0c5740 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7da8f83a sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7eb11b1b target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x80a9874d core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x81b10d83 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x820d8ee0 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x95da48a1 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x99f99c46 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d04f927 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x9f10bff8 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa16ed68d sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa742da0e target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xaba7d0fe target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xac657768 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xace662c6 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xad226fbe transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xad70f7ee transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xb0e3885a transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xb158fab1 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xb350c01f transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xb81f5dbb target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8d47991 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xbaf69ac1 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1b4cc9e sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xc986c957 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xca726b76 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xcb3fea3a transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1c6c918 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xd4b36d95 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xd65c0cb8 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xd992b272 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfcac396 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xe0be64e4 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1c39a62 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xe23bfe4c target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xecbb6976 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xee0b262d passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4810537 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xf8aa7e22 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xfdf17dd0 target_nacl_find_deve +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 0xfc64002f 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 0xc14ebbad sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x094478eb usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4991dbbb usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6d53323d usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa1649c60 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xac2c6e8e usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbeffe90b usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd27f3f41 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd2d5c9d8 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd2daeef3 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdb47fdc2 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe0f86ec3 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe9040ed7 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x043a6b14 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x0edfb525 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 0x49ed786f lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x4d2077dc devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x8c85a7eb devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xadd7ffc9 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 0x37af3fd0 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x41915d63 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5832ca0a svga_tilecursor +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 0xa2f9c2d0 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xab644277 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb0eafa88 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 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xfc63a63e svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x6386d0ea sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x6d5f5939 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x5f27b5b1 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x4cf3e80b 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 0xd37f7e5e mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x821c2243 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xad9ea6f2 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xca10e09f matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x5d5e71a9 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x91046b2d DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x94057c14 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xd2f23353 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x7d9a9332 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x3dde5ec2 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x14ab274d matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x2d5fa27b matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5fb4c5af matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xacdf3206 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x613427da matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x8096cb95 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4032339f matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x416ca3bf matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x5fcd6317 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x9162df4d matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe12f2827 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xb6ee0073 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 0x941b0a3d w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x9e6872f1 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xe9cf4419 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xe9f9a29e w1_unregister_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 0x11c1f29e ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x1f69701b 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 0x6d38287a ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x745a8a9e ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa090f814 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa9000fed extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xaaf6ec0d ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xc2c92e9a ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xc5657962 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xeedbd561 ore_read +EXPORT_SYMBOL fs/fscache/fscache 0x1145eac5 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x19190fb7 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1f40f91f __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x207f5544 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x26327e73 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x2a0c6cf0 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x319c131a __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x3568455c fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x367f44ec fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x4304c64f fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x4588c498 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x4791702f fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x48628b31 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x4f8b327c __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x502e4ebb __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x54027a36 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x549a0f53 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x61778318 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x620fc9ce __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x64aefcd7 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x6a088e4a fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x6a3cc31a fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x6e9742a0 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x73495148 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x79e3efda __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x7a8f3c6c fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x890804f4 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x913fc4cd __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xb2c550da fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xb4da9124 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xbe372c3d fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xc41b844f fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xc5087d0a fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xc92b21e6 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xd3cd3378 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xdf243ee6 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xec6bd29e __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xed888e1e __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xef85bd75 fscache_mark_pages_cached +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 0x01f03d92 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xd06a79df lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x23685442 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xca173cd0 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x86a411ea make_8023_client +EXPORT_SYMBOL net/802/p8023 0xff0425dd destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x1c9a8d3e register_snap_client +EXPORT_SYMBOL net/802/psnap 0xfe0e27aa unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0ab7da8e p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x0b67e89e p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x1107e3da p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1a42294b p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x28288be4 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x29aab593 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x2e0720ce p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x343d26f1 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37892a84 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x37f153fa p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x39cd0ca7 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x40802e75 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x47df8fab p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x4e14e2d8 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5dbe511d p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x6cb375ea p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x8c591319 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x8e437aa6 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x9403f2b3 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x95ef0e1e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x9a2b11ee p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xa0f2c01f p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xa2133d5d p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xa655a3ff p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xa8abc005 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xaa57761f p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xaa9245ae p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xac6f81fe v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xb0900d73 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb4fa5587 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xb65651ce p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc9978179 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xd772d514 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xdc969d79 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe44bd454 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xe49ff096 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xebb8e27b v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf5ceb628 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xf638c55e p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfab5c5a4 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfda97ba2 p9_client_create_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x6e940b9d aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x8f9d6a47 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xb834c404 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xf1843429 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x0787c816 atm_charge +EXPORT_SYMBOL net/atm/atm 0x1bfbb10f vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x20b07964 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x2c67953c vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x30294570 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x37c482df atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x6d560a28 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x8af8e120 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xcb58ce40 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xd525a810 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xd7024a09 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xeefffff9 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xef9f4536 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf8056a90 vcc_release_async +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x40f15de5 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x50dbce6a ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5bebf1a0 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x6d5a358c ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x7d793518 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x7fb45919 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x8b324985 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 0xb718b0c2 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1439a25f hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x21574811 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f3a7a7f bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44410ecf bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46889112 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x515350f5 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x581045ca l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x60f6b164 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x632092d5 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6c968c40 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6df0712c hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x781231d5 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7fab94c3 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84a0a470 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84b27920 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x86b8d0f9 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9355a5a5 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x97c8fcc2 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9a48903d bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa99863ac bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xabdf9040 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb191e590 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb7981c48 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbd8162c hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbd664a52 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc0593117 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc9f6ae8e hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcb3a856a bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcf0e147c hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd10968e8 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd28255ef l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4970f40 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe063e736 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeadb2c72 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xef1ba755 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xef5f70b8 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf5585014 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf685ea24 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfc08fd63 hci_get_route +EXPORT_SYMBOL net/bridge/bridge 0x418afd46 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x02842271 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x6bf2cd05 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x71cbb637 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x311d897e get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x3737c45c 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 0xa2af0318 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xca725d73 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xf1fc1c69 caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x173e1c88 can_ioctl +EXPORT_SYMBOL net/can/can 0x21126581 can_proto_register +EXPORT_SYMBOL net/can/can 0x30111012 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x506eb90e can_send +EXPORT_SYMBOL net/can/can 0x7f403774 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xc4bf66b1 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x0021634e __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x06c21acc ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x08231a69 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x083a7a28 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x08643732 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x095a8d94 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x0dbbf875 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x0ec65cc7 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x14917139 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x17089b9b ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x17838166 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x179baabf osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x194372f0 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x1c0e1079 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x20198408 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2538c66b ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x26814ffe osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x277ddfb2 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x286cdf31 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x2b36c954 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x3289c559 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3fa09dde ceph_monc_do_statfs +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 0x45b7f4e7 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4cf7d036 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x4d196996 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4e03e0b9 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54b6b231 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x551212f8 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x562a8635 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5ec9b1cd ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x60e52d93 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x61c83cf5 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x625174f0 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x635b384e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x64d627a5 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x7069a847 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x71762a7b osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x71e11cfd ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x752aaf14 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x763561cc ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x7794dc8e ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x78913dc0 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x7b783ca6 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x7f2a4079 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x7fb37c3c ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x81579292 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x849ac101 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x8712318d ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x87a22803 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8c3ef9a2 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x8c4a3b32 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x9318dcab ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x9783fdc3 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a731db5 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x9ae98db7 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa0164038 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xa0be8d75 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa4a6ed30 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa6860224 osd_req_op_extent_osd_data_pagelist +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 0xb2e53745 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xb43337de ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb5b7b18d ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb6359121 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xbcd58f5b ceph_con_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 0xcfc0c0b2 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd14eaf1c ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xd270b9f4 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd97be4b8 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xdc6514bf ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xdd54d92e osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xdd5fa830 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdd6aabea ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xdffedaa3 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xe229c69c osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe5e058c0 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xe98aad45 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xef260c66 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xf1d0394b ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xf79eb4c7 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfc40cdff ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xffef3f9a ceph_osdc_readpages +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x3fa7f26c dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xbbe4bbb0 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x158bafe0 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x14570b36 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x98dc20f1 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbea2b092 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd3d9e835 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe3096277 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xeea9126d wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xaef323a6 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xd6e05f12 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x132e0078 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa8316435 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa8f5820c ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xb874af2d ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd6942722 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe29676f4 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x05e888ef arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x1a37cadc arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xca4962ea arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1004476c ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x15a92063 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x51d29081 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x158612cf xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x16d18baf xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x2fc7214d udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2a7f630d ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x475a8162 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x737453ab ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd7be6e18 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x353acbd9 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6b2fe49c ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9c1b6c42 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x0c807a9f xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x9bd12d54 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6e17676a xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x98381602 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x047234d1 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x04970e60 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1237655e ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x15b13e19 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x46145f5d ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5310d1da ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x869ba5cb ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd5ac8d2e 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 0x1ebde13a async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x1ff76bcd alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x2688ee26 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x272eced0 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x35f78bab irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x3b15508e irttp_dup +EXPORT_SYMBOL net/irda/irda 0x3d8a266e irlap_close +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 0x58807446 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x5fca0fa1 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x618fc6d2 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x6a9fd22c iriap_getvaluebyclass_request +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 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x839b172b iriap_open +EXPORT_SYMBOL net/irda/irda 0x8fea1c6c async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x909a95f4 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x9303d11e irttp_flow_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 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xafcb1843 irlmp_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 0xbecfa68b irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xc4d32b53 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xcda00c25 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xd0abb8d7 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xd67dc331 irlmp_open_lsap +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 0xe12c4e27 iriap_close +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xe8c4fb39 irlap_open +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 0xf25c8f6c irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf6a178ec irttp_disconnect_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x377bbb00 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x32e6e1cc lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x357c765e lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x5e0405e3 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x789beb8d lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x7b34c709 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x9be745fc lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xb8b54f75 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xf5e06b9f lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x186c36ca llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x63172ff4 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x8bab29db llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xcc41539e llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xe5939402 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xe7e04840 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xea526ca1 llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x0513b03c ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x05e84795 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x0e29c3ae rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x0e3d8636 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x10fd30ce ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x16ff0622 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x1783c3e7 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x1ccb764e ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x1ff5701b ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x20e47758 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x21b2f8c2 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x23515bea ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x23d5bc76 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x280c652a ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x2fb11131 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x301075fb ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x34b3f2f2 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x375eda48 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x3a002fad ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x3a6cac0e wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3adb5534 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x409447ec ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x4cf398cd ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x4eab7f38 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x58374c7c ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x59c0e66c ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x5c161035 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5d9f61e7 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5dbe5de5 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x5ead6f61 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x5f034490 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x5f5cc8f1 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x6171948c ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x629e2b54 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x66827577 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x68c05b2f ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x70a87bf2 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x76a10d3d ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7d7c0ab3 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x809e4439 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x818f3878 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8283857f ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8821407f ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x8a8389bb ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x8d6a9d50 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x968c0071 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9b1a89a3 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x9e6dc92e ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9e7e3083 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9ef68204 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa0d5d857 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa4be5311 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xa725b52e ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xaa8088a3 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xaacc2706 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb08bfbe6 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xb17ddda3 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb19e42e9 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xb68902d0 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xb9ccb430 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xbcafd382 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xc52ec0a1 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xc54110f6 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xc80b434b ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xc895241a ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xcafd89b2 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xcc86aea8 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xcfc24412 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd7663cc8 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xd954fe10 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xdfcfe2e6 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xe1a8183a ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe759d272 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xe9ed3555 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xeb9a22f7 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xed9e4515 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xef0a3f36 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xf3d3b05e ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xf66d5f77 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf8ca1d53 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xfb920f04 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xfed28001 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xff87bf32 ieee80211_csa_finish +EXPORT_SYMBOL net/mac802154/mac802154 0x0068904c ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x1acb6ead ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x31c89cf1 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x670a6e5e ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x73087096 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x7fb3244b ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x8a3e3313 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xa331a938 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xaf68015b ieee802154_rx_irqsafe +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0dc684ad ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x266b23f9 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x47829ef4 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x49deffd4 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5afd1e79 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7c88a8a4 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8a0bebd5 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8d526284 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9af3aa2a ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd377e5e8 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe5cf1032 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf085c877 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf1277daa ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfb87f6b6 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x031b5a9d nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x18e90130 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x2793d625 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x2b0dea5c nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x2e0358b6 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x308e848a nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x479f8f83 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xdee5ca06 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xe5f75c07 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x23331222 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x6a7b7bd0 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x7b4294c3 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x83ae26df xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8d41c991 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa910f72f xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xc7ee7af3 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd29f7461 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xe44a94fa xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xe95e3893 xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x061a2687 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x0825d05e nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x166ebd2d nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x1dd0ca7a nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x2afdb8dd nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x310f27ad nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4a8a1041 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x4e0a3af0 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x5e0f61fc nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x7919c437 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x8465d80d nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x850d2883 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xb26d4584 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xcd6cad63 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xd4fd9211 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xd7989a5b nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe623e7c7 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xec85af66 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xefc99c0b nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/nci/nci 0x06adbb50 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x109e01a6 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x161d3579 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x16b2ee29 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x2b888097 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x2cde58d3 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x3496db9a nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x36925563 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x3c02cf18 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x5006f620 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x626d05c8 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x69e6b93c nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x6f659fb0 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x71415742 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x7b2294ea nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x90fb9c27 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x9f4df178 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xb14364c1 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xdea98f94 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nfc 0x00d26892 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x061ccb08 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x11b6c891 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x1ec79d7f nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x41a7a47b nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x54d66732 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x59241a95 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x61be8690 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x61f21443 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x75155cc9 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x858cc76e nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x90f99c9a nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x98534b6b nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x9d53051c nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xa449921d nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xac640f06 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xb9267991 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xc988ca98 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xca0ce25a nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xcf5d56ea nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xe5d256a6 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xff41b2be nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc_digital 0x12201014 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x258c3efe nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x70483837 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xfd0c6d09 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x13681b36 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x5e888c93 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x740ddeab pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xb6405590 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xd22d3492 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xd5b40c95 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xed17a663 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xfae51f06 pn_sock_unhash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0a079f51 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x26710780 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x391a7bd1 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x397efcfa rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3baab5fc rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x439faf7c rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x50adc8ae key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5c7a3974 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e05eb37 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7e78de71 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x833e4b34 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xad4502d6 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc2718c91 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xda4a242d rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf99a2b42 rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0x7ace80c6 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x087ca7ba gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x17be981a gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x4ae955b7 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3100d7e8 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xd585d30a xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xed453248 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0xa5090d96 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xd21099c0 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x011196d5 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x013b58ce __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x02f254ef cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x0361ef5d cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x0481e834 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x0572c176 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x077a12b7 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c1b761a cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x105b3047 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x11181ed7 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1121f13a cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x139cf14e cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x15e0ad85 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a3788a4 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x1a982adb cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x1cd27322 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x1e4ff7a1 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x21ea731d wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x29ae5383 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x351745b4 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x3777d9fc cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x37f34ca1 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x3aa4f2c2 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3b0d2df6 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x3c6dccfe __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4005da43 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x400d4ec2 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x406d7b9d cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x41071e89 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4249836d cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4b3415a9 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x4b80f4b2 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5cc66811 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x60316dd4 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x64e2072f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x6991e974 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6ca931f3 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x6ced1b39 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6d887674 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7393a0bd cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x74c5f9fe cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x798492f4 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7d954d68 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x7ddc8c81 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8051830d cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x81b22590 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x82c010f3 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x83873d55 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85b5df64 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x861116ad cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8f1ccdec regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x8f1d4b1d cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x91d03e1d cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x94dad4d1 cfg80211_remain_on_channel_expired +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 0x98e43f89 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x9c3ab0c4 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x9c6c1ee6 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xa0095104 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 0xa2b6966b cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xa497a203 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xa6927b04 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xad634f7d cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xadb2463d cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xb16b80f6 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xb7bbaf2e cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xb7c9a5a2 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xb81c9e6f cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xbcfac742 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xc29d2f7f cfg80211_gtk_rekey_notify +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 0xd1837596 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd22edffb wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xd33c0a67 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdbfe0aaf ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xde6e119e __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe256ad17 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xe3243741 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xe541f894 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xe89539eb cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xe91fa863 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf598ca60 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xfc709b42 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x3b400eca lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x3b79b83f lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x4eb3e233 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa17a4de1 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xafc96fcb lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xe4b0ed57 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0x6c0bc66a ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xcce52ef4 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 0x725be3c9 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 0x817d8046 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 0xe639e682 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 0xff46a4e0 snd_seq_kernel_client_enqueue_blocking +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 0x5169ee81 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 0x8e95256b snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x04acffa3 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x1085b73f 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 0x19a32f7e snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x1a6e653a snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2529d6d6 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x268c4ae4 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3b83bd9c snd_card_free +EXPORT_SYMBOL sound/core/snd 0x44b77253 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4afe5db9 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x4c5fd8c3 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x4e3f84cb snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x4f349caa snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x54b49f72 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x5fd8963e snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x61991183 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x6ac14b3d snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x6bfe672e snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7361c29c snd_card_register +EXPORT_SYMBOL sound/core/snd 0x78f05b95 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x80780a3d snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x829c703a snd_component_add +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8e3e3d01 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x8e7bdef2 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x8fdbd9af snd_device_register +EXPORT_SYMBOL sound/core/snd 0x93786fb1 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x9b95d64a snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x9c21af33 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9f2f82ac snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa7200af4 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xadd4ab28 snd_card_new +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb7428119 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xb952ccb8 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xba773864 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xcb0765e5 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xcc0c9fe3 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xdc0001aa snd_cards +EXPORT_SYMBOL sound/core/snd 0xde1006d9 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xe193bdce snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xe1dd3c2f snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xee82dc76 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xef7e5392 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xf09a8d68 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xf15a1b63 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xf1e0fae0 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xf642d9c0 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xfd362ccd snd_card_set_id +EXPORT_SYMBOL sound/core/snd-hwdep 0xa1c444ef snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x03dfbf1f snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0bfdad3c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x15dde2f9 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x16e04660 snd_pcm_suspend +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 0x239b6a54 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x2d8a1917 snd_pcm_hw_constraint_ratnums +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 0x3c100f11 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x44414cee snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x44f1c695 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x45fbbecf snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x49a47cd6 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x4a9f3394 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9c850a snd_pcm_hw_constraint_ratdens +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 0x50fb80b7 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x51a09b69 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x547441ae snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x56cc79ab snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x58f6af17 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x60eccc97 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x61644d21 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x63df7d0e snd_pcm_hw_constraint_pow2 +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 0x69b3f31a snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x6c6d87e6 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x6f4bb203 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x71fe459e snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x73e95091 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x79318640 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x7ade9159 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x7c7b82d9 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x861d7255 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x996052f9 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x9f9b6724 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xa0513261 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xaaabe995 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xaf17b300 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xb83c3b7c snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbf2a6cfd snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xc2740677 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xc2d8635f snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xd66eadab snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xd6f7d86c snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xd858fe18 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xdb9e46b5 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe264a838 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe9eb4442 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xeb92eb33 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xf1b8e404 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf9052e2b snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0a74b987 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x116db345 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x196f751d snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5051d141 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5193eb83 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5915e491 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5d56eaae snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5f7fbf25 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x67c07538 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x69e84d72 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x84f12051 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9a2a3874 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9c262091 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc08e2793 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc205393e snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc4feb0ad snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xca2e4e5f snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe8fbd5d8 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xeeb231fb snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x1f939281 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x20c775e3 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x2393a6f4 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x4639cc56 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x72985438 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x82acab4c snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x91441d15 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x9eaf429b snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xa0967be8 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xc82d6062 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xd85ea072 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xe82a7920 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xfe89c2d6 snd_timer_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x8975a3d4 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 0x0bdc3eab snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0e6cba55 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x751fa108 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7ae28413 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x99cb2e72 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb6085929 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbdb9d620 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdb74f51e snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xfb515d9e snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x17c746fc snd_opl4_create +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x537c00c4 snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x634d826d snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xeb1fe1b6 snd_opl4_read +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xebfb9de3 snd_opl4_write +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x02325d15 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2e85de41 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x47d1e36d snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6f5ab1e9 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9c6a963e snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9de03f13 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc1c58f20 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcc22aa9c snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe311be4f snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x05a396d6 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0e97c994 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x28678eae amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4058fa83 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4832a596 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5892e634 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x70b144d5 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x754112b1 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a95c093 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7aa185b1 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8e8d0577 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8f377a64 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x96404bac amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9f9b7bf5 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa100eab3 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb2d83b29 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb7c2bfed snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbdf43bf1 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbea939eb amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc7c6199f cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc8b8c9c7 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc9b60ade amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca5255d7 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcaa6ae19 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xce76eee0 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd912884d amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe10d90d8 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe14446ad amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3a06166 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf692db47 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfc29d744 fcp_avc_transaction +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x02d9408c snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x8f853722 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0bc1597b snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x272b9ff6 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x36be4342 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x95131299 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb79a16a5 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc65c6478 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xcab63544 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdc443fe6 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x299e90da snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x2c0534c6 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x501118a0 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x64561ad6 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb38653fb snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xdc35e880 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x8b258127 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x930d984c snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xa49c21f4 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xbfacf8b6 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x244bd0bf snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x6a544d92 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x00470827 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x03337fa2 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x3bb9c7b7 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8ab06e6e snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa5c70344 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb6092fcc snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x458060c4 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x565a43da snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x651158d6 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8e310492 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa11d6ac3 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xba2d02b8 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x5b58c9ea snd_tea6330t_detect +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xea301cff snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x65f28d5c snd_es1688_reset +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x9563b589 snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xb8a37075 snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xc6a7a7df snd_es1688_create +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xf37edee8 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0254997c snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x042f3c34 snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x20f48d14 snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x21989de4 snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2260f129 snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2a080e6f snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2f12915b snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x32903dfc snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3b4084c7 snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3bb16ee4 snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3e1db782 snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3fc3b8f7 snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x50508678 snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x52bc2a53 snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x61538cf5 snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x6c3e3e6a snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x6f3bf8a8 snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x873dfef4 snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8ad5bec1 snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x93de261b snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb826d6d6 snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xbefed6be snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc88e964c snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc8fa1ffe snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xcdb8e669 snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe87a1b83 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf252a974 snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf6c9f0ce snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf79eaf8f snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xffc0fdfe snd_gf1_write16 +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0ea42f15 snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x1ed63c5f snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x306c1baa snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x477b71ca snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x4a657f63 snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x55ec0d7d snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x6cd83d5a snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xd09b2dfd snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xd66ee9ce snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xe0141443 snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xf854674f snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xf90ccce2 snd_msnd_pcm +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x4e690304 snd_aci_cmd +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0xb8f9e572 snd_aci_get_aci +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x355abf30 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5719b8d6 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5fe943a7 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6d61c832 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7e90d834 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9013614c snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x96556bf8 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcd6a7ad8 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdd291bb7 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xfae41c81 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0xed0111ab snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x7065d4d0 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xacacd14e snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xd9ecc72a 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 0x18e7bb35 snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x26850636 snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x397459a4 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x88a70fa4 snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x0abb56d2 snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x206bf3cc snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x521e7326 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x61291a80 snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x92558e2c snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xcefed62a snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xd46912e3 snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xd50499d6 snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xdc44e1f4 snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xe030f88a snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xeea7294a snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x1159970c snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x13369cb2 snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x167da2f4 snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x31b0169a snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x38b11ef7 snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x419b7a68 snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x41b01209 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x4bbfe70a snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5796dd51 snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x6a52a793 snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x6be724b2 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x70a4ca75 snd_wss_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x96493cdf snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9fc0489d snd_wss_info_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xb2db6bf0 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xb8138687 snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xba7c8d39 snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xea75449c snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xfd973b23 snd_wss_in +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x08ba09e5 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0b59fbaf snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0c936888 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x31d0da89 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3e8f9721 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x444b3246 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4f79ec7f snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x59018135 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5bceb7fc snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x661051ba snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6a7d862b snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9fcb4125 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbdfee328 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc6567a42 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xed333c1c snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf1e99d9d snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf37aa799 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x49441b86 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x00800b26 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x167db08c snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x30c037e0 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbbf69345 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdce9714e snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe97dcbfd snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xef788f30 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf0da93fe snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf65f785e snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5cd33032 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7ae28444 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7d8cdb37 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x15520578 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1d896d2c oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1fee6eeb oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x239fef70 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4b6b6c0f oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x51987b1d oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x698bfad3 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6be1b9f8 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6c9cda26 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7c10ddee oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x97f86f3d oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa789c451 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb253040e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb746c4d0 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc4435b2b oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd007e52a oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd88e72fe oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe540e150 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe6e80ab8 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe812979a oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xedd1a30e oxygen_pci_pm +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1d11b553 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x39bbaa53 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x79bc66cb snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x941df1dc snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfa2ba33f snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x87712da2 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xf93e3946 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xfc192abe sst_dma_new +EXPORT_SYMBOL sound/soc/snd-soc-core 0x361379a8 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x4580aa96 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x5f462c58 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x74479118 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xa8c7bbb1 register_sound_special +EXPORT_SYMBOL sound/soundcore 0xc68cc0e5 sound_class +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xdcc93150 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x056207d1 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x306ba92a snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x48a53080 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 0x79561fa8 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x795af078 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd7f94a07 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x059538e0 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x410f8259 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4ef81fbf snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x69cae683 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6e08817d snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8bfbe831 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb42a300f __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe13affc8 __snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x0c5452f3 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 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 0x0030dbe2 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x0038e20e dquot_release +EXPORT_SYMBOL vmlinux 0x0054a323 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x0064b664 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x0083af1a pci_request_regions +EXPORT_SYMBOL vmlinux 0x00843567 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x00a6d571 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x00ac2c76 blk_free_tags +EXPORT_SYMBOL vmlinux 0x00af3543 __check_sticky +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 0x00d8afe9 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x00ee9c76 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x012693ca pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x0135eb9f in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x0139b504 cpu_current_top_of_stack +EXPORT_SYMBOL vmlinux 0x0145ed39 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x014999f6 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x0149dc9e pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x0154a838 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x015e2ef9 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x01858e7e vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x018d2f40 lease_modify +EXPORT_SYMBOL vmlinux 0x01992b6f i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x01a7f084 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x01afbfac nlmsg_notify +EXPORT_SYMBOL vmlinux 0x01bd6b67 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x01bdaa36 notify_change +EXPORT_SYMBOL vmlinux 0x01c787cf md_cluster_mod +EXPORT_SYMBOL vmlinux 0x01d7b5e1 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x01df9b43 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x0207413f twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x0209f19d generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x020eb0ac bio_clone_fast +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x021969d8 serio_rescan +EXPORT_SYMBOL vmlinux 0x021d066a __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x02206ca5 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x024b342f ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02829062 pci_request_region +EXPORT_SYMBOL vmlinux 0x0289d505 km_new_mapping +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a1dfa2 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02aa845c devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x02c1f87a scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x02da82b8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x02db9fe9 tty_unlock +EXPORT_SYMBOL vmlinux 0x02de73ad setup_new_exec +EXPORT_SYMBOL vmlinux 0x02dff806 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x02e861bb dquot_file_open +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 0x02f665f3 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x0323b001 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x03332bc7 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03502971 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x0352a806 netdev_change_features +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x03593777 bdevname +EXPORT_SYMBOL vmlinux 0x0363ce1b inode_change_ok +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0372d53b bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037dae4e tty_do_resize +EXPORT_SYMBOL vmlinux 0x03a4cb19 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x03aed73e generic_setlease +EXPORT_SYMBOL vmlinux 0x03d01a29 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x03e9f241 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0415f365 mmc_add_host +EXPORT_SYMBOL vmlinux 0x04172b2f end_page_writeback +EXPORT_SYMBOL vmlinux 0x041e1f7c dev_addr_flush +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x043b6c28 _dev_info +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045406cf fb_set_var +EXPORT_SYMBOL vmlinux 0x04801b8e tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x0481fe45 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04929669 path_is_under +EXPORT_SYMBOL vmlinux 0x04ae76b5 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x04b2501a eth_mac_addr +EXPORT_SYMBOL vmlinux 0x04b7ebe5 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x04b97dfb mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x04c52240 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x04c69fdc dentry_unhash +EXPORT_SYMBOL vmlinux 0x04d36a08 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f61ce4 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x050cba4d blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x0517323e agp_find_bridge +EXPORT_SYMBOL vmlinux 0x051965dc da903x_query_status +EXPORT_SYMBOL vmlinux 0x051b2668 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0541acd1 udplite_prot +EXPORT_SYMBOL vmlinux 0x056e702f gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x0586c518 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x05a4217b simple_transaction_read +EXPORT_SYMBOL vmlinux 0x05cfb5d7 ata_print_version +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x0605e956 nf_log_unset +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062ce059 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x065dc0d5 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x0666a5ab add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x0667c8f8 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x066b4017 finish_no_open +EXPORT_SYMBOL vmlinux 0x06734d94 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0681c8f8 sk_wait_data +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06b7a64a tty_port_init +EXPORT_SYMBOL vmlinux 0x06b85e82 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x06bb3023 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x06bf93c4 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06cbf58e fddi_type_trans +EXPORT_SYMBOL vmlinux 0x06db2167 pci_release_regions +EXPORT_SYMBOL vmlinux 0x06f337e4 agp_enable +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070b6615 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07385157 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x0739bdc2 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x0753d8b0 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x07624503 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x0767e01a flow_cache_init +EXPORT_SYMBOL vmlinux 0x079ef766 set_binfmt +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07ad97f0 phy_device_register +EXPORT_SYMBOL vmlinux 0x07b30250 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x07b8cc84 blk_get_queue +EXPORT_SYMBOL vmlinux 0x07bb7682 security_inode_permission +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d444e9 __blk_end_request +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07d51433 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x07d563fc scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x07f9850e vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x08175305 sock_edemux +EXPORT_SYMBOL vmlinux 0x081a2169 skb_push +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08481db9 mpage_writepages +EXPORT_SYMBOL vmlinux 0x085faeff abx500_register_ops +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x09039522 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x09359b5f abort_creds +EXPORT_SYMBOL vmlinux 0x093f3012 mdiobus_write +EXPORT_SYMBOL vmlinux 0x09466a20 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095b9772 page_symlink +EXPORT_SYMBOL vmlinux 0x09896e63 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09acd0f9 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x09b6cfdb audit_log_start +EXPORT_SYMBOL vmlinux 0x09bdfe1e vfs_rename +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8bcc0 down_write_trylock +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e17633 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x09e816a8 seq_printf +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x0a0de0e4 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x0a12f90c ip6_xmit +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 0x0a382a44 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a612027 km_report +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a7612f0 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a9cc465 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0af448ad dma_free_attrs +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b13e384 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1fab21 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x0b360e95 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4ba67f inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x0b6813fc reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x0b72c710 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b826eca __dax_fault +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b91bf08 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x0b9cbb05 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bced5b7 tcf_em_register +EXPORT_SYMBOL vmlinux 0x0bf7de7d x86_hyper +EXPORT_SYMBOL vmlinux 0x0c02b82b dquot_scan_active +EXPORT_SYMBOL vmlinux 0x0c19760d read_cache_page +EXPORT_SYMBOL vmlinux 0x0c2500c5 netdev_update_features +EXPORT_SYMBOL vmlinux 0x0c2d4f08 wireless_send_event +EXPORT_SYMBOL vmlinux 0x0c3036e4 agp_create_memory +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c50e88b dcache_dir_open +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c76d7d2 param_set_byte +EXPORT_SYMBOL vmlinux 0x0c80de38 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x0c965e4e udp_sendmsg +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca5d22b generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x0ca764e5 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc6c085 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x0cc9b4ad thaw_bdev +EXPORT_SYMBOL vmlinux 0x0ccec527 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0cef1ba2 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x0d041a98 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x0d0bfea0 free_buffer_head +EXPORT_SYMBOL vmlinux 0x0d35729c __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x0d38ae62 pci_map_rom +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d404e50 complete_request_key +EXPORT_SYMBOL vmlinux 0x0d468961 kobject_put +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d852cc0 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dc2b7a3 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x0dcf5868 phy_driver_register +EXPORT_SYMBOL vmlinux 0x0dd599df __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x0dfa2e72 tcp_child_process +EXPORT_SYMBOL vmlinux 0x0e045372 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x0e09089e generic_show_options +EXPORT_SYMBOL vmlinux 0x0e279ca4 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x0e46dc19 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x0e5cd50a sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7cee5a rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x0e8b7edc acpi_device_hid +EXPORT_SYMBOL vmlinux 0x0e986dac tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x0e99a6ff lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x0ea12bf9 d_instantiate +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb3afb1 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x0ebf8971 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ec72c58 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x0edd99b3 posix_test_lock +EXPORT_SYMBOL vmlinux 0x0ef2da04 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f04b4e1 override_creds +EXPORT_SYMBOL vmlinux 0x0f0b2a3b fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x0f13eb87 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x0f13fa99 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x0f1b48d6 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x0f1b9cbc __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x0f379b78 d_walk +EXPORT_SYMBOL vmlinux 0x0f3d005c dst_release +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5ffe39 genphy_read_status +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f750aef __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x0f936f05 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x0fa218cd tty_port_destroy +EXPORT_SYMBOL vmlinux 0x0fa3c23e dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ffa6b88 down_read_trylock +EXPORT_SYMBOL vmlinux 0x0ffa8dc0 md_write_end +EXPORT_SYMBOL vmlinux 0x101707cb security_path_mkdir +EXPORT_SYMBOL vmlinux 0x101bdc35 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x1028e43e sg_miter_skip +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x10347fad mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x103fb910 kill_pgrp +EXPORT_SYMBOL vmlinux 0x10558cee xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107b01bf find_vma +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1092743e noop_llseek +EXPORT_SYMBOL vmlinux 0x109bf2ae jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x10a421f8 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x10beec46 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x10c2f187 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x10e4e882 gen_pool_free +EXPORT_SYMBOL vmlinux 0x10ebd79f __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1123c1c3 generic_file_open +EXPORT_SYMBOL vmlinux 0x113749d4 simple_lookup +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11658b42 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x1197aa85 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1197b0f1 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11e12a18 netdev_state_change +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12016f5d bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x12062014 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x12085170 cdev_init +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12357823 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x12460baa vme_master_request +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x12544ddd inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x1256ca7a agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x125fe809 dump_page +EXPORT_SYMBOL vmlinux 0x12630e84 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x126c52e1 km_policy_expired +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e8934d mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x13068372 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x1314b2f5 get_fs_type +EXPORT_SYMBOL vmlinux 0x131cd5f4 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x131d3131 sock_i_uid +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x139174f9 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x1397cb41 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x139f1d39 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x13a52da8 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x14266755 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x1443c427 inet_bind +EXPORT_SYMBOL vmlinux 0x144c25c6 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0x145d1de3 sock_create +EXPORT_SYMBOL vmlinux 0x1483aff7 __get_page_tail +EXPORT_SYMBOL vmlinux 0x14cf4907 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x14def694 vfs_create +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x1508ddd6 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x15239176 param_set_int +EXPORT_SYMBOL vmlinux 0x1547bfd6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc0f mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x155ae881 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x1570a047 param_get_uint +EXPORT_SYMBOL vmlinux 0x15751e81 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x1581349f del_gendisk +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15e3f911 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x15f4777a empty_aops +EXPORT_SYMBOL vmlinux 0x15fd0415 tcp_req_err +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x160fde67 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x16381464 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x16573f1a iov_iter_zero +EXPORT_SYMBOL vmlinux 0x166f5cea sock_no_listen +EXPORT_SYMBOL vmlinux 0x1679175a __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16a22d1c xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x16af0905 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x16c06e2f i2c_transfer +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16fb2b4d shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x174f982c ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x17786e6a kmem_cache_free +EXPORT_SYMBOL vmlinux 0x17830420 key_unlink +EXPORT_SYMBOL vmlinux 0x178b417a pci_disable_msi +EXPORT_SYMBOL vmlinux 0x179570cc input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x1796071b fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b41346 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x17b7f779 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x17bc7a02 lock_fb_info +EXPORT_SYMBOL vmlinux 0x17bf8c97 kernel_read +EXPORT_SYMBOL vmlinux 0x17ccdd94 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +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 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x186e2165 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188a4f7a nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x188fb9a1 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a1cba2 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x18abda8e alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x18d657b4 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18df7397 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x18ecf864 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x18fdfafd create_empty_buffers +EXPORT_SYMBOL vmlinux 0x1903064c pci_pme_active +EXPORT_SYMBOL vmlinux 0x190fec74 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x19170268 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x19281cd2 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x1982e2d5 nobh_writepage +EXPORT_SYMBOL vmlinux 0x198c1e60 update_region +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19f35198 generic_write_end +EXPORT_SYMBOL vmlinux 0x1a1dfb13 from_kuid +EXPORT_SYMBOL vmlinux 0x1a202461 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x1a291d97 elevator_init +EXPORT_SYMBOL vmlinux 0x1a40ebbb skb_unlink +EXPORT_SYMBOL vmlinux 0x1a43789f page_readlink +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a6df314 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x1a79082b skb_store_bits +EXPORT_SYMBOL vmlinux 0x1a8086c2 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x1a82fe96 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x1a88071b set_pages_x +EXPORT_SYMBOL vmlinux 0x1a8d8771 sk_dst_check +EXPORT_SYMBOL vmlinux 0x1a9a3cf8 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x1aa76e4f mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x1ac448fb tty_throttle +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1ae6a406 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x1aea5849 force_sig +EXPORT_SYMBOL vmlinux 0x1aeb4573 padata_set_cpumasks +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 0x1b097ef0 skb_find_text +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b11d332 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x1b136cc4 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x1b168988 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2ab59e set_wb_congested +EXPORT_SYMBOL vmlinux 0x1b3e830f dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x1b497e49 dev_change_flags +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b60b0d6 mmc_put_card +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b67ddfa netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8d77e3 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc6484f xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x1bccdc89 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1c0a1e37 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c254fa1 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x1c2e5423 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x1c47447b netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x1c4e218a nd_iostat_end +EXPORT_SYMBOL vmlinux 0x1c6980f1 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x1c79e093 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x1c880755 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c8a9b64 inet_accept +EXPORT_SYMBOL vmlinux 0x1c96a1d8 d_drop +EXPORT_SYMBOL vmlinux 0x1cdc34fc ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x1d038f13 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x1d13ace0 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x1d23fafe misc_register +EXPORT_SYMBOL vmlinux 0x1d337390 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x1d33e4c9 param_set_bool +EXPORT_SYMBOL vmlinux 0x1d34aa66 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d6b47fd do_splice_from +EXPORT_SYMBOL vmlinux 0x1d7e5894 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd78b00 mdiobus_unregister +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 0x1e1497d9 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x1e1a7132 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x1e1c0857 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2d138f __napi_complete +EXPORT_SYMBOL vmlinux 0x1e4745c1 tty_register_driver +EXPORT_SYMBOL vmlinux 0x1e4fd8e3 submit_bh +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7ac96d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x1e80270b netif_napi_del +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eace5cf pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ebad9a8 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x1ec476f0 dquot_resume +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1edca132 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x1ef2c9dc i2c_clients_command +EXPORT_SYMBOL vmlinux 0x1f0935ec bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x1f2aa431 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x1f48dd08 km_query +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f949131 phy_start +EXPORT_SYMBOL vmlinux 0x1f953430 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcd4628 tcf_hash_check +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 0x1fef0cdd generic_block_bmap +EXPORT_SYMBOL vmlinux 0x1ff9a458 phy_disconnect +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2003989f i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200ac94f dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x202f4e92 acpi_extract_package +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205cff7a bdi_destroy +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20860d9f sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20b13d6f scsi_dma_map +EXPORT_SYMBOL vmlinux 0x20b8041d pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20d1d943 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x20dcf746 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20ea3437 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x20f3651b dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x20f653d2 __lock_page +EXPORT_SYMBOL vmlinux 0x213f206f vme_irq_generate +EXPORT_SYMBOL vmlinux 0x2152405d tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x218430a9 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x2199a16a input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x21a55daf ip6_frag_init +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21ad42c0 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x21bda38a param_ops_ushort +EXPORT_SYMBOL vmlinux 0x21bf6bde pipe_lock +EXPORT_SYMBOL vmlinux 0x21c088bf textsearch_register +EXPORT_SYMBOL vmlinux 0x21d2d01d xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x21deda5a bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x21df6dc9 set_pages_array_wc +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 0x22136f39 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x2214aa99 get_cached_acl +EXPORT_SYMBOL vmlinux 0x221c6b84 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2233a5e0 con_is_bound +EXPORT_SYMBOL vmlinux 0x22347e9c filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x2243f5ba iterate_mounts +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b4c7f8 find_lock_entry +EXPORT_SYMBOL vmlinux 0x22ca4018 sock_no_getname +EXPORT_SYMBOL vmlinux 0x22dd28f7 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22e5fe21 pci_bus_type +EXPORT_SYMBOL vmlinux 0x22f2781d flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x22f78fdb udp_del_offload +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232089ad remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x23228c8c sock_release +EXPORT_SYMBOL vmlinux 0x232b6e16 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x232dd80d to_nd_btt +EXPORT_SYMBOL vmlinux 0x23329ba8 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x234baed6 skb_append +EXPORT_SYMBOL vmlinux 0x234e547a d_obtain_alias +EXPORT_SYMBOL vmlinux 0x234f8399 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x237303e8 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x238f5c1a _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x23988eab udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a873ab devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x23ab275f block_write_end +EXPORT_SYMBOL vmlinux 0x23b70260 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23dcdac2 phy_find_first +EXPORT_SYMBOL vmlinux 0x23e73776 bitmap_startwrite +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 0x2433662e dquot_transfer +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 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245fe1f3 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x248054a2 simple_rename +EXPORT_SYMBOL vmlinux 0x24806d71 param_ops_string +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24837449 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x249a7700 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x24aaa256 set_disk_ro +EXPORT_SYMBOL vmlinux 0x24aefa1e pci_save_state +EXPORT_SYMBOL vmlinux 0x24cfd4bb write_one_page +EXPORT_SYMBOL vmlinux 0x24db7dc5 fget +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2559b22b bio_copy_data +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2570d5ba napi_gro_frags +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a07088 get_super_thawed +EXPORT_SYMBOL vmlinux 0x25bcbd06 security_mmap_file +EXPORT_SYMBOL vmlinux 0x25c46c71 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x25c9c72b inet6_del_offload +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x26120ccd dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x262190c2 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x2637af0f task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26557979 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x2665462f vga_con +EXPORT_SYMBOL vmlinux 0x26782995 tcp_close +EXPORT_SYMBOL vmlinux 0x2686a951 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x268cc6a2 sys_close +EXPORT_SYMBOL vmlinux 0x2691264d get_empty_filp +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26bcfa9c acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x26c314fa dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26d0cf84 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f57180 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x27048e7c unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x2711b151 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x27124e2b param_get_long +EXPORT_SYMBOL vmlinux 0x2717e428 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x27401e88 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27512080 dcache_readdir +EXPORT_SYMBOL vmlinux 0x277a99a6 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x27958091 account_page_redirty +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27eadbdf neigh_seq_start +EXPORT_SYMBOL vmlinux 0x27ef7d28 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28211133 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x283cbda7 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x285e43d5 free_task +EXPORT_SYMBOL vmlinux 0x2879e4b5 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x28940818 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a6152b pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28bd34f9 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x28c3a06d tty_port_close_start +EXPORT_SYMBOL vmlinux 0x28d39a8e iput +EXPORT_SYMBOL vmlinux 0x28d8f80c bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28e8068c mmc_of_parse +EXPORT_SYMBOL vmlinux 0x28eda433 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x28f06088 netlink_capable +EXPORT_SYMBOL vmlinux 0x28f430a5 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x29339eb0 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x2934eb57 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x295371c6 kill_litter_super +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295cd9c0 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x29799c18 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x2985849b dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x2988222b submit_bio +EXPORT_SYMBOL vmlinux 0x299f4e3c __scm_destroy +EXPORT_SYMBOL vmlinux 0x29a0a5ba d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x29af54f0 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x29bddfa1 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x29c01eab bdget_disk +EXPORT_SYMBOL vmlinux 0x29e2db6c pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x29e49d6a d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x29fa2263 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a005b2e simple_pin_fs +EXPORT_SYMBOL vmlinux 0x2a25ca3c nd_device_register +EXPORT_SYMBOL vmlinux 0x2a2a5f28 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a39493c __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x2a3cfc3f pcie_set_mps +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a57926a input_reset_device +EXPORT_SYMBOL vmlinux 0x2a5bf861 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2a65d6cd __devm_request_region +EXPORT_SYMBOL vmlinux 0x2a6aa7fe arp_create +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa45318 mount_single +EXPORT_SYMBOL vmlinux 0x2aa713e5 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x2aa91779 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2aa9b55c trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x2aaa2daf blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab1bf3e dqget +EXPORT_SYMBOL vmlinux 0x2ab70dfe uart_update_timeout +EXPORT_SYMBOL vmlinux 0x2ac740a7 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad4512f mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b29b894 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x2b2c7d3f mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b4a876c bmap +EXPORT_SYMBOL vmlinux 0x2b5a5fc9 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x2b684721 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x2b819483 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x2b83cb5c iunique +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba46296 file_path +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bbb5141 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c03af87 dev_printk +EXPORT_SYMBOL vmlinux 0x2c10a137 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c59ae11 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x2c6da376 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c96da36 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cb0105a uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2cb0310a balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x2cbc24f6 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x2cbe49e1 vm_mmap +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2cc86ef7 f_setown +EXPORT_SYMBOL vmlinux 0x2ccbcafb mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x2ce62083 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x2cf2dbcc pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x2cf49874 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d500355 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x2d8de98d xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x2d911732 fb_blank +EXPORT_SYMBOL vmlinux 0x2d92fa21 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2ddd3430 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x2dddb6ae _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2ddf6363 dev_get_by_index_rcu +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 0x2e0a10c7 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x2e1886d9 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1da429 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x2e21c8ca seq_write +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e32b47b udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x2e5202f6 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0x2e668491 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2e720060 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x2e83bb33 tty_port_close +EXPORT_SYMBOL vmlinux 0x2e98e48c udp_set_csum +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ef2398c iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x2ef596fc put_page +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efa1d24 datagram_poll +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f317ef8 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x2f31ea13 ns_capable +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4b34ff pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x2f53601f param_ops_int +EXPORT_SYMBOL vmlinux 0x2f5abfc0 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x2f5fd390 input_register_handler +EXPORT_SYMBOL vmlinux 0x2f867d1c acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x2f8ef9e1 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x2f910bff dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x2f99a793 gen_pool_create +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x30044cab mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x3009bd80 __register_chrdev +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x305fc419 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3088330c fsnotify_alloc_group +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 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f688a7 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x30f8a89c __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x3112d3e7 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x312cb417 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x31399343 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31509e95 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x3155a453 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x315d6f2b frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3182fce2 release_sock +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31c7f66f d_lookup +EXPORT_SYMBOL vmlinux 0x31e2687f alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31e909e8 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f67f7f xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x3225b261 blk_run_queue +EXPORT_SYMBOL vmlinux 0x3237e2a4 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x3249a9ef setattr_copy +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32710286 generic_setxattr +EXPORT_SYMBOL vmlinux 0x32981178 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x32abe6d7 netif_device_detach +EXPORT_SYMBOL vmlinux 0x32b1f8bc scm_fp_dup +EXPORT_SYMBOL vmlinux 0x32da4524 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32eab8c6 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x32f32047 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x32f77c0d __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x33134f05 dev_mc_add +EXPORT_SYMBOL vmlinux 0x333a5038 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x333f6143 filemap_flush +EXPORT_SYMBOL vmlinux 0x3340fd68 dev_crit +EXPORT_SYMBOL vmlinux 0x334a5044 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x338357ef mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x33882e32 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x33a11f61 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33cc047f key_validate +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x340e0879 give_up_console +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x3445ad64 __brelse +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34789795 register_qdisc +EXPORT_SYMBOL vmlinux 0x347d4bcd skb_split +EXPORT_SYMBOL vmlinux 0x348569a2 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x348ed837 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a79431 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x34b71508 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x34c244f6 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x34cabe6e elv_rb_find +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 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35cdf38e scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x35d59ac9 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x35e32673 sk_filter +EXPORT_SYMBOL vmlinux 0x35e7dd68 __page_symlink +EXPORT_SYMBOL vmlinux 0x36089b90 seq_release +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x361760ed rtnl_create_link +EXPORT_SYMBOL vmlinux 0x3631159a genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x36375fc3 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x3653ba92 arp_xmit +EXPORT_SYMBOL vmlinux 0x3657a270 padata_alloc +EXPORT_SYMBOL vmlinux 0x367287ee i2c_del_driver +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x36853543 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x368a3536 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x368a6a22 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x368b71e6 vme_bus_num +EXPORT_SYMBOL vmlinux 0x36976b01 generic_listxattr +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36e358cb mmc_start_req +EXPORT_SYMBOL vmlinux 0x36ea266f rfkill_alloc +EXPORT_SYMBOL vmlinux 0x36eff75b scsi_register +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x372af508 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x373cdc6a pci_dev_get +EXPORT_SYMBOL vmlinux 0x373ddc49 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3746fa72 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x374eee60 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x37584cfc kobject_get +EXPORT_SYMBOL vmlinux 0x375ee94c netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x376a1f2b sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37df1d54 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x37e2a2b1 sk_stream_wait_memory +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 0x37fa4445 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x380d694a xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x38177c9b max8925_reg_read +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x38213542 iget5_locked +EXPORT_SYMBOL vmlinux 0x382d2917 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x3843e085 follow_pfn +EXPORT_SYMBOL vmlinux 0x384d697a iterate_dir +EXPORT_SYMBOL vmlinux 0x38671a83 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x38682b58 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x38730214 kmap_high +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x389ef8d3 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x38a3dd2d kobject_set_name +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38aab844 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38bd2622 skb_clone +EXPORT_SYMBOL vmlinux 0x391ad6d3 block_read_full_page +EXPORT_SYMBOL vmlinux 0x393329e6 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39503fa8 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x3955cb92 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x395c77be cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x395e0a00 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x39858d34 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x398c6199 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x3995d474 path_nosuid +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39998542 dev_uc_add +EXPORT_SYMBOL vmlinux 0x399d24b2 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x399e58b8 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39ae40cc ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a0e20c0 __pagevec_release +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3e0941 skb_pull +EXPORT_SYMBOL vmlinux 0x3a416dd7 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3a4a9219 bdi_register +EXPORT_SYMBOL vmlinux 0x3a4f8b26 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x3a5f11a5 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x3a7555da tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3afafa1c agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x3b1f06ee mount_nodev +EXPORT_SYMBOL vmlinux 0x3b201620 machine_real_restart +EXPORT_SYMBOL vmlinux 0x3b274ae7 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x3b2c60f7 key_put +EXPORT_SYMBOL vmlinux 0x3b33fa2e generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x3b3e1637 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x3b435374 inet6_offloads +EXPORT_SYMBOL vmlinux 0x3b4abbe0 param_get_charp +EXPORT_SYMBOL vmlinux 0x3b4e34a1 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x3b641bbe dcb_setapp +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b89abc8 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bd45c48 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x3bd6bce4 seq_escape +EXPORT_SYMBOL vmlinux 0x3be2a656 mutex_unlock +EXPORT_SYMBOL vmlinux 0x3bf098f9 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x3c0f51e4 default_llseek +EXPORT_SYMBOL vmlinux 0x3c3e37e7 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c5457e4 kill_pid +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c859f1d down_read +EXPORT_SYMBOL vmlinux 0x3c86d8bf bio_init +EXPORT_SYMBOL vmlinux 0x3c8fe364 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x3c91a4fa netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cb7b28b blk_requeue_request +EXPORT_SYMBOL vmlinux 0x3cb83e23 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf4037f vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x3d040859 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x3d140243 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x3d1d10f0 led_blink_set +EXPORT_SYMBOL vmlinux 0x3d484dfd agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x3d670137 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d8fb75e mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x3d913e6f tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x3d975e7a rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da19c2c neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3dcabe00 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcfd735 security_path_link +EXPORT_SYMBOL vmlinux 0x3dd117c6 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x3ddc3f82 processors +EXPORT_SYMBOL vmlinux 0x3de7aa25 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x3de95451 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e1a39fb bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x3e25b24b xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e348f75 scsi_remove_target +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 0x3e6bd56f bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9a8f57 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x3ebd5bb5 bio_advance +EXPORT_SYMBOL vmlinux 0x3ed8de48 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x3edb98ec generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x3ee3096f blk_alloc_queue_node +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 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f29bdd4 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x3f373d02 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x3f42da5d _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x3f435480 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5cc608 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f731ee5 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x3f9a718c iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x3fafc151 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff890e9 dquot_get_state +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x40309fff scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403b42f3 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406076a3 cdev_add +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 0x409f875d md_check_recovery +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 0x40bf1f46 __dev_get_by_index +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 0x40edb2dc set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x40fef13a set_nlink +EXPORT_SYMBOL vmlinux 0x412917b1 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x412a268e param_ops_bint +EXPORT_SYMBOL vmlinux 0x412b5c89 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x413150a3 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x4138ffcf start_tty +EXPORT_SYMBOL vmlinux 0x41469f0a neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41659b11 kiocb_set_cancel_fn +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 0x418c8373 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x418eb24b pipe_unlock +EXPORT_SYMBOL vmlinux 0x41a5e9e6 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x41a9548e __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x41b2a0fb d_splice_alias +EXPORT_SYMBOL vmlinux 0x41b6cce2 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x41e5b266 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x421105ac current_fs_time +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4236c564 dev_add_offload +EXPORT_SYMBOL vmlinux 0x423ac465 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x42430d90 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424be76b scsi_add_device +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425ef6bf phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x426f959a forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x42955ebe __kernel_write +EXPORT_SYMBOL vmlinux 0x42976230 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a8ef57 seq_path +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42db93c6 generic_make_request +EXPORT_SYMBOL vmlinux 0x42e9b658 ps2_end_command +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4303a554 devm_request_resource +EXPORT_SYMBOL vmlinux 0x433a10c3 vfs_mknod +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43547138 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x4355837f account_page_dirtied +EXPORT_SYMBOL vmlinux 0x4361896a open_check_o_direct +EXPORT_SYMBOL vmlinux 0x436a6c49 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436c495e scsi_scan_target +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43b6b078 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x43cc34f5 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x43d7c46d kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x43e1045d prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x440b3880 pci_disable_device +EXPORT_SYMBOL vmlinux 0x4410f8bf kobject_init +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44385175 skb_pad +EXPORT_SYMBOL vmlinux 0x4441ea2d i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4469d11f crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x44822217 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x448529c5 inet_csk_accept +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 0x44bd60b9 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x44c07f9a replace_mount_options +EXPORT_SYMBOL vmlinux 0x44c3a289 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x44ce6996 blk_peek_request +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44ec181a kernel_listen +EXPORT_SYMBOL vmlinux 0x44f69964 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4504e658 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x4528c83e __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4554db78 register_quota_format +EXPORT_SYMBOL vmlinux 0x4560c583 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45834711 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x45855b9c nf_log_packet +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bb447e pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x45cacf85 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x45ce96ce __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x45e5f296 proc_set_user +EXPORT_SYMBOL vmlinux 0x45ff1fec cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x4619f538 free_netdev +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462d0e84 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x46328105 vga_tryget +EXPORT_SYMBOL vmlinux 0x4639a7a8 dm_io +EXPORT_SYMBOL vmlinux 0x463c9aad poll_freewait +EXPORT_SYMBOL vmlinux 0x463e066f release_firmware +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 0x46673ca0 vme_lm_request +EXPORT_SYMBOL vmlinux 0x466bc0d6 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46c910ab pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x46d4f0eb udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x46e4c4f9 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x46f95a96 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470b7155 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x472842e2 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x472c4a0b migrate_page +EXPORT_SYMBOL vmlinux 0x4735caa7 qdisc_list_del +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 0x47c167dd netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x47c6e57c d_obtain_root +EXPORT_SYMBOL vmlinux 0x47d63997 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x47dd5355 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x47e1d8b5 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x4801e6bf tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x4808e6b9 blk_start_request +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 0x4839535e i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48909bdb skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x4898cbee agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x48a013b4 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bd0589 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x48c98e44 dev_addr_add +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4931d1f5 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x49553957 key_link +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x499fed3e fb_validate_mode +EXPORT_SYMBOL vmlinux 0x49a045d9 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x49a3e971 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x49aff779 inet_select_addr +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49e4d4a0 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x49e647a9 ilookup +EXPORT_SYMBOL vmlinux 0x49f28080 pci_find_bus +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49fd2d83 lro_flush_all +EXPORT_SYMBOL vmlinux 0x4a059b70 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x4a619f83 memcpy +EXPORT_SYMBOL vmlinux 0x4a669091 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x4a7743d9 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x4a8801d9 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x4a9d59f8 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x4aa87d6b ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x4aad9a51 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x4aaf0a9a clone_cred +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4adcba00 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x4ae780dd file_open_root +EXPORT_SYMBOL vmlinux 0x4ae84682 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b11227f tcp_proc_register +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2acc6e __scsi_add_device +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +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 0x4b78c7d0 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x4b97d02f jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd8228d __sock_create +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf280b9 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x4c006611 __inode_permission +EXPORT_SYMBOL vmlinux 0x4c04abcb i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x4c1ae297 register_cdrom +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 0x4c3504df dev_remove_offload +EXPORT_SYMBOL vmlinux 0x4c4c9f82 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x4c5a3bbb tty_lock +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce93d68 sock_wake_async +EXPORT_SYMBOL vmlinux 0x4cea8302 ___preempt_schedule_notrace +EXPORT_SYMBOL vmlinux 0x4d2f3869 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d68d37c vfs_read +EXPORT_SYMBOL vmlinux 0x4d75db41 agp_copy_info +EXPORT_SYMBOL vmlinux 0x4d860737 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x4d87889a sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9d5e04 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x4d9fbc17 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x4da01363 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x4da426c0 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x4dcc5eff copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df0cb73 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfd3b6a jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x4e04f965 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x4e1fc502 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x4e2e27f9 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e36d302 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x4e49cb87 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e96fd8d nf_log_set +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ec670e8 commit_creds +EXPORT_SYMBOL vmlinux 0x4ede74f3 genl_notify +EXPORT_SYMBOL vmlinux 0x4ef643ba netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x4efd3768 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f206b00 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f271200 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x4f27923f iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x4f2aebd5 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f439cfe fput +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f8671fa jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fa57174 simple_rmdir +EXPORT_SYMBOL vmlinux 0x4fc473c0 devm_release_resource +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fff77fb inet6_getname +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50270e93 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x5041f865 netlink_ack +EXPORT_SYMBOL vmlinux 0x50496520 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x504d6399 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5053f901 seq_release_private +EXPORT_SYMBOL vmlinux 0x5060479d tso_start +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5065e8c6 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5079d61f phy_drivers_register +EXPORT_SYMBOL vmlinux 0x5079d8f5 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x50962e6c sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x5096dc44 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x50972e46 led_set_brightness +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50ab035c truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x50ad9930 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50cf6dc4 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x513bb1fd kfree_skb_list +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x517df310 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x51a4035c alloc_disk +EXPORT_SYMBOL vmlinux 0x51a7f418 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51e74ebf forget_cached_acl +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f3669b block_write_full_page +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520491d3 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5223a87c tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x522584ef qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x525fbc98 uart_register_driver +EXPORT_SYMBOL vmlinux 0x526851e2 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x52689c70 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x526eae82 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x5276ae6a ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d2d0f tty_register_device +EXPORT_SYMBOL vmlinux 0x529231f0 register_netdev +EXPORT_SYMBOL vmlinux 0x52974d8e neigh_destroy +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52b443fa is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x52b89c8f elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x52d2983e phy_device_free +EXPORT_SYMBOL vmlinux 0x52f64fde blkdev_fsync +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x531f04db netlink_broadcast_filtered +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 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a44010 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x53a6b6bb devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x53d20604 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x53dd1c02 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x53f760be dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x54024b3a pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x543fa46e __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x5446569f skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x547ba538 dquot_initialize +EXPORT_SYMBOL vmlinux 0x547baba8 d_find_alias +EXPORT_SYMBOL vmlinux 0x5498d5ee filemap_write_and_wait +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 0x54dbf96a __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x550c7271 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x5517a148 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5545a8f3 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x5567b02a bio_map_kern +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568ef25 sock_register +EXPORT_SYMBOL vmlinux 0x558a370b pci_enable_device +EXPORT_SYMBOL vmlinux 0x55c9fd83 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55dfecae dev_err +EXPORT_SYMBOL vmlinux 0x55e79065 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x55f2531d flush_old_exec +EXPORT_SYMBOL vmlinux 0x561782e5 dev_load +EXPORT_SYMBOL vmlinux 0x561edf12 init_task +EXPORT_SYMBOL vmlinux 0x562024e8 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x56242445 set_page_dirty +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 0x5650a87c ipv4_specific +EXPORT_SYMBOL vmlinux 0x5659ded9 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x5680a61c call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x5690b86a scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x56af97fe security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56e6187c init_net +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x572a7062 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5742fee8 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x574827c9 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574c91d0 kmalloc_caches +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 0x577b9184 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57b3b003 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57f104cc dcache_dir_close +EXPORT_SYMBOL vmlinux 0x581e006d blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x58258536 pm860x_bulk_read +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 0x5868bfdc pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x58693f10 seq_open +EXPORT_SYMBOL vmlinux 0x58733f99 kfree_skb +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5889a852 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x58957aca simple_write_begin +EXPORT_SYMBOL vmlinux 0x58a00a89 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x58a06ec6 simple_link +EXPORT_SYMBOL vmlinux 0x58a1c0bd vfs_writef +EXPORT_SYMBOL vmlinux 0x58b190aa blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x58b5fd85 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58e09fae tty_unregister_device +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e80f3a bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x59013233 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x590a633e sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x5916fbeb param_get_int +EXPORT_SYMBOL vmlinux 0x5918f08c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x591ab8f0 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x591d4c37 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x592a7f2d tcf_action_exec +EXPORT_SYMBOL vmlinux 0x5941748e put_filp +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x5948a6c8 touch_atime +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59535062 sg_miter_start +EXPORT_SYMBOL vmlinux 0x5968ea0f kill_fasync +EXPORT_SYMBOL vmlinux 0x5972cc02 __mutex_init +EXPORT_SYMBOL vmlinux 0x597e3515 dentry_open +EXPORT_SYMBOL vmlinux 0x59838d9d dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x598b7e89 get_phy_device +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59c0adae phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x59c80fbc vm_insert_page +EXPORT_SYMBOL vmlinux 0x59ce93c9 bioset_free +EXPORT_SYMBOL vmlinux 0x59df860b page_waitqueue +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a1c99ff ip_do_fragment +EXPORT_SYMBOL vmlinux 0x5a2bacdf cpu_info +EXPORT_SYMBOL vmlinux 0x5a312e4c cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4c900c open_exec +EXPORT_SYMBOL vmlinux 0x5a65ee38 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x5a7a44f6 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a891440 tty_insert_flip_string_flags +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 0x5b1521a2 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b3ca1f2 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x5b417e20 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x5b49f14b blk_sync_queue +EXPORT_SYMBOL vmlinux 0x5b596175 skb_checksum +EXPORT_SYMBOL vmlinux 0x5b608469 sk_stream_error +EXPORT_SYMBOL vmlinux 0x5b6e21e8 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x5b99848d jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x5b9cf017 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x5ba77183 __netif_schedule +EXPORT_SYMBOL vmlinux 0x5bb6f62e blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bd3b33f jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x5bdd5372 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c0f5654 dump_trace +EXPORT_SYMBOL vmlinux 0x5c135486 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x5c1de074 udp_prot +EXPORT_SYMBOL vmlinux 0x5c2f0408 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x5c3ef6e0 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x5c511b8d jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x5c545234 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x5c5fbe4e mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x5c78f167 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x5c794bae genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x5c7b0b1a ip6_frag_match +EXPORT_SYMBOL vmlinux 0x5c7bad91 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x5c86025e tty_port_open +EXPORT_SYMBOL vmlinux 0x5c867045 unregister_nls +EXPORT_SYMBOL vmlinux 0x5c867500 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x5c9b026a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x5ca6b6a9 d_invalidate +EXPORT_SYMBOL vmlinux 0x5cbafe6e security_path_chown +EXPORT_SYMBOL vmlinux 0x5cbd71b0 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x5ce2d200 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0b5e04 sock_no_poll +EXPORT_SYMBOL vmlinux 0x5d25879b vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x5d51b3e5 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d91e8f2 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x5d97530a dev_alloc_name +EXPORT_SYMBOL vmlinux 0x5da48970 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x5da55f97 __break_lease +EXPORT_SYMBOL vmlinux 0x5deaae54 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x5e52ae7c mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x5e84075a phy_init_hw +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edf97f3 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x5ee89280 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x5ee9b239 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x5efe1670 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x5effd84e padata_add_cpu +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f28c727 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x5f30b9c3 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x5f3139fa tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x5f463b76 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x5f4b9d83 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x5f5453e1 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x5f57cc30 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x5f680a71 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x5f6b98cb __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x5f713e46 phy_attach +EXPORT_SYMBOL vmlinux 0x5faba175 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fd2c1d6 param_set_ulong +EXPORT_SYMBOL vmlinux 0x5fd893e1 nobh_write_end +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5ffbb59a pagecache_write_end +EXPORT_SYMBOL vmlinux 0x6005b2c4 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6009d1bf pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x601aabd7 security_path_symlink +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +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 0x60403d03 tcp_poll +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x604546cd get_io_context +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607eb08e unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x608cdd8f try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a08b54 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x60a11749 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60cf85d2 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61634764 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x6179c4d2 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x617dd193 ata_port_printk +EXPORT_SYMBOL vmlinux 0x6186e301 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x61950338 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x61975e47 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c84824 sk_prot_clear_portaddr_nulls +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 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 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627b36cb mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a66ba6 block_truncate_page +EXPORT_SYMBOL vmlinux 0x62a74862 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x62bd81cb build_skb +EXPORT_SYMBOL vmlinux 0x62c394a8 dma_set_mask +EXPORT_SYMBOL vmlinux 0x62e23485 module_layout +EXPORT_SYMBOL vmlinux 0x62f2fd16 kdb_current_task +EXPORT_SYMBOL vmlinux 0x6301afdb sock_i_ino +EXPORT_SYMBOL vmlinux 0x630413cf unload_nls +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631cfd88 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x633379e3 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x6339247e insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x634dc02c pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x6368369d xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x63683a63 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x63721b79 tcp_prot +EXPORT_SYMBOL vmlinux 0x637dbba1 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a1ec92 send_sig +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63ae0138 intel_gtt_get +EXPORT_SYMBOL vmlinux 0x63aeff4b dma_supported +EXPORT_SYMBOL vmlinux 0x63c13e70 _raw_write_unlock +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d5fb47 ihold +EXPORT_SYMBOL vmlinux 0x63dde3cf tcp_seq_open +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f4dabf vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x63f4fe62 module_refcount +EXPORT_SYMBOL vmlinux 0x63f8da43 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640ce630 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641c9d9c scsi_block_requests +EXPORT_SYMBOL vmlinux 0x64362872 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x643d4e34 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x6444c885 keyring_clear +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x644b1107 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x645930fb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x645e9ca2 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64b7691c kern_path +EXPORT_SYMBOL vmlinux 0x64c073d7 seq_dentry +EXPORT_SYMBOL vmlinux 0x64cc9404 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x64e753f1 pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64f454fe netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x65010ffe lookup_bdev +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65171983 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652661ae __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x65342523 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x658aef3a inode_permission +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65b01c24 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x65b55729 udp_disconnect +EXPORT_SYMBOL vmlinux 0x65baa4b9 elevator_alloc +EXPORT_SYMBOL vmlinux 0x65bf87ae dev_change_carrier +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e49b55 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x65e5d941 from_kgid +EXPORT_SYMBOL vmlinux 0x65eeaf0d tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f661fe user_revoke +EXPORT_SYMBOL vmlinux 0x661ec4c7 elevator_exit +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x66704f34 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x667a3d48 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x667e4e80 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x669bf80b proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x66a11e3f posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66b0e35f nf_setsockopt +EXPORT_SYMBOL vmlinux 0x66b28957 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x66ce3071 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x66d3f9fb kernel_bind +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66e71da3 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x66e91f23 __bforget +EXPORT_SYMBOL vmlinux 0x66ee8ffd mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x671a109c vfs_link +EXPORT_SYMBOL vmlinux 0x671d4241 nf_reinject +EXPORT_SYMBOL vmlinux 0x6722f3bc _raw_write_lock +EXPORT_SYMBOL vmlinux 0x6728e507 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x674cdb05 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x67557725 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x677f7328 __ps2_command +EXPORT_SYMBOL vmlinux 0x67ab7bb3 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67bda465 backlight_device_register +EXPORT_SYMBOL vmlinux 0x67c79716 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x67cc9cbd check_disk_change +EXPORT_SYMBOL vmlinux 0x67d0ebb7 lookup_one_len +EXPORT_SYMBOL vmlinux 0x67df14db xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x67e66568 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x67ee47d6 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x67f98a1f single_release +EXPORT_SYMBOL vmlinux 0x67ff774d module_put +EXPORT_SYMBOL vmlinux 0x6801093f ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x6815dd9e eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x68264dc9 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x6828a41f genphy_suspend +EXPORT_SYMBOL vmlinux 0x685733fe padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x685c0d67 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687f6f94 inet_ioctl +EXPORT_SYMBOL vmlinux 0x68b6af88 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68cd443b blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x68e963c6 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x68f1992f blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x68fb2765 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x68fc1851 dump_emit +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x69211a7c bio_copy_kern +EXPORT_SYMBOL vmlinux 0x6946c0fe eth_type_trans +EXPORT_SYMBOL vmlinux 0x694ab004 amd_northbridges +EXPORT_SYMBOL vmlinux 0x6963b17b pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697dd181 kmap_atomic +EXPORT_SYMBOL vmlinux 0x6984979f i8042_remove_filter +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 0x69c34c2e tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x69c9dd4d tso_build_data +EXPORT_SYMBOL vmlinux 0x69ef2524 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x69f2e8ad blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a2bbd9f sock_sendmsg +EXPORT_SYMBOL vmlinux 0x6a2dd7bf generic_permission +EXPORT_SYMBOL vmlinux 0x6a47cd6d pnp_is_active +EXPORT_SYMBOL vmlinux 0x6a4c18c1 dst_alloc +EXPORT_SYMBOL vmlinux 0x6a5c44e5 xfrm_policy_hash_rebuild +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 0x6a798472 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x6a9ba34e devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x6a9d11c8 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x6aa1bd3e tcf_exts_change +EXPORT_SYMBOL vmlinux 0x6aa2fab0 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x6aa68496 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x6ab23d0d vga_put +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6adb7e3a inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeb6aba get_user_pages +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b077d36 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b43e052 icmp_send +EXPORT_SYMBOL vmlinux 0x6b475704 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x6b4ad48a from_kprojid +EXPORT_SYMBOL vmlinux 0x6b5a3076 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x6b65066b tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b79e298 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x6b8c6460 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x6b992638 cont_write_begin +EXPORT_SYMBOL vmlinux 0x6ba59a4b phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bca0b2b skb_copy_expand +EXPORT_SYMBOL vmlinux 0x6bcdafbd iov_iter_advance +EXPORT_SYMBOL vmlinux 0x6bd867b7 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c35c2f2 vme_irq_request +EXPORT_SYMBOL vmlinux 0x6c375049 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x6c3978cb acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x6c469375 fsync_bdev +EXPORT_SYMBOL vmlinux 0x6c50bdc9 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c62eccd xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x6c65c609 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c875fbc swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x6ca53e8f xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cc2b1d8 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x6cd281eb ata_link_printk +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ced7c13 unregister_console +EXPORT_SYMBOL vmlinux 0x6d025c17 ps2_command +EXPORT_SYMBOL vmlinux 0x6d0c5c8b inet_del_protocol +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 0x6d4d79d1 vme_bus_type +EXPORT_SYMBOL vmlinux 0x6d5beeca serio_open +EXPORT_SYMBOL vmlinux 0x6d7c5ea6 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x6dad37ca redraw_screen +EXPORT_SYMBOL vmlinux 0x6db1663c tty_free_termios +EXPORT_SYMBOL vmlinux 0x6dba3597 key_revoke +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc50edc kobject_add +EXPORT_SYMBOL vmlinux 0x6dc663c0 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6dccf411 path_get +EXPORT_SYMBOL vmlinux 0x6ddf7ffd mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x6debc584 keyring_search +EXPORT_SYMBOL vmlinux 0x6dee091e generic_read_dir +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df97b83 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x6dfb719c scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e992a99 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea10d11 vfs_unlink +EXPORT_SYMBOL vmlinux 0x6ea4a08c alloc_fddidev +EXPORT_SYMBOL vmlinux 0x6eb87ab0 inet_sendpage +EXPORT_SYMBOL vmlinux 0x6ec47454 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x6ed03287 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x6ee6555a fget_raw +EXPORT_SYMBOL vmlinux 0x6ef5e7b7 udp_seq_open +EXPORT_SYMBOL vmlinux 0x6f0c381d md_error +EXPORT_SYMBOL vmlinux 0x6f1d3877 finish_open +EXPORT_SYMBOL vmlinux 0x6f1d6d08 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f36bf42 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x6f4698b3 irq_set_chip +EXPORT_SYMBOL vmlinux 0x6f51862f inet_add_offload +EXPORT_SYMBOL vmlinux 0x6f54dccf security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f58769a dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x6f5f8901 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x6f6a315e blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x6f758de2 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x6f7a12b7 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x6f7d9838 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f94990b file_update_time +EXPORT_SYMBOL vmlinux 0x6fa377c2 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x6fae3667 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x6fb0c751 inode_init_always +EXPORT_SYMBOL vmlinux 0x6fb84bed __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd67348 sk_net_capable +EXPORT_SYMBOL vmlinux 0x6fd75ce5 dcb_getapp +EXPORT_SYMBOL vmlinux 0x6fdf0a21 posix_lock_file +EXPORT_SYMBOL vmlinux 0x6fe13891 tso_count_descs +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6fed327a devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x6ff363b3 set_security_override +EXPORT_SYMBOL vmlinux 0x700351cd mmc_request_done +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x702829fb scsi_device_put +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x70345e82 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x70433fd0 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x70461a2f get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x704ec065 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7057b86d vme_register_bridge +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x706f526a stop_tty +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 0x70b7ed5b blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x70cdb290 bitmap_close_sync +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 0x70fac9c2 set_create_files_as +EXPORT_SYMBOL vmlinux 0x70fd12a9 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x7104e9fb pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x712274a6 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x713191c4 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x713dd3fc netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x719c0ddf skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x71a144d7 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b14f36 framebuffer_release +EXPORT_SYMBOL vmlinux 0x71dca010 param_set_bint +EXPORT_SYMBOL vmlinux 0x71edced8 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72297035 key_invalidate +EXPORT_SYMBOL vmlinux 0x723b22cc scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x72618070 pci_get_class +EXPORT_SYMBOL vmlinux 0x726d383d __skb_checksum +EXPORT_SYMBOL vmlinux 0x7273b217 simple_setattr +EXPORT_SYMBOL vmlinux 0x728ffe1f pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x72902285 bio_add_page +EXPORT_SYMBOL vmlinux 0x72998b0c phy_attach_direct +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72c55be6 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7308dbcd __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7330696f pci_choose_state +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x73a1c241 inet6_release +EXPORT_SYMBOL vmlinux 0x73a9e0b7 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x73b18849 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x73cbbb29 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73dd93f8 do_SAK +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73f3b02b blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x73fb84f2 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x7405a047 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x740c3eb5 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x7421304d param_ops_short +EXPORT_SYMBOL vmlinux 0x7425353b unlock_buffer +EXPORT_SYMBOL vmlinux 0x742d13e5 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x74617bd1 tty_write_room +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748d3fd9 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x74989db2 __alloc_skb +EXPORT_SYMBOL vmlinux 0x749993a6 dev_warn +EXPORT_SYMBOL vmlinux 0x74a436c4 mem_section +EXPORT_SYMBOL vmlinux 0x74a82fe7 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x74adb169 dev_set_group +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 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750f6195 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x75183ae4 gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x75280656 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7535d0fa submit_bio_wait +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x75410290 d_add_ci +EXPORT_SYMBOL vmlinux 0x754332e8 kernel_connect +EXPORT_SYMBOL vmlinux 0x7553a9e4 nonseekable_open +EXPORT_SYMBOL vmlinux 0x7557053c mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x757e8d93 phy_stop +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75a9bfea tcp_enter_cwr +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 0x75d07a07 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x75d1e1b4 bio_chain +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75f4e1c8 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x76009524 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760be697 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x761a2b95 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x761fab0c neigh_app_ns +EXPORT_SYMBOL vmlinux 0x7623ada4 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x766c7610 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x766d9b21 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x7686e623 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x768bdf61 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76a80b90 pci_set_master +EXPORT_SYMBOL vmlinux 0x76ae6c06 inet_release +EXPORT_SYMBOL vmlinux 0x76b87a8f jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d71faf dma_sync_wait +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76ee7cdb simple_dname +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x770d6e00 dm_put_device +EXPORT_SYMBOL vmlinux 0x771b8ec4 queue_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7736c210 bdi_init +EXPORT_SYMBOL vmlinux 0x7744a905 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x7747454d vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x774ab2b9 input_grab_device +EXPORT_SYMBOL vmlinux 0x7752cc2f mount_bdev +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bb5697 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77ceb278 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x77d41dbd inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x77dfd067 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x78268f20 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x7832aab7 generic_removexattr +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x78506022 ppp_input_error +EXPORT_SYMBOL vmlinux 0x785cc855 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x786cc1a9 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789cf1aa simple_transaction_get +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78c1ea65 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78ed0feb crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x791621e5 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x792bb77f __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x793532e7 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x79389df5 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x7946eb16 sock_no_connect +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79a5225a md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c8d714 read_dev_sector +EXPORT_SYMBOL vmlinux 0x79d14646 input_flush_device +EXPORT_SYMBOL vmlinux 0x79d97450 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x79dc7fed scm_detach_fds +EXPORT_SYMBOL vmlinux 0x79ed7ae4 free_user_ns +EXPORT_SYMBOL vmlinux 0x7a00d5da scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x7a09d36c user_path_create +EXPORT_SYMBOL vmlinux 0x7a221b24 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2ae61f neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a2c242e rwsem_wake +EXPORT_SYMBOL vmlinux 0x7a3033ac sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x7a3ae32e _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4c2692 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x7a5c808f netdev_alert +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a885893 __bread_gfp +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 0x7aae6e6d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x7ab52f56 unregister_netdev +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abb516f sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae0ca03 napi_disable +EXPORT_SYMBOL vmlinux 0x7ae54d0e blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x7aeb95a9 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af6a8e5 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b02108b unregister_md_personality +EXPORT_SYMBOL vmlinux 0x7b1296b4 kmap_atomic_to_page +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b1d3dc7 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b3ffcee rt6_lookup +EXPORT_SYMBOL vmlinux 0x7b4ca435 netlink_unicast +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5fde27 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x7b791db7 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x7b90cf02 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x7b9ea1bb mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bd5ddcf zero_fill_bio +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c31fe3f generic_write_checks +EXPORT_SYMBOL vmlinux 0x7c368388 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4a1d82 dma_ops +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c665244 __kfree_skb +EXPORT_SYMBOL vmlinux 0x7c85f4d1 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x7c89903b dev_printk_emit +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cabf46a no_llseek +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cccc8a1 vc_resize +EXPORT_SYMBOL vmlinux 0x7cd86e1d __init_rwsem +EXPORT_SYMBOL vmlinux 0x7cd957b0 ll_rw_block +EXPORT_SYMBOL vmlinux 0x7cddb152 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cef3e3a iterate_fd +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7d0c6106 netif_rx +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d80607f kunmap_high +EXPORT_SYMBOL vmlinux 0x7d8268ce copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7dba3c12 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dd54258 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x7dde4a99 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x7de9da6f PDE_DATA +EXPORT_SYMBOL vmlinux 0x7dea0228 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e125b62 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x7e581912 first_ec +EXPORT_SYMBOL vmlinux 0x7e7b2645 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ecce2d7 tcp_get_cookie_sock +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 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f26ed1a pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x7f495ec2 phy_init_eee +EXPORT_SYMBOL vmlinux 0x7f4cb684 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x7f621d03 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f807005 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x7f81fd01 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x7f9d9749 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x7fd9ad42 i2c_release_client +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x80079fa7 cdev_del +EXPORT_SYMBOL vmlinux 0x8012353b generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x8016c810 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x8025ad5d pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x802a4a25 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x80385091 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x804de7d6 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x80588820 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x80769f96 bio_put +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x80ba0984 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d1e2b2 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9ca85 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0x80dbfc66 security_path_chmod +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x80fcf75e phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x80fd53ae phy_connect +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +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 0x8164c348 mutex_trylock +EXPORT_SYMBOL vmlinux 0x8175eb1e uart_resume_port +EXPORT_SYMBOL vmlinux 0x817b7a6c skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x8198fd2a irq_to_desc +EXPORT_SYMBOL vmlinux 0x819bd6a0 brioctl_set +EXPORT_SYMBOL vmlinux 0x81c5fbe0 write_cache_pages +EXPORT_SYMBOL vmlinux 0x81ce2f41 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81dc35d5 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x81e50a56 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81fbf695 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x8204c0c1 eth_header_parse +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x821d89e3 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x82335be8 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x825d8c04 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x8264b4ab kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x826db018 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x826f5434 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x82a853fd seq_vprintf +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c6b063 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x82e03d92 udp_poll +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x8326556f ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x8329e6f0 memset +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x835b16a2 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x836f7cad napi_complete_done +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x837baa2d tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x8382e59a acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8395e98f scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x83a2f614 __sb_end_write +EXPORT_SYMBOL vmlinux 0x83ac2f23 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b3716d ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d81f1e vc_cons +EXPORT_SYMBOL vmlinux 0x83e88a88 bitmap_start_sync +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 0x840981a1 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x841688a7 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x84196b7d follow_down +EXPORT_SYMBOL vmlinux 0x8445b22d textsearch_prepare +EXPORT_SYMBOL vmlinux 0x844f57d5 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x8473335f sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x847c65b0 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x84832f52 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x84905e81 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x84998676 dev_mc_del +EXPORT_SYMBOL vmlinux 0x84abc6c4 d_move +EXPORT_SYMBOL vmlinux 0x84b6d634 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8522eb3c mntput +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x852dec63 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x85440799 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x854c386c t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x8562eaad dquot_commit +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856c86c5 blk_put_queue +EXPORT_SYMBOL vmlinux 0x85721e47 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x8573e043 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x857aedd6 inet_addr_type +EXPORT_SYMBOL vmlinux 0x859b96ec vfs_readf +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85cff61a install_exec_creds +EXPORT_SYMBOL vmlinux 0x85dbf01f tcp_conn_request +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x860aabd4 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x863ded80 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x864127e2 in6_dev_finish_destroy +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 0x8675b9f9 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x868356c1 uart_match_port +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86b1ad0f kmap +EXPORT_SYMBOL vmlinux 0x86cf8f44 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x86f10315 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x871354cc nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872ac4b7 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x87355758 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x876882bb genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x877db61f phy_detach +EXPORT_SYMBOL vmlinux 0x87841b45 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x8786de40 tcp_rcv_established +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 0x879e301c serio_reconnect +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87e989db mmc_register_driver +EXPORT_SYMBOL vmlinux 0x87f89ce0 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x8800cbba _raw_read_unlock_irq +EXPORT_SYMBOL vmlinux 0x880f137d __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x88119eeb blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x882ba254 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x882f9e41 skb_copy +EXPORT_SYMBOL vmlinux 0x883ffb19 padata_stop +EXPORT_SYMBOL vmlinux 0x8848319c bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x88508ed1 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x88527656 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x88924e4f ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x889bd1c0 unlock_rename +EXPORT_SYMBOL vmlinux 0x88a72b57 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x88c6b4dd input_get_keycode +EXPORT_SYMBOL vmlinux 0x88f73de7 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x88fb50bc skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x890d1ee4 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x891bda84 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x894ecb19 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8959582c inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x896b2be0 pci_find_capability +EXPORT_SYMBOL vmlinux 0x8970212b fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x8978b9d8 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x899ac780 input_set_capability +EXPORT_SYMBOL vmlinux 0x89a9d2f7 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b3b5ee xfrm_register_type +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89f67bfe xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a463fc0 set_user_nice +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a501b70 load_nls_default +EXPORT_SYMBOL vmlinux 0x8a516949 set_cached_acl +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5b5fd0 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a749668 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x8a75a2e7 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8a7ceb4d netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7f67eb sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a95d934 sock_no_bind +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9e760e neigh_seq_next +EXPORT_SYMBOL vmlinux 0x8aa95031 noop_qdisc +EXPORT_SYMBOL vmlinux 0x8aafd158 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0x8abb979d d_set_d_op +EXPORT_SYMBOL vmlinux 0x8ac5a695 skb_tx_error +EXPORT_SYMBOL vmlinux 0x8aef6079 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x8af315cf remove_proc_entry +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b417d02 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b4a80a2 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x8b57b986 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b63f285 skb_seq_read +EXPORT_SYMBOL vmlinux 0x8b7e3318 generic_writepages +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b823e5f dm_register_target +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8bb299ac pnp_device_detach +EXPORT_SYMBOL vmlinux 0x8bbe831d textsearch_destroy +EXPORT_SYMBOL vmlinux 0x8be51685 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x8c124b7c md_done_sync +EXPORT_SYMBOL vmlinux 0x8c12ea24 fs_bio_set +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c74608e pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x8c7dcddf write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x8c8e5e64 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x8c9bb007 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd1236d padata_start +EXPORT_SYMBOL vmlinux 0x8cd5a8aa blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8d1c25d6 phy_print_status +EXPORT_SYMBOL vmlinux 0x8d3e2259 netif_device_attach +EXPORT_SYMBOL vmlinux 0x8d49cc76 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x8d53476d pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5e13f1 blk_get_request +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 0x8d9d7037 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8def20cf eth_validate_addr +EXPORT_SYMBOL vmlinux 0x8df007fe __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x8df07c51 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x8df1b4e5 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e082688 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e134c31 dev_uc_del +EXPORT_SYMBOL vmlinux 0x8e313428 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x8e364aa7 dev_get_stats +EXPORT_SYMBOL vmlinux 0x8e3fb278 nf_log_register +EXPORT_SYMBOL vmlinux 0x8e5e5233 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x8e7c6592 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x8e83e141 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x8e8755c3 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e96939e bio_unmap_user +EXPORT_SYMBOL vmlinux 0x8ea9e47d kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb7f3b0 param_array_ops +EXPORT_SYMBOL vmlinux 0x8ecdbbca inc_nlink +EXPORT_SYMBOL vmlinux 0x8ed469a1 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x8f15d349 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x8f224565 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f289fdd __ht_create_irq +EXPORT_SYMBOL vmlinux 0x8f41bdcd bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x8f47e5ab phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x8f4f5e7c bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x8f5c6137 copy_from_iter +EXPORT_SYMBOL vmlinux 0x8f649f74 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x8f652b53 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x8f81a2f9 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa354f7 make_bad_inode +EXPORT_SYMBOL vmlinux 0x8fbf83a2 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x8fc4af17 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x8fe69247 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x8fed2186 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904c72f8 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x90802803 set_bh_page +EXPORT_SYMBOL vmlinux 0x909a9c3f inet_sendmsg +EXPORT_SYMBOL vmlinux 0x90a295c0 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x90a7230c __seq_open_private +EXPORT_SYMBOL vmlinux 0x90bf8ff3 mpage_writepage +EXPORT_SYMBOL vmlinux 0x90c1d44a pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90ce0e53 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x90e412ab seq_file_path +EXPORT_SYMBOL vmlinux 0x90fba98b reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x90ff924c add_disk +EXPORT_SYMBOL vmlinux 0x91008a54 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x910ac66a padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914f887d swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x91569c96 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9186c8b8 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x9193b558 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x919d8f54 register_md_personality +EXPORT_SYMBOL vmlinux 0x91bc24ba iget_locked +EXPORT_SYMBOL vmlinux 0x91ff0fc4 mutex_lock +EXPORT_SYMBOL vmlinux 0x9208e0d6 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x9218ba58 set_pages_uc +EXPORT_SYMBOL vmlinux 0x92220d4d netdev_emerg +EXPORT_SYMBOL vmlinux 0x9226a425 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x922ac7b1 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92650a84 dquot_operations +EXPORT_SYMBOL vmlinux 0x927cffee icmpv6_send +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x928fbb61 tty_check_change +EXPORT_SYMBOL vmlinux 0x929f0b55 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b22158 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x92b8c897 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x92c8f399 input_inject_event +EXPORT_SYMBOL vmlinux 0x92e3c06a block_commit_write +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9301e193 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x93034eb7 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9318755d blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x935142f0 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x9365358c sock_wmalloc +EXPORT_SYMBOL vmlinux 0x936f26b7 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937f0f33 __dst_free +EXPORT_SYMBOL vmlinux 0x938689ac deactivate_super +EXPORT_SYMBOL vmlinux 0x938a2f3f blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x93972896 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x93ac4181 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x93aecbd5 bio_endio +EXPORT_SYMBOL vmlinux 0x93af1de8 release_pages +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93cb769b input_free_device +EXPORT_SYMBOL vmlinux 0x93e2ff87 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x93e3c723 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x93ea6d1c param_ops_uint +EXPORT_SYMBOL vmlinux 0x93fad50f fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x9408edc8 vfs_getattr +EXPORT_SYMBOL vmlinux 0x94097c98 registered_fb +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x941de321 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x9446fb6b sk_common_release +EXPORT_SYMBOL vmlinux 0x94597599 prepare_binprm +EXPORT_SYMBOL vmlinux 0x947d0919 devm_iounmap +EXPORT_SYMBOL vmlinux 0x948b44ac mmc_release_host +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a137bb truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x94a43d33 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94f3d904 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x94f44a95 bdget +EXPORT_SYMBOL vmlinux 0x95062f59 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x9518d6d9 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x9531ecba __nlmsg_put +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x953be0fd __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95657eef simple_release_fs +EXPORT_SYMBOL vmlinux 0x95715fc7 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x957b13c5 sk_alloc +EXPORT_SYMBOL vmlinux 0x9585d947 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x958d79a1 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x95b70e74 __vfs_write +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95c84141 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x95ea34a1 genphy_resume +EXPORT_SYMBOL vmlinux 0x960a9ac4 get_gendisk +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x9617f650 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x96280649 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96577450 set_anon_super +EXPORT_SYMBOL vmlinux 0x96579e40 read_cache_pages +EXPORT_SYMBOL vmlinux 0x9670204f __quota_error +EXPORT_SYMBOL vmlinux 0x9686f1d4 kernel_write +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x969cb139 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x969cdfce gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x96a3d28e pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x96a619d9 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x96b0ce99 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x96b41444 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x96b5bfe3 inet6_bind +EXPORT_SYMBOL vmlinux 0x96bcb187 __frontswap_test +EXPORT_SYMBOL vmlinux 0x96cbe0f4 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d28d6e gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x96db9703 eisa_driver_register +EXPORT_SYMBOL vmlinux 0x970a8e22 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x971a9c17 mmc_get_card +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975b64e7 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97dcd6d9 eth_change_mtu +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 0x982122a6 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x98273527 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x986d3d62 have_submounts +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 0x98a14a6c __breadahead +EXPORT_SYMBOL vmlinux 0x98ba5563 sock_efree +EXPORT_SYMBOL vmlinux 0x98d454ee blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x98e5ff52 read_code +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98f56e16 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x98f94aff pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x99233c32 cpu_core_map +EXPORT_SYMBOL vmlinux 0x9927329a i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x9929ae12 ata_dev_printk +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 0x99854a00 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a14e6c insert_inode_locked +EXPORT_SYMBOL vmlinux 0x99a420f1 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x99b2206b call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x99b5da1b inode_init_once +EXPORT_SYMBOL vmlinux 0x99bfc84f ether_setup +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x9a03abe6 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3345f8 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x9a371d62 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a47db40 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a6c5cee drop_super +EXPORT_SYMBOL vmlinux 0x9acadd58 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9af70d95 try_module_get +EXPORT_SYMBOL vmlinux 0x9b3139b1 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b5fb127 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b7aecdf thaw_super +EXPORT_SYMBOL vmlinux 0x9b8b47ee xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x9b917ec5 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba231c8 d_make_root +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba881ff agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc29fbd blk_finish_request +EXPORT_SYMBOL vmlinux 0x9bd0c6cc filp_open +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9befa13e cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x9bf54b25 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x9c19a0b3 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5a510b input_allocate_device +EXPORT_SYMBOL vmlinux 0x9c707465 follow_up +EXPORT_SYMBOL vmlinux 0x9c727596 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x9c77fd44 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x9ca90d4d netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cbc1a0d pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x9cc96523 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x9ce169af neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9cf69d5b kern_unmount +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d452b85 bdput +EXPORT_SYMBOL vmlinux 0x9d71d605 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x9d8a9784 freeze_super +EXPORT_SYMBOL vmlinux 0x9da96f4f abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x9dc00309 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x9dc9d9ac devm_ioport_map +EXPORT_SYMBOL vmlinux 0x9dd09107 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x9de2a622 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x9de67e83 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x9def2c58 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x9df8ace7 phy_resume +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2ffb94 dev_set_promiscuity +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 0x9e543af2 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x9e5d4135 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x9e5ea993 param_set_charp +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9c03e0 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x9ea0c91f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9eaf1c99 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ebdd82b page_put_link +EXPORT_SYMBOL vmlinux 0x9ec42b3d sync_inode +EXPORT_SYMBOL vmlinux 0x9ed96849 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x9ee27d2c udp_proc_register +EXPORT_SYMBOL vmlinux 0x9ef48a8d security_d_instantiate +EXPORT_SYMBOL vmlinux 0x9efd9d21 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x9f17675e mdiobus_scan +EXPORT_SYMBOL vmlinux 0x9f1ca530 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f484f08 console_stop +EXPORT_SYMBOL vmlinux 0x9f48b481 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x9f6d40dc xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x9f74c4d5 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x9f89c346 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb24c32 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe21e29 __put_cred +EXPORT_SYMBOL vmlinux 0x9fea0d39 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x9ff7098d pci_scan_slot +EXPORT_SYMBOL vmlinux 0x9ff91b63 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0095fc6 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa00b61b6 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xa0243a4d uart_write_wakeup +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 0xa052321f i2c_smbus_read_byte +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 0xa08ec40d blk_fetch_request +EXPORT_SYMBOL vmlinux 0xa0982156 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c008aa rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f63d8b scsi_register_interface +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10f6019 __lock_buffer +EXPORT_SYMBOL vmlinux 0xa11a0344 security_path_mknod +EXPORT_SYMBOL vmlinux 0xa11bc77d ata_std_end_eh +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 0xa15075df sget +EXPORT_SYMBOL vmlinux 0xa15c1bb1 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xa168e111 inet_del_offload +EXPORT_SYMBOL vmlinux 0xa183ea51 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xa190f152 dput +EXPORT_SYMBOL vmlinux 0xa1995110 d_tmpfile +EXPORT_SYMBOL vmlinux 0xa19fae36 dev_open +EXPORT_SYMBOL vmlinux 0xa1ac84c9 genphy_config_init +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c77286 inode_set_flags +EXPORT_SYMBOL vmlinux 0xa1ff30a2 flow_cache_fini +EXPORT_SYMBOL vmlinux 0xa206ea62 down_write +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa22da84c pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xa22ef8c4 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xa2329576 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xa238bde1 nf_afinfo +EXPORT_SYMBOL vmlinux 0xa2462849 xfrm_state_check_expire +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 0xa28503e6 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xa294098c pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xa299025f inode_init_owner +EXPORT_SYMBOL vmlinux 0xa2a1fba3 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xa2b404c4 pci_release_region +EXPORT_SYMBOL vmlinux 0xa2bd5f87 netlink_set_err +EXPORT_SYMBOL vmlinux 0xa2c4e161 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xa2c58a93 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xa2e2a0c2 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xa2e4f5a5 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa32a2929 pci_clear_master +EXPORT_SYMBOL vmlinux 0xa333a1f6 prepare_creds +EXPORT_SYMBOL vmlinux 0xa3438764 dma_pool_create +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa355f9ec elv_add_request +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa383b929 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xa39627e7 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xa3ab2c27 get_agp_version +EXPORT_SYMBOL vmlinux 0xa3dcbfd3 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xa3e23493 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xa416a17a km_policy_notify +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa471dd3a rtnl_notify +EXPORT_SYMBOL vmlinux 0xa47b9451 param_set_uint +EXPORT_SYMBOL vmlinux 0xa481957c search_binary_handler +EXPORT_SYMBOL vmlinux 0xa4a84a9e pci_select_bars +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bb6b68 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e4cbc5 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xa4e867e4 noop_fsync +EXPORT_SYMBOL vmlinux 0xa4f67ac1 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa52b3b01 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa52dfc8f devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5629f5a fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xa56dfebd fasync_helper +EXPORT_SYMBOL vmlinux 0xa576660b __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xa57a3e7e nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xa5829c31 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xa5919a80 vme_slot_num +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5abcbad blk_init_tags +EXPORT_SYMBOL vmlinux 0xa5dc2d4b mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xa5f208ac sock_init_data +EXPORT_SYMBOL vmlinux 0xa60374e7 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xa61cc085 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xa626b2ff ip_getsockopt +EXPORT_SYMBOL vmlinux 0xa62d9b7e jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa64a4c8a tty_kref_put +EXPORT_SYMBOL vmlinux 0xa65c11f4 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xa671f338 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa685e591 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6b10997 pci_bus_put +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6ce936e vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0xa6d5d8e0 register_gifconf +EXPORT_SYMBOL vmlinux 0xa6d69477 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xa6d88650 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xa6e837be __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70b042d sock_wfree +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73c049c xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xa754f9fa pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xa75ada52 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xa77406b6 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xa779dca0 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xa784a6bc inet_getname +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa7a7eb9a mmc_erase +EXPORT_SYMBOL vmlinux 0xa7b1bd6e dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xa7b5eccc remove_arg_zero +EXPORT_SYMBOL vmlinux 0xa7bb00e4 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xa7bdc4c9 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xa7c4685e sg_miter_next +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7db6c0c ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xa7de762e proc_remove +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8354e34 fb_pan_display +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84b0c6e __vfs_read +EXPORT_SYMBOL vmlinux 0xa8560fef loop_backing_file +EXPORT_SYMBOL vmlinux 0xa86ec25e key_payload_reserve +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa89ba098 simple_follow_link +EXPORT_SYMBOL vmlinux 0xa89db329 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xa89e820d d_rehash +EXPORT_SYMBOL vmlinux 0xa8a7294a xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xa8b65dfd would_dump +EXPORT_SYMBOL vmlinux 0xa8f0964b posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa900063c scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xa90d721c agp_free_memory +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa923b1db vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xa9404ee6 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xa949a56c sock_create_lite +EXPORT_SYMBOL vmlinux 0xa95d0f85 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa989cab9 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xa98be30e padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xa99590c1 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xa999078e flush_signals +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9de82da xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xa9f7077c devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xa9fcb255 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xa9fcca54 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xaa26e41f _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xaa3c0641 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xaa52818f inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa69abee igrab +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa731ef5 __destroy_inode +EXPORT_SYMBOL vmlinux 0xaa786815 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaab0f2ca tty_set_operations +EXPORT_SYMBOL vmlinux 0xaab691b7 input_mt_drop_unused +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 0xaaf1e176 devm_free_irq +EXPORT_SYMBOL vmlinux 0xaafceb0b sock_create_kern +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab01ab0b blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xab21aebe scsi_scan_host +EXPORT_SYMBOL vmlinux 0xab468365 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab5ba481 dev_loopback_xmit +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 0xab6ddf9b twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xab6efb29 blk_complete_request +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab891e55 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabb1e2c5 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xabbeaf06 __module_get +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 0xac11828f jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1f6798 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xac2db6e9 isapnp_protocol +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac723c6f sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xaca3d1b9 nf_register_hook +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccea9e2 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdec40d passthru_features_check +EXPORT_SYMBOL vmlinux 0xacf022ef input_unregister_device +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacfdd34a phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad374182 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xad38b409 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xad505d42 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad95a609 skb_put +EXPORT_SYMBOL vmlinux 0xad9ddcc6 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xadb3f149 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xadb5afae vfs_statfs +EXPORT_SYMBOL vmlinux 0xaded5df7 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae13f70b __get_user_pages +EXPORT_SYMBOL vmlinux 0xae15996e blk_rq_init +EXPORT_SYMBOL vmlinux 0xae62973e input_release_device +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae7363eb arp_send +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae81a515 mdiobus_read +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae86bd22 copy_to_iter +EXPORT_SYMBOL vmlinux 0xaea69a99 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb9ca60 wake_up_process +EXPORT_SYMBOL vmlinux 0xaebe807c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed0a432 set_groups +EXPORT_SYMBOL vmlinux 0xaed3037f inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xaeded289 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xaee66fe1 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xaef09eb1 vmap +EXPORT_SYMBOL vmlinux 0xaf1c52bb vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xaf216317 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xaf306bbb serio_interrupt +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf53ce52 unregister_key_type +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf6b6797 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xaf6f8307 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xaf7d948f simple_getattr +EXPORT_SYMBOL vmlinux 0xaf7de57a i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xaf963de6 poll_initwait +EXPORT_SYMBOL vmlinux 0xaf99240d pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xaf9b7948 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xafae56ec blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xafb349d0 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0xafdfd814 napi_get_frags +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 0xb0443286 should_remove_suid +EXPORT_SYMBOL vmlinux 0xb0445900 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07b144a tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xb08df5f6 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xb08f5fee bd_set_size +EXPORT_SYMBOL vmlinux 0xb09e9295 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b6cbf3 cad_pid +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e68684 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xb0e72d5d input_close_device +EXPORT_SYMBOL vmlinux 0xb0e982d0 put_io_context +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0f681cd neigh_update +EXPORT_SYMBOL vmlinux 0xb1191a35 skb_queue_head +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb124941e pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13052b1 elv_register_queue +EXPORT_SYMBOL vmlinux 0xb131d364 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xb157881d dup_iter +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb168acec nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xb172ef87 kthread_bind +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb198969e skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xb1b7fee9 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c9b049 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1ecb515 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb226f180 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xb22e96c8 key_type_keyring +EXPORT_SYMBOL vmlinux 0xb25e6feb send_sig_info +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb271e838 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xb2b1b190 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xb2b4385e __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d2fb88 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d48c5f kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xb2d55e48 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb302b02c ppp_channel_index +EXPORT_SYMBOL vmlinux 0xb31aba04 phy_register_fixup +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 0xb33b9c08 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xb3484888 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb357d26d key_alloc +EXPORT_SYMBOL vmlinux 0xb37fc592 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xb3860c58 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xb38e9b73 kunmap +EXPORT_SYMBOL vmlinux 0xb3951d11 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xb39d9823 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xb3a2fe98 set_pages_wb +EXPORT_SYMBOL vmlinux 0xb3a85837 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xb3aafab9 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3ee8086 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xb3f41e14 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3f8fc50 find_get_entry +EXPORT_SYMBOL vmlinux 0xb3fadee6 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xb404bf59 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xb4199e98 tty_mutex +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 0xb45d619d blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb49bb318 devm_clk_put +EXPORT_SYMBOL vmlinux 0xb4c487da skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xb4cbd14d twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xb4f9c81f tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xb5002994 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xb50681ee of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xb51d47ea netdev_crit +EXPORT_SYMBOL vmlinux 0xb5229392 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb5479245 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xb55e003e tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c9705e revert_creds +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5da1273 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xb5da99c2 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb5ed85a9 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xb5edbd09 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xb5f489f8 key_task_permission +EXPORT_SYMBOL vmlinux 0xb62315c6 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb62b377a current_task +EXPORT_SYMBOL vmlinux 0xb659c780 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xb65d6f1f mpage_readpage +EXPORT_SYMBOL vmlinux 0xb65e8c42 cdrom_release +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 0xb6962abc i2c_verify_client +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ae8d01 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xb6baeb5d blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xb6c2955f kern_path_create +EXPORT_SYMBOL vmlinux 0xb6c58ab4 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xb6d3cb89 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xb6de3d74 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xb6e41883 memcmp +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb7124044 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xb71b6037 input_register_device +EXPORT_SYMBOL vmlinux 0xb7276a0f vfs_llseek +EXPORT_SYMBOL vmlinux 0xb72d96ee memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xb7335d98 kill_bdev +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74fb6db mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xb74fdf08 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75b247f blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xb75f0b77 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a61a5b mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xb7a65b02 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xb7aafdeb kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xb7bf6ce3 md_update_sb +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7ea577c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xb7f4f09e do_splice_direct +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb7fd5db7 generic_update_time +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81e567b netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xb8220457 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xb8323bbd dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb8631022 ping_prot +EXPORT_SYMBOL vmlinux 0xb8644b44 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xb864db84 blk_put_request +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb8884b87 scsi_print_command +EXPORT_SYMBOL vmlinux 0xb88d9725 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb8a47f1a elv_rb_add +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8d4efb8 single_open +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f27e4d devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xb8f48015 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb8fe6784 blkdev_put +EXPORT_SYMBOL vmlinux 0xb934e354 input_register_handle +EXPORT_SYMBOL vmlinux 0xb9644e16 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xb9664086 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xb968212d from_kgid_munged +EXPORT_SYMBOL vmlinux 0xb978de44 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xb979ee82 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xb98972da skb_insert +EXPORT_SYMBOL vmlinux 0xb9cbb777 dev_addr_init +EXPORT_SYMBOL vmlinux 0xb9d715ab invalidate_bdev +EXPORT_SYMBOL vmlinux 0xb9e30752 tty_devnum +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba1cc4cd dquot_commit_info +EXPORT_SYMBOL vmlinux 0xba1e9299 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xba26b5bf neigh_lookup +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3a3c5d lease_get_mtime +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4e9795 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xba51f409 genlmsg_put +EXPORT_SYMBOL vmlinux 0xba572589 param_get_string +EXPORT_SYMBOL vmlinux 0xba7731c6 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xba9e86a1 param_ops_long +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb05bea8 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xbb121fe2 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xbb12293a serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xbb2e8473 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4544d6 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xbb59bf5a pv_cpu_ops +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 0xbbbb451a _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbed8df8 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xbbf30b30 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xbc1297a3 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc23ff27 request_key_async +EXPORT_SYMBOL vmlinux 0xbc26fbd3 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xbc337a15 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xbc3c3f34 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xbc3e0f79 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xbc434f29 pci_restore_state +EXPORT_SYMBOL vmlinux 0xbc435770 dump_stack +EXPORT_SYMBOL vmlinux 0xbc5e3859 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xbc763db3 inet_frag_find +EXPORT_SYMBOL vmlinux 0xbc82aba9 simple_fill_super +EXPORT_SYMBOL vmlinux 0xbcb1355a ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcde4573 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xbce038d3 d_path +EXPORT_SYMBOL vmlinux 0xbcedcb99 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xbd0efac1 vfs_symlink +EXPORT_SYMBOL vmlinux 0xbd12b3cc inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xbd333bf7 seq_read +EXPORT_SYMBOL vmlinux 0xbd471f7b fb_set_cmap +EXPORT_SYMBOL vmlinux 0xbd5647bd __devm_release_region +EXPORT_SYMBOL vmlinux 0xbd7af88c simple_open +EXPORT_SYMBOL vmlinux 0xbd7dfeb5 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbda36c67 blk_register_region +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdcce937 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xbdd318e0 cdev_alloc +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe20c293 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xbe2de9bd blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xbe3b83d1 scmd_printk +EXPORT_SYMBOL vmlinux 0xbe48f2fe abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xbe6adc1c netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbe9e401d blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xbeb16fc5 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xbeb43d85 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xbeb523c7 agp_backend_release +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbee23cca intel_gmch_probe +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbee91932 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xbef0e1ab pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf080b82 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xbf18b79f dm_unregister_target +EXPORT_SYMBOL vmlinux 0xbf270045 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xbf71d5e5 dev_driver_string +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfe6f427 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffd7e7f vga_get +EXPORT_SYMBOL vmlinux 0xc013f8a6 dev_alert +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc04aef3b tcp_ioctl +EXPORT_SYMBOL vmlinux 0xc05cca2f uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07e7a63 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xc0805e16 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08c3b55 simple_empty +EXPORT_SYMBOL vmlinux 0xc09dd62b kill_block_super +EXPORT_SYMBOL vmlinux 0xc09dee06 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xc0a24945 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a8cf0c devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0f5f3bf jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xc0fb7710 set_blocksize +EXPORT_SYMBOL vmlinux 0xc101ac6f sk_capable +EXPORT_SYMBOL vmlinux 0xc110511c kfree_put_link +EXPORT_SYMBOL vmlinux 0xc11057f5 lock_rename +EXPORT_SYMBOL vmlinux 0xc11408ef pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xc118b55e __f_setown +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc121756b cdrom_open +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1513a5c blk_make_request +EXPORT_SYMBOL vmlinux 0xc17ff0e9 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xc185c612 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xc1a0292d skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xc1cb1e27 free_page_put_link +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e02248 tcp_check_req +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1fd8726 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xc21037f7 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xc2261dbd __blk_run_queue +EXPORT_SYMBOL vmlinux 0xc22bea16 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24777e2 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xc24e9587 __sb_start_write +EXPORT_SYMBOL vmlinux 0xc25974e8 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xc2806448 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc283161f swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xc28325d5 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc28f1f7f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xc2a92963 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2bd782b mmc_free_host +EXPORT_SYMBOL vmlinux 0xc2c506ae save_mount_options +EXPORT_SYMBOL vmlinux 0xc2d2fd3c elv_rb_del +EXPORT_SYMBOL vmlinux 0xc2d5773d pci_enable_msix +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc347bb9f security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xc35347c0 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xc3559a8c vlan_vid_add +EXPORT_SYMBOL vmlinux 0xc3591c71 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xc3602368 may_umount_tree +EXPORT_SYMBOL vmlinux 0xc362afd7 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xc3711fc2 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xc37de6c9 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xc3804c84 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xc38447cf file_remove_privs +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3bf97af request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3c32a5d sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc3e98208 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xc3edc6df mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc400cba6 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xc40761c5 set_trace_device +EXPORT_SYMBOL vmlinux 0xc41c28fe elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc435ed50 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc44a5a28 param_get_short +EXPORT_SYMBOL vmlinux 0xc4530f4e security_task_getsecid +EXPORT_SYMBOL vmlinux 0xc45db264 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xc491afd1 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a2e5f4 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xc4c78362 simple_write_end +EXPORT_SYMBOL vmlinux 0xc4d435f0 tc_classify +EXPORT_SYMBOL vmlinux 0xc4e13cd5 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xc4fb609d phy_device_create +EXPORT_SYMBOL vmlinux 0xc512ef3f blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc5183d24 dump_skip +EXPORT_SYMBOL vmlinux 0xc51e3e9c tcp_connect +EXPORT_SYMBOL vmlinux 0xc52f546a mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xc535a95e agp_bridge +EXPORT_SYMBOL vmlinux 0xc53fdb19 sock_from_file +EXPORT_SYMBOL vmlinux 0xc54146a8 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xc541cfed tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xc5462085 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xc54a0dfd __neigh_create +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc56cf6e6 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xc576b607 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xc57c61ec inet_frags_fini +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5bcd716 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc5cab62f phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5de9cca blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xc5fd0884 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc616cebe tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xc620d99c dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xc6229f46 seq_pad +EXPORT_SYMBOL vmlinux 0xc625070f blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6438201 pnp_find_card +EXPORT_SYMBOL vmlinux 0xc645bd68 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xc653df08 bdgrab +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc671d7cd try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc6780b65 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6bba95c tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xc6c99e73 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6eeb0f9 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xc6f2050d tcf_register_action +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7344287 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0xc73e351f find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xc749ec9d __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xc74dee1f dev_addr_del +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc76c6196 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xc7712ae0 softnet_data +EXPORT_SYMBOL vmlinux 0xc7768084 kmem_cache_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 0xc79336e0 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xc79a78ba unregister_qdisc +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 0xc7a74b83 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc828aefe __frontswap_store +EXPORT_SYMBOL vmlinux 0xc8318f9d handle_edge_irq +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83502cb clear_nlink +EXPORT_SYMBOL vmlinux 0xc83b361d nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc86d6799 ___preempt_schedule +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87ca834 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89426c0 done_path_create +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a20e35 netdev_notify_peers +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 0xc8b7d7cb padata_free +EXPORT_SYMBOL vmlinux 0xc8c9efc8 param_set_short +EXPORT_SYMBOL vmlinux 0xc8d884fe disk_stack_limits +EXPORT_SYMBOL vmlinux 0xc8da02fd skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xc90c7b96 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xc90d915e devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9141439 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xc917b8c3 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xc94174c1 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xc942d07d mntget +EXPORT_SYMBOL vmlinux 0xc94a9993 neigh_table_init +EXPORT_SYMBOL vmlinux 0xc9582c6d __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc9711aa2 __scm_send +EXPORT_SYMBOL vmlinux 0xc9767054 md_flush_request +EXPORT_SYMBOL vmlinux 0xc97a7289 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xc97db3f0 __invalidate_device +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9a56597 scsi_print_result +EXPORT_SYMBOL vmlinux 0xc9a72a99 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xc9ac8fe8 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xc9af36a4 eth_header +EXPORT_SYMBOL vmlinux 0xc9b192f3 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc9d550bc serio_unregister_port +EXPORT_SYMBOL vmlinux 0xc9e4824f i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1b8f2f __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xca1d753e consume_skb +EXPORT_SYMBOL vmlinux 0xca1d9ba3 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xca368590 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xca3c2dcc rtnl_unicast +EXPORT_SYMBOL vmlinux 0xca3fdecf inet_frags_init +EXPORT_SYMBOL vmlinux 0xca4e2f86 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xca58c1dc dev_deactivate +EXPORT_SYMBOL vmlinux 0xca5f56a2 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xca7c0e5b devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xca83a344 genphy_update_link +EXPORT_SYMBOL vmlinux 0xca8492b0 sync_filesystem +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca96f344 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xcaa19b5d vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xcabba0fe __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf82a07 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xcafd9b47 __elv_add_request +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0c1114 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xcb40d927 vfs_iter_read +EXPORT_SYMBOL vmlinux 0xcb500f68 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +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 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcd4c1d md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xcbd36c23 put_cmsg +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbee996d xfrm_register_km +EXPORT_SYMBOL vmlinux 0xcbf9eefb netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xcc0dea5f kill_anon_super +EXPORT_SYMBOL vmlinux 0xcc0fa9c6 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xcc16cc2f sk_free +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc27d2e5 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xcc3627d1 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xcc406d12 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6a7a35 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xcc7f9736 md_reload_sb +EXPORT_SYMBOL vmlinux 0xcc81ac8f proto_register +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcccd83b7 proc_set_size +EXPORT_SYMBOL vmlinux 0xccd008e9 tty_name +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd18b8ff splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcd1aa377 param_get_invbool +EXPORT_SYMBOL vmlinux 0xcd1fbf3d bio_reset +EXPORT_SYMBOL vmlinux 0xcd231bfd jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2f521b mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xcd44fcf6 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xcd62e080 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0xcd7954c5 get_super +EXPORT_SYMBOL vmlinux 0xcd7cc8e5 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xcd8b4703 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcdaabed8 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xcdb2e14d reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc7babe sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xcded68d9 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xce012652 dquot_destroy +EXPORT_SYMBOL vmlinux 0xce0c9480 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xce1dc1c3 mfd_cell_disable +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 0xce3a6940 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce508101 kmap_to_page +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce63ec50 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xce96e2bc inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xce9e41e9 lockref_get +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xced1f413 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xcedfc84d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf031411 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xcf2c2809 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xcf3991b0 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xcf3b386e ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xcf429ca7 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xcf6bb8bf register_framebuffer +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf8e98cb netdev_warn +EXPORT_SYMBOL vmlinux 0xcfa7c6a9 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xcfacd7c6 sock_no_accept +EXPORT_SYMBOL vmlinux 0xcfdf3642 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcfe685c1 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xd0046469 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xd0064f89 __d_drop +EXPORT_SYMBOL vmlinux 0xd00fc599 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xd01369cc init_buffer +EXPORT_SYMBOL vmlinux 0xd01ae370 do_truncate +EXPORT_SYMBOL vmlinux 0xd02e9079 ps2_drain +EXPORT_SYMBOL vmlinux 0xd03be42c udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xd047bfcc dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xd05704e9 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xd066c8da __genl_register_family +EXPORT_SYMBOL vmlinux 0xd067ec1e tty_vhangup +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07bb7e4 netdev_info +EXPORT_SYMBOL vmlinux 0xd087e894 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0afa171 __frontswap_load +EXPORT_SYMBOL vmlinux 0xd0cd6861 neigh_xmit +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0d9405b phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xd0ea4727 bdi_register_dev +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 0xd104a64f __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xd10dcc9d set_device_ro +EXPORT_SYMBOL vmlinux 0xd116ef82 vme_irq_free +EXPORT_SYMBOL vmlinux 0xd121156a dump_align +EXPORT_SYMBOL vmlinux 0xd14420cb pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xd15f6143 locks_init_lock +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd169fc5c nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a4a110 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xd1c8255e backlight_force_update +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d435e3 secpath_dup +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e24fb3 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1febf10 address_space_init_once +EXPORT_SYMBOL vmlinux 0xd2064221 vm_map_ram +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd21f3d00 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22c7ef6 console_start +EXPORT_SYMBOL vmlinux 0xd2369e9a xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xd24ea7f6 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xd24f8b9c freeze_bdev +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 0xd25900b3 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd29f3e60 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b128b2 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xd2bac1eb acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xd2be1c85 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd30a180b d_alloc_name +EXPORT_SYMBOL vmlinux 0xd30eda75 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xd32bb8e1 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xd348b2d6 scsi_init_io +EXPORT_SYMBOL vmlinux 0xd3565298 soft_cursor +EXPORT_SYMBOL vmlinux 0xd35e21f3 inet6_protos +EXPORT_SYMBOL vmlinux 0xd36552bd dev_uc_sync +EXPORT_SYMBOL vmlinux 0xd373fc5b try_to_release_page +EXPORT_SYMBOL vmlinux 0xd3903796 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3f9f941 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xd3fbb0b3 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xd43a810a pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xd43f94d0 vfs_setpos +EXPORT_SYMBOL vmlinux 0xd440f507 input_set_keycode +EXPORT_SYMBOL vmlinux 0xd475a34b pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xd47755b7 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xd479edfa pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4ae9e64 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xd4c3a115 netdev_features_change +EXPORT_SYMBOL vmlinux 0xd4f6612a mem_map +EXPORT_SYMBOL vmlinux 0xd4f98434 dev_close +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd52cc237 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5652522 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xd579e87e fb_find_mode +EXPORT_SYMBOL vmlinux 0xd5ba6fca ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xd5c314af pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xd5cbc654 simple_statfs +EXPORT_SYMBOL vmlinux 0xd5cd55d3 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xd5ed8f45 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5f92131 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xd60b324c I_BDEV +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd625cdbe scsi_host_put +EXPORT_SYMBOL vmlinux 0xd6299733 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd645abfc elevator_change +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd67b09f2 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xd67e616c devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xd6861e6e seq_puts +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68d6fb9 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xd6941513 vfs_fsync +EXPORT_SYMBOL vmlinux 0xd69c6cd5 get_acl +EXPORT_SYMBOL vmlinux 0xd69f8684 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6bec69b phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xd6cd95a1 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +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 0xd77944b4 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xd78605ca vme_irq_handler +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd799f5e9 filp_close +EXPORT_SYMBOL vmlinux 0xd7a3e95a md_cluster_ops +EXPORT_SYMBOL vmlinux 0xd7a9531a devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xd7b03431 up_write +EXPORT_SYMBOL vmlinux 0xd7d43355 pci_dev_put +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e01bd9 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e66026 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7ee3e74 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xd7efdacf twl6040_power +EXPORT_SYMBOL vmlinux 0xd81a11f4 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xd84edcd4 pci_bus_get +EXPORT_SYMBOL vmlinux 0xd8520531 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd8622bfe mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xd871df8f blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xd87fd925 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xd8986976 pid_task +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a36cd4 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8c58759 dm_get_device +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8fc213f mount_pseudo +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd923c32a qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd95a8400 mount_ns +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9b085e1 dev_mc_init +EXPORT_SYMBOL vmlinux 0xd9baf296 scsi_execute +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d756f4 filemap_fault +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e25ffb arp_tbl +EXPORT_SYMBOL vmlinux 0xda02d0de udp_ioctl +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda0c6967 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xda373b89 mpage_readpages +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3ffa95 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xda726037 security_path_unlink +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 0xdaaf690d skb_dequeue +EXPORT_SYMBOL vmlinux 0xdab48a14 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad8c25e tcp_release_cb +EXPORT_SYMBOL vmlinux 0xdae24f03 dst_destroy +EXPORT_SYMBOL vmlinux 0xdae5ed93 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xdae80100 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0xdaf7b338 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb902cd7 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xdba5c1ff xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xdbc486b9 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xdbc5a880 tty_port_put +EXPORT_SYMBOL vmlinux 0xdbe8a1c9 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xdbef80ab redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc078ab4 to_ndd +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc175b5d netpoll_print_options +EXPORT_SYMBOL vmlinux 0xdc2482fe jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xdc328c3a tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xdc35f33d netdev_notice +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc41f714 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xdc48a93b register_sysctl_table +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc550f2e get_tz_trend +EXPORT_SYMBOL vmlinux 0xdc57a078 scsi_unregister +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc5ac831 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xdc5b4f7b clk_get +EXPORT_SYMBOL vmlinux 0xdc90a684 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xdc98d279 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xdc9b3b84 md_register_thread +EXPORT_SYMBOL vmlinux 0xdc9c6533 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xdca1398e dquot_acquire +EXPORT_SYMBOL vmlinux 0xdcd71968 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd18a1fc jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xdd2e01d6 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd576882 dev_trans_start +EXPORT_SYMBOL vmlinux 0xdd6601a2 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xdd6ad22f mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xdd9bd46f buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xddb37d02 proc_dointvec +EXPORT_SYMBOL vmlinux 0xddb84a69 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xddb9495a pnp_find_dev +EXPORT_SYMBOL vmlinux 0xdde6793e ilookup5 +EXPORT_SYMBOL vmlinux 0xddea7ecf __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xddf230bb agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xde003d08 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xde0a8fd5 init_special_inode +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde20ce96 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xde274a6d call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xde40dc30 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xde51433d xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xde515e89 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xde51cbc4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xde52438e arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xde60895a iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xde689f68 md_write_start +EXPORT_SYMBOL vmlinux 0xde729e20 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9c5fef posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xdea7a2e3 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xdeac858c adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xdec7781f km_state_notify +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdeed2b4a scsi_device_get +EXPORT_SYMBOL vmlinux 0xdeed3daf add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf1ebc2b bh_submit_read +EXPORT_SYMBOL vmlinux 0xdf2560bb __napi_schedule +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 0xdf6b06cd blk_start_queue +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9bfdee iov_iter_init +EXPORT_SYMBOL vmlinux 0xdfaef747 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd3744b mdio_bus_type +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfd61e57 vfs_readv +EXPORT_SYMBOL vmlinux 0xdfe2683c nf_hook_slow +EXPORT_SYMBOL vmlinux 0xdff709cc md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xdff85365 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe004035c security_path_rmdir +EXPORT_SYMBOL vmlinux 0xe03df979 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe051fa98 skb_make_writable +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe066f1ad generic_readlink +EXPORT_SYMBOL vmlinux 0xe06bebf3 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xe0730911 netif_skb_features +EXPORT_SYMBOL vmlinux 0xe073e248 fb_class +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0790de8 __register_binfmt +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0876573 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xe088bf18 generic_perform_write +EXPORT_SYMBOL vmlinux 0xe09fe9f6 mapping_tagged +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0a1d9bc skb_queue_tail +EXPORT_SYMBOL vmlinux 0xe0a2864b agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0ae85b4 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b95b4c mount_subtree +EXPORT_SYMBOL vmlinux 0xe0bc8cfc textsearch_unregister +EXPORT_SYMBOL vmlinux 0xe0f850df up_read +EXPORT_SYMBOL vmlinux 0xe10b8508 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xe10fc7af mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xe1197d0a neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe14eb0a7 bioset_create +EXPORT_SYMBOL vmlinux 0xe152ba36 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xe15ec9b7 vfs_write +EXPORT_SYMBOL vmlinux 0xe1602d38 dquot_alloc +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe1afc85d vme_slave_request +EXPORT_SYMBOL vmlinux 0xe1b02a46 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0xe1e97cea __block_write_begin +EXPORT_SYMBOL vmlinux 0xe1ed329a skb_checksum_help +EXPORT_SYMBOL vmlinux 0xe1ef6c3a read_cache_page_gfp +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 0xe20770d6 blk_end_request +EXPORT_SYMBOL vmlinux 0xe2078d71 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xe22baf5e ip_options_compile +EXPORT_SYMBOL vmlinux 0xe236c243 ip_defrag +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23bba72 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xe2421e7e blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xe249777b vme_dma_request +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe276bd92 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xe27d365a jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xe2804983 serio_close +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2bbd6ff security_inode_init_security +EXPORT_SYMBOL vmlinux 0xe2c305c4 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xe2ca33bb ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xe2cb56d6 import_iovec +EXPORT_SYMBOL vmlinux 0xe2cb617d simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e3e0e2 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3182293 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xe3197208 proc_dostring +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe31f186b skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe33b4d51 bio_split +EXPORT_SYMBOL vmlinux 0xe3410945 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xe34ded01 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xe3679899 dev_get_flags +EXPORT_SYMBOL vmlinux 0xe3b58d56 netdev_err +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e8cc9e fb_get_mode +EXPORT_SYMBOL vmlinux 0xe3eaadf1 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xe445db4a acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe45d2d2b seq_open_private +EXPORT_SYMBOL vmlinux 0xe4655197 iget_failed +EXPORT_SYMBOL vmlinux 0xe484cfb9 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48fbdf8 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xe4a13dfb netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xe4aa41ec inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xe4ab14b4 write_inode_now +EXPORT_SYMBOL vmlinux 0xe4aeb94a dev_get_iflink +EXPORT_SYMBOL vmlinux 0xe4bb9091 km_state_expired +EXPORT_SYMBOL vmlinux 0xe4eb5806 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xe4f9953e twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xe4fa9549 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe5513559 security_path_truncate +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 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5aba6d4 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cc0434 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xe5da3f15 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe5ddd699 proc_mkdir +EXPORT_SYMBOL vmlinux 0xe5ea9d7d dev_activate +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f70607 devm_ioremap +EXPORT_SYMBOL vmlinux 0xe6114009 do_splice_to +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe62039a3 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xe620eb87 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xe632e281 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xe649fa08 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe64eb784 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xe666e4b3 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69b293f kset_unregister +EXPORT_SYMBOL vmlinux 0xe69d3be2 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xe6bda532 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe6c7333d __free_pages +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6ff224c __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xe7047e59 d_alloc +EXPORT_SYMBOL vmlinux 0xe706e5a9 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe738fc41 request_key +EXPORT_SYMBOL vmlinux 0xe77d389a gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xe780eab0 vga_client_register +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe7867bd7 dquot_drop +EXPORT_SYMBOL vmlinux 0xe78ad378 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xe78af93a freezing_slow_path +EXPORT_SYMBOL vmlinux 0xe7988b3c param_ops_bool +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7a9549e gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7bb94ee dget_parent +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d632f9 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xe7deb948 register_filesystem +EXPORT_SYMBOL vmlinux 0xe7e1583e inet_listen +EXPORT_SYMBOL vmlinux 0xe7ee2fc6 dma_find_channel +EXPORT_SYMBOL vmlinux 0xe7f51af7 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xe81848b2 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe822db7f ppp_register_channel +EXPORT_SYMBOL vmlinux 0xe840690f is_nd_btt +EXPORT_SYMBOL vmlinux 0xe861676b dev_get_by_index +EXPORT_SYMBOL vmlinux 0xe87025f0 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe8882f8e qdisc_reset +EXPORT_SYMBOL vmlinux 0xe890eac6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8a7673a tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xe8a859eb inet_add_protocol +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8e49dfe sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xe8ea5186 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xe8fb85b3 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91a7186 new_inode +EXPORT_SYMBOL vmlinux 0xe928ca76 blk_stop_queue +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe9470028 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9aa0e15 netdev_printk +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9e34778 neigh_for_each +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fd9a70 ps2_init +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea2760cb proc_symlink +EXPORT_SYMBOL vmlinux 0xea427ee7 path_put +EXPORT_SYMBOL vmlinux 0xea63126a unlock_page +EXPORT_SYMBOL vmlinux 0xea6d865c bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea7ee065 drop_nlink +EXPORT_SYMBOL vmlinux 0xea7f191a xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xea8f68c5 __serio_register_port +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9b0d79 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xeab33f14 dqput +EXPORT_SYMBOL vmlinux 0xeab4337d udp_add_offload +EXPORT_SYMBOL vmlinux 0xeabfd9f9 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaec8413 dev_emerg +EXPORT_SYMBOL vmlinux 0xeb0da44c param_get_bool +EXPORT_SYMBOL vmlinux 0xeb2c456a tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xeb31b428 dquot_disable +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb38d29a __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb7035ce wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xeb913a0e dev_notice +EXPORT_SYMBOL vmlinux 0xebaf2ce3 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xebd97a2b kernel_getsockname +EXPORT_SYMBOL vmlinux 0xebe41ddb key_reject_and_link +EXPORT_SYMBOL vmlinux 0xebeacc7c register_console +EXPORT_SYMBOL vmlinux 0xebf0a015 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec0385ed dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xec0b37d3 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xec0edaaa inet_recvmsg +EXPORT_SYMBOL vmlinux 0xec182da5 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1ea053 kernel_accept +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec9c541d touch_buffer +EXPORT_SYMBOL vmlinux 0xecb3e918 fd_install +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecbecbda agp_bind_memory +EXPORT_SYMBOL vmlinux 0xecc12be9 d_delete +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xed49de38 bdev_read_only +EXPORT_SYMBOL vmlinux 0xed4b5b1e eth_header_cache +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed893ef2 put_disk +EXPORT_SYMBOL vmlinux 0xed8bdc45 register_key_type +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedab639c skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xedac6abc security_inode_readlink +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd968b component_match_add +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc20c41 set_pages_nx +EXPORT_SYMBOL vmlinux 0xedcf21db blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xede033dd register_netdevice +EXPORT_SYMBOL vmlinux 0xedf0166f dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xedfde5b7 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xee22c25b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3ed5dc alloc_file +EXPORT_SYMBOL vmlinux 0xee497021 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xee4eabf4 ppp_input +EXPORT_SYMBOL vmlinux 0xee51b4c8 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xee746152 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea177f5 simple_readpage +EXPORT_SYMBOL vmlinux 0xeea6712f tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeaf846c dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xeed5189f dev_uc_init +EXPORT_SYMBOL vmlinux 0xeee41531 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef103831 vme_register_driver +EXPORT_SYMBOL vmlinux 0xef217178 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xef426697 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xef6f54d9 __inet_hash +EXPORT_SYMBOL vmlinux 0xef76f651 blkdev_get +EXPORT_SYMBOL vmlinux 0xef7d803a revalidate_disk +EXPORT_SYMBOL vmlinux 0xef86a111 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xef92611f kthread_stop +EXPORT_SYMBOL vmlinux 0xef938ddc generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xef9887a8 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefb84d15 sock_rfree +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 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf000f87d locks_free_lock +EXPORT_SYMBOL vmlinux 0xf0053056 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xf0100032 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0382309 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf06c1022 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf0925c25 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xf09db5c7 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0be5e09 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xf0d20f95 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xf0d70dc7 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xf0ddd078 fb_show_logo +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +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 0xf12af51e blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xf12ee89a clear_inode +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf18097da get_task_io_context +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf19166fb tty_hangup +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1af8a01 get_disk +EXPORT_SYMBOL vmlinux 0xf1c5a085 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xf1d9c731 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf2016144 acl_by_type +EXPORT_SYMBOL vmlinux 0xf209a13e qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22d39e2 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xf22fa294 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24446d2 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xf267b92c mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xf288e59a dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf291518d __i2c_transfer +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf299f94a acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a12bf4 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xf2a4f7c0 generic_fillattr +EXPORT_SYMBOL vmlinux 0xf2b1b3f9 param_get_ullong +EXPORT_SYMBOL vmlinux 0xf2c185d2 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2fe15a2 __nd_driver_register +EXPORT_SYMBOL vmlinux 0xf3080b04 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xf30a1828 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3227e86 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +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 0xf361f7d9 tcp_try_fastopen +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 0xf3a1bfd8 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf3ba5ace sk_reset_timer +EXPORT_SYMBOL vmlinux 0xf3bff403 clk_add_alias +EXPORT_SYMBOL vmlinux 0xf3d52707 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f5e414 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xf3fd187f nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0xf3fdef1d eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf4236d74 mdiobus_free +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4566359 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xf45fc88d inet_put_port +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47b8169 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xf484de4c sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xf49e8472 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xf49fd341 audit_log +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 0xf4d93b3f tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf50e1a78 km_is_alive +EXPORT_SYMBOL vmlinux 0xf51a0ea4 security_file_permission +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf524dbf0 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xf532292f netif_carrier_off +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5574138 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xf560d455 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xf56c1b0b abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xf5724f4b nf_log_trace +EXPORT_SYMBOL vmlinux 0xf5795ea3 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xf585e947 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0xf58fea37 blk_init_queue +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a80051 proc_create_data +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5b288a2 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xf5b3d4d2 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f9c712 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xf621bb7d queue_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xf625e539 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xf62fa8c8 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +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 0xf6b6a762 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d9b043 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xf6e297b8 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70f9e4d blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xf710f7f8 make_kuid +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf746f969 input_event +EXPORT_SYMBOL vmlinux 0xf7580ff0 input_open_device +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf77c49be vfs_writev +EXPORT_SYMBOL vmlinux 0xf77d974d devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xf788424d register_sysctl +EXPORT_SYMBOL vmlinux 0xf79711ac proto_unregister +EXPORT_SYMBOL vmlinux 0xf7984f00 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf79f5222 phy_suspend +EXPORT_SYMBOL vmlinux 0xf7a47c7c pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xf7e70b81 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xf7ef0f55 __dynamic_netdev_dbg +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 0xf83f4fb2 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xf8412c60 invalidate_partition +EXPORT_SYMBOL vmlinux 0xf8491066 pci_match_id +EXPORT_SYMBOL vmlinux 0xf87ad2ae page_address +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8955335 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xf8a20f76 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xf8bbb96f netpoll_setup +EXPORT_SYMBOL vmlinux 0xf8bcf350 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xf8d4cff4 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xf8d8fa11 generic_getxattr +EXPORT_SYMBOL vmlinux 0xf8ec915c blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xf8f506ca file_ns_capable +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf94f0a45 __getblk_slow +EXPORT_SYMBOL vmlinux 0xf97e0cd3 single_open_size +EXPORT_SYMBOL vmlinux 0xf9867167 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xf995bd2d rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xf9977d58 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9e19303 padata_do_serial +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f61fd6 i2c_master_send +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xf9fd210c simple_unlink +EXPORT_SYMBOL vmlinux 0xfa0a079d mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xfa12783d __find_get_block +EXPORT_SYMBOL vmlinux 0xfa31d10d security_path_rename +EXPORT_SYMBOL vmlinux 0xfa4d046c xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa64db93 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xfa66d2fc mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xfa692cb8 param_set_long +EXPORT_SYMBOL vmlinux 0xfa90640b dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xfa9243f4 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xfaa6c1a1 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xfab90629 downgrade_write +EXPORT_SYMBOL vmlinux 0xfaba8ec7 fbcon_rotate_ccw +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 0xfaf26da9 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb06c617 update_devfreq +EXPORT_SYMBOL vmlinux 0xfb0e7516 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xfb129c67 skb_trim +EXPORT_SYMBOL vmlinux 0xfb1b9283 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xfb390a9d locks_remove_posix +EXPORT_SYMBOL vmlinux 0xfb6477a7 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6fd6b4 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba090df abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd1ea2c may_umount +EXPORT_SYMBOL vmlinux 0xfbd71298 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc15c79e mdiobus_register +EXPORT_SYMBOL vmlinux 0xfc23ccf9 i2c_use_client +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc4cfc8b tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc5e3c23 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc9eccd1 vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xfca840c2 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xfcaa20d3 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcaebcf4 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd84afc generic_file_llseek +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf225b9 keyring_alloc +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0433f2 kset_register +EXPORT_SYMBOL vmlinux 0xfd18abfe xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xfd1c6e93 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xfd30d8c3 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd3e9b68 inet_offloads +EXPORT_SYMBOL vmlinux 0xfd4f67fa cfb_imageblit +EXPORT_SYMBOL vmlinux 0xfd59d3b4 scsi_host_get +EXPORT_SYMBOL vmlinux 0xfd6e15cb truncate_setsize +EXPORT_SYMBOL vmlinux 0xfd743952 netif_napi_add +EXPORT_SYMBOL vmlinux 0xfd789109 d_genocide +EXPORT_SYMBOL vmlinux 0xfd800e9b block_write_begin +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdadb8ca i2c_register_driver +EXPORT_SYMBOL vmlinux 0xfdaffb50 md_integrity_register +EXPORT_SYMBOL vmlinux 0xfdb1f0e0 dev_add_pack +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdcd7041 xfrm_input +EXPORT_SYMBOL vmlinux 0xfdd92105 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xfddb9186 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xfde8b3aa devfreq_add_device +EXPORT_SYMBOL vmlinux 0xfde9b8a8 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xfdea0065 mmc_align_data_size +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 0xfe17b326 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xfe182381 inet_shutdown +EXPORT_SYMBOL vmlinux 0xfe27a323 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xfe4438d7 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5e86d8 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xfe616d94 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe84b9c6 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xfe9528ef block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xfe9579b0 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfea7d209 follow_down_one +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfede691c mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xfeecbeed sync_blockdev +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xff11a2c8 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff1f62c4 make_kgid +EXPORT_SYMBOL vmlinux 0xff4139b1 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xff44400a fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff487e0d request_firmware +EXPORT_SYMBOL vmlinux 0xff577e9e seq_lseek +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff8c0ba6 make_kprojid +EXPORT_SYMBOL vmlinux 0xff8c6b0c t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffc12e0f devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe55aa8 dquot_enable +EXPORT_SYMBOL vmlinux 0xfff5371a put_tty_driver +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 0x00ec5041 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x225a61d7 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x4458f205 glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xa71647f3 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xd1124f9b glue_ctr_crypt_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 0x0395300d kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x03e8309f kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0865ee78 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0cbc8cfe kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d11016f kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ff83fd2 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14143bc3 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14985e3d kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14c271ba kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1641dd35 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x16801aaa kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x174433a8 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e257ab __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x195bbe25 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a4342a5 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d65b8c7 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e2fb9b4 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x215ed9ed kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2215b3f7 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2433d6fd __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x26903f3c kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x273aef5e kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27ab928e kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2973a6f6 kvm_vcpu_gfn_to_pfn_atomic +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 0x30846058 kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x32c1c31c gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x331397fb kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33393fd6 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x34cb6c83 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3679bb28 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x379602ff kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b88fb28 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3bd1ec1b kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3cafb412 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d3af390 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d976421 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e9d88ae kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ee59a92 __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4082456d x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43194fc3 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x464a4bdb kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4cd51ed1 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4f04ca5d kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x50f37727 kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51bc2262 kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53b29cce gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5664318d kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5bb81dce kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x60a271df kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x618349f2 kvm_requeue_exception_e +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 0x67ad4588 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x67b6f4cf kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6955f49c kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x697f32cc kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6d49bfce kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f384825 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70566d64 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70c99a77 kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x717bebdc kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74530858 reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74e6b233 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x759122ba kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x75fc5a2a kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76415161 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7b640969 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7cdabda7 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7d84383d kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x82b0a12c kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84ceb28c __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8629eabe kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x886043f1 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88f92d47 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8bb03e6e __tracepoint_kvm_write_tsc_offset +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 0x8ead943f kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f0fe488 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f57f2e1 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x901bce60 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9126a0b4 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92729c9d kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9487fd5f kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94f29984 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x95542a21 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x96c6a16a kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x97b43b1f kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9889794f kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98e2b7a2 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b7bada5 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b900380 cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c0834e3 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa128eb40 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa3bbbbdd gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa59f9e05 kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa5ecfd9b kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa792cd9d kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa8ae705c kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa9d82dff kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac7c868 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xad05515d __kvm_set_memory_region +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 0xb3103523 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb46b2071 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb9c06ffe kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbb940100 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbba19135 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b538e __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf05ab76 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf207cde kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1c2f046 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc2ddf822 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc38593e8 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc4165cf3 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc47efc46 kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca484697 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb67ce10 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcbb6bd59 kvm_mmu_reset_context +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 0xd0c9d6f3 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd157a5cc kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd1a5b653 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3fffcb5 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd47b4141 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5123acb kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd636103b kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd79826e0 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8bf9a46 kvm_vcpu_write_guest +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 0xdb9850bc kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc835746 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd98c590 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe12b8ec6 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe14cb946 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe20e94df kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe3cd8fae kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe62dbebe kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe64e67f4 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7922c8b kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9790e86 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb6f2a2b kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebc1db01 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xedbe747b gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf1cf6589 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5a74540 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf716f857 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf8d1029a mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9adfa87 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfa3c1145 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfb727a8c kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfcd7f482 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd2b62fd kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd8796c1 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff8fb26c kvm_release_page_clean +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x325c2eb9 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x349d5a38 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x5e724dae ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x6e254fca ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x7ced2bd8 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xad802b67 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xdddf5e75 ablk_exit +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x49e17f4d af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x5bc67cac af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x633a52a5 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x67256ba3 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x88b9caa6 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x8a702d38 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x9038310d af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xa59928e2 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa7cd75a6 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xfba7a15c af_alg_complete +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 0x4575638c async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb17fff02 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xda6c3416 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x1954a4a8 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xd6b33841 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 0x3b288b1e 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 0xbff1fb2d 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 0x29d1b6ff 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 0x01e4660a cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x064f1c35 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x1d9af0c9 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x2748d296 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4d6da779 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4f3ec216 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x6519654a cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x66df6b4e cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xb8214ece cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xf72314ea cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x1ea6ef51 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_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 0x22f87bb9 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 0x33bd7c3b mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3b5f0697 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x47528fa9 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x515dd75a mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x91a1670e shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa134a313 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa18e69b4 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xed65d5e6 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 0x60f210a0 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 0xbf1dea58 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xa33e4517 xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x1970b187 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x68169d81 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 0x02c27168 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1a93320f ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1b8bc521 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x246b3907 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2e879f43 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3b4b5d2e ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3dde6eac ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x42bd5a78 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x446a25ee ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5938dd22 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x678df9a9 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x80f47ef7 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8cc11c1d ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9ad1d66a ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb5725ad2 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xca551d14 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd5e74748 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd6d7e9fe ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe07b1d0f ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf191c1d5 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf59f4075 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfd299fbc ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x06f16cfe ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x26708d1b ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x293b9807 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2d5c8861 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x38887942 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4bfe3be8 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7985dafe ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x85aac944 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9114b6e2 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xac40fd0c ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb1a266e6 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbc16152c ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xc2fe9050 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x4bac446d __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 0x215c8974 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x351bf5c9 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6a91d368 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7f5b765c btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x93dc8a57 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x96e91e89 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6efc5ffc btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf3ead484 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x03cae148 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x47cefbb5 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x50351b6e btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5b6271c6 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x95cdf1b1 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xab6fd0d1 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbe6b16b9 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc4843b10 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc89271a9 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xebe5ee61 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfae4e7bd btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xe2405cc5 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 0xbe21e764 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 0x28044ba4 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0eba8c65 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x152a38b6 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1b29e7ed edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1fe79236 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x22f56411 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2dfa5a84 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x40813fe0 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x454c8ef4 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5ac2458c edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6b53b9d1 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6dfb40e8 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e5d17de edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x712ee39d edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa517519d edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb38f3352 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb51b187b edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc29d2c36 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc5fc6512 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf983c7c edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xeecf718f edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xefc1ae58 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfcdd0042 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xff6a1f7b find_mci_by_dev +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 0x5072939e drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x63fc6f07 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc9267ca6 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 0x1a563003 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 0x89c74c40 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 0xdeae56bb ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x047fea03 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x04beee4c hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x065aa705 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09a67889 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0fca7c3d hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1bdc50ee hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2d08ce43 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30157cc9 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3c9dab5c hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x43aa8c51 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47c150f0 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x55587dfc hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x58e23589 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5b646a12 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5cf19ea5 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x661e3dcf hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x828ed54b hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8a44dce3 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8bbfce95 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9e9d0e68 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa6f5d261 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb28daee9 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb8951783 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbb07c514 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd0e8d2ab hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2151a6d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd5233126 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde397346 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe0610b75 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe3cab82b __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xed29ebf4 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf24148ec hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf2cc617e hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf3597c30 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf5063717 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf7eace21 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x86aebf70 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x15c587c8 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1b3d7109 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1bbe8306 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7096b860 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x840e4e16 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xaff960e0 roccat_common2_device_init_struct +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 0xd8858d02 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 0x2a1b5186 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x3afc92f7 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x419ec670 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x41b17180 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x554628fa vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6282754d vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6460d18c __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x64dac3f2 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6eab491a vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8a8c7f38 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x902a96e7 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x97c85c8e vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xac2d2dbf vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xcc8707bc vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xfa81e89b vmbus_teardown_gpadl +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 0x00745886 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x03f83a5d pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x049d4a58 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0b539899 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0f6f8dc8 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x56b653cb pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5f0c0e6f pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6a1d277b pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6b9bd3f1 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7417db9d pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x820ce6db pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x83ff9814 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa3f64cd9 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb8d81c80 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcb22bf04 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x228cc692 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x34dcdeb3 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5269794d i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5783bfb1 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x59d06b12 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 0x818778ec i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc9561c6f i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf21e1f42 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf85f4729 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x6a5a2f7e nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x5abb9297 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xffc1d376 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x1aae0437 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x95252a13 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x03f9c063 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x05daccfe ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0a59adfe ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x182a4855 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x26252e67 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3c13cafc ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x96985ed8 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc175784c ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe2060723 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 0x0bcee382 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2c10a266 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3dc0a2b5 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3e2367c9 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x56ad1262 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x715a8f6c adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x71b3f270 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x76a5a462 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7d9a4b3c adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x838b64ab adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdc79783a adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf1def75c adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x090d64fe iio_enum_read +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 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 0x3bc0e77b iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x47938d2e devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4b5d8a33 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4fdc21a8 devm_iio_device_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 0x7112e2ea devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7d828d11 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x82e27213 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x82f2fd62 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8ce04dbe iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x95b1009d devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9aa8dbb2 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9d9a233b iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa4064a8c iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb205fcb7 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb23e66f9 iio_validate_scan_mask_onehot +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 0xbd2efc99 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd2c1174c iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdd493c91 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xddb33a53 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe75d0fd2 iio_enum_available_read +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 0x7d30cc08 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x8dca4709 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x9964d4cf cyttsp4_pm_ops +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 0x15562d87 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xede97360 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x01e00973 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0fb66362 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x13e56cf0 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1c5e1429 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4b616456 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5a9defe9 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5bb83b5f wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6173b7d7 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x64df8bf1 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcd4a09ed wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd889da59 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf1755be2 wm97xx_read_aux_adc +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 0x1a10a836 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3403584e gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x44282e65 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45aba339 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4d229ad0 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x620787c6 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7c4005d5 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x81a5b242 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3eddbd4 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa65e9d2b gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa9ed851a gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaa87acc0 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb7c91f72 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe0179069 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe35692ab gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe5cb5744 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf5543e7e gigaset_initdriver +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 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 0x37d82ed1 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6afeaefb dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6eafb2a2 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x89abdbd8 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9a7358e4 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 0xde34d229 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xef8410e7 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf0b03c15 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf6c3d386 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 0x30e290d3 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 0x122551e5 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x17de2c26 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2c00555d dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x407014a7 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x4ed9fa72 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x891e1ce5 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8c9efab2 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x4399ecf8 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x94833fd5 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 0x29028020 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3553cf0b 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 0x4a2407de dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x508daf17 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 0x8913222f dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x94dbdbb8 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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/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 0x42d1207a dm_btree_lookup_next +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 0x65b4773d dm_block_manager_create +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 0x19ecc55a saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2056e511 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3908b680 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3a2c9bd2 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x498fb38f saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4c76ae97 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6714f30d saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc0164d84 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xcf199cc9 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd330feea saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x019035a5 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1a4f6517 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x42ce33f6 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6eafba60 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xac5674ac saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf4144bd7 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfefaf04c saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0eb13fd4 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x18aa3431 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2c007066 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3312f74f smscore_get_board_id +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 0x454244f3 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45c34941 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5450c6f2 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x58d25162 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8151557a smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8d539ae4 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8eaa98a4 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x912f61cc smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa6dd2f2c smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc1764b53 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcc46529f smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd4f9224c sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xebe388dd smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x173dae85 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x913f5000 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xacf2b4b7 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 0x591df2b3 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x02962208 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x09e2d772 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x29a308e6 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x31b90fb4 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x45f1117e mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4962984c mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4dff8973 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x619744df mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x66c2c7ec mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x73dc394b mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7b909c03 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8fab378d mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb583586e mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb997e7d0 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc4c9432d mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc837eb6e mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc8ddfc93 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xec08d9af mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xee1a095e mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x00dfd1da saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x066af56b saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2c701b57 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x36171723 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4108eacf saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x425a937d saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x50e2ed83 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x54b98861 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5cbd1b18 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6a219445 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x75f3db76 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8aaf410e saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9ca8df26 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa894b52d saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcb3c03bc saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcf8ee9e4 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdf58f58f saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe7f6cc7a saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf6a47882 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x009ea2b3 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3993b066 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x5881bd1d ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x5d0c0748 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 0x7b170cb3 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb6ef54e7 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf59b22d0 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x5ac58996 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x7a795a39 radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xc40ec86a radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xd79c4154 radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xeabfba1d radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x12fcca81 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x56b026a5 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x04f89873 ir_raw_event_store_with_filter +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 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 0x8886f15a ir_raw_event_store_edge +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 0xcefcc15c ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd2715bc8 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd72e5500 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xef4d549e ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf27c1ca7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xae10e952 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xed891875 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x1821ad42 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x4ffee374 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xcdc54c27 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xf8ee0773 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x21faa26c tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xa645c8e0 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x6ddebda0 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x60007cd3 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xcf277b7f tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x26a9d121 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x455f1b51 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x26b5f645 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x01526ba0 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0c90f0ae cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1815f627 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x37b4c3a7 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5e12d6a3 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6cbf433c cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x743a2e8c cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x96792f45 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9bc26e1a cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa695cb06 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb4708c19 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc5dc16ab cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc645261f cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc8f717f4 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcf0723d5 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd5fc2a0e is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdf445a87 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe9740daf cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf32a7cf7 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf5e9d671 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x786d5dab mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xc5b40d67 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0bce8eec em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x255b7ec0 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3bcb2d93 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x412fb43f em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x48736eb7 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x58126c91 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x788915a1 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x824b305e em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8fb20ff9 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x935bbbc2 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa206edf4 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa9bae771 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb0a1546e em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbcd4655e em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xccd2c3f7 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd3890c77 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe01eda7c em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xed854bb4 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5019cf28 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x73147a2d tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x77e3ba80 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8b983990 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 0x1e1fa885 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 0x940e1aa0 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x94a2b07b v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa7c59bb7 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb67bbc48 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xdef589fe 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 0x5207fedc v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x59002254 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0288bac6 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0ce6c464 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0df9f4f3 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 0x1899939f v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x480e5170 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x57d2cf64 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x589b068f v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x595639ed v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5be12633 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5df1ed46 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x719ba45a v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x76432d9e v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7a682883 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7ace5732 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x81bec2c0 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9b85b750 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa32f12b0 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xafa0cbb6 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb3ac1c7b v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb3f4c30e v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbd283d38 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbfb42ff6 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc004bed7 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd5af596d v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe9b9f149 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xebbc85fe v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf9cf3567 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x012409fe videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1431f1a1 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2835124c videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2a2e9c52 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x310a67cf videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x32cf0627 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x32e7cd8f videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x46a5f200 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x55226d48 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7003809f videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x72f30068 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x78565ef7 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x79aa6eba __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x79bd5970 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8976efa4 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb06a9a33 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbe4bf9a3 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdbc6445c videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdec531ee videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe199a1ac videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xea668860 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfa4bbfd1 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfb58c902 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfba14ab4 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x43a8035a videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xabd79020 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xe4c69292 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x13c9d4c6 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x32b8bbb7 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 0xda696fc3 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xfd1b90db videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x19c46e02 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x368f4e16 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe2f69f88 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x04079f65 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0eea6605 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x136d37b6 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1b104401 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1f69a42d vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x21f298d7 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2261bca4 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2a66f2c2 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2e6cdfd1 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x421ced54 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4d3a4c1f vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x599eac96 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5cbb674b vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5f44e896 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5ff564e9 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x621a8647 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x630171d4 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x66019be4 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6a3e06af vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x73e3c80a vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7c4bdf50 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x810f4a25 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x843a0a17 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8a7d9fbc vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9499b852 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x98016be1 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9fb7aeb7 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa7845626 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaa1d449f vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xac9eb305 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaf3d88fb vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb546026d vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb8ddbfd9 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcc45d6ab vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd0f37f3d vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd95a1269 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdb51819b vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdfeda82b vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe663c126 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x12d21b2e vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x4238119c 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 0x7ab62b03 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xb2a9e423 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 0x1f240916 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x5713f61f vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xb3fa945a vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xeec592a0 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xe0ae9dac vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x05723367 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0a5626f8 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1303a2eb v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15868332 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15eed53e v4l2_event_subdev_unsubscribe +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 0x3c2ee5a2 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x40eabc10 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x57de235b v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5adf6277 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5eb6b96c v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6001fd12 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7d454480 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x907fef93 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c2191de v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xad728e28 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb46db3fd v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb96241de v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbccb0d48 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbfddb919 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc02ebeb8 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc61edb7f v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe3a581e3 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe50670ef v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe6d94a79 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf38778fe v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x5ab45977 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xc530220f pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xed9d1846 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x15aa9486 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x6283c84d da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x6de61bff da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd7b4596e da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf76a4f8c 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 0xab913bb7 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xacddf2a4 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb19f233c lm3533_write +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 0x2bbabeab lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xad47f234 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xc496012f 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 0x1dddf384 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x70cc6d59 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7221ccf0 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7769c80d pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7c0bde76 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7d49c7e4 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaca0763d pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb6fd80c8 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdbfc889f pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe2ffe93a pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfd867fca pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xeb4e7e3a pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xfeb627d2 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa674d82c pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa90b9912 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb42e6791 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xef1b9cba pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf6f84d47 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 0x0c09e068 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x22b7e174 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x33529b42 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3675e665 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3d38ab60 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3f974356 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x412da1f8 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x434b9fda rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x43fb1985 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x623234cc rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6db9da5c rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7724f832 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7901a8ec rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8223ab63 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x89336cd1 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x92012098 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x990b3a89 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa8b61ff6 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdc780677 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe19de5b6 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe890afb2 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeaf21a7e rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf6fb5525 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfd3f8c2b rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x135682b0 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x39b4e2a8 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4b35d5a7 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x66f341b4 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6d24c9c1 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x70d8a587 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8b4dab05 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x98941cc5 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa8ab6c5b rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc34def15 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc51b3077 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd7c5cb96 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xec449282 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0ce04a23 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1062eec4 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1cd19aed si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1fa48154 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x25824656 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2cd98974 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x39622909 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x46c0270c si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4917eb3b si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x49659c9e si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4cb7e792 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e77885d si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x50206f09 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5297e6f6 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x57731e90 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6609b2e2 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x71d81fe2 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x74001a57 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8e0fb341 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x974754b7 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9940a74e si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9b4c5d49 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa2757ef0 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa2f86248 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb3944bf5 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb9387987 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xca9fd93d si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcb8c4017 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xda794c3e si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdfc4d6dc si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf4cb5c7a si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf60d15b8 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfbadd917 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfef7a1fc si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x145cf4e6 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1d6c191c sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9c6e1eb3 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcea6c854 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd832a0ae sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x184b4645 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x873ccaf6 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x8d66cffd am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x9e989feb am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x04fb0318 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x33e3e90f tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x4294dcac tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbaabeb2d tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x01be1b4c tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x3fa5953f tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xbc712e21 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xdfae61ff tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xf2382529 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x17774c8e cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x66497864 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x6c6b4429 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xfb81341b 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 0x3301009d enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x44222cd5 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x63b1362c enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x70bbdfcf enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb74b4325 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb89e8c8c enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd6242598 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfbd8f607 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x37569839 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x60c1a02e lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6e957875 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9b52c965 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa20d0b74 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc2146196 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xefb2f2b8 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xfb668270 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x05997da7 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0f5156d9 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x11318637 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x19d3b9be mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2f36044f mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x56fb828a mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x63974434 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x65a8892f mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x85bdffd5 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8a5e7b64 __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x95fe2c54 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9830fd34 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa76c0b34 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb0fc8fc1 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbfab4dab mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcc80119c mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xda27124f mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xddf526da mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xde930670 mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe1e13fe8 mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xeb9da9e6 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf80006f2 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xfae0e7b5 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xfd9e194a mei_cl_register_event_cb +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 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 0x2e641b83 vmci_qpair_peekv +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 0x5d147670 vmci_qpair_enquev +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 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 0xcedecc45 vmci_qpair_dequev +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 0x39f651fd sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x439794a5 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x716661eb sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x73065329 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7c5bf3e8 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8be9db87 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x96d99781 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9ac0dd36 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa5b06d0c sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xca20a993 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd152b326 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd689de28 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xeb1e7570 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf936cc53 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4049a61f sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4a913f27 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4afb35cb sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5714e402 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6820ada1 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6f53866c sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7a8ca70f sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8e1c8141 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa2583afd sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x4a727676 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x755b539e cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb76c53e0 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x1beb4e9f cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x65b9054f cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe8128119 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xc4218205 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x3d02c9d6 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9414d998 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xa31ad41a cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1743a4f8 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x19a9d3d2 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1af08310 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1df7c80f __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1e6f73d3 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x22674c6a mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2e78c9a1 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2f87fd8f mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3d63254d mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x471df23f mtd_get_unmapped_area +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 0x6de339fc mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x716e3ec2 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c1db7e6 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e091175 mtd_read_oob +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 0x8aa29d63 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8c5db6f4 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x97e51f61 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9b181388 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9e359477 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab811651 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xac544232 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb05d3aa7 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb09a1f1a register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb8e6090e mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9243bea mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba0ca66a mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbe2d2a6f mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc9cf0163 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb328c25 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb8b66a0 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd96390db mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xde5aac30 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe37a1cbf get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe6a165b6 unregister_mtd_user +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 0xf65fd2b4 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf969d2c4 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x22a5f186 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3d6885dc mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6433263b deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x87c0e50c add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb8cbe10c register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xbbd6cd20 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xd51f9ebe nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x9c4309b0 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x2011ffb6 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x71b71323 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xfb675fa5 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x11965812 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x23f99d1f ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3263bf76 ubi_leb_write +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 0x464c2fdc ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x46d88faf ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x67f0066f ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7f0f9a7a ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x83eb421c ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8930f119 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8d24135c ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb8b2a201 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd63bbf5e ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe199cde2 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe44d58f6 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x10e9c683 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x319e7117 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x6cc46df4 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x9954b8d8 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa3630137 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd0ccca74 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x12ca6940 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x14786224 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3da71958 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3e447193 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x42bb1a6d register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5bc97f68 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5d84b385 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x886febaf unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x90d60874 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x93600240 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x958b69fd open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x95cf203b can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9641f71b alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x96a5f2c1 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x98f66414 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc39d441a can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe513d151 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf9902dd1 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2f16d69d unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x30d0f570 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x3cb688e8 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x6d76d6f4 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x25a17291 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x919ee01f free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd3e6bf7f alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfb3a9071 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0145545f mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04365451 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04e4c89b mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08267e42 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08cf2d71 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0970a0c4 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a23a6bf mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a31b243 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c944100 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x122885e5 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x122cf16f mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x134072f6 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14749e49 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16bc8eaf mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16dff72f mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a66aa77 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1aacc17e mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20bc067c mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22dd8bf3 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2344f475 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x237ed216 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28b12e2c mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b80b011 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2da257de mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x301bfc3c mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x302462fd mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33f0b535 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x345b55cd mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37344894 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3889a928 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x392f9a29 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a015063 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fbfb9c6 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x488e40a2 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4924a9e0 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49350346 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x494fb9d4 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4af22ff4 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4df5de47 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52111abf mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x533351a9 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b426612 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b72c513 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bb9e12f mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bc51ce6 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ef47945 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61e06729 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62c4961c mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x641a1edf mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6653b69d mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66b06dee __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x676e0ae7 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ecd7fd3 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f1c9b63 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70915d8c mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7763b2bc mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cda5bbd mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x806e07b3 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81229bae mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81ba1430 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8352e02a mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83b444a1 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x866ada88 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8812f6c3 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x885c0bf4 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a540823 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f9456ca mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90d052e5 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91ea9a23 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92dfb0dc mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9762f9d6 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ae17a59 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d4a4fb0 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f87ba73 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f9e0af0 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9fa02e6e mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9fb226e0 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0763ac8 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1015055 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa167a90c mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa32b2002 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3df8dda mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa45dda7e mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4abdb48 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4c2776d mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa542ea72 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9254557 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9d6a80f mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad4a635b mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xadb71271 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb01e693f mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6308625 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7369c60 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb14ae46 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbc25d67 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf8eecb6 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfd4100e mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc123f23d mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc13a7505 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3570f1b mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5d522c4 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc820d773 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9e2c19c mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccd20901 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce47ad14 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce84f638 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd373a666 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd41bf558 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd57dfbd2 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd720da2b mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8a1a35a mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb8cce69 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf368a24 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe109a61d mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe726f121 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe74fb7e7 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe802af73 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee180210 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef224eae mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0a01e3e mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1c38991 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf62f7978 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf793370d mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07de9dbe mlx5_db_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 0x194b9b15 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21942025 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2911e5a3 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ade091a mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f931394 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33031adc mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x341e023d mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a4f7075 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f99aecc mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4fcbe92f mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58a2e452 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ae9f58c mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63f8fd48 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68384d8b mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6bae179c mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71e262f7 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7639a927 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8fd1c466 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b3d94ec mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c3e74c2 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa50e2f8b mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb05c60c7 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1238e8d mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3bb6e65 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba4138e1 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc81a1661 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb5c7104 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcbb02861 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd2667f33 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb9f4b4b mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf83bbf1 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe634b9d2 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea6a366d mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee743dee mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x16851d13 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xcd071244 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd307c9a7 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xfc7c645c stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x1f993aec stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x86941eb6 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd850525c stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0c4dd76a cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0f355cd5 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3a4fdd29 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6ae3513b cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x768312df cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7c13ca4e cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7c47c8e6 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8e84d679 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xac432097 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb66dc5ca cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc120f193 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xcac6688e cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe2c70949 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xeff4dc2a cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfb5587c0 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0d3e2fec macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x10a3758b macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4ecf9c57 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7dbccf32 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x95994667 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x23f6206c usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x6a576c23 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x878bb6de usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xac13a4bf usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1ad5cfad cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1af5c54f cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4fcd3a82 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8ca9aafc cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa54a1105 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xba249174 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe684b523 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xebad25e3 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xee838257 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x432522f9 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x46208908 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x53da90ae generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6d5e7ebb rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xab1a863d rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe3494e57 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x01b71ba3 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x08da3858 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0a58ae8d usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x10b2cc6e usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3c6094c9 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x429fe0f0 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4e1f9479 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x65202bda usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6d4fef15 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x70441e0b usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7573dcd4 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84be1942 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x863c4415 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87a381b6 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8c1d30a1 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x907aca83 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9322c9a4 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x93db4af0 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa149f168 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa9b93b0c usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xadf09aca usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb929fe6f usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc13e8d5e usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc4b34c42 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc8120418 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb443003 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xced29451 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd0df62df usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd6086c4f usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdfa91f47 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe7211789 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xef3a024c usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x21cc4828 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x75fe3e2b vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc3ca6d74 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xeccf62ee vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00965b2f i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1889f4fe i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x38bd6cbb i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x38fca070 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x694bded4 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x703139ae i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x72d531d3 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x936ffcc2 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9985052a i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9b12369c i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa1a489d8 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaaa34516 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd1982bbd i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd4724b62 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe68bfdf8 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe9482597 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3c992edf cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xb84ed708 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xd83d1db5 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xed013f07 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x1f5a4f2e libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x0673f3c2 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x537dbb71 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x7ffaa087 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8e6d3903 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9ceb604f il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x06feb41a iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d89383e iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0df973d4 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x151ba5d2 iwl_read_eeprom +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 0x4020d333 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x424a1d1b iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x43b503b5 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46f9cefd iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4ba1d8f6 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4e9a1352 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x56bf1176 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x59d8c39a iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5da25d98 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7fdc9553 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x89d7ae27 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x938a0e3b iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8e3fa2 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa05a7275 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa13c0b9b iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa195b3f3 iwl_phy_db_init +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 0xc734330e iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe109ea34 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfc0ae23e iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfc77be35 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1d5afee7 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2e7d3189 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x33134f28 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x39de5fc3 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x630e44b3 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x687fdca4 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8c504ee2 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x992a781e lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9b33cb12 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb8259e8a lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbded7d16 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xceb39dc5 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd753ef7c lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdc987a4d lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf84eb088 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfcb75ce1 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0444cf29 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1121809c lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2b623696 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x510e2b63 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xab3b6611 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 0xde22e5b9 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe03e6180 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xec8aec31 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00f9e0e2 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0376f66b mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x25a06072 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2b543831 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 0x329a23bb mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x399585a8 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x56e62347 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5d7b838f mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x75998648 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7af6629f mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x93ade6be mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9aad5e70 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb345e883 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb4471d6d mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcd817048 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xda0d6307 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe6655271 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x19576df3 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1b2fa45c p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x207b342b p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x26ff5c92 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x436e6aa2 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5d2dc457 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x601ca9a0 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x663cfa70 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbc1b95cb p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0e4865e0 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x2f0ad871 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x60b5ec6e rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd86b84f1 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x031a98cb rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x072bc85e rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x099beb6e rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0a89e9a4 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0c269ea1 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cf55372 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x14ef0211 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x27b398a2 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2dc2df05 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ef76c4a rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3f540d61 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4392eb12 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x54a55b52 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5c18b6c2 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5cf5cdc3 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x62036af9 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x62a495b8 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x670eb40a rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a1dc951 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6babccde rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x925cb848 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9418858a rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa041fb7e rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5c113e2 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae1ab156 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb95128e7 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbad9ad24 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4611a88 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd0ee4619 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd23c7ce2 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xde9fe1b2 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe04c776e rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe465983f rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf3b30313 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf6bedbf0 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf7a3d7b3 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf8047405 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfd3a98d8 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x125bb763 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3365b82a rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4f7dcb1f rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x59aada7a rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x59b9e219 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x63b9ca87 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x712cc183 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x77de9e54 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa187e9a0 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbf243d1e rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcc2b9a8e rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe3174577 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf910b9a8 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x017e0d02 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05a2f0e5 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x13a6f83f rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x13db4e77 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x179570a2 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x185a218e rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2072726b rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2a093936 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c1e3e5f rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x32f8602d rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x33c8908f rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x33cc1cc3 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3a5a2c4a rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5080f053 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59f747b2 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5ad02673 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5d4ffa95 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x63cb6c58 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x669d7ee0 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7225dfb4 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7cc28cf3 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7fa73516 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x837f2934 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8426c954 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8b668fc8 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8e5d77ae rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x950e21d2 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9535a327 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x955420aa rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e161bed rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa24543dc rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaa34e286 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf8d8c1c rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb27c3191 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb5251c46 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbbc8b6a9 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc25341d4 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc5f4f1ae rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc7699f47 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc836de9b rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd262b5e rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcecf7bb6 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc95b987 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe3620afc rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf450dfa1 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf6a29b86 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x24863dc6 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xc37f8486 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe6b17ded rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xeab106aa rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xfe1f7a93 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x55b36bd5 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x695a35f9 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb9e55310 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc28d8723 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x05537e37 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x08ba8c65 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0dec7cd9 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x10bb8f17 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x15c64d4f rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x382fd36c rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5e2abc8f rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6aef1aa5 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7037b4f8 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9413ad7a rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa75b991c rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc0e8980d rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdda1bfda rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf5aa33dd rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf75e7330 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf877554e rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a441942 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9c7a8fc7 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbb812a70 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd332fecd rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1a83ded7 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x443fe4d2 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4651dd6c rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4c9ed2a3 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x52c4284d rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5a95df41 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5ed45b07 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x612e50a5 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x61c9709e rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x66e1cf9b rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x68f26d26 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 0x72b1483a rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8422845e rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x89222f88 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9f927ed0 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa05c804c rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa15c14f4 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa584ae71 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xad9c6e04 rtl8723ae_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 0xb65d1fec rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb96e3133 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc3dc75e5 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe2752ece rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe6d81d05 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf53509a2 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf77a4cca rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf8bc3c17 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x08e703df rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0941736c rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0a43f677 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x101e87f5 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1456a752 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1d832e54 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x229bf165 rtl_p2p_info +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 0x32ef37a3 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x356b845b rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x50b32c40 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x582c183a read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x735201d2 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8f3cb0f6 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbdbf6fb8 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcb342a69 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd4f5113a rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xda40b087 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x5e6c8689 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xca005dcf wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf5de63a4 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x02f1a61a wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04caec2c wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0687d9f4 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0d6158e2 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x142aff18 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x14f23cea wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2271bc38 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2ab050cf wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2b3f2a58 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x40f99459 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x47adbbad wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4952398b wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4b3c0ec4 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x57c3f3c7 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6caf3a01 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6e0fa79d wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7248aa82 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7392afd0 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7cbf0957 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x806bce37 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8156ea22 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85cf5dfe wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85d3db0a wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8c37b791 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9a555c87 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9a6bc9ee wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa15c2481 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa1bd8f3e wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa54465d6 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xabc89259 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb60b08de wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc58a4367 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc61962e8 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca663be9 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcae121be wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3b1da00 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5493130 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd73b302b wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb7eb26b wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe33af8a0 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7f9553a wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf477a36c wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf5c2c963 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x6a738907 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x9231ee80 mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xaa96995b nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x07b186ea nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x24f07dda nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xb51132c1 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xcdbc844f nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x037454f8 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x20b7502c st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x20f96f15 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3bfc16cd st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3fb217e9 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x56652afb st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5e20754b st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x70f86772 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0a7894b1 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x5cda92c7 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 0xa577d838 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 0x062d0374 intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x5c063336 intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x91e4eb4d intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xffdf592c intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x56e1d27d asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x77a68548 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 0x8b165e61 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x98b4206e pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe3cf5234 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 0x18a840c4 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb89e344e mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xbb350a84 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x090dbca8 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x6eb0f904 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7488ac49 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x99551cd0 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa2a5cdde wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xbee4b094 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x109aa0a2 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b242d03 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x132b2989 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x14f46053 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1721cb98 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18c9d45b cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1a5375fb cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c2edf6e cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2531b8cc cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x383195a6 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x46e8d8cd cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5334f513 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x53efc976 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x569bd2a9 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5a77c245 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5cf11ea9 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x698e9016 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b26714f cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b88ce8b cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6bd2ec29 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x75cb6436 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7ac73363 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7f0ec015 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8011f80f cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x930f2c2c cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d2c569a cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9e3ca2ca cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9eaa17df cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa00cbeb9 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa59f94b2 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa5cf71f9 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa79fcfd2 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba7563d8 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc44013f5 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc813857b cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc99d5477 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd13c698a cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd76a1c5c cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd895081b cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd8ee14c3 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeaa2e4ba cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeed4fe89 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf384f4c1 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf5ba3d41 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf6f4be66 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf7de5a88 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfa99069e cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x09ee795e scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x47d9f336 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 0x5e69cc73 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa204397d scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa5242abc scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xfa888a93 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xfe5a3a36 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x30ae4f6f fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x31a78d20 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4c28d444 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x504f8c85 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x50d7ba89 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x52a19ecd fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6658e4f4 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x827d5331 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8d621625 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x903954b6 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x94b06cfc fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9a3d7cd5 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9cbaf1cd fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa1309c06 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xde193597 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf9744032 fcoe_check_wait_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 0x020e7d93 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0424f8ef iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e5bbbfb iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e9110e9 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1703d2bf iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a757abe iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f59c01a iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x218fe572 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35850d30 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37c12ee8 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x405d3da2 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x43efbfe2 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ae55705 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50d20dfd iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50dd5b73 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x543ff009 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x584f143b iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5e37d488 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f329f94 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64630991 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x77fdee2b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7af05bdb iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x802e0102 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d8222c7 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x957f2a54 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x962b6e36 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4d09572 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbcd08254 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbebf72ba __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc903042e iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb4cbdba iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xccff6a76 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xce91c454 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd302748f iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd303388b iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd755a6b0 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd02c4b9 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6bfe422 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xecf57343 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf5f98bc9 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfb9e5ac5 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff6f105f iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x07270a83 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x09d28542 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1326dfad iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x28342fb4 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2db41f9f iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x44ad6752 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x56d78796 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5908e733 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x62d33909 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x69f2e3c9 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6dc64aa6 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9ce73f57 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa5275100 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa64daf61 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa908e5ec iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc962c27a iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfd95628d iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x012e1c60 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0265b512 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x07d0122d sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0d25e0bf sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0f3ea568 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x162d75f6 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x553d7574 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x57e56c04 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x59a2c762 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5ad3fa32 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6106c85b sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7ecc5aee sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x81cf1753 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x947aebd2 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa39f1ddf sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb48431f0 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbded2330 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc723eb19 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd2aed898 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd39bdbe8 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdb161e67 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2b03708 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf27b7099 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf4e1372d sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00e84336 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04b79809 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x082d0077 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ac1b870 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x23edfee2 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x31adc500 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3776063d iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x479421c2 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5c8e884f iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x60f9cdab iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x63e0f022 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6751b56f iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6b442ed5 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d02e959 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x761833d6 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7abe362e iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8eda31b4 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x91e90466 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x947d745f iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa0d20d82 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa1c3b65a iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa3f1fecf iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xab407242 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xad21813e iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb5c8a987 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb76ef773 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc88f5973 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd11d98e0 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd4029d7e iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdceb8963 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdf9b4a11 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe6eb5b2e iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe83e4eb4 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf1977321 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf1b5f471 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf289c630 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5c255f1 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf6d0fe9e iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf96fa1b8 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff2f94b0 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x52cabf11 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x853b1b0d sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd1809438 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd9286683 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 0xf4570974 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x101b761d srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb8628148 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbe0a4916 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd0988df0 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd8438226 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xeeb8e454 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x3570e5ca ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x482248cf ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x62e57385 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa17c0c74 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0a2cc1cb spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0fc74dc4 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x51ec9017 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x96115c97 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xad03aa47 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x4935a893 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x780b57b6 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x91c5c25c dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd0538722 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 0x052606f0 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x05d72cb8 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x080cb3bc comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0d101098 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1279926f comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15a68c0c comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15b49077 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x182b17bf comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x184a1530 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1ef7f763 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2e7a38d5 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x43450df3 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4bc1b570 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4e06b1aa comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5df8173a comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5eb0b106 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5f8f1b34 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x68acf7e6 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b1f1af7 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x738061b5 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x81f910bc comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x89b70397 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9078f38e comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9deefd0d comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa175a018 __comedi_request_region +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 0xb7433213 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb650b1d comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc860762d comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcd22a413 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 0xeb053827 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf4c7dfdd comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf5031b43 comedi_auto_config +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 0x1926887f comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x5ac45c2c comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x88762d10 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd3d23479 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xda8133d2 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xe32c207f comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xed3a17f8 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x637d80f0 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x72d4fa67 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa1d9925f comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd2134ca6 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd5734c7d comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xfc7ae662 comedi_usb_driver_unregister +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 0x2c749bc8 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x3c91582d comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5c86f1ab comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x751bb276 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x95fa853b comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xccff3937 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xda43da54 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x4ad51158 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x2295efc6 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x888103f2 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0fbe199 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4bf04f6 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xef6a7ec9 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 0x2ab8daa7 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3fddbc3b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41de59fb spk_do_catch_up +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 0x6a49f935 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6a917cb8 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7bec1106 spk_synth_flush +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 0xabf8f738 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb0f3e471 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 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe2405056 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe40f451f synth_add +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 0x4d4910d1 int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0xd5ebea9e int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x06d8af4c intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xa52c5023 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xc8acdd34 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xfabb76c5 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x54248307 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x7825227c uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe5734226 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x6f3018ce usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xd0629813 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x92f5c6b9 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xfffbc933 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x2a07385d ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x32566cc0 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6906963b ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x74a7ac42 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x99319570 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xac5689bf ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x055d1d64 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x38315c35 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3a6887aa gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x430ae07e gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x49968761 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6a8a9653 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6db918ec gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x75eca98c gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x76741a6e gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9a901f7c gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa2410da6 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xad77a211 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe7861475 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf24faa23 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xfb6f0be3 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x0d0b53ce gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x5147cf36 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 0x1b0cc318 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x31e7e583 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x377346f6 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 0x14974295 fsg_show_removable +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 0x19510100 fsg_show_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 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 0x300bb4e1 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x359d75c1 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 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 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x83a94223 fsg_show_file +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 0x89a826f3 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8aca9f48 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8e8ce065 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x92df200a fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 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 0xa7e7ba61 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xacbcac8a 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 0xbe2bb8f0 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc89e8dc4 fsg_show_ro +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 0xdd374905 fsg_store_nofua +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 0xf5970e1b fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0d6a8762 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x19f3b247 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3108f552 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4c4f7bf5 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4dd1671b rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7079d05c rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x727e37aa rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x767ee571 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7e928f55 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x83a81762 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x99d3076d rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa3e04342 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xaa2c08c2 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb391ebb5 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdada6015 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x01bd5f5a usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0e6d870e usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x11a52cf3 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x147dc5a1 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19a2dc61 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19d30931 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1beba5e2 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1e01a88a usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x27859434 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2f444af4 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x344a72b4 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x46723b92 usb_add_config +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 0x6a1bbc52 usb_interface_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 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 0xb230d3e2 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbba0f7c6 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcc283e03 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcfda1753 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd79f551b usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe8db8714 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe943b8f0 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeade137c usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xefc0151c config_ep_by_speed +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 0x27ff782d usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x288f0b47 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 0x85af2120 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x955fa203 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa12af820 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa5c08740 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb3ace5e1 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb3b18c70 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc94c4c2d usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd0e98592 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf231ef6a usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x2482e3ec ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x3d61607c ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2ae2fafa usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2f57d884 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x652fccdd usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x85fff87c usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x974d8558 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb71c6f37 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbbaa96b9 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf71725ba usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfbf6f635 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 0x72fd735b 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 0xf75e54d6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x5a4c4e7e usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0a5e2090 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0f57ab8e usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x12985f33 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x18dffbce usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2951cf6a usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3abce66f usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x46c5512d usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x485af4d6 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4d0a7017 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5067f3f8 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x562215dd usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x755c8021 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa37adb6c usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa71496eb usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xac70e0e8 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb0bcb65f usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd4ae5550 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdd001eca usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe056f980 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf182b375 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf4d91b98 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x16e8151a usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x16f49162 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x186aafd9 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 0x3b81537a usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x43bc3a4f usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5d3ba622 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x64615128 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x670de230 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x67e8e747 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6a7952ca usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x70e5dbe4 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7b1b2a0d usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8664ddc9 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x910bdc25 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9886a9b8 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbb9e0230 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbd022c60 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc50ea22a usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xce4464d9 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe2b9727d usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xec7fb4ba usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed16f8f9 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf647f558 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfb235855 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x294c34d3 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3db4c8a4 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x59afe266 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7586e1b8 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8c4d4415 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbe9844f8 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcf5bdb3c usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcfde55ad usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe0e9c091 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe82e54a7 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xfe24c974 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xffb26b75 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x705188c7 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x73b054b6 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7b8f19f7 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x8ae09a74 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb65c7a05 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc68949f0 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd308c11c __wa_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 0x0feefe2f wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1d2cbfa3 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2b8cbfd3 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x374e313f wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4e57f398 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x530f6941 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8c65d6b7 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x93178cd0 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x941661a6 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa29a2b02 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb847711e wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd2de1183 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe7471710 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xea128626 wusbhc_mmcie_set +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 0x3a894605 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x3bc7d63d i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x5952050d 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 0x015b5970 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0ca96f64 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0e265210 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0ec87579 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1a631bf4 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2614060e uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2904cdd9 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x297957cf uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2ea43211 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2ee1fde4 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2f3a82c6 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3bde616a uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c5b1ac5 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x416fb1cb uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x435255dd uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x459cfb6a uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4b07b393 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4c422d6b uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x557cc3e8 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x715cfe06 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7e728fd5 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7f72fb0e uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x902e8e76 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x905179f5 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9082ea8b uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x99681446 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa0051f75 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa0e5f8e1 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1a2410f uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb1743d1f uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb4138ffe uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb8cb200e uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb9f8e9de uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc38fca71 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc7e0adc6 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe95d7c50 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf72d899a uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xf91e3993 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x1440602d vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6935a5ca vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x79b24284 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa434ad40 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xbf0f79da vfio_register_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 0xc4916c09 vfio_add_group_dev +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 0x03e14482 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0ce60732 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0e8938e7 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0ffc5422 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x139d79b1 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x16a3bca4 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x190006fb vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x21d11b68 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x277dd77a vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2d12aee3 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3c9b2892 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3dc402f8 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x422ddeea vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x46b885e7 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4e71507f vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x53f55ee2 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x54a7889b vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x60b9ae15 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x61f994f7 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x64c587df vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6c0ea93a vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7fde1bc2 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9860c841 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x99466b4e vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcf483da9 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd5f074dc vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe269a6d2 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xec567a1c vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfbccd602 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 0x17405ee1 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x259b5a43 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3273fbef ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x454240ab ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x86cc8992 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x899cafe0 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbdbb0555 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1d9f1b4f auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3fb3420a auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x45f837aa auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4963768b auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x49a87385 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5aa496d7 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x826f622b auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xaf48e130 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe423b0d2 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe5367159 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xfc67a76f fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x106c2119 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x9d83ae3e fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x3fe3d1e3 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xb928e6eb 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 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfc532c47 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 0xaca2fa02 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4a3b02a2 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6c68ea89 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7497aca6 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 0x0cdbbdc6 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x33ff621c nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x46b4ae0c lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6860fc54 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x78a5cb5a nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcced93a1 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xed3137c2 lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01f26371 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x038173d0 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x099bdd4c nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09ff3ef9 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c453924 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cb3d087 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d3eddb2 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d4115ca nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1035cf5f nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x116d9a61 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12915261 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17ccbbfb nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1afd78b1 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b59ae17 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ef92a75 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x215269eb nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23ce7b51 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25efcfa0 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x269b2fda nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27799641 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x297d61c9 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a33f493 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c845cc8 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2df64275 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30db8844 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34afc3c0 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3760446b nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39ba593c nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3af84be4 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3be9caa0 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d67ad9a nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e39ba9d nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4283f439 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45c15888 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4bad4008 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4bd8349e nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f33e092 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5075d5b0 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x515efc2e nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5283cd55 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54e6561f nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5509a7f7 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x597c30fa nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b439343 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bc1344c nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61930554 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6313cb85 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6641f112 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6754f0be nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f758154 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x711dd016 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7260144b nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72b91194 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73d1a6bb nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74267245 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74c502f5 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75b175e2 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x776d8588 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x780bd416 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a011439 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a79006d nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c680732 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d801ec7 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e5639c4 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80ab4377 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8135db8d nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8332aed5 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8443ac8a nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85d7a305 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90000299 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x954728f2 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9555e978 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95adf15e nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9921c1e0 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x993bf72c nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x995370fd nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d8d88dd nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9dd22496 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9dd51342 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ffd78a2 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2172113 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa319bac2 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4ca81bd nfs_write_inode +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 0xabb5eb39 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xade0f201 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae97d3c6 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb270e6a4 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb27cbd07 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2d18de6 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5a2312f nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5a4b9c7 nfs_get_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 0xba1da157 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbadb43d4 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb5b21ad nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb62d457 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf5958a3 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfd421d5 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc079011b nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1d081c1 nfs_fs_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 0xc65367c2 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf927143 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd042bf81 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1532a02 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1755809 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2b684da nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd315d705 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd37202c1 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4ccd577 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7cf34e0 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdab58a65 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcd66958 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd735ebe nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf9f53f4 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0e56a2b nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe67e7e41 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe72ae4cc nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb6a3539 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2561c6d nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf452b380 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf75296bf nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa07bd1a nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc2a97e5 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff5490bb nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffe530df nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xc6b77b8d nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03e683ac nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07d90e42 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1005a030 _pnfs_return_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 0x26edf340 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2788b081 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x32acd242 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x32df9b97 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33a3c454 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x396aa3ca pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dc13297 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3de71038 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x485b3b46 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4861ca4e nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ab28133 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ba4f0de nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5c6be533 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x624405f5 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63d190d3 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x64bbb6bd pnfs_destroy_layout +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 0x6a6b5f20 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7100484c nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a51f405 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b004cc3 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c2f0d6b pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7e9277f7 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x843bda3e pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d6b63f5 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9192b355 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9467231e pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fa2f756 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa8e86b0a pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab722625 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xac17b1b3 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb275148f pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb44e8f4a nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb57a8956 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8fc10b0 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xba84246d nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbcc93e7d pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc1a988f8 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3f314ac pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4f38cd5 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc757d1c5 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd36c5ac nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcfb4a1ca nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd200647b pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6e4b5aa nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb77638f pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb7e37b8 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe156df4b nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe88743af nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe8d9b3ea nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe9717ba3 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef050e78 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf24ea5bf pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf3b5882f nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfbfe2a40 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x647528ed locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xc55ff1a2 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 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 0x4a8ad73a o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x50b2711d o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7cfd5e24 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7ea93b9d 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 0xa56ce7ba o2nm_node_get +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 0xbbbd5712 o2nm_node_put +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 0xe7fb1621 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x06e62446 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6a2211cf dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9ddea740 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa0ec899f 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 0xed6c6e81 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf3bfadf3 dlm_print_one_lock +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 0x183fd681 _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 0x20d57b62 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x2533b72f _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 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 0xc6914ad7 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xfb891bb9 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x199e8e4c garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x34c78906 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x3b3bf1dc garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x74f3fb83 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xcd70ec0c garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xe1a25694 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x18c43a97 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x5542fdcd mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x68dfff85 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x931d6b5e mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xc557c3f9 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xf6f2a5b2 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0x19a9fefa stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x22d391f9 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x6d0f91e3 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xeece3b19 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 0xfc2925ad ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x16295357 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6d7a45db l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9fddc675 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa3f4db37 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb15f73cc bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb8642cce l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe04d1b67 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xfe7fd1d5 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x026b43d5 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0ab7aa18 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1c7655ee br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x56de66e0 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x74b63b92 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xacf9cb0a br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xccd64072 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xea4af7b8 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x3e54f006 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xdc84f401 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0209bb10 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0b1951ac dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0d0c4476 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d4bde1a dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21d4f38d dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2709a0cc dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3117fca9 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3b33e2a8 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3e865b92 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3ed30e73 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42db9e81 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x44578d3a dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x447eb22e dccp_sendmsg +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 0x4f800c07 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x567def97 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5ceb2a38 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5e5c0285 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6179a03c dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x645d142c dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x78614457 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b127731 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9cd34ebc dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb08dd496 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb60a1826 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcf53ff43 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcf5ec129 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd5125146 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd6ca23a5 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf33c595b dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf400c6f1 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe4ca70a dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0e9da0de dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1ea5faeb dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x25c4cde9 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8241c0c4 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xafb5f7f4 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdaf9dff1 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x88c4ba3a ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x98c8e3cc ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc991644d ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xef893e6f ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x0755cf48 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x492ec3c2 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x62fa9036 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/gre 0x00c23802 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x175de9ad gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x596f69aa gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9df5e199 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb2f80573 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x484996a1 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6488e7da inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x68e97c36 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xdd26c8ae inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xefa5693e inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfef92a94 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x20e46afc ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x283335d6 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4b4c0b1f ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x737b91e1 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x757ec2bc ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7f6f8066 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8ceaa29c ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8ec990e5 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x916e75bb ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xab9c2fac ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc2bb8f95 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd45ec9d9 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd9bacaa4 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe65b948e ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x6b20afab arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x2ebbc6b3 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 0x0b958a14 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x30f43240 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x5ee81e3f nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x860883cc nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc99d3723 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 0xb28b079e 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 0x1cbfeeb0 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x841faae5 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd077e997 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd3d8d178 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xfdd30ef8 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xba1e3211 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x4af323e3 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x4daa8b9f tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x90554a49 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd692258a tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xdc0fd689 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x23b39ea3 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x5a8ce760 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xff4f2132 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x02fa82e2 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x07c00dfd ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4bf00449 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xaab59400 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xad092270 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x6898daee udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x703d69cb udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x430f12d8 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 0x97d36854 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xafc21f14 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xdab67a36 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xdfb3aca2 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf51a3b9c nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2247d9b6 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 0x16429a66 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2b316a0e nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x32709bad nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4698392f nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe798dd40 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xccc21e05 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1036c90f l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1d2fb6fb l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x270211c6 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4b30a719 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4e7e2cf6 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x60722ce0 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x720290e2 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x78a42e4f l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7af4021f l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7cafc639 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x81714da0 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x898759ab l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa64a810e l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xadba2ce2 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbd5c97e3 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdf41d85a l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xabae7197 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x046cac1d ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x33afd28d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x48f8608a ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x61374c6a ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x77cc6b7d ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x792876fa ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8d58df85 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ea67951 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9de5d2ed ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9f503e0b ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa66a4d8e wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xae5d000a ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xba5ba61f ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc7c49e72 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc8da6b1c ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdbc0b6ce ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xea6a85a9 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebdf8959 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfcfc551d ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0d9bdc95 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3e1667fb ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x42c9f4cf ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x45c3f312 ip_set_put_byindex +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 0x8034e98a ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x87e65fdc 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 0xa0a26e71 ip_set_test +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 0xa785b8d9 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xae0a6a15 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb8943994 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xce4552bb ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd41eeb99 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd8e5490b ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xde370903 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xecbbdc91 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfe610828 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x78ecf3f2 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb41a4710 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb75c06a5 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xef499c6c register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03b2daa1 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x117de059 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15ec3242 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x180ebd47 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1813935a nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x20e13ac2 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x21208df1 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2648d8c9 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x266131a0 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27da50c0 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bc907e6 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bd285ae nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2beda32b nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e7adec5 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2f96b948 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31a169ee __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31c09d94 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x35171260 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x38d9b531 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a111ec7 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c109149 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4349735e nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x452a01cb nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x46cd7355 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a0d0386 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d790e27 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52881419 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x565e0778 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a6092e1 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60be769b nf_conntrack_l4proto_tcp4 +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 0x698589d4 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6dc983a8 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x707e94f4 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x731c3d14 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7516fe23 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77a98cd9 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7fdcb17d __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x893c965a nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e7d6608 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ff5e5ea nf_ct_get_tuplepr +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 0x9153c131 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93e3e1af nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97928d9c nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x992df42d nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f52fae9 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0ee0f5f 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 0xae189837 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2efeda6 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3e75f3d nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4ce9eab 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 0xc059abfe nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc07d7177 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2bf933a nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3753d97 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc750f2d8 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8e51d5a nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca2e766d nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb7f01f3 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce04aa96 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd238c958 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5006440 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8f2afd2 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc34cd38 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdfe40adf nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe126f6ef nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2bd7f77 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6935216 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7ac9204 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef65ba89 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4ffde51 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf51a78e5 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa7ab78e nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb27ac15 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfcb5001d nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdcc6a98 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfedc1488 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x40dbea02 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x18be81ed nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x024b8748 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x22339e25 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x23ae7ac1 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x24fdfa3c nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x332a505c nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4696443b set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x62bbd12e nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x727d6e97 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x75561b9f set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9a8cc02a nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc076c2cf nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x50413f45 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x19c7b2ee nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x67be8a50 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc681226f nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xd552d911 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x175ec0a3 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x4030a775 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x34a11c61 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4bf35b6f ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4edd5bcf ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7906ace1 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x85bb485a nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbee54d61 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf59fb55e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x60d06707 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xebd78833 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3b25f7a0 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x5d695a45 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x71e9cb23 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xbf8ff93f nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x00f75525 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 0x136cc630 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3199811e nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x410145df __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4cc08ad2 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xafeddd71 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xcf769ac3 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd6169b8a nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd8a8de29 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x6c1830e4 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x71813583 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 0x2ed39a05 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5e793b82 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 0x017631c7 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x073eddcf nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x135eea8c nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x177f37a4 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e9abd01 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3f92597e nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4079b321 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 0x76acac48 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7ac8d87f nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7ef1f7a4 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa81c5081 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb921e1ee nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbc675d39 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc08212fc nft_register_expr +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/nf_tables 0xee424ba3 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf4a65a45 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfedc4361 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x17712002 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x652a3fc2 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x68c594e5 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xaaa275f9 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xac317ffc nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd0a3ce30 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf352747d nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x70a08122 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xe021c2af nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x91242bad nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x019076af nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xa926eee4 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xd3ccfcfa nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x126343df nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x4177727d nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x7f5d73de nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x7f9fe21e nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa89f73da nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd4a6ec1b nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x09b5780f nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa200ba90 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xf499dec3 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x45d6e242 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x56bd269c 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 0x30723f8c xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x494941cf xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x52703c66 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7b0af821 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x898c78e3 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x975ea461 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa5c7a546 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7eb6c7b xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb516884b xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xce3067b5 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd88345a0 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe8a60e12 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xea16efb0 xt_proto_fini +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 0x40e94951 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x63495d03 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xd756ddee nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x65ca1583 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x9290f36e nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xd1386496 nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0696387f ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x13ec4154 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4f4b988d ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x59da04db ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9c834f51 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa3f50261 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd141d190 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 0x00fa57da rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x02c81e55 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x0fa21873 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x141f5365 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x14619e45 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x24bf2880 rds_message_unmapped +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 0x36a4739c rds_conn_drop +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 0x5b87552c rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x5be1fd60 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x63a7622b rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x74a3a165 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x75e323d0 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x7b336cdf rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa9e19b65 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xadb7f792 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc067854d rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xc11525a3 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd33254d5 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xe33cbec0 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xee69a593 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xf1d19f95 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xf5d765f9 rds_info_register_func +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x3397b4e3 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x3afcc454 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 0x0c471477 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6e754fc9 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 0xcfa1589c gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00712a46 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01ac01cb svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01c1ee92 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02fab696 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x037f2fac rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x041a678c svc_drop +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 0x0651c37a rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08da2c95 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x096c6a96 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09b5fddd auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a3c9f5c csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d1f79be xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d2f382e rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ef4ae8d rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12a234b7 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x142eb433 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1434a35a svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x144ac401 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x163c6fbc svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16bcb1e2 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1723c66e rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c974bc1 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2447fe1c rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x264b1afc rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x268cee4b rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28248225 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28778760 rpc_d_lookup_sb +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 0x29fe15e4 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b4a1842 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f3e979a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8192be rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3157cc23 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31b42c47 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x326252c3 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x341323b7 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34329e9d svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x354a494b xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x371a0b5f rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38d5448c rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a384a33 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3af31f79 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b72c830 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dec76f2 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43964a9b read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44cb19e1 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x480017b2 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4926320e rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d525dc6 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50ef2bec rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5140889f rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55e69781 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x565cf650 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57039bb9 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57088b53 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x587bd94b xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59a142c5 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a23b98d auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b8b782a svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c6f7077 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ca8c2d6 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fc021ba xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61049944 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61c9c475 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62bbe4e6 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63698e3d sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x636fe40a svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64e88d86 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65a3a893 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x679b42fe rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x693c6b14 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c7b682e rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6da9e17d rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e30a18e xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x705d5b97 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70e2be2e xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7109df43 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x716320b3 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x734a2080 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7745c8f3 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x778fa3e3 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78d43603 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7aa7199b rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d0fb763 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7da7a36b svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dec6a85 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e070ab8 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81f5d50c svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82c0a8fb xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82f9cde9 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x847c7b9d rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8515577a rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x860a1764 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x862698e1 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86591c57 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86762411 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86a55ae3 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x871c2d66 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87fc38af __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8aec97c1 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b8993d0 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ddbeef9 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ea63757 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x932b288b svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94e8f7cb xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9795290d rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x993c59b4 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a215613 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aa111b1 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b98dada rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d0b7d88 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d26cd28 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dd48301 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef08cac xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f69e818 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2a628a6 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2f82d8e xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa39a1f3b rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3eb216f rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa63d0926 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6a76ac9 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8ab714b auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaaa6c11e rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab8da2b3 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacbfd25d cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad9ef88a xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaed87949 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaedc82c0 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb025f0b5 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0c5dd58 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2c1aaac svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb54302fc xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5ee0edb rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb62e2f4c svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb63807ce xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7f8c356 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9deda41 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb334179 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb4fcfa8 xprt_register_transport +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 0xc29a9e8c sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2dabb7d svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4fb4d70 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc60fb1fc sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6449793 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca2491ea rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc4d15ad xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd087cf4 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdf4e65e svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcedfbde0 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf0303bb svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd150157b rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3485613 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd701a346 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8e36030 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9cb26c7 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd42ab6c xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf4afa07 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf549f95 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfb46d33 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1be26c6 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4468f4a cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4a7f137 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe74a392e rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7c71ad7 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe86dcf9a bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe88d771e rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe91088d8 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe95f186d rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec8c55a7 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecb4a70e xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed25eff0 xprt_reserve_xprt_cong +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 0xeeecf639 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefd50b17 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0e0dfdd rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0f320fb _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf41a8d96 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6db3e88 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf88bb052 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa3ab1a6 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa81af00 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa883c4d xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaf35db7 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb706dd4 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbdf766f rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfda78bed svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe979927 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfed71c1d xdr_read_pages +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0bb20776 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0f9327ad vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1d497dc0 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x424221a1 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5cd29570 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 0x8c0039ce __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xab43570e vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xad3e290b vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc6ccccf8 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdf26ae8e vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe1e2aca2 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe9393e20 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeae2aac0 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1cb68eb7 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x20eadaad wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x32cc91ef wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4ae9e13f wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x744d3235 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x80a6b3d5 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x830ed41b wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8830d1c9 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x975b3a49 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x994470d7 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd2fdb712 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd5f890ae wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf9eb2375 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0e9cad0c cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1578bd29 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4e0f0163 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5af6bf97 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5d3ab1c4 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6c9e36b3 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x70457d94 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7083a8ee cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x79f5126e cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7c2ae1ff cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xac349ccd cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc1a9519a cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfa97fa8c cfg80211_vendor_cmd_reply +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 0x35422b74 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x509759c8 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x66d92747 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xdb859352 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xd9ac8310 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xdee1e6b3 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x1476dd72 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x32ffbbc6 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x6aeb6314 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x72333513 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xb1393b74 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xbcb77ead snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xcabce6a0 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x27729be4 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x3bac7b8c snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x58c371d9 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 0x339cfa6a snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x3b7928b4 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8203b197 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8758fb7f snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x878ac5e5 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8888fd96 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xaae26bc2 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc5be7be7 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xea731d0a snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1244318a snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x14ffe8e8 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1737baec snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x407a2363 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6d6c4568 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7cb7d882 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbf93a27e snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xde9c4733 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf1d15e3c snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf5fb2c3e snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xfb0254d3 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x066b1f4e snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0f07118a snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x16c6b467 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1bc7c54f snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x20b7ccbb snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x251f7042 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x27339a23 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x27ea038c snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x28b3a875 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x298c0c36 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2be061d6 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x33df2590 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x34ac1c27 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a0f3dd2 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3e627b76 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40548120 snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x43d2f178 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x464e73e4 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x46d1eec8 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x47d49fcf snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4e452973 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x523fe21f snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53ad72c1 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f9bbe0a snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61959ff0 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6325ae6c snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6a7be47f snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6c890263 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x71e3967f snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x722de47b snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x74cb6ad3 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x78c625e6 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x797061a9 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b1e1c34 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8c60104d snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8cc06e94 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8de7ccbe snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e0d2391 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92dfa523 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x97565949 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9fb79db0 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa4ab68ef snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabc0de9e snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaee9f90f snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaefe29c6 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7b2b21b snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8350136 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbc5c120a _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbf6e7a23 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc41e57f6 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc63713bf snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca16e19a snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd3ecf15d snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd8f7961c snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd5c6ce1 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 0xde1e4bea snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe109f621 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe13f722b snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe1b90b5f snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe23def01 snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe27d0b01 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe35fae40 snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe7c189eb snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe882c603 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xedfbf974 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4eab578 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf74aaec1 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa99f2ce snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfccaff23 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0d805b7d snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1c4b57db snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x75f8fdd7 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x78833cee snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8a4e66e6 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xcea142ae snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00a7320b azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0436ab1d 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 0x071de735 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07669bd7 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07b4aad9 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x084db66a snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a63f3c7 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0bcbff1b snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cf19e0b azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cf477b4 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x118c3fd8 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1842e52a snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19983a65 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1af0d0b2 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d89fbfa snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2007a2a2 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2071fb67 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x224fc30a snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26410f31 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2862b123 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x295e0f46 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29b0eae2 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a3109bf azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e118697 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3135a74a snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3628b54e snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36c642b6 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x382def31 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3dbb7577 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e06db61 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e4a5c01 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x401527aa snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42032451 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4245bd45 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4603d05d hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x488a7844 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b1b7e37 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50ae8845 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x526063ea snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53e01328 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5561507c snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x565d7037 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b740cda snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bd07c29 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bf41fc4 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c591e1b snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63d32f36 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6712280e snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69075280 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d90561a _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f1f65f3 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72578357 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x725fbab7 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73208ac1 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x735a6673 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73f66f8b snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74fe1f05 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7534b91d azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x757c5e3b snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x780b5300 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x785b4467 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c665dd7 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e2ede2a snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f5ffeee snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x838b667b snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83a52d4a is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ca841ca hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d1a0fb2 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90c97ac4 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93714a1f snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x959f2094 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9890c09b snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e2ddacc snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e6ab753 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f0f91eb snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0c141e5 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa10e1220 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3708f57 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3d487cf snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa47a137f __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4b135b0 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6edc0a1 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9102084 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab927540 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac5b8907 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacae8c1d snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaef757cb azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0fe9b2e snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb195f3cb snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7cbf96e snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8a403f8 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba336fe3 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba7f750a snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbafb4554 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb9934fb snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe249108 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf3d28c8 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf3e134b azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc129352b 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 0xc65c3102 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8ce960d snd_hda_attach_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 0xcf4f25f6 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd07bbdbc snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0b3fb24 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1858555 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2a3c9a5 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4bfae08 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7a7a0f7 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd932a02e snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdad32b75 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd1843c6 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdde0ad90 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdde72862 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0285429 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe03f1ba6 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe07e5d4e snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe109b49e snd_hda_unlock_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 0xe446976d snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7a215e0 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeccc552e snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed973f68 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf262ee11 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7a776d2 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8f07723 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf95bd80d snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x17f2df20 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2c894126 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x333f1d4a snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4273853a snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x45e7cab6 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5731549c snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x57b1e504 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x583a6444 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x65db7051 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6cf9ec77 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6f090a9c snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7988d2b0 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7b1ce095 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7d7d0a12 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8021fbb7 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x94eb5475 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xaf00213c snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc4a94386 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcb4f98f9 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdaad851f snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe2708316 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x79e2eb58 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xc0dbfbcc cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x0e8b3853 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x1d571de3 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 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x89fed94a cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xa6a59d0b cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xae0e383d cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x10a8bade es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xa8403890 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x7335d054 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x0981c2e3 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x46cb98e4 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x55a0f3be pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xe4661b19 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 0xc234cd72 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xeb4b787a rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x344ea537 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xecabfaad rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x15c8262e rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x5018ee5f rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x921f2e99 rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xa8a3e411 rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x0385acbc sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x5087cd12 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x874d6f0f sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xaacc23dc devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xd27d1c98 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x07a795d8 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0xf789fae9 sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xc2abfeeb ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xc63e6614 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x063d094e tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xdfa846ea tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xb5eba6a2 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x58db4519 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x87e98af0 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x9adf8cf2 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc87f796c wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x8acf28aa wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x361b276e wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x151a4412 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x6c47cda7 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 0x497f1ef9 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xdafa33a1 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x450f0c12 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x558cf89b sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x69be569a sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x790ca887 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x8df64990 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 0x23222c2c sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x53b389e8 sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x6106e37a sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x68d075d4 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x7cd80fab sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x00ff50ba sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x015443dc sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0439d25b sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0a6a1c9f sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0f2a4fa9 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x141a5e3e sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x16c5a6ad sst_module_free_blocks +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 0x1c1372a6 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1d9bda44 sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2147a323 sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2252a2b1 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x29125d6e sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2b1a2ced sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2ff6dc5a sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x311b776f sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x327f3b65 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x33eb3fe5 sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x41073b04 sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x422f5757 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x446c809e sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x45e33a98 sst_alloc_blocks +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 0x4b9c38e8 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5f71fa26 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6015ed78 sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x625a2c95 sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x683d6525 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x70641747 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x726e9e0f sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x76184583 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x793be043 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7a523314 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7c9f16c9 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8525ae43 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x960cf750 sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9c3aa864 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9f4ea7b9 sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa1d98c7e sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb0a442e2 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb692797d sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb695b12b sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb79034de sst_dsp_shim_update_bits64 +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 0xc5de349c sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc93fb10d sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcd7a92e9 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd0348824 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd69aa9bc sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd6cb73b8 sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd804eb78 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd956312d sst_fw_reload +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 0xdaa49638 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xdd0ae08d sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe26cf2e7 sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xeb184677 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xeb4b75ab sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf032c462 sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfd524984 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xffa659ca sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x191c14ee sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x24934a25 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x3c135255 sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x61753292 sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x95117fce sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xe6f21453 sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xf0f27ae1 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x4bace649 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x549b6cf7 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/snd-soc-core 0x026fd41e devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03424e2f snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04082547 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05c142c6 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0771f547 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09321ad5 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09bb50a6 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09c4966c snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0dc41454 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fc43a90 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fd5e461 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ff991bd snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1076a381 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x153f73ba dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17339b28 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a81efcd snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1de80b6e snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1df9a3be snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f51010f snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x217d5e30 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23461db1 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23f07d00 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24a552e4 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24eb708c snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25313305 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e39179d snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e642d0e snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f492c04 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32703321 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3474683e snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34c582b3 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35649313 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x366ce4ff snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37a0a3e5 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x380726fb snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39616b1e snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3cdcb50e snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3fb7055f snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x451a89cd snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x476498cd snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48c13cb3 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48e64ec0 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49908185 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a0f6f6b snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a465fca snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cf2eb0d snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d053fa5 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d9ed930 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e4a854c snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fa77165 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53ccb896 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5620c423 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b400239 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c7a0f7f devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5cf006ef snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dc6301a snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61de45ac snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6338eb4d devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6515d93d snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67778108 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68b5a688 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b244a26 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b276003 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b96eebd snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c556d4f snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d78640b dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71fe9356 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73820fa2 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74b06dda snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x751a7fa0 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7588742e snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b821ed5 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ec1f54b soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80f68267 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81068b36 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x843e8e67 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x844a237e snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88cd92af snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89f14afb snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b872027 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f765044 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91e5345e snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93185908 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93770615 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94344669 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94dbf1d4 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9649c975 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9816f07e snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9aa2b2d4 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9cb49a50 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f30b52f snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ff8bb70 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa560b8e6 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa930e9a1 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9a9a926 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa7ac527 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabfd5c02 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae3bc3cf snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae79c134 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae839e1d snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1161e87 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2a8486a snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2bf6411 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3f3e2e7 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5573b0e snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6d7ec68 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb86ce17f snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba86e022 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd8471e5 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2cee620 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc33987c3 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5703ffc snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8f4b58a snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca219f17 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccccd011 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd94eff5 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce4cb52d snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd07aca84 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd440e265 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd4859f78 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6283490 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8fceacd snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda717dec snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde9d6e85 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdee87875 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfebb739 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe1046f58 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe31a51c9 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe45cd301 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe56166a0 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe60ae498 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe78a3971 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe92f1a17 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9343c85 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed809bde snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeec8c219 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1054f4f snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf13d8673 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4526f95 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6a3fd0b snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf82a8daf dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8fe9673 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf956d7ac snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf985bc9e snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa4be105 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffee1a0a snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x08740068 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1d8a0e61 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1fb73c85 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3026d2de line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x44bafd3d line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4b856f60 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5ce42853 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7eed5fbd 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 0x9c3387a0 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9f980a34 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa434d7f4 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xccda8039 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdee148a3 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf49bb880 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf6e5cd95 line6_send_raw_message_async +EXPORT_SYMBOL_GPL vmlinux 0x0013c785 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x0027f83d acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x0036cada dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x0039c3e7 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x003c9812 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x00527446 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x0055bbd6 xen_register_device_domain_owner +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 0x00809722 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00bdf78b xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x00c486fc tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x00c50ae0 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ecc61f i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x00ff22b2 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011b2dea regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x013989df md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x014882bc usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x0152fcec fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x01599b74 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x01714b03 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01926211 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x01b7dcbd rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x01c966c1 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e1db7e pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x023c3ef4 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x0241f646 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x025f4a74 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x026303b6 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x02726bcf bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x02aa06c7 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x02b05ef4 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x02b36ea2 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x02b42512 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x02b5b4cf iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x02bb769c iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x02ca38e4 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x02ca78ac component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x032cd6ff md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x034104ce blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x036e68a1 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x037be734 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x0385f48b crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x03861f2d rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x03872a50 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x038f2e19 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x0394b932 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03c3bf74 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x03cd76d9 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x03cdf1c4 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x03d8a65d pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f1ff83 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03f714b5 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x041c7152 split_page +EXPORT_SYMBOL_GPL vmlinux 0x0431d983 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x0439f0d6 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x0454187b fib_rules_unregister +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 0x04b52d59 wakeup_source_unregister +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 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 0x05144986 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x0518393f inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x051a5610 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x051ad713 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x052bd28d rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x053bfd9e mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x054e5728 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x0552ed01 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x056deb99 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a05be6 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x05c31694 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x05c41588 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x05e5457e tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x05e6da2c dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x05ed67c8 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x06093e4f net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x060e487a netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x06144860 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x0625fd12 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0637be8a trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0653f4c7 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x06590872 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x066211c3 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x067b895d sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x068ad07b device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x069fc5d4 device_create_with_groups +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 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x07188966 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x0726e3e4 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x072fe6e1 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x074f1220 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0765d236 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x076717ae ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x076a3b4b thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x07734239 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x079507f7 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b5cc19 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x07ba2c9c virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x07d70035 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x080867ae regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x0808e982 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x080f728f fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0830ca4a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x0836f1ad adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x0843c632 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x084a8720 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x08584056 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x085d6272 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x085f78ae dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x086867e0 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x0875ac48 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x0893fc4f gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x08dfb9fc pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x08f0cf77 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x08ffbab5 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09355852 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x09358dd1 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x0941d490 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x09616222 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09666dac user_describe +EXPORT_SYMBOL_GPL vmlinux 0x097a3cf0 pci_generic_config_read32 +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 0x09e342dd vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x09f96484 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x0a143837 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x0a28811b rhashtable_free_and_destroy +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 0x0a5162f7 acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x0a814abe pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x0a8528b4 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0a904d76 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x0aad7c17 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x0aca8a05 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0aff4d1e __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b2f9543 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b655e63 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b6f3fad sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x0b7ac0e5 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0ba54951 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0baf2f95 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x0bb6ef0e inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x0bbade61 dev_attr_em_message +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 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3e0532 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x0c56e4bb pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c8da0c8 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x0cb3b95b pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x0cbb0b2b __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ceb804e shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x0d0b3c45 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0d126acf __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x0d2227aa ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x0d24cc52 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x0d25d95f ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x0d27bc2d hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x0d3bd686 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4f7bb5 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x0d504116 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x0d6093c5 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x0d63b16b power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d85619e usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x0d8a2530 i2c_add_numbered_adapter +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 0x0df7e2fa usb_free_coherent +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 0x0e25810f __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x0e36a8d5 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x0e52ccc8 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e54957d tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x0e82106a tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0e8a67bf ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x0e8d98e1 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e93772d platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x0e989223 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0e9a7e9e print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x0ea72851 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x0eb1d9be bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0ed45349 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x0ee8009f irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x0eeaedd0 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x0eef96ed device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x0ef9fc5e virtqueue_enable_cb_delayed +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 0x0f3faa40 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x0f4f8427 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x0f529a02 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x0f6a926b extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x0f6d1449 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fac6f51 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0ff24016 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102fe6e2 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x107467bd device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x1084e37a fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x10af38da devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x10ea0a80 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x10eacdfc sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x1105221d rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1123fc98 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x1128e8e3 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x11555d96 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x11685261 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11a037bb pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x11a93b29 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x11b641f2 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x11bdb38c acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11ddcba5 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x11f00112 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x12139ddc pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122d7e55 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x12365e8c percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12617ef3 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1294d80a get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x12b03530 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12b5b988 user_update +EXPORT_SYMBOL_GPL vmlinux 0x12b7164d phy_get +EXPORT_SYMBOL_GPL vmlinux 0x12bcd3d8 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x12c09ef2 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x12c5ce46 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x12c97430 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +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 0x1333c4c5 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x133a4972 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136577b1 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x13871e6a usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13c488d1 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x13c86b58 dma_buf_kmap +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 0x14166851 genlmsg_new_unicast +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 0x1461a5d9 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x1462e9db ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x147d4aa0 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x14841197 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x148af133 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x148efce5 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x148fc04f sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x14960c19 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x14b3f0cf kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x14dc84db ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x14dee41a sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x14ee0851 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x14fe46c5 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x15176571 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x153e793b security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15b1cea8 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16301060 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x163d3e97 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x164934f4 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x1650466c wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x169ee8cf tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x16a3b53e usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x16a3ef54 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x16a561f7 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x16c021ed pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x16c626c5 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16cb44b0 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x16d6733c get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x16e14b84 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x16e5ad32 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x17014a79 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x1709da9c swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x171ce139 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x1734b2d5 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x174f809e cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17602cd0 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17a92f2e xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x17c9474a ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x17e2e61f wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1810ca84 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x181804d3 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x1829560c ata_sas_port_destroy +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 0x1884ad0a ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x18910ed9 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x18ad899c __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x18b2353a lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x18bac3a5 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x18be06ba isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x18be7914 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x18c025e0 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x18c20430 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x18cec943 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x18e478e4 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x18f5a0e6 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f6b137 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x19102521 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x19156640 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x19201a1f usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x192141d1 crypto_grab_spawn +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 0x198fceec fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b21ee4 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c102b6 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19c96b7d phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x19cbe8d6 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x19da2145 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x19f1c270 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x19f425e4 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x1a02baaa ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x1a1b0ca5 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a402df5 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x1a4b18db clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x1a5d059e devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x1a8fe67f pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1aeafb77 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x1b02873d sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x1b1c98ba da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bb8f8ef device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x1bbeccc0 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1be5f360 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x1c034d0d blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x1c0545fc device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1c0c64a0 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x1c12bb78 ata_sff_postreset +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 0x1caf8d95 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x1cf77b21 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1d037724 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d484876 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x1d5206c1 spi_master_suspend +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 0x1dab6495 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x1dcd9626 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x1dd7f4ce tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1de256e5 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1df30f43 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x1e0e6c28 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x1e116c30 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x1e11bb1a regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1e211e93 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e280201 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1e3a33eb udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e9ba957 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1f147e64 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x1f3f5192 __pm_runtime_disable +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 0x1f9a5e47 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1fa5b19a preempt_schedule_notrace +EXPORT_SYMBOL_GPL vmlinux 0x1fb44f68 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x1fde8a8b devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x20191f92 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x204af089 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x204e66e6 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x206cec47 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x2071fde0 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x20750870 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x2082d38b pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x2083de88 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x2099b202 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20bd26b6 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x211055b2 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x217691b6 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21a6d68e usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21bf8757 usb_driver_claim_interface +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 0x21d677e9 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x21edb7ca xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x21f77126 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x221eccd4 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x225d1a61 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x22701494 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x2285ed55 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +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 0x233a2448 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x234f3f42 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x2398a11b pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x239a36eb devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x23cceaef crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x23d852b1 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x243682e9 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x244e65e5 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x249020bb tty_port_link_device +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 0x24e63814 device_destroy +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 0x24fd5a3c pci_scan_child_bus +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 0x256aaac2 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x2571b528 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x25886455 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x25a221a3 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x25aefe57 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x25d05743 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x25e9f408 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x26059cd3 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x26218c72 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x262abd4a apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2630d85c device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26546cbe crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2689f070 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x269d5e77 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c2820d wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x2742bff5 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x274b07c6 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275094f3 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0x2761cca7 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x276bc9f8 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x27793c95 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27a2080b ata_scsi_queuecmd +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 0x27d3673b kobject_uevent_env +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 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28350299 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x283534f2 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x2842b838 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2844d9be dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x2855b4d8 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x28561c18 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x28603b8f regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x286c9e86 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2883b0ea devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x288bfce3 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2898c258 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x28b4cfe4 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x28c9e146 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x28dd5fc4 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28fb9fc9 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x29195abf preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x29271963 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x293f4044 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x2941e542 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x2952ff12 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2961092d ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x2963db20 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x29dd3f73 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x29f131d3 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x29f88fe0 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x2a34614d usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x2a4236d1 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a829e28 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x2a842af9 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a868679 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x2aaa4cf5 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x2ad193e3 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b0133fe bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x2b0c5a97 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x2b0d93b3 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x2b3c3bd8 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x2b41acf8 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x2b5cbafa usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x2b6523a4 pm_runtime_force_resume +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 0x2bb48df5 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x2bbe2eb5 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x2bf62ba8 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c27ef93 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2c29b936 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x2c2b9a69 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +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 0x2c8e0a2d dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x2cbb246b acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x2cd1508a ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cfc5e48 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x2d0af786 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x2d0fa5e1 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1d3a37 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x2d22a6be bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x2d2319fb regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d53e2a7 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d938be3 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x2d93ed24 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x2d965aa8 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2db139d6 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x2dc58b0a fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x2dcf3393 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x2de9cf57 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2e052b78 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x2e0dd0fc acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e4d8260 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2e51b579 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x2e6678de list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x2e90d725 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x2e938c4f skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x2e98dbba scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x2eb40597 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2eb4d5bd page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x2eb6fda8 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2eea7f61 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x2eff8b4f cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f131cac device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x2f1d206b crypto_register_rngs +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 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2fa2fd3c tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x2fab57b2 user_read +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdbd04a crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x300f869f usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x30145beb pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x3018933e mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x30399910 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x303a31da regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x303c9fbe regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x30400c62 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x304e7da9 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x3057b2f3 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x305afe24 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x307c30ce perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x30808dec thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30bb15d0 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30f84753 __sock_recv_ts_and_drops +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 0x31440bf8 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x3151c731 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x3167d219 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x316cee70 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x317d8952 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x31816836 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x31845883 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x31972706 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x3197e6e0 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x3201a064 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x32025bf2 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x320c4702 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x32100632 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x3220f939 crypto_grab_aead +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 0x326d8900 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x3274ddc5 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x327dc740 inet6_csk_reqsk_queue_hash_add +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 0x32b8fc03 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c64659 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x32ddd5b6 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x32e4f27a shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x3326eca2 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x3327ca2e securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3338e911 device_remove_bin_file +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 0x33707413 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x337a1f4c xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x337a76e4 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x33841035 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x33a33287 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x33b1f76c crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33decd98 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x34037724 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x340441f0 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x340f80b9 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x342d89d2 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x345a2983 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x3470511f bio_associate_blkcg +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 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34d9133b device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x34dbae36 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x34df017d ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x34e23f2d device_property_read_u8_array +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 0x354de40e serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x355e5106 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x355e82ef pci_bus_max_busnr +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 0x35a23b26 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x35c3aa65 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x35ce2f88 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35fed17b fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x361f8c07 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x362a39ec regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x3634a8c9 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x3637c262 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x36406b0c power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3671ec05 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x3687a511 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x36909835 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36ad3efe param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x36aee9a6 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36b55c96 tun_get_socket +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 0x3713040d regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x371cb3e8 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x372b5e5d __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x373dba90 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x37934931 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x37ca6fa7 srcu_notifier_chain_register +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 0x37de803b xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x37fd6ee8 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x3822b497 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3825b8c6 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x38358705 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x384d28a4 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x384da22b aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x38560208 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x38783127 tty_perform_flush +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 0x38e5093b bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38fc5613 usb_bulk_msg +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 0x392327c5 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x393afe50 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x393ced98 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3956e385 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x39859a79 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3989498b raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x398c5589 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x399dd6a8 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x39be5bf6 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x39c30d07 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ec814c init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x3a013e0b iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x3a01d92b pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a4a4afe crypto_ahash_setkey +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 0x3a60ac95 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x3a69433f sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a82ae41 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab766a2 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3abcc281 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3adbb7c1 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x3b11c350 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x3b2615f5 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x3b320df9 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3b40e47e virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b88c397 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x3bb39110 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x3bb3ab75 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x3bd27691 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x3be0e516 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3be586c8 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x3bfe6273 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x3c11636c class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c2a3579 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x3c2a6b2f __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3c371d26 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3c3d2116 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x3c40c806 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x3c465b14 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x3c5110f4 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x3c628519 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3caa35c3 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d2463be max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3d2f15b2 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x3d34af66 tps6586x_clr_bits +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 0x3d887f88 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x3dc70540 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dccc9a8 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x3dcd8715 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3dd8df94 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x3dde79ee cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3deda8dc class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x3e134263 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x3e253688 gpiod_count +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 0x3e6859b0 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e8ef311 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eb2d3d5 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x3ec3cb10 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ecda251 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x3ede2364 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x3ef6aefd get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f444970 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x3f4ff75f ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x3f6d9976 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f8fd43f aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fac3639 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x3fbc3bcf nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x3fc41569 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x3fc43f76 wait_on_page_bit_killable_timeout +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 0x3fdd1659 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x3fe721e2 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x4001e8bc dev_pm_qos_add_request +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 0x40519cd9 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x40532bb7 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4072aa44 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x408212ba hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x4087fb7c pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x409d864d __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x40a9fc4b tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c02c58 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x40c0798f nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40fe507e usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x41058dab rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x411a0d4b ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4122bcbb crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4128fae5 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x412cae74 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x4163dce7 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x4174290b usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x417f8afb i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41a8adb7 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x41ab4988 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x41cb39c7 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x41e195a0 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420b498e crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x4214e1d8 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x421b9047 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x422085fd devm_regulator_get_exclusive +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 0x4251098a debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x425679ad pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x427f6dc1 acpi_gpiochip_free_interrupts +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 0x42c52b38 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x42c7e9cb usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42cfc804 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x42d8941c ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x432b7303 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x4337025b set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x4355c5d1 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x438d13e7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43e8ca1d inet_csk_clone_lock +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 0x443c7eab device_rename +EXPORT_SYMBOL_GPL vmlinux 0x44648606 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x446c011f unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x447474a7 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x447cfeaa acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448bcafa ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4493d0a7 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x44ab34f4 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44abdd98 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x44ac21ed regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44cb62bb blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x44e2671b ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x451def9f attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4530e886 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x4540e23d kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457d578c led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x459009a7 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45cc7e29 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x45cf966e virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d7343e screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x45d8a600 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x45e76c42 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x45f3ef1c dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x45fc72ab dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x45fe9428 spi_add_device +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 0x463fc36e register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x46460f1a phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x466c3b3f device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x467e921b cpci_hp_register_controller +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 0x469c3fa4 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x469de5ad regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x46a9b02c usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x46c2846a mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x46e63189 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x46e745a8 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x46fdee91 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x47156de2 unregister_hw_breakpoint +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 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4772164c gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x4773a2e3 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a784ad ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b1b5b5 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x47d0c963 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47eb2fa4 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x47ece2b0 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x481425ea cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4830dba5 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x4855d088 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x485f7348 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x4867550b regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4879bb6a rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x488625e6 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x48e6fa0a simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x4914d4fd ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x491828fa thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x491c92ae __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x49225cef shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x49278af7 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x492a0082 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x494275c2 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x4952547a rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4955dfbd perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x49695a28 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x49712d4c regulator_enable +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 0x499ea133 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x49a451cb regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x49e19a0d blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f6d14a devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x4a13a11f fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x4a29f138 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a45e2cb nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x4a673c06 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x4a6f4655 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x4a6f4d03 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4a8ccb6f set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x4aa0605f phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab38e9a pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x4ac3c86c pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b100406 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x4b19585b sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x4b196c22 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4b2c3340 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x4b3d8470 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x4b6513bb single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x4b8526a0 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x4bba7cbd devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x4bcec0ea rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x4be3329c rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4c005731 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4c0ff196 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x4c158c1f wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x4c2885e7 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c3bea58 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x4c46977e find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c65d322 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c91df07 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ccf91d4 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4ce8c8fb tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x4cea9b4a tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d35bfa8 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4d465159 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x4d89530a unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x4dd0f554 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x4dd7eb9d crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4ddeff2f perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4def8891 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x4e091232 platform_device_add_resources +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 0x4e49cb26 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +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 0x4ed8a915 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x4ef0a3b1 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x4ef334dd rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efba71f adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0ad632 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4f0ffbcb gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x4f12cdde pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4f136921 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x4f16e6e6 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x4f45f7df xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f5e017a tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7d2091 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4f80f9a3 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x4f841682 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x4f8a8994 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x4f9525de rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4fa272d3 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x4fbbc4f5 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x4fbcb658 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4fc52e8d __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd694d2 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe4e3a1 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x4ff2a087 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x4ff625e5 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x4ffd585c gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x5048dde1 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x505418e0 pm_relax +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 0x50a8cfd2 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x50ad022a inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x50b40caf nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x50c24f5c fib_rules_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 0x511b2542 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x511c1b82 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518ad078 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x5198670c rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x51b1184c pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x51b6959b pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x51b71336 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x51d49b9e devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x51d59479 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x51f356aa pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x520413e1 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x52095b6f sched_setattr +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 0x52270b99 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x523448fe remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x5258b3e4 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x525a6358 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x5260ec48 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x5263a1d3 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5283b83a platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x52992a52 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52bfb3aa regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x52c5c8f3 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52f0d87b rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x52f102db __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x530db776 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x5314468a crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x532093e3 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x53246500 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x53255cde xhci_dbg_trace +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 0x5363a6df ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x53646438 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x5369e0b6 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x537d5254 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53a9dba2 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x53ae141d smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x53b8ef52 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x53c7da01 xenbus_dev_probe +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 0x54006241 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x540cfb7e pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54244208 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x54364037 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x543a90f0 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x543dca30 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x54463ff9 fat_fill_super +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 0x54bd70f4 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54e2141b blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x54e35288 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x54f5ce31 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x5503d576 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x550bcb7a ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x5516bf14 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x5517ac02 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x5527b976 each_symbol_section +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 0x5563d17c pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557aef7e usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x55bc2c05 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x55bc83ba ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x55c88a6c rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x55cd4738 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x55d87eba ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x55da1f85 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x55dc2022 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x55e7e99a regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x55edd53d unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f5aba3 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5605877e inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5609fc1b xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x561e48aa tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x561fc1db mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x5626f7ab phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x562e7911 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x563ba65c bpf_prog_destroy +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 0x5666d83f crypto_register_template +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 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56fc484f gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x5702fa5b put_pid +EXPORT_SYMBOL_GPL vmlinux 0x57052a33 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +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 0x5777fab0 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a9922e xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x57b4df49 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57cb34ef add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x57d9ceaa pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x5815796c regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x58242297 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x587bd46f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x58960a20 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x589c7a6c platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b842e8 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x58e1c528 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x58f796a5 regmap_raw_write +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 0x591f1f76 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x593120ec crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x5941a577 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x594a9c60 usb_remove_phy +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 0x59dd20c1 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e527f8 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x59e8d1c5 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a165f88 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x5a174d81 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x5a281c79 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x5a295a85 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a412665 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a478a3e tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x5a50f9ee xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7da251 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x5a7e6e8f set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5a9a070b __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x5aca3df1 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5ace9344 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x5adaf57f ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af87362 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x5afceb81 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5b0b9362 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b12c62f ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +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 0x5b576186 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x5b701f74 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5b8880a1 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x5b8f15f2 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x5ba5d17d raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x5babf842 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5bad388b rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5bc69827 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x5bc7e406 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x5bc8d9d8 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5bca8afa hrtimer_init_sleeper +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 0x5bfba4ad devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x5c0525d5 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5c127c2e key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x5c348018 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c64d3a8 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5c659139 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c83f2a9 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cbbede9 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc79617 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x5ce9ab6b ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5cebfc74 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x5cf17246 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x5cf71e5a sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5d059ce4 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d214dd3 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x5d24f079 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d5ca512 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5d78a9af register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x5d8f2e1a crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5da04075 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5daaff0b tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dc09885 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x5dc70d1e regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x5ddb91be subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x5de4bacc bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x5de741c7 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x5dfd019a usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x5e11a653 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x5e1a8669 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x5e461be8 blk_queue_flush_queueable +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 0x5e73556b pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x5e77ba35 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x5e89b459 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x5e906990 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5e9a52b7 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5ea22931 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x5ea83b43 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x5eb19cd7 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x5ec545b4 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x5ed5afea cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5ed72552 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x5f1e3e9b trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f409e33 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x5f4e8c25 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5f4ec379 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x5f62a37e rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x5f6323c1 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f64f266 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5f7463d5 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x5f99fee5 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fc62c44 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x5fdb9d18 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fe837d0 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x5ff1b5b8 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x602a80ba udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6033237a udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6034b63c rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60527861 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x60642ae7 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x6081b576 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x609d374b __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a4d2cf device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x60a5e30a spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x60a77df6 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x60ad8a74 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x60cc3cf3 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60d4bc4c wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x60e9f0e3 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x6123e646 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x6136d2a0 acpi_dma_controller_free +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 0x618583de debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x61a66a16 pci_intx_mask_supported +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 0x61f833db debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x61fffb37 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x6208fbe2 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x62135e87 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x625a4dd5 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x628b47fe dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62bb2a98 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x62cc90af crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x62d20f0a ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x62deef4c part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x631051ee acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x633eea8b __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x6351575e ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x636329ab inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6375b847 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x638013b8 ahash_attr_alg +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 0x63caf20f verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63eab114 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x63ed3168 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x63ef0d76 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x63efdd8d devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x63f3ab6c efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64226305 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x643aa547 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x646311d9 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x6467144d ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x64a68a8d xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x64b0fada ref_module +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64bfbf65 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x64c37430 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x64cad338 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x64eb596d rio_mport_write_config_8 +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 0x65423bb8 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x655aa50e irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x658c2e8c perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x65969239 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x65ae543c regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x65ba5c8f spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661cd2e7 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663fe9f2 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x6641de6a rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x664c514f usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6665ce08 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x6677145d tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6686022e pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6688c281 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +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 0x6700fe49 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x6705a431 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x6718b396 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +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 0x67561173 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x6770cbf9 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a9897f ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x67aeffea rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x67cbc091 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x67fc8854 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681392d9 wait_for_tpm_stat +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 0x6854e062 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x6885da51 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68dbe240 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x68f59024 blk_end_request_err +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 0x69553716 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x69717f33 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a2c97 cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69dbebbb tpm_get_timeouts +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 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a65f151 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6a6a3e5e wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a932e58 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6a986ca6 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ad25650 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x6af08286 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x6b01c261 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b1a46a6 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3676dd fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6b39eaec gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x6b5de694 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x6b70a760 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b9e2924 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x6ba06f92 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x6bb4e0cc ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x6bb62f30 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c0da2a6 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c182bce ipv4_sk_redirect +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 0x6c3ad17e alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x6c40a520 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c87168e irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x6c8fb994 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd62d80 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x6d0b1618 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x6d1c8c42 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d339861 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d431e1f blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x6d66526b fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x6d674963 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x6d85900f aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x6d89eef1 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x6d939f57 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x6db24d6a crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x6dc09247 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x6dc3e1bc debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x6dd8cefe __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6ddb96af da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x6df2e6ae xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6df95bc6 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e40c418 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +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 0x6e9fd061 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x6eb1f9e3 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x6eb57855 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x6ecf1454 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6ed24885 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x6f0a5dc3 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f214345 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x6f216005 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x6f241e97 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f4df926 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x6f666b63 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x6f67d3fc crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x6f6f9d55 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x6f7c1e8b sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x6f7e84fa dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x6fa7734c crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x6fb5a3c2 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x6fdcf310 acpi_dev_get_property_array +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 0x701e2d36 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x70201233 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x704be69e pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7079b2dc crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708ce756 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x70974bc7 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x70a4c532 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70c4a0e1 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dd1ce3 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x70f46d9c i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x7103b6a5 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711de254 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x711e4e6d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x7145f400 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x71484e01 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x714fa21a device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7189ac68 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a0ea45 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x71a66a73 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x71bce337 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x71d0d445 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x722bdb9c phy_create +EXPORT_SYMBOL_GPL vmlinux 0x723915c1 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x724c5978 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72569768 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x7263380a __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x726d5895 thermal_cooling_device_unregister +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 0x72c60c96 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72d297bd unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x72ffba37 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7309e460 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7356e44d usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x737a2c44 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7387a250 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x7390e68a i2c_bus_type +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 0x73bb49df sdhci_pci_o2_probe +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 0x73da9f79 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x73f5666b blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x7409cf23 relay_open +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 0x7458b1a9 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x748a23e5 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x7494b362 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x749942a8 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b9f79b hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bdc699 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74d16c0a ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74efdb7a blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x75022ff0 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x7513ac59 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x754b7734 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x754d31c2 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7572a3d1 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x757b8081 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x7584ad4e tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75bf763c skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c85f97 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x75cc5f17 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x75dde2a8 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x75eec668 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x75fdc89a agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x764b102b dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x7650cb8b page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x7665f3f1 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x767a2d3c wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76835e87 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x76918c76 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x76c072ff regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e5a4be tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x771a80d4 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77430c05 blk_unprep_request +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 0x77899325 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x779ceacc device_add +EXPORT_SYMBOL_GPL vmlinux 0x779f8cac sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x77a9e0cd clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x77ccaad0 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x77e3b136 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x77e96d47 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x77f0e145 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x78115557 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x781ea4d6 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x78252a9e sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x782821d3 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x784d6d61 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x786e7fb4 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x787c2eaa cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7881b9eb unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x78aa98f6 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78be7681 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x78e8321e regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x78fe0acd br_fdb_test_addr_hook +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 0x79420621 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794c4afc usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x79593af4 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79763252 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x7983b6d0 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x798469ef ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x799da721 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79cea7f2 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79e8d2bd power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x79f95391 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x79fb6d71 acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x7a0718bd __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a10d0a1 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x7a118a31 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a3d8825 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x7a3f4361 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7a46bf70 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a5633a7 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x7a5e5af8 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x7a9102f3 sdio_writel +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 0x7ad5b678 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x7add87ed blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x7aeef3c6 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1ce0a5 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b2e813d pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x7b308d60 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b40b912 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x7b40ccb4 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b7a8f37 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b9f21b5 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x7ba31a44 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7baa50c8 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x7bc4c8b5 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x7bff4171 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c14982d __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x7c1aea5b regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +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 0x7cfffa97 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d1b9597 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x7d20dd48 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7d226d30 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x7d34fe90 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x7d3be80f gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x7d42c340 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d715620 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x7d9c2402 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc481d7 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x7dc908e2 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x7dca966b blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dda96ee smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7df05e52 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x7e1045e7 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e64c47b alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7e737c12 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x7e7c5b33 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x7e7c8e79 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7e92970a pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x7ea96e8b component_del +EXPORT_SYMBOL_GPL vmlinux 0x7eb468fc bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x7eb4955c unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7ee05ce2 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x7efe4a78 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f096180 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x7f2092ea crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x7f3a9419 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x7f6ae3ef blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x7f9d061d dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x7fa14b62 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x7ff57316 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x8007ac1e find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x805430b9 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808b50fc dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80c12d19 nd_blk_region_set_provider_data +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 0x80fdb602 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x8111f3ec scsi_flush_work +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 0x813268c2 mnt_drop_write +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 0x8174b320 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8176b72d to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x817df26d debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8187f571 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x819ddbba spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x81aa0680 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x81d0ba3e dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x81e44dc2 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x81f14c0f tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x81f781e4 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x81fc46d3 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x82115f90 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x822c117a get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x822fde8c device_show_ulong +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 0x82519669 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x8263e1dd usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x8276dd3d iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x827708fd ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x827aa2a8 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x82978442 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82b31059 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x82c80d13 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x82d788ab bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e9cf47 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x82f425d9 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x82f8ff15 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x82f9b416 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x83087a12 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x831d4f76 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x8343bbe5 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x836666ce alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a03941 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83ac8680 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x83ba5fbb hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x83ccd535 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x83dad002 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x83e9ead3 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x83fd09d2 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x8401061f pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x84032629 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x840fa8e1 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x84137344 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x84215d35 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8442cbf9 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8462bdcf btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x8495ab6d do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x84989f70 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x84af2be6 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x84bd1645 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x84e839a9 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x84f1fd4b ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x84fea2b9 pci_reset_function +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 0x8538cc29 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x8543e385 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85b4902f pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x85b556e6 ata_host_register +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 0x86045e6b __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866d0581 rtc_initialize_alarm +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 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f0ddd1 __lock_page_killable +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 0x8716ab61 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x875f2097 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x87711da9 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x877f37a9 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x878082ad disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x878e05db virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x87966dd6 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87e21119 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87f92359 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x881e66d6 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x882e139b sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x884a044a user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x885ef5a4 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x886d5728 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x8895cd25 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x88a69200 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88bd1739 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x88e7d703 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x88fbbc4f acpi_pci_check_ejectable +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 0x8931e52f usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x89405f17 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894dc5b4 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x8958a360 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x895d1400 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x8995f588 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x899d10aa sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbdcc1 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x89e30ba4 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x89fd2894 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x89fd97f6 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x8a00c922 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x8a389537 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a47b371 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x8a4e3136 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a5d0296 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x8a5fc949 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a9efa8f nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x8aa08803 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8aac721a ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abee9c7 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x8adbcea1 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x8ae01a0d gnttab_unmap_refs_async +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 0x8b639710 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x8b81feaf thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b85c4cc cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8b976744 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8ba96ca8 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x8bc0f86b pci_vfs_assigned +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 0x8c284a5b scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x8c3882ec ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x8c634942 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c73b395 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c79473e acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8ca090cf usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x8cbb8955 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x8cc877b2 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cef93a2 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d238809 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x8d497540 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d66fe2d debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x8d7cbad5 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x8d9aaa56 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x8dc52cd6 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x8dd8458d ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8dde073d usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x8ddebdd1 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x8dfa1dda input_class +EXPORT_SYMBOL_GPL vmlinux 0x8e0225f5 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x8e097873 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x8e12ae9d dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x8e5799bb spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e71568c crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8ec98e3a sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x8edabbf7 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x8edf9b30 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8ee0025f fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x8ee95365 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8eeb90e1 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8efdc90b da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x8f018bee regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f195978 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x8f54bced fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x8f5e80c7 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f714c5d tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x8f878fe4 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x8fc76259 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x8fe60db9 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x8fed98d3 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x9003ccc6 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x901b7f2e rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x902614ce fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x9029b5f2 ata_sff_wait_ready +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 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90639e77 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9066b0ac reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x906ea7f1 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9071fc7e dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x908373e7 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90aa48f9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x90dc6f26 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x9131f23e fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x913e629b acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x9141e770 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x914f5086 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x915dbfe4 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x916af2d1 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x916d0986 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9176194c crypto_shash_digest +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 0x91a6f939 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x91a8481e usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91de4dcd cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x922b8edb fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x9232bef8 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x9245445a ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9281105d rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x9292fcd1 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x92a1db3b pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x92a75a39 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x92af70a8 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92bf9687 pci_probe_reset_slot +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 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x9312723b subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931a244e call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93282e13 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x93788ac7 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x937db5b2 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x9386eafc class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x939ea9a2 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x93ee6626 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9442c735 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x94705b77 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x94755dd8 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x9489af76 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x948de478 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x9494740a tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x94a324ce regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b37f44 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x94c1e709 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94c79744 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9512dc3b tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95315a1f acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x953408d6 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x95577c24 regmap_fields_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 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95e93ed8 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x95ebdc74 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x960fecd8 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962221d3 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x962ade60 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x9633343d driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9684eca0 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x968e1bdc blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x96c3da0c find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x96c44e2e pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x96d8a267 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96e41409 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x96fc3c92 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9710444b driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x971521b8 find_module +EXPORT_SYMBOL_GPL vmlinux 0x97396a63 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x9745c008 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x975efd6a pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x977136ee dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x97ad79a5 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97dff6f7 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x97f0b2f3 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x97faadf4 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x9801bf6d gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x98230758 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x9831eef5 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9849d1de regmap_raw_write_async +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 0x989e7d03 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x98dcc6d7 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x98f2567c ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x99149903 __online_page_increment_counters +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 0x99729213 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x997f8217 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99923713 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x999f2835 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99ab4d07 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x99b1b257 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x99cd71dd gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x99d07789 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x99dd99c4 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a290835 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x9a3d94f1 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x9a428642 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x9a4348bc devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9a43eec7 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x9a48428a vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x9a890cb6 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a940877 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x9a964ec1 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac77d9a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x9ae785e5 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af4e9c9 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x9b35f7e2 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x9b372367 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x9b3d0fbc subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b46aa0d __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x9b58ce57 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b7a8e01 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x9b80eccf dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x9b8a3bdc dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9bad4dc8 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb8637b pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x9bca6c0d mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x9bce7326 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x9bd5d34c generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9becb049 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c090870 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9c231daf thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x9c2966ed crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c368473 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c4a709c usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x9c4eb9e9 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x9c8d48c2 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x9ca4cb36 cpufreq_freq_attr_scaling_boost_freqs +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 0x9d0fdb0f irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d4b825b __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x9d4e1a01 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9d575b40 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9d62c898 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d6307be rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d6ed2e5 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d872a4f xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x9d8aac30 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x9d8bb884 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x9d93548f skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dba142a debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4bc3e0 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x9e653b25 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x9e67fabe __class_create +EXPORT_SYMBOL_GPL vmlinux 0x9e6ac54a crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9e7392eb regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x9e789396 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x9e7e4f07 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9ea29041 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ec18432 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x9ed4936b crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9edf0abb wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f12905e devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x9f19b74a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x9f2d9226 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x9f5766aa kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x9f8609b2 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x9f8a5703 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9fa0e2da acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x9fac11d2 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x9fac668f platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0000d5e usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa026ddd5 da903x_set_bits +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 0xa0a8075e tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xa0b1f923 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xa0c70e25 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa11057a2 ip6_append_data +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 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1906850 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa1a0f932 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1bf8b40 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xa1cdeb54 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xa1ddb87e ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1fcdda0 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xa207c300 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xa2411403 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xa2527087 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xa264b716 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa276a6b0 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xa288247f inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xa29d40bd device_del +EXPORT_SYMBOL_GPL vmlinux 0xa2a4501a pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa2a7c8f3 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d9f781 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xa2e0c9b7 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xa2e225c5 kick_process +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 0xa3255fb2 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xa32c9322 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xa34506c9 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +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 0xa3a07069 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c30e76 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xa3d48134 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3ead39d root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa40f1e18 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xa41e8b3f pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa4353ed3 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa440a48f register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa46b5d5b trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4838fab crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xa48cc646 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa4912779 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xa49933c8 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xa4c83dc5 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa57192ec __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5ec564e rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa615d2b8 put_device +EXPORT_SYMBOL_GPL vmlinux 0xa619d37a md_run +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 0xa62aae2c platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xa63a92b3 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xa63b64ce __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xa65375a6 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xa67c901d crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xa696da00 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xa6aba48e tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c8d766 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xa6d6c0d9 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xa6dc9f64 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa72ecdd9 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xa734c1c0 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xa7358fc5 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa7393e87 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xa73cfef9 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa78280a4 of_css +EXPORT_SYMBOL_GPL vmlinux 0xa7a1e4db regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7fae3cb alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa812e2db ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xa82a4f09 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xa8398df5 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa89b1bdd tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xa8b5d723 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8cedb4e sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xa8f7096a PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9362f3f wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa970ff2e tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9bb1cee ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xa9c66b58 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9cbfd7f inet6_lookup +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 0xaa0a03a0 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xaa0fc0eb filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xaa12ebf7 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xaa145d6d bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xaa192f56 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa1e10da ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xaa239b8d tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa5eeeda mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xaa68d155 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xaa83eb7c pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaac9b8 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xaac30656 swiotlb_tbl_unmap_single +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 0xab0bb6f6 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xab1dc7da __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2d8a22 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab60269e component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xab604268 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab719e4f xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xab87be17 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xab8a63f6 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc672e6 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xabddcbf6 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xac176c9e pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac4da3eb tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xac688698 bus_register +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 0xac9ebf06 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb8ab76 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xacc1224c xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad0540ac irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xad320504 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad74aa3c __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad9865ab rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xad9b3d2c shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xadb170f1 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xadc2c695 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadcd3d85 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xaddb43c1 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xaddc3b82 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xaddc95c2 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xadf0e9ee ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1329b2 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xae175382 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xae1f0608 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xae6911b9 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6ef0e4 device_register +EXPORT_SYMBOL_GPL vmlinux 0xae74cc74 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7e4f9b scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xaeaf2c70 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaeceaecf virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xaecf3f8c device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xaf10f348 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xaf2fa0a4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xaf4cd6d3 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafa06f22 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xafab2aea pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xafc4baea led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xafc8aa36 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb053a4c7 wm8400_reset_codec_reg_cache +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 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c2fe9a regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb0fd1d90 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb12ed72b arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14873aa power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb171be04 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18168aa ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb191cae2 netlink_has_listeners +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 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb20f6929 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0xb21033b0 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xb216dd43 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb26263fc extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27532ed crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xb28ad23b rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xb291296b nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xb292cded crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xb2beb19f ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f38832 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xb31b80f7 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb32f04ed pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xb3416fea ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xb3518871 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb356613c xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xb39b4e1c ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xb3a0a746 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0xb3c3a8f2 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xb3e39eaa usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xb3f450f9 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xb3fda7d1 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xb40ecdbc md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xb44de3f8 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb45f4daa serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xb45fda85 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xb46e9f4c ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb46ed5ae pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xb4a9ae06 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c59273 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xb4cac1d8 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5018a0e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52d30e3 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5586dc7 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xb55ca3bc usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb599fec0 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a56e0b usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb5aacc16 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xb5df08d3 ping_seq_fops +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 0xb6328556 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xb640e7f1 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb64c8efe ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb66e93fa crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xb6756ab3 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +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 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb70147a8 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xb70a1c0e spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb72f6568 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb72f75db evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb7420b47 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb75460bd fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xb772c997 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xb775f38b led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xb791f7c7 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb79ea685 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xb7abe8ca wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb7b22c1a pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb7b80aff fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xb7c86535 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb7d3dce3 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e1b031 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb7eaaf8a usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7f78ff8 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb800752a rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb802c5a7 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xb852764d of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xb879e219 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xb87a2baf wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb8856a03 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xb8945627 ata_bmdma_qc_issue +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 0xb8d4fbc5 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xb8e0359e pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb94c01f5 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb94d115a pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xb957be9d platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb95941de usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb961c1b3 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xb9741dae fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xb9746759 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xb98a778a spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9ae916b napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xb9b65979 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cb75b9 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d8fbe6 ehci_adjust_port_wakeup_flags +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 0xba337b0a xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xba489401 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba8b8785 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xba8f7527 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xbaaa678d rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbab5310d inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac62a70 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xbaccff32 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbaf119ad devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb08deb0 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0f9385 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xbb39597f usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xbb3ebde1 rio_request_inb_dbell +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 0xbb7e4550 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbb7f0b87 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb92fb73 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xbb9f90d0 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbbb64abd fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbcf0d42 dev_pm_get_subsys_data +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 0xbc021973 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xbc11d1b4 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xbc12f372 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xbc1cc42e unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xbc34069d ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xbc37e3ed acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xbc5f26fe kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xbc6b921a cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xbc721df0 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbc8b08c5 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbcabef2a mmput +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 0xbccc22d3 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd12b5db usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xbd2c334a devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5704fe xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd690096 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd9e35e6 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xbda1b494 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xbda5999d led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xbda5c03c devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xbdafa85d crypto_shash_final +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 0xbde971df regmap_exit +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 0xbe40079f usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbe44f080 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe80951c devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xbe81cb8a ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xbe826d10 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xbea401e7 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbea9a1ff debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xbec1cc5e acpi_create_platform_device +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 0xbf0874d4 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xbf2c1dd6 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xbf32d365 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbf489ede sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf4bdddb perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xbf7628f8 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xbf78c66a regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf8869f4 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xbfa4cdd9 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc1be57 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfd2d1ca i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc01c4559 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xc0321d39 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc0740412 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b737d3 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xc0cf2061 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d4ab47 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xc0de31b4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0fd4f03 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xc12e0ada srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xc13a70b0 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc14c7e9e fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xc14da8d9 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xc163efa5 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc16e21f1 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc18c3633 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc1a4f03a spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xc1baf06a usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xc1caca1d led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xc1cde75e dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xc1ea894c devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xc216191e devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc2197f1b posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23259ae x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xc239c4c5 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +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 0xc2a7ff6f fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc2b1641a device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2e86e29 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xc2fb0160 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xc3296f38 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xc33744a5 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc36df5a9 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xc37184f9 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37d5cb0 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xc3a8f697 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xc3e2a844 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xc3e665b3 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc4144288 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xc4198577 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc41bdd4a pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc444833d __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xc44834ac usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4873a33 get_device +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a6dc73 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xc4c0561c device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc4d8d7a5 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xc516004d cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xc5183630 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xc51e72f4 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xc5261e02 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc54724ae spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc585ec40 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xc588cdb1 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xc5929993 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc5ad4421 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xc5cd6faf usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xc5f31fab subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xc5fbc4e7 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xc602023e sdio_get_host_pm_caps +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 0xc63549b0 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc646a6f0 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xc6500b7f reservation_object_wait_timeout_rcu +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 0xc6d6a007 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xc6d7bf3b register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xc6f10042 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xc6fb399b hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7064001 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc71dde2e ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xc7271b0b hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc74506fa usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xc748e3d7 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc75b909e acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xc76a20b1 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc79291bc device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xc795e27b skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e2f539 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f698ff i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc7f81d51 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xc7ffc8ef regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xc80188f9 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xc813b6bc irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc82decd2 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xc83cd785 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc852d569 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc8674d82 ata_platform_remove_one +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 0xc8bf7105 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xc8de50d9 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8ecf98e dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xc9049c48 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc94c7236 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc9aebdfd ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc9afed63 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9ec1959 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca081d1c find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xca4a0144 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xca6e0b41 usb_hcd_map_urb_for_dma +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 0xca8e7510 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xca907964 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcada8374 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xcae9dfcd sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xcaf10ff0 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4d8514 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xcb51b8f7 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xcb543ce2 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcb752404 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xcb82259e input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb88b74d usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcba7dba7 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xcbd1c9a1 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcbd48c3f hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xcbd65fce acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf0db44 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xcc28a567 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xcc41133b irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xcc49c42d ata_link_offline +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 0xcc94510e dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xccacec8a max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd855ed fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xcce91e88 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd1516df register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd1bcb64 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xcd3ea692 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcd4036c5 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd6bce90 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xcd700567 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xcd7b7127 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xcd8938b4 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdb2254d i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddefb98 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xcdfafc27 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xce0ebf09 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce23168c regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xce63f95f pcc_mbox_free_channel +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 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf0567bf dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5f0fb8 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcf965318 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfb68eb1 pingv6_prot +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 0xcfeea183 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xd00b96ae tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xd0228145 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xd034be70 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd061d0a2 gpiochip_irqchip_add +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 0xd07fee4e pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd0a94a25 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0fc2203 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xd10cf54a gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xd10f580c init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xd11aa70e sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xd11b23b4 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd1202e48 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xd145c01f irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd157eb3d flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xd161b686 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1af52a9 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xd1c7d9b5 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xd1d2e590 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xd1df598c devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd1f05dbb debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd2096054 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2542fe8 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xd2569308 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd29dbcce ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xd2a956aa sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2bb9096 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2c77c51 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd2d1927b hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd3188edb dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xd321bf66 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd3234fa6 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd35e2be2 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xd36eaaa7 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xd3b40685 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0xd3cc10e6 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd3cc68d9 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xd3e60f89 invalidate_inode_pages2 +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 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd42eccf8 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd45ea32f hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xd4711ece show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd50cb1d0 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xd5156d1d bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xd5231e2f tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xd5242c04 efivar_entry_remove +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 0xd576d232 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5ab0755 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xd5ac452f dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5bf5d49 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xd5c93b9c __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60f47c2 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd65c8e13 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68c7c81 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6a27af2 shmem_get_seals +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 0xd716cf24 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xd71f4224 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7367ec8 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +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 0xd77e8a9d gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd7a85c5a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xd7a9270e device_create +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e5bcc3 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd8161b51 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd822f13a device_move +EXPORT_SYMBOL_GPL vmlinux 0xd8250a5c iounmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd83e543f devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xd848e8b0 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xd84c5170 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd8552233 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd8571a2c netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xd85dd6ba flush_kthread_worker +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 0xd8c76c4b pv_info +EXPORT_SYMBOL_GPL vmlinux 0xd8de7e24 __blk_put_request +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 0xd94fa823 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xd955816e pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xd95f844d blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xd968d982 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +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 0xd9881fc6 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xd9be1f7e ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd9cd2be1 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xd9d77ba7 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xd9d89d29 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd9de6d22 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xd9e50713 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda04306d pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0xda207948 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xda608643 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xda7d7b21 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xda7dbd20 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xda7ed79d vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xda8d25d3 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xda8e1915 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdae00a3d crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf44f48 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb063626 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb1ce6b7 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xdb397701 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb645716 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xdb6e9940 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb994b82 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xdb997f63 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xdbdb7805 cpci_hp_unregister_bus +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 0xdc18caeb __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xdc474a7c kern_mount_data +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 0xdc9cbe48 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xdc9f1115 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdccbdb90 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xdcccc023 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xdcd2226b of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdcfaa28f tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1f6c45 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd380c51 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3b1f02 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xdd5e96a2 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xdd711a46 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xddac0634 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddcf5991 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf6d288 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xde018ed4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde18f521 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xde21fcb3 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xde225ebd dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xde2e035c crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xde313301 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xde319359 md_stop_writes +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 0xde7340e3 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde7be8a2 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xde878888 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xde881fce blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xde8d7991 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xdeaf3b0f debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xdebdb5ad mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xded28b0a debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xdee0790d wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xdee90f93 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xdeedf001 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xdeff3185 regmap_get_max_register +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 0xdf281032 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xdf4fda67 __get_user_pages_fast +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 0xdf8d9526 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdfa2a9f1 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xdfc49190 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xdfc4b4b8 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xdfdcf593 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xe003e044 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00ef4f7 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xe01778f4 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe0221013 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04855e3 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe064cdfb mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xe07a207d debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xe089446e __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe093cd7c sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe0a07d08 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xe0a17c52 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xe0a4b395 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0bd0474 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0d8e8c8 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xe0ec3bf4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe1048534 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe13eb0bf blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xe16b704f ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17ce10a key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xe1b5ec4a napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1cfcb47 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe1d0d170 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xe2021235 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xe20286aa watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe2037f98 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xe221c85b extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe2223be1 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xe2307e6e gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe2319469 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xe287bad2 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe290e2d5 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2a67142 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe2bf71a2 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xe2cc8fb9 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xe2ebbf5a regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe2fdd472 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe339ad3e security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe3781628 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe387abb1 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3aa77ad shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3d24b1a ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xe3eff165 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xe3f3b549 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe3fcbe23 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xe40e14c7 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xe40e64ff ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe418fde4 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe45275b4 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xe45e0e8b __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46a70a7 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a501b5 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xe4ae60f7 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4cbc85f ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xe4cd226b ping_err +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4ffa1ac percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe521be43 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xe52a9dce trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xe5558fcc wakeup_source_drop +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 0xe5a7f8fb da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5f5092e acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0xe5ff5d77 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xe607793e pm_generic_freeze +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 0xe680af11 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xe685a29f usb_create_hcd +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 0xe6ff202b regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe71eb2a9 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe736cc02 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xe74abfb5 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xe754cdc3 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe75f39b4 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xe75f7a40 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe7657be0 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +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 0xe7e9cbbf iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8016ded __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8209d6a gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85f03d0 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe8612395 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe866aed7 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xe8751dd2 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xe8ad43d1 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xe8ae6c38 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xe8bae8b7 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xe8ce5b87 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xe8d5d70f ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xe8f5d41b i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xe92ba717 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xe93b2908 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe96c3ebf dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xe9777d62 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xe9b50adb acpi_pci_find_root +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 0xea219120 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea2873c1 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea778141 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xea809c9f regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xea824904 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xea87adb8 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xea9ddc2f xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xeaabb824 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xeab7c81e devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xeacd8c85 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xeada276b tps6586x_write +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 0xeb40b2e0 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xeb5eb964 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xeb66243f ata_port_pbar_desc +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 0xebb2a2e8 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xebb86b03 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xebc0d40e inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xebc51420 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xebcbcce6 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xebcd94a1 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xebd422d5 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec071fbc debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xec0e5df9 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec238457 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec26885e __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec3a4c64 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xec3bd283 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xec40966d __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xec579fbd cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xec5c3b72 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec8015f7 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xec8dce2a rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xecdfe043 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xece7ed44 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xecf48758 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xed0926c4 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xed0c4f54 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xed2a0295 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xed5df863 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xed7944f3 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedc038a3 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xedcdffd4 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xedea6f15 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xedfa7dae irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xee1a69fd regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee8f551a gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xeed5edb8 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xeedf3a3c usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xeee3913e ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xef141a59 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef402a7d ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef599a13 intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa54ea3 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xefa5e1b2 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xefc92c9c __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xeff5f575 devm_pwm_get +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 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0995891 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xf0a85b65 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xf0bf8c73 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xf0c4cfa3 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xf0ce5846 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xf0d2e78e regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf0e7b52f usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf11d6907 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xf12b8e84 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xf139ef65 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xf1566ca8 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf172b344 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf1796f07 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf197b8b8 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xf1a25ff4 rhashtable_init +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 0xf1dfb417 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xf1fc1548 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xf2003cd8 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xf20a036e crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2564374 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xf25b9508 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27e12c5 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xf2899ef4 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xf28ff23c dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xf291252d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xf2918c5d clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xf2e807be fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2ed2efb __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f7147c usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf2f82dbd tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3026332 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xf30bd5b5 dev_pm_qos_expose_flags +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 0xf327a29e regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34f8331 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xf350c276 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xf368fdca ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xf36a0c16 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xf36e2e64 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38c6446 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xf3a5ab9a __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf3b33cac __netlink_alloc_skb +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 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f3d9e0 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xf4518779 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf45dd393 blk_queue_bypass_end +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 0xf49e03b9 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xf4a55ad9 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4b2a9e5 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xf4c4d3fe xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xf4c6c36f dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xf4e07338 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xf4e2e4b2 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xf4eb8f6b pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xf4f60b9c inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xf4f8dd22 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf501d784 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xf512d8ad sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xf51916a9 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0xf538c5e5 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf580730d usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf5925e49 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf59d9ae6 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5fd96d5 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xf608c039 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xf612555b devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf6133d9f dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xf615386f percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf61554f4 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf6179a0e __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xf66807cc devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf6a52923 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +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 0xf70912fa securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xf728e0a9 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf76e3f47 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xf7794893 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf79cb4a1 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf7a424ae disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf7a70548 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf7b63231 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf7bf514f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7daadc3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf8048864 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xf804a3e3 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xf815c271 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0xf81b6b72 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8355307 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xf840fa09 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xf85e2c36 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88a1aac gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xf89fccd8 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xf8c5075e crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xf8c79747 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xf8d4f915 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8e8e2d3 regulator_get_voltage +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 0xf9151f27 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xf92ae964 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93ccef6 power_supply_powers +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 0xf9841277 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf99dec38 ata_pci_remove_one +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 0xf9e3850d tcp_slow_start +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 0xfa38b5e6 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa576b06 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xfa7f8bbb ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xfa832bd1 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xfa9d127d tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa5b398 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xfaa78efa pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xfaaf7f7d xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xfad156e3 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfae2652d ata_dummy_port_ops +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 0xfb4e8aa6 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7025a7 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0xfb76a0f5 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xfb800add pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbdc33fd vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xfbe33be3 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xfbfb908d usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0680dd blkio_cgrp_subsys +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 0xfc5a81b8 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfc5b8038 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfca6823d dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfcca9fb8 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xfccfe01d crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcfab3d3 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xfd06015e debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xfd19d782 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfd2293d3 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xfd4d224d irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd51c755 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xfd523371 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xfd5e4c2d __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xfd70023e debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7c45de sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xfd880e7a security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xfd909703 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xfd9a5ed9 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xfda17272 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xfda20588 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xfdd7ca90 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xfdd8e006 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe130f0e device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xfe25fddf inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xfe3199ad blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xfe505889 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0xfe6aba9d ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe894f8d ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9e2af5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xfebe72f2 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee02f24 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xfef40cbc ip_route_output_flow +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 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff4676e5 ata_bmdma_dumb_qc_prep +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 0xff7679de ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xff7901af virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xff8da0f0 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xff9326a6 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffbe4c41 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xffdfa1a8 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xfff48cc6 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xffff25d4 sysfs_remove_files --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/i386/lowlatency.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/i386/lowlatency.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/powerpc/powerpc-e500mc +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/powerpc/powerpc-e500mc @@ -0,0 +1,18124 @@ +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 0xd3f709f2 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x63fc402e uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x5511b035 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0x62674225 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 0x15ab6ada paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x17ed0f63 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2d487952 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x38e1565c pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4b26e024 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x5e936d7b pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x68dd1abd pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xab7b2186 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xdd0e5fd0 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xe5f02e7f pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xf0d6e3f4 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xfaa42e78 pi_write_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x682388a1 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12cad265 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 0x1a642657 ipmi_smi_watcher_register +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 0x74e9abc3 ipmi_get_smi_info +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 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 0xe5a1ee50 ipmi_smi_add_proc_entry +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/ipmi/ipmi_msghandler 0xfd680aed ipmi_register_smi +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x193998e7 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x1b087353 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x2cf97c40 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xc0700d38 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x0dede444 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x7cedb366 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xdb469e57 xillybus_init_endpoint +EXPORT_SYMBOL drivers/crypto/caam/caam 0x1c758e97 caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x31149ba0 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x38cdd64a caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x4dbed4e2 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xe29afdbf gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xe38a5b77 caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xfd131f54 caam_jr_free +EXPORT_SYMBOL drivers/crypto/talitos 0x186978d7 talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x2ecc6922 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x302fade2 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x6d0c63f8 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa093dd9a dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd77b9c90 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfcb3c2c9 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/edac/edac_core 0x245e413f edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x568f6f92 mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0a218d20 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0bfb708e fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1c26a4ee fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x39c01bbe fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x42da0d6a fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4c1870d1 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4e2fc6d1 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7ad5343f fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e5e7f3e fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x80763f56 fw_iso_context_queue +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 0x93d90059 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9d35d656 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9dbbce73 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa755b95a fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa7da67e9 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xac3bd4ae fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb44d3537 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbda35d00 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbf9019a1 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc0d79740 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc6397eed fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc6d479f1 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc8c5912d fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdf7d292d fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeb31b165 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf2c79bc2 fw_card_add +EXPORT_SYMBOL drivers/fmc/fmc 0x018fd693 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x079f550d fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x57ed1218 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x5e8ffa67 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x8bf8e95e fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x934ef366 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x97385834 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x9915e4fd fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xa8083078 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xf03ccedf fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xfd68772f fmc_reprogram +EXPORT_SYMBOL drivers/gpu/drm/drm 0x001626c6 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00d4067a drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0276b7d3 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02a18d35 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x030023c6 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x030f32f7 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x042a984e drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0537eaae drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x064df44f drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0678948e drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06bcb386 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07b22769 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0854d373 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0952484a drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09557dbb drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0978306d drm_gtf_mode +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 0x0b730e95 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c0b5e40 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c100d2e drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c38dfe2 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c755064 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cf9839d drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ebf3615 drm_bridge_mode_set +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 0x10446e4d drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1044cbc9 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1072e564 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10b0d9f6 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x119559de drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11c81a3a drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a6cf42 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15a7029e drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15c53c5f drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d4bf35 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17098524 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18584072 drm_mode_set_name +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 0x1a87c951 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a8ad8b4 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b6d92a4 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1baee42f drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c094055 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cfbbf5e drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d18b0d9 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e25c23c drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fce6a67 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x215e4563 drm_property_unreference_blob +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 0x2410b316 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x247263c5 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26488bee drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26f2e278 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x276f2795 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27a75139 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27d4f7d9 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2873a619 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28e9666a drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f29952 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ac5cc79 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bb1489e drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d9816a5 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ef3f976 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x302010bc drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x306964d5 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x347a2690 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x362a34ed drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3870af21 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x388b5b40 drm_vma_node_is_allowed +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 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bc631a4 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3be88e92 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c2f9bb4 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d8283c8 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e325628 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e916a76 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x405942d9 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4059b6f9 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x415be222 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4342442f drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4361a2b4 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4364ec81 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4469a940 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4485514b drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x453bcd78 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x455babe8 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x471a6a47 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498a4352 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49e7f0cb drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b639b60 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c8074cb drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cbe8ced drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d2b2add drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50fc6d18 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x512c5c14 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x533241f2 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53ebb399 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x542463cb drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5527f3f7 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x559a6bf9 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5763842f drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x577e8764 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57f4aecd drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57f71cf3 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58d22d61 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58dbf11c drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5937a64b drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x597e8fab drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a0e8614 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a82491b drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bd1fd37 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cfb54fb drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f16ec4c drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6130b9cd of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x645aca6d drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x652fec34 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6540b24b drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x654b47b1 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66762df5 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66a53847 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67e58d93 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67e779df drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6889145c drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68e93979 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b280207 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c1ee0e6 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c26c36a drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d8e42ec drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e23f351 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x709f6f07 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x717ba48d drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72ec79ff drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x735c8a17 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73be0b5d drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73f55c4f drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75b4d949 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75f77978 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x762300a3 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77da5ead drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x785984c3 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x786c1181 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x787c4a6f drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x788faebe drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x789ddba3 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79a4a3e2 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b0d32fd drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b353ced drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bbb8773 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bf1096e drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3a40ad drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ca98ceb drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ce446a0 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f70bad3 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80ddcda1 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81307a8a drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x818dee9a drm_select_eld +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 0x84264600 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8479cf7e drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84ddfe7e drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8740c9bf drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87595fb4 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x880187d7 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8986982d drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a65479c drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a953edb drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8affa7c8 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bf3fdef drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c043395 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4f30f6 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cf511c3 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d110177 drm_crtc_index +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 0x91bcffab drm_add_modes_noedid +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 0x930c55e5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94678622 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x967b30f1 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97b81ff5 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x989cd153 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98a18ce5 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98eb07ad drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ad57048 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d1ec78e drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d4060eb drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ec49c9a of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0368eb2 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa265cc4c drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa29d9d91 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2c7f0c3 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa335d2d8 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3383ffa drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa470b6ee drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa55d15ef drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5ef2e54 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6a8a01c drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7cfef7c drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa97c9b15 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9c8f397 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc5c063 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad828f17 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae3e8307 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae7b83b8 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf36eab8 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf7cbc9e drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb073dca0 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb09d60c5 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1d89b3f drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb20ea30b drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2a57c17 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2bc6aec drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2c411a8 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3810a8d drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4582702 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb46a3b01 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4e67662 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb53aab52 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb839f19a drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9422e96 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9ec265e drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba1477c3 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba26d3bb drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb71c3b4 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbda08808 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfafdf6e drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0290b43 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc138fab0 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1efc7df drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc387cd45 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3eea6ef drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4c21026 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6f20eb9 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc94b68f9 drm_mode_copy +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 0xca7b1595 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcac22e7e drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc6a0f85 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccbbed61 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcded0cf8 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdfb4bf6 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce7fd3cb drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf20ff08 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1531e99 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1e9964c drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4804566 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4a36744 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd85a9b88 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb3ce37a drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb400ea1 __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 0xddc582d6 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde15dcf2 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde365b45 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1d8945b drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3f48a9f drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe558f9d7 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6fed843 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe861363a drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xead713b2 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb87c5ef drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec3686f2 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed2f9e95 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedaa771d drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedad50b2 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee5c557f drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee5f6e1c drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeb50662 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1981165 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1a94120 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1afe736 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2be7ab2 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4109d9e drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6a4ef03 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6fda23b drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9b67156 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9b79840 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa0e2c19 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa1aaac0 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfad11efe drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb730f89 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb7560e5 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc6b80ad drm_crtc_get_hv_timing +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 0xfdd9cd1a drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffb59bd8 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07604bde 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 0x0df40bfc drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e2faa73 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x111553f6 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x116e357f drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x126a4b77 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15e29b29 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16246b08 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a69dc92 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1aebbd63 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1aeecc47 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1db9ce9b drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x216499a6 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x217f9a23 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22185db7 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x270d2421 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27d25ee4 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27e317ae drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d9af7a9 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x311cce99 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31964cd6 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31ee6889 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3380bb29 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35c778e0 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37b73217 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3866e6c6 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39bef7ae drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c85417f drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e471e40 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3eaeb4a2 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40f6f4ab drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x450c39fd drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x456e3bc2 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45b5f720 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4886138e drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48af77c4 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49b88b49 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a1a9676 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f0cf10a drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4facb1fd drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x528bfae5 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54d9a52c drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58494ccf drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ba32f68 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c6c0feb drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d376818 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f058c64 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61744347 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63a50a42 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6622d7be drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69803b78 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bc023a8 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e2d28d2 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71018736 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72999af7 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x74867885 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76a5fe81 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79ba3274 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a1b9394 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a5ece0a __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ae15fb2 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d391f5e drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7df8f9be drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f98fa4e drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8476e068 drm_atomic_helper_check_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 0x862b1024 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x899549f7 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e349d60 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e685cf0 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92723bdc drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9eafb7ae drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa02e558f drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa13bee7f drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa15996d7 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa33d8f03 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5bb2e5d drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6458a94 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7d4c351 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9543f37 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa968fa7e drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa96bcd26 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9d1d28a drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf21184a drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb67d4871 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbadeb30c drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0354d12 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc18d0e3d drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc401bc45 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4a76142 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4c26f64 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc61a9c37 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7b1dad2 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd087d115 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd26ac3a7 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4c849ce drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9b5c1ce drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc82fdb4 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xddcf7ca0 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec4e811c drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec826913 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed0ba0c4 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeda46519 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf21c699b drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf37ea1db drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3944b1a drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4a2c485 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfaa0d29a drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe04432d drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe5c1ba8 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x00331ba9 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x03712dea ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0873157c ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0dae9eb9 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x160e40e7 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ae4394f ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1daae0f4 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25bca15f ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c1c166b ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2cd19988 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x324d398e ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33fc4d63 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3daf73dc ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x427c160e ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d6e002e ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59198517 ttm_agp_tt_populate +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 0x5fb230c4 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61a5b336 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6725538f ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6de05577 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e78f861 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x770cf346 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7750bf34 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x78287972 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7adcace4 ttm_bo_validate +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 0x867239c2 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8827a05c ttm_prime_object_init +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 0x8f0f64b2 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8f9376bb ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9234eee4 ttm_object_device_init +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 0x9b897020 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa24d9d5a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa897a8cf ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac4e4228 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae7f60c4 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc563ff3d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd390b2b ttm_bo_synccpu_write_release +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 0xd50a0ed7 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8744b76 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda26a95a ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe458d2e5 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe8b36969 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeafd5c43 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xebb36c16 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xecd82e52 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeceb4451 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed089bcc ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed0fc637 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0ab8b13 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2a67f91 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5bab7a5 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa595d01 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe530ea7 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff1bcffa ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffaed484 ttm_bo_swapout_all +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 0x830807e5 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x9a98f684 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbd6a2de3 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x2ee9defc i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x83fcc00a i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xbebee2b4 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x05d9ea32 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x11a9ce98 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2dfa50eb mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3290d9ad mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4b2bb145 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4b488548 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5dda4321 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6a5540f3 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8c05b547 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x92ad8a4d mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xac8f26cf mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcce843b6 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd46a4c2e mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd52cf835 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdea3fdd2 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe9a03965 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x1414eda1 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x430a850a st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x40b54c8b hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x4105cb0c hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x6262fd0c hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7437d012 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8dadbb29 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 0xc8c61add hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x17027e54 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x2ddaf756 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x4c385367 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xf340293f hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x49abbce6 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7b400fc3 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8a219b4d ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xdc5db25f ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf25978d5 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x92a80600 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x9f7e77eb ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xb61bf9f9 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 0x21c968d7 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2553b8c7 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x33359317 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4b25088c st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5761035f st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x768f2822 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7dfbc615 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7ff4a81d st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x94ad8284 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x95b9d48d st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc22d87b1 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcec3660d st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd240ba75 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd630ded9 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xde899550 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x221e6fe7 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x34a7baac st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xba067282 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x65eb742c st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x9b3d83ec st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x73d59c39 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x8297876e adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x08e3a6c6 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x09130939 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x0c5766f2 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x0ea818ba iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x19d9e567 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x1b48bf6c iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x1d5f117d iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x4d51f166 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x59c3927b iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x6aad8fb7 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x80e21e31 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x931ce52e iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x9e75e2f0 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa09c178c iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xa390c4bb iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xcec89bd3 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xeb99a8cd iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x1e35b88f iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x51f6bf5f iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x54f01e88 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x75524a0b iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x9074c530 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xbf7249d0 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x79b4c235 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x9a06971d st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xeef21807 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x42cfe24e st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x65a4ad4f 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 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xff68ee4a rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x107c4a79 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x15570f48 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3c3b89d1 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x59066070 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6d7563a3 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7679c2ad ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7e6e96f0 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x82b0d7e0 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x89795163 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8dd05300 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x923726ac ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9738dbb5 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc10f5826 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd19bf498 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf264c0e3 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf6edb150 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xffa68fe5 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02cbbdb0 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07ebe7c2 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x09af955d ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d6053be ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x240ae940 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27b3de94 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ae40fb5 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x376b404d ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3971e8d7 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ded0f5e ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x461a20ce ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x471988c1 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49c1923a ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a0af779 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x514284d0 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x514b8d99 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54ed120a ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57150654 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x58ce5d9d ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5925f5f7 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59cbbee2 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59d5c34d ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ca91c3d ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6084c4f3 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60b3849e ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61aa6b56 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6330aef8 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68b29d51 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68ec0823 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b98ea3f ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cf30b3a ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d232fc0 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6eb2f6bb ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x764fde02 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7e64c6e2 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x803b46b3 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81b22abd ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88baf9a4 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x954eef20 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95c76a3e ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98c80c31 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99556f20 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ab7be2c ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b2a963f ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0bf3c9d ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4c87d31 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6523b83 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8b67bea ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa917abef ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xade0d869 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae2a20ee ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4436d2e ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb726c3f6 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb74f8688 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba2ded1c ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb6d05cb ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcd433ce ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd193c2e ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0c083da ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1fe881d ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc376c61c ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc483053a ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc83051cf ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9b654dd ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf5e69c6 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8a9174d ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd97d98f8 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdcb68529 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdde681c1 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe07f64b8 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2523bfb ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe392435f ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4d0cc5b ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7556300 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe81bc5ee ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe953e99a ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee4359d2 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeeae5bfc ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2d7ac40 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa8bc1a8 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc5f9c18 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe58f06c ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe90eff5 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfed3e09c ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1e326341 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2eb32761 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x532f647e ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7517c014 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x81414000 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x86f945ba ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa8a25d66 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbd2dbb1f ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xce371beb ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcf2ff11e ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xdae1016d ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf2219965 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf4c13fbb ib_unregister_mad_agent +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 0x80532522 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x87273dd5 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8e9ce409 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8ed30207 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa7312ede ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xca4b0708 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 0xf0cc9f99 ib_sa_path_rec_get +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 0x055da6c2 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1199faec iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2a9b078f iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2ce23644 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3ad8802f iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3cc7615c iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4b18e10b iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x65c53167 iwpm_register_pid_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 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9136d580 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 0xa62284a2 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xea9c6b4c iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf07ce472 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf0c2652e iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf2db8479 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3fff7e4 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0179dbe6 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0f1fca13 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x16e3a04a rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x31967883 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x43a7425b rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x55c33f3e rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x665b2767 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x666c6243 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8dd90245 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x90ed224c rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x917694b0 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9756dd95 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x992836f7 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9beb9022 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa2ee250b rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xadac39d4 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb6501bde rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb65ac491 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc1a00211 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe6a9648e rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xffb0874f rdma_bind_addr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x09bce077 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x09c8beea gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x113fd5c0 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1a6a8578 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1aa32e2e gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x67222367 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x81082e65 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbf4fd169 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xcfacfc20 gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x3eaa4ff9 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x86dc8233 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc85b170d devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe468cd8b input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf546960c input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xf89c536d matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1a8cb8c1 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x5efb614a ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xa9e52aca ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc5834b61 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 0xb5d90445 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x0118763d sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3c7f3c54 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8b098609 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbb3e0fd4 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xcce82d38 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf2bef1dd sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x6fdf37de ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc8b38467 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 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5dd07709 capi_ctr_resume_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 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 0x9baea313 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9db7347c attach_capi_ctr +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 0xacd6d5d6 detach_capi_ctr +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 0xba23b287 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbe5e3c8e capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc4d2c1b7 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc67d1f8e capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc7bb7291 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/capi/kernelcapi 0xf7034943 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3f7d6160 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x57454080 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7a52fba7 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x933f9951 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x95b8a9fa b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9e6d2d8b b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb32f0334 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc407b0e0 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc7788cef b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdab7eecb b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf1122d93 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf1a7239a b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf71b99ff b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf730986c b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfbfbe9b6 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x05edb83d b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2b9d7057 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3fc6b92e b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x47c02794 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6ec63f60 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9cf12552 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb609c9a6 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xda33a4db t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfff298e2 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 0x49736dc6 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6ab8be3d mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xdf7b99c1 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xe683dd1a mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x5540a071 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xa151e35c 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 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe186bcd8 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 0x36074233 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x62025a87 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb1171751 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xc61fa1b4 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe908ce92 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x80b9a5a6 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x8a36e908 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x9ffc212d 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 0x1176d353 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x17bce659 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x181ec5aa 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 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2f5d8586 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x322fe65a recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x40b97581 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x42a9887e mISDN_unregister_device +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 0x5f89a498 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x60108380 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6a9f5ed7 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6c93c422 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x772694ae recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x84f14171 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x89374a48 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x89cdd108 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c8d2fb8 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa404bcf0 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa78c5843 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb094887c mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc93c253a create_l1 +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 0xe86204ae mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf3b88a13 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf6a746e7 bchannel_senddata +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 0x0a79d707 closure_put +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 0x42963e56 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x541c77b3 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 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 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/bcache/bcache 0xed7d9a53 closure_sync +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 0x32e346fe dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xbbcb7399 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xe4a63164 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xe85de937 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4897bb88 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x51aec200 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5e646d0b dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x97d8951a dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc41d0a70 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf50bb531 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0xfa8e9238 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x235dded2 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2c37c643 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3ea92f18 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5925e691 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x82b187f2 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8472a19d flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x87b8587a flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8f77571b flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa8fcd719 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa987f167 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xca63b684 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd742a9ff flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf8dc3237 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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x60bd6147 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x66b2754e cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x7d59548a cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x90531fc1 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/cypress_firmware 0x3f9f84ed cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x51c653f4 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x578b4a1d tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x033806b0 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x09432846 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0e67e729 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x11c99753 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1bd4c9a1 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x21bed67a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x26af44f6 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x327c4b55 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x35f0c2ff dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x364e2d98 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x39f6d401 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f4f5023 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x448455e0 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4acfb1b2 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5da9d90b dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x65886421 dvb_ringbuffer_write_user +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 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91ba32ed dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x92b1f51d dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa08831fe dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3483a15 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa441c086 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb82e2b99 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb832dd63 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd1cc96d8 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd2821795 dvb_frontend_resume +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 0xe9c6d899 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xef50f8ac dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf0b608c2 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf80a2b29 dvb_register_adapter +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 0x96bd1d24 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x851033b9 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x8a7155e5 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x20c32afa au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4a7f582b au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4f05c735 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x72d4a6d0 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x73e3b3e2 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x75357f9a au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb5804f75 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd485208e au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xffca2152 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x532be672 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x87c3c765 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x95d37661 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xa4b59a09 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x5a4ababd cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x528d1473 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x6209d304 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xbc56315e cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x5e07947a cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xb800f590 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xc742fdc8 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xa80969ef cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x72c00f62 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x733632b9 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9a863017 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9c1b88a5 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xca5b2b3d dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x007f4147 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x397728cd dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3a8a3dd5 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4396f6b4 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x70694516 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x71e7408d dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x76cd0c74 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x80166faa dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x97656f1b dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9e9155fa dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb6d47226 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc42a74e1 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc5ba83c9 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf2111c55 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xff2a8f28 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x7291dd80 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x29f36dd9 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5a52e402 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8ac9799a dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xaf9760de dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb823285c dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xdd3b1a1f dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x1f62628e dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8ef4967b dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x994bd7f4 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xf94380b1 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7c3a2d3b dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x35a4f30e dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2bc880e8 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3b74b595 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4354c545 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbd89a636 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf05cfe04 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xf9f64b3d drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xedea0ac4 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x1ef23778 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xfa8da02d ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x5e06575d dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xa73c8fd7 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xe1deb8ce isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xeddd4cd9 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x9dbffd10 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x14d95434 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x6bd31a09 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xe160a1f5 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x9295673d lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x27203305 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xd0786b2f lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xc893db40 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x43266ce1 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x95d3ebc1 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xa7bfdd88 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xf75d82ba lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x36de4b11 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xd1980c1a m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x930fac88 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xe283e300 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xce10f53d mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x1c1e9a17 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xca176d52 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xcfaeb0f0 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xd6ce1ead nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x747040c5 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xf70ab4a0 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x3d7c7dab s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x9f74ebaa s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x610f3b1b s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xa343053c s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x6573cd1f s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x64a6fecf si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x1be2f8d6 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xdcfb4782 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x8f4e8543 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xa61d7199 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x8e0886f2 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x669a646f stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x94cf00e3 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xaf23437b stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xeb1558db stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x81693ba2 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x823003b8 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x760f2e76 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x7cbaa30b stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x7f27db22 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xad2bb552 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x3e378e1e tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xb96f8b0f tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x64a24312 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x53299764 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x673c3f0c tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xe9930a8f tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xe533709a tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x7be22d1b tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xf869763d tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x00d748d6 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x5a2e6de4 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x1d09633b ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x45c21b33 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xc25abe0c ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xcfe935ca ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x8f730a70 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x9df88f30 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x3e900a0f zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x175df26b flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x87809ba3 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8cde10c7 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa7d0159a flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb5ebc0a2 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd23264b9 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xec89c57e flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x06f1ec2c bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0c1767ad bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x866be3c4 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xff177369 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x1e8e8f83 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x2e5b1bd0 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 0xd11bf735 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x09773332 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x27b93638 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x32516e43 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x414799fd write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4daafc6b dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7dd39dd3 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa805c2a9 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xab8cebae dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xed061b6a rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x2d5d767d dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x03e57b74 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1c862e84 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2c97e646 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x57a5afbd cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc8e1a35b cx18_ext_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/cx23885/altera-ci 0xe95c2584 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x890761a9 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x98721ff6 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x994ca3d3 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb43eb085 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc792e861 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcc2f0036 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf1d0a399 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x8229ebb1 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xf60ca29a vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x869615d1 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xadfd003b cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xd2be1b98 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xed0e6159 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8f0d1281 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb44f1f7b cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc3766e13 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc8fe10b2 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc9dc1981 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe4633b8e cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf675ec15 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0e7ad253 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x252f233a cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2eff18ab cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2f98972a cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3509a4f4 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3598ac83 cx88_dsp_detect_stereo_sap +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 0x6af23608 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x814612de cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x912f0286 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x95210349 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x98e0e9f7 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa13bced4 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaac43547 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb28d8fdd cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbaadd5a8 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd3005cd3 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd4481db2 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe2588b86 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xece15f63 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xff4cf681 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x27bfa169 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x33946df6 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3c9dda28 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x428f9b9d ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4345f87e ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x48eec7ea ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4cbd65be ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4d8cbff5 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x53dd0d0d ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5d05d8f7 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x67ef4720 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6df0398b ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x866ac6af ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8e3a402f ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa91668c3 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xad106d82 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xda17268e ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x044b5a34 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 0x14d6f4fd saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4e9e2fcd saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x558e7b2c saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x560e7c95 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x565c7335 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x837ae018 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x87f0cbee saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8d48959c saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x990eecbb saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xad165181 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe9b39167 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xe86c8483 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x2ffcb5c9 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x642b4f84 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x7f68e5e5 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xfa3e7612 videocodec_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x00145991 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x04786235 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1e3b192c soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4d2152a0 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x726609d1 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8e6ed1a1 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe6cf060b 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 0x26c6212c snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3c65e01f snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5a0d505a snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6a854e4c snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe4c0233c snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe4c6d1bc snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf53c01b0 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2970d7bb lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2dea2685 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x38352524 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x389f9771 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3e4a6fe1 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x48728949 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x83b3dc5a lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa2cf3adc lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/rc-core 0x07830506 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7a095847 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x728a677e fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x8833ea8e fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x5a05344d fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb3a0137b fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xead6b7b4 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x0856232f max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x16bc1389 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xe9fe59b0 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xd1b6ee95 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x6ca484b1 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x2d0f8ed0 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x150b879b qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xee02c3bb 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 0xb4ca12ff xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xa3ceb584 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xc9e9e1c2 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x5280f201 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x90b15178 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0684d811 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1d8e7a01 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2a26b9b8 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3873e7c6 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3ac7d8d6 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x653fd044 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x720b57e1 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x789f49b6 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdded81d3 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x07c7780e dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2334ad65 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2ab3a1f0 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x359a8152 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x35fc8326 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb219c6cb dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe9445852 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 0x47100c74 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 0x06769a61 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0c8c253b dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1c3c4908 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x37da7bd0 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x430b5758 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5b42a744 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x67db8bf4 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6aa45a8d dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x902cf4b4 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 0xc8a1efb0 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe815e0bc dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x6dba968e em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xf6ba09b6 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0c2801ec go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2a0eef91 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2c08ff97 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4f8f301b go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x68da5080 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7e56ce30 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x91bc8512 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x92dfeed7 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe1ad39a1 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x075c0b17 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x20613b34 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x607f03bd gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8aa2e2d4 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xaa0d3068 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb43a7624 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc66c00a0 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd26f3e03 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x335a065c tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x6f8df221 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xa7571c56 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x5f096d31 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x74ce6cfb ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2b864a3a 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 0x5ca16a64 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x920a4716 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0b0e6056 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0c7d87cf videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x16c50092 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x52a7c5fb videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb15e25d7 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc1b53c32 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xd5446a23 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x01d3d000 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x164837b9 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x60edb3b7 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x81d1df25 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa523bc03 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xfc882440 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x00adf2b5 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x023b9e14 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x09ad5a5b v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0a51cf0e v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1134bed1 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1213afcc v4l2_async_notifier_unregister +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 0x187cdcb5 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1aae9e4e v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ac1634a v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1aeb3ea8 v4l2_s_ext_ctrls +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 0x23b1a484 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2455db3c v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x24d49b95 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x27a62e6e v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28554016 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x322eac78 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x37c69a91 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a2c010d v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a615336 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41be380b v4l2_of_free_endpoint +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 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ec9046c v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ef97f04 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x535ea59a video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x579cfd04 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5808ccd0 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x585c5d98 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x605c873f __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x62d2ef80 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x679cab9d v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72acf646 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75230cdc v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76105237 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x778839fa v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x795793db v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79e40a73 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c7e208b video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e9369f1 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80ae2b23 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x846fd323 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x878d3d66 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x898eaf3f v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95d49c11 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x964007f2 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f38cb62 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0d44820 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa20a3503 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa35cff5b v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa67e0df5 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad28bd75 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf57e856 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb3618208 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb44817c7 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb685a199 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7a7d4bd v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbeefbfc8 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc50c2de9 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd52a8e86 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5c8af6f v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5f2f0fd __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7906384 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdeffff84 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe50dc458 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe86c2222 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb0941aa video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xecb2070f v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf0ad6766 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf169e18d v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf1efb076 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2e253b3 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3becd7d v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8954776 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc71a511 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfeb693bd v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/memstick/core/memstick 0x18ac313e memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2984ae9e memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5e916d6d memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x750ca430 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7af90669 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7d8e56e7 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x91396d3b memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xba54f2ee memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc4be9e1b memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc8434745 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdd2af559 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xefbccf71 memstick_free_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x017f9cab mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x03b95c9d mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0ee059f6 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1380ba60 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x20575b23 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x25a1827b mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x26af0689 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2b93b3f8 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2d30d097 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30cd3739 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x38ad9d74 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3a957449 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3ff56da5 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x473a1611 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4a8fd678 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b3e17f7 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4cb29f99 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x531051e2 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7055e242 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x71783049 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7ccdd692 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x965e7a71 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa6ed7274 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbca17784 mpt_config +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 0xc5cbd919 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xca74a79b mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcc958d42 mpt_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 0xdfe69578 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe94f0d57 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0dfc9874 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1b9ef695 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x215e2ef8 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2995b1cb mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x31a1d61e mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3f984665 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x48d92d95 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5c991a1b mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5ec9e27a mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5ecf8eaf mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5f8a2963 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x703cd567 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7172c7f5 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x738ed0b8 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x74cdbdfc mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7c29f9f3 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8990fe0d mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8b647637 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c712cf0 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x97fdcd3f mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb665da38 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbab9d3e9 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc36306f6 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc3e2140d mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd31e06b2 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf8b879ff mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfc428ce7 mptscsih_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x1e60d10b cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x74766476 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x83adc5b9 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xa46fbf9e cros_ec_register +EXPORT_SYMBOL drivers/mfd/dln2 0xd3555ec4 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xdd1027e5 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xe9ca2f79 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x07962332 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xcc9b08f1 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x225b4668 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x33e85c2a mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x40566685 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x57333add mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x64dfb7dd mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa292c945 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb92048e7 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xca9d4476 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcc5d0c37 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xde58b304 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe3ea18ba mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/tps6105x 0x44c9a8bc tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x45c4ae7d tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x901d779e 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 0xaed58bcb wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xbfe93eab wm8994_irq_exit +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 0x1411dc81 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x766e5916 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xd19d0b4d altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x9034a656 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xa80a3c8c c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x235293de ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xddcf7c34 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x1102c627 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x11f33346 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x56135f78 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x7620e6a6 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x8f82362c tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x9261b757 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xc7d435ce tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xd279e8a5 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xd3f00595 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xdd2e7842 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xef9fc90b tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xfca23c1f tifm_unmap_sg +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xf579ccd9 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x1c97fc2d cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2f2dc86c cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x481a9647 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7c03357a cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x86ae33d7 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xacad1719 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe10e25ae cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4f479b7a do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x7280ecf4 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe490e014 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xf5579999 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x4a98abc1 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x7eb46dd7 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x6337ad5a simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x5e7d79b8 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xe1716a17 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xeca81492 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xf38a7dcd denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1f154860 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x784ab4b1 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x88e0f41a nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd3e78bb3 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xfb8f8bff nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xff41d6b8 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x369c1e52 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xcf911223 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xf6b12217 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x5db8d090 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x9a4ce6a6 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 0x3e5d2129 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x73859e31 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7cfdee97 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7dcdcfc3 onenand_scan_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0b225a95 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x161904cf arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2c658293 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x363d1308 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x42dfa131 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x56cbe4a3 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x646df9fd arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x97f8ccd1 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe2bb6d65 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfbcb815a arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x4318f6dd com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x533f181e com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x9f1fd2d8 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x08586f1a ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0beaea5a NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1aae4050 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1defcc9b ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x459aa776 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x59f3ad4d ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x657d5f57 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x73fcacbc ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdcea8b45 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe108f280 ei_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xaa9b1524 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xb33696fb cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0b3c3276 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0e3d1032 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x35e99a64 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x402aee5b cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4bb23269 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4e635907 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5093dc38 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x54216b7d cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7bdef3f3 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xaa8375af cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xab6c8ec3 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xad4ceb43 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd4c0c081 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe27f3de5 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfb5858f4 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfc56afbb t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0a9cd6fa cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1aad0c8d t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f358e54 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3491a7af cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x34df3e4a cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x40d78ccb cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x434b9989 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x479fc822 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x487c77a6 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x49e496ea cxgb4_port_chan +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 0x5278f08a cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x55eb8582 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a6b62d9 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a71e488 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5cbe158b cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x613d5793 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x684db11d cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2f6ec6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x71da02c0 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9207c879 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9a1900b8 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa03985d7 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xac5e9573 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc28cd2d9 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4f4c775 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc922d410 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcaa265e7 cxgb4_get_tcp_stats +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 0xe2de31d0 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xed921ecc cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf55dff29 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf5d831f6 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf77fba36 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf9860378 cxgb4_read_sge_timestamp +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 0x79d7c1d4 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x95f5f45c vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9d753655 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x29aa0863 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x88029f73 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 0x040a7193 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09cd4495 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b8eafed mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x172c430a mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x185eace4 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d4c91c3 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e66ed71 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27683e3c mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f9d7195 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b8ed72d mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59c3e3fc mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d3d8347 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e411709 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f9402d6 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78faa2e6 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83477a9e mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87e1f9ea mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88f35d93 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96e08e6b mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ed612db mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa27d9d8a mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa30e8515 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3354d78 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa71a75d5 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb83f010d mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb194249 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdd65c3a mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfe9e9a0 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3b3d82d mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcef154d1 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3f02532 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe31a66b7 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4621150 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe587be92 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9dca4bd mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf534f171 mlx4_get_slave_from_roce_gid +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 0x10d5034f mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20bc86e2 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23050e68 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x230fa4c3 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x312caabd mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x336cefbe mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x450ed3af mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b4bf42c mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a3e2e63 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c31c258 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6349df34 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6690ddb3 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x669db2b2 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6786a733 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ef0965c mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84e430f0 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84f373f3 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a1ad8d6 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9fd888dd mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa2f21f2f mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5cc6e06 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa68364d1 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaeb4cd66 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf4fb8ee mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb8ad57fb mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcff745ec mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4404864 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7d643b1 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8c1e037 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda3a1039 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4c9c8f9 mlx5_cmd_comp_handler +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 0xe8ce92e2 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf13d3291 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2d9f786 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf37b1ac1 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7a8bfc2 mlx5_core_create_mkey +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 0xfd67a532 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3d3f06f6 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x685131bf hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xabb9ffff hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb48214d7 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xca23a34d hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x10ba54d1 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x117faeec sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x64084123 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8a3c9b9e sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa487fd33 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaeb6f276 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc041df7d sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcaec8c1f irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd60ef592 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xec6fb5ed sirdev_get_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 0x00f4ed1f mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x04fdd4b5 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x22ce78b8 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x2d235f30 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x2ef0d666 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x58968ba0 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x6715c65c mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xd4bf278a mii_check_gmii_support +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x8a59e860 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xad8f97f6 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x35a3e65c vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x5f919df6 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x698083bf pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xaaaa5b6d pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x56a3cbc0 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0dad1818 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x1d40ac88 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x2d599f43 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x50389315 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x913ba1c1 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xac6ddace team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xbc6076d9 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xc8b66126 team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x1ecd5df4 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x59a231e7 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xfb284372 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0444863d unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3aacb235 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3ceb457f hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6b4df5fb hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x903358f8 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa147f477 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa15b4aaf register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb3e5a01f hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb5bf9dc3 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbc540d45 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd0ea3a1f alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x6e96c078 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x1a821eff stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x362b93ea reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x67e07a12 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0f010480 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1f46cf46 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x295662e9 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3e4da3b1 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3eb6335b ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5e48f9fa ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x67cfa990 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x736a697e ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6b048bd ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcbedc716 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcc6e5099 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf8b92548 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x01ddd88b ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x116c3ec6 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x23bd8f7d ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2cb45119 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x32b6d327 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9b51b0fa ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb4159cfc ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb55fd081 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdc94f27a ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf00c2e01 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfbf35063 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x18637aed ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6d502cbb ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x773c2c5a ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7fdd106f ath6kl_core_destroy +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 0x95a4e034 ath6kl_core_init +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 0xd0e1fecb ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd403d283 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe11f0c37 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xedef0fc4 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf4ccb13a ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0af179d5 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0f386c33 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2cd4290d ath9k_cmn_debug_base_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 0x4c6c435e ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x55094203 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5c017b71 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x72dcaa89 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8598f214 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9989f5da ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9c55d174 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9f941a5d ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa1cb1815 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa4df4ebc ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaee8a3bb ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xba43c526 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbb143d30 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc2969518 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc9c844fb ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe17e3c75 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe43fe02c ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe772eb3a ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf00dab68 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf72b49fb ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00d82892 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07874ac1 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fbfe44c ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1543367b ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1607fc92 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16f60ef2 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17fff368 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bf86529 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f1306bd ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22810b0a ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x267e2ec8 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27853ede ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28b6719e ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a11b623 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cc258f5 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d8a02b2 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d9f31de ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x321e6d4f ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33599ab7 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34f79d29 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x390c7b4a ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x397bfadf ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b0c8207 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e614378 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f3f9d6b ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x411c78de ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x416a4175 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x444fd636 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44d90635 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x498ce48e ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a934fc5 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c3cf18a ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51a3d900 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53eefe18 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5483ecfc ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56047d27 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57557f5f ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59fc1b88 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ab3b385 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ce117d9 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d0088c7 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ec4361a ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63120f08 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6373edd0 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65acd9ca ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6830df05 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68ce8a13 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6972fba0 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b5aada8 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6db7db60 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74b0b32c ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75168492 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x752319ac ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79db989e ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a91ef6a ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b8c33be ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d7b82a1 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81cc62a7 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85c956fb ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86f17f0b ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8cd04ef8 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ce333f7 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f772a59 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x903ea5ef ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9046c780 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9212b0bf ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x929b3332 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x942c5ed4 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x951c6fa3 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95c5c027 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97a6ee51 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b1736fc ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ddb6749 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f6acdd9 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2266f20 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xade2d909 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae6f429e ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf01d87e ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf35a5e9 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb65776c3 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6de9a25 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb92e9754 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc136e262 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1633024 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc32c5db9 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8a19d1b ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb3442fa ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcede5c38 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbea0848 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc44990d ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd439dcc ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde2dbd54 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde894d47 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xded167ef ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe13d7efe ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2a35fe2 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3cab392 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6a8fef8 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xedf08214 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf489afaf ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4a15bfe ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6f0d47e ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa6e12d8 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa9a93c1 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x80d389fd atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xc4131356 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xf17acba4 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x11280ce7 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1599746f brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1d33ef27 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x46e75fbb brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5c43210f brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5ffbce63 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6582cf25 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x67480c14 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x99417458 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9c695799 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc3d1e88f brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc5c943fe 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 0xfd8ca220 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x005e1500 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0c03828d hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x116cee69 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x16d97658 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x18dc1fee hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x364cf258 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4eeba4d0 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4fac1276 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x583130be hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x58629622 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5cbd949d hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6d452f21 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x79c976f4 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c65500c hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8b5daac6 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x932c69dd hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x98cb3d07 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 0xb4d2e462 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb6a54aba prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb89ae8c8 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb9a83cf9 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd12baa35 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd861c3a7 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd9e2df28 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7f0ed61 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x006f5411 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0617e42d libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x07717952 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0d56376f libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x184071c4 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x27fb3304 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x430edb32 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4c76bffd libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4e81c7c8 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x58b68f39 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x59526604 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6253b220 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6d0fe226 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x72b92ea9 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x75fbaeab libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xca5cfeb8 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcaede7b3 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd1870927 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd3e74ad5 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf1e8fe79 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf2bd0962 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0534a728 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c631de0 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d8d81c3 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e1bc8ef il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x153e194d il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15abf0b2 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ae399c0 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c086635 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1dbf807e il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e32b6db il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1fb5f017 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28d05ddb il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b6b9d1f il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f437c07 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f8fba5c il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30a105f9 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31d31d1f il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32390270 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x346b8dbc il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3be006af il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dba3263 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f639370 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x40422f7f il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x411bb542 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4195aef6 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42073a1d il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4abd737a il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ed3efa4 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53edb1cd il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x56469b03 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b7e241b il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d064d79 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6437b521 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65bf85ac il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x678d0039 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67cd337d il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6cfc3d7d il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d8a5539 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d945c23 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e2888d0 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f83c377 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71ea0a4a il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x741e5d7b il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79099321 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7bee3acb il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c847bac il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d824ebd il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d88b0de il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e7e5024 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f90f506 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x815e1c4f il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x830aa5b8 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x83c6c9d3 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86fdcb0e il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a79f0aa _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e5ecbac il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93e7668b il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9820fa6e il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9865eb03 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98fad0a8 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9aa87ad7 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bc3d61d il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9dcd5f3c il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9eb52e16 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa0fcfb73 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa16c008c il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa254c1c5 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2a749ec il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4acbf81 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6c1fbea il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa80900ca il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xada0171d il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xade2e792 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae347b0d il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb006f13a il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb420fc8b il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5b1f657 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7057a44 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7984127 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba735eac il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1a3effc il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9ec1446 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda7d4d4a il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe016c8cb il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0c5ba42 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe635aa9e il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb78f836 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeca27d27 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeed1600c il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeffe01ce il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf061a5be il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf140b4f5 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf28cd354 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf61a6670 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf81017e3 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf840a68e il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa0c3c62 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff292919 il_mac_change_interface +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 0x0101791e orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0e46eef8 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x26ed544e orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2f85f3aa free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3d2823f6 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x596ac277 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x697b3a22 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7aa2dd75 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x80f1c0d9 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8d6e13d5 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x98337ddb orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xaa008607 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcb5ec1c6 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd32cb7bf orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd87ed08f __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfb76bb61 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x96b109f4 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05097c32 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0adda87d rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x18354fe5 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x33b64ee5 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3c849444 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x440d5d71 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x445f93e4 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x50659041 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5447d3f0 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x54556e2a rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5b24cb02 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5b602f99 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x622e7074 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x64eaadee rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6869c456 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6b34c48e rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6fbcd263 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x772d5bd6 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78b8fc5a rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7aed53ad rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x84475f2b rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86f2cfda rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x96f9e0c3 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a7d7ba4 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9ba05d64 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9cd79294 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xac2a228d rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae2fb922 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb76d22e6 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc1e1ef5f rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc69ca9de rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xce129759 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd0a7b8c7 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd1348ebf rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5478453 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd9ab2ec3 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdd44468a rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdde5ca0e _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe0e0ae38 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed91a760 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf0d2b1d1 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x30a35f73 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x43bf54af rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x5e154522 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa72bc808 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x8b5e41b6 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xa78b27f1 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xb67ba3fa rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xbf019468 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0b3ea01d rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ccab3cb rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x10679a7c efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x18d15f99 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x20d3f144 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x27fb543a rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3fd02915 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4baa6802 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4c34b834 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6a8e13b8 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8407c12a rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x885482df rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9067b121 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x917771e7 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x928a39b2 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9c8a1c6c rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa4afa355 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa951ce98 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xae294636 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb32af668 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbafdce3d rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbb1f7a0e rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcb41acf1 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcc25f29d rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xccd7c02d rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xce7209b6 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcf6401b4 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd9b9c996 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdc839ef4 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf3c0f897 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x248ed7b7 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x48c44c46 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x509b00e0 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xccc12cd3 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/microread/microread 0x50130a5b microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x7dbd79d4 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1b3a9cf4 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x2f70171f nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x7d0e23a2 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x82732598 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xc839c6ee pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x23eb3097 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2eeb814a ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x30be8a35 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7410c52c st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa7942805 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc3356b77 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdc303a13 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xef39594a ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xefc236f2 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x12210027 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3b2450ce st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x490d2040 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5529c59c st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x71f15872 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7c5f010c st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7ec7ae7e st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa675497e st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb225119c st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb47bc3c0 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcd5034a7 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd87e872f st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd883497d st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe7c058c2 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf6059bc4 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfed621aa st21nfca_se_init +EXPORT_SYMBOL drivers/ntb/ntb 0x233e285d ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x334f13ca ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x70e80e09 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x90cbf7da __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x9947373c ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xa67d39e8 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xc4b6051e ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xfda445e6 ntb_unregister_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x61259afe nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xf6293f44 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x03ca1103 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x0bc066ff parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x1c02314d parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x1cbe21ca parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x1dc4cd45 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x2752a31d parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x2e7dad09 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x30de9e99 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x3147a227 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x32e4285a parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x3b0c8fe7 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x547ccd1c parport_release +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6c9c595d parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x788daffe parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x82c29c91 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x9674bd65 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x9bff6260 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xa3de972a parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xa522f5b3 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb9333c67 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd199a04c parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xdac7ce1b parport_write +EXPORT_SYMBOL drivers/parport/parport 0xe133009d parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xe494720c parport_read +EXPORT_SYMBOL drivers/parport/parport 0xe6f9dee9 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xe8cc590d parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xedc37be8 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xf4dd90d9 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xf4ece791 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xf53c2fd4 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xf7d7f49f parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xfedf9c48 parport_del_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x7bcd5ff0 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xfd5b9247 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0edd5e8d pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0f101af5 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1033425b pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x130c2d65 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1c2eaab5 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3a0bea51 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3bb1bf10 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3e99982a pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x697d53de pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x72e384b9 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x73cb62eb pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x85d9ccae __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb2277d5f pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc0030584 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdd1fd02c pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe3ac0f05 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeaa02473 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf2f882a0 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfbffc5df pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0527520a pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1a3d1277 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2d0a42f9 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x41e6f4e0 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4769670e pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6619cc50 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9d4fe279 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb63f40f5 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb94bc152 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd89ac0ad pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe973a9bc pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x13480e40 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x9d80e2e9 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x136d54dc pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x2054fd14 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x3b80ed52 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xa2e1d9ad pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x47c07b86 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x92833568 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xaea1569b ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xd32a8ae9 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xf603765f ptp_clock_unregister +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x031bad32 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2b8aa713 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3218d4c7 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3b8910aa rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x58dc9b43 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5a41f7ec rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x78273420 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x81580aa2 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x97042006 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe466e8b4 rproc_vq_interrupt +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x42c84cf9 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x1b8f6f25 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x42f82b0c scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x6eb40e8b scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x804e33fb scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x270e0aa3 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3584e4a4 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x56e12e3a fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x82cb2434 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8433b7a7 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8be6dde5 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9940b95c fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa2d1d332 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb88ff5df fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc25c7a68 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xce7cbb88 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf190bc84 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00c9cb0e fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08f9e201 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0cc95f1b fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1979c2be fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x26895eb0 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2a86ac16 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36ae08e1 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x43eed09c fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x446dfa43 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x459b32b8 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b35f98c fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c8aa32a fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x536ca8d6 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5876a310 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5bd3a51f fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f17a8ce fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x64f380e4 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a2c4392 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c4bdd2c fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7587f950 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81a4b677 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9c20b0dd fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa6018ac7 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab0bcba6 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3014d95 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb52a4a01 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc339731 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc044ed9b fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc0a9de41 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc2417c29 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc24aac6b fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc375e070 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc4e22dc1 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc76d7dcd fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc868ecb9 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc412afb fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1971039 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe45b0e19 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7fb4e0a fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed6fdc09 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf02ab2d7 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfb6ceaf7 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfde5011d fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x16c41b27 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8b772c2b sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xbd04e71e sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe8122bc3 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x46f88aae mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0a483785 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15a7550f osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x181e2dc9 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1cddad63 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1db491fa osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1f643fc4 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2332cb8b osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b3a6959 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x33703ab4 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x48077453 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4aaeec0e osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4d8f6239 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5858c4ef osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5cfad4c1 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x61c3d6f7 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x61d77c40 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6d7dfbf4 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6e2c6140 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e37b7d4 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x811d9f71 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86fd365b osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8882bebe osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8ae402d2 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8d24838b osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9527ee2f osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9cb7301a osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa1413c97 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa21da3f4 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5b23b16 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5d58949 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc43abd7e osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd5666e63 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd642c40c osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf11d3264 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf5858b3b osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf78433dd osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/osd 0x135f7843 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2eea8c96 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3ad819f9 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x42717e24 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9416c427 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xac6a618e osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x13739bb1 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x168386a5 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2a8dc58b qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2c002219 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4c94bb8d qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5955a203 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9100d922 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9db5bd6c qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa23ad6d9 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa6e10923 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xab3d83da qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbd66c54a qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1d263b5f qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x57dcc36f qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5f3769f9 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xad614d95 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb45804af qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xd2468243 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x27439832 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xae735eb1 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xb95800c6 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x05d8a8ce fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0859294f fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0c2f080c fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1588a1e8 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2022d296 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x213cd3d8 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x327b74d3 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5633c22b scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbac04c67 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcb9a043c fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe12f6cde fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe18ea304 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xed179717 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x09a7d6e6 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0c2f0fd1 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x10fcf83e scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1b05e479 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1b40be8b sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x205ea10d scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x24cd64ae sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x25e0a82d sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2b425693 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x32c77147 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4f076d67 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x598cf74d sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5a8d5bc1 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x624a030c sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x65ddd74e sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6e57c040 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x77183e71 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8946a08a sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x90192ab1 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x980dfd9e sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb05d53f8 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcac3457c sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd73debbc sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe72f38d8 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea345df0 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xec821dde sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf604e023 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfb9d2c80 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2b7d4b5e spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9a55d24f spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd0905cd4 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf7789cc2 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xfecf5767 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x403af9a8 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x5834fd1f srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x7dcc1195 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xfd6e6254 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x06bb25a6 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x06e0dcac ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x11242b57 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x628bab26 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8c256dfe ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x9b5f1c2b ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf04e8086 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x07c39ccc ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x0e7f5597 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x10d76e21 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x11523c37 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x1357617c ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x151788f6 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x1ee5c502 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x24d456eb ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x30debb79 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x36bfcfbf ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x758e60c3 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x7b2f273c ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x7e0b55a6 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x830838a9 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x9afb5e54 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x9fe7316a ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xadd03a31 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xb26624bd 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 0xfd4cf0b6 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xffea877d ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xfff6094d ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x04e5364c fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0bd2fcca fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0d1c8421 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2754ccd5 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x275d1fd9 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2c66b27d fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3147c855 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3a467b7e fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x64e2f3b3 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x65ce1591 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x675100e4 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x78a5ba93 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7fbe1bea fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x81692900 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x866b82dc fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x93e0f64c fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa3fefa74 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xab7d8b47 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb3d7886f fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbb9572de fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbf1cc344 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbfed6c51 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe97c9bdc fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf2938447 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x156085a7 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x37d225d0 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xed6fdbac adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x883bd86a hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xdeb7845b hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xee08cd8d hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xf5281814 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x4442f673 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xedcc9811 ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0d173a4a lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x18286cd8 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1a8e6b74 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ec61be6 lnet_sock_getbuf +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 0x23d3a364 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x28b8c554 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 0x2c982e4a 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 0x3f4f5b46 LNetNIFini +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 0x57ff112d lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5b08e91d lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5cb70133 lnet_copy_kiov2kiov +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 0x6466613f lnet_kiov_nob +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 0x773a4e90 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x82db3137 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8b31e403 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x958fd962 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x99ad9733 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa1e022b8 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa715f8e7 the_lnet +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 0xb5120c0d 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 0xc54bef27 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc849fc4d lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd0a0f0ca lnet_sock_accept +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 0xdb5d75a3 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 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 0x0ed30f97 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 0x451b830e seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x84c2f16b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x96e91868 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xa3577690 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xac54a109 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 0xdd29b86b seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1bf3c228 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x45118c7b fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x5dae99a8 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x77fa63e2 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb6c6db31 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd780f246 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfc95c217 fld_client_debugfs_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 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 0x3675a834 cfs_hash_debug_str +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 0x5740043d 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 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 0x8eae4fa2 cfs_crypto_hash_update_page +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 0x950e2f94 libcfs_kkuc_msg_put +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 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 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 0xdc6d3656 cfs_hash_debug_header +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 0xe7b54314 libcfs_arch_init +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 0x14e21f09 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa2f1862b ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xda225de2 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xee6847b6 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0750b605 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x4a4b58c6 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x4f4ef42b lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x84d1ad5c lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x8efba99e 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 0x0021d71d cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0042c37f cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00ef4b65 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x017498b9 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01bb79dc llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01bd8840 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02734237 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02f8806b cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x042d6cb8 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04575153 cl_page_is_owned +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 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 0x07fec142 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x087355a8 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08dc420c class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x098ef237 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09b85818 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09ef9051 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a047c13 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ac3c92b cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ae3ca5a cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b8d5c26 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c6a8075 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cc49280 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d89e147 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dcab016 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dde5f1b cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e7031b0 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e98c7cd lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ebc6a14 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1030479b lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1074c2f5 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x110a53f8 class_incref +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 0x118ef309 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x119987c9 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12cb8996 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12cd7ef9 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12d8224c cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12e093c5 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16da2a90 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17455c53 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19098e03 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b18cc21 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b5bf387 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c676713 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d9bc35d lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e15ec65 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x210fbf90 cl_lock_at +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 0x22800c60 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x228a65f7 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22f0cc54 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23140e5a lprocfs_single_release +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 0x25965fd3 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25e1213c dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26a3b6bb class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26e44055 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x274a9d1b lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27d795e9 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2821fda5 cl_page_list_disown +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 0x29a0a357 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29a73dce cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29ac35ad cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29be687e lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a77ad63 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a8c0d57 cl_lock_get_trust +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 0x2b5c3cf9 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c1dc03f dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c223c3b lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c459c01 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cc2969a lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2db93c69 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e0612cb lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e9218e0 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31b6913c lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32398c32 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32af3d48 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x335822dc cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33cc244b llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33fd00a3 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3549886c cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37a3f65f cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37b80342 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37d08fe7 cl_lock_hold +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 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a887c6d cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bb445d1 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bd568f5 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c94cbd4 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3cdacd1d lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da0e853 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e526ec7 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e781bb3 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f48027d cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3faa91f4 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x411d4329 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41a7f24c cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4337d188 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x434c86db obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44589d3e lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x446ba701 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4645d036 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4737c5e6 obdo_from_md +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 0x48a95e81 llog_cat_init_and_process +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 0x4a915d56 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4aa1f012 cl_lock_nr_mutexed +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 0x4b3993a8 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b5072c3 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b74393a dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d20cd51 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d299f53 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d639091 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d9a83fc lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f2cedda ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50a69214 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5178a713 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54316042 class_num2obd +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 0x5526c299 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558913e3 cl_io_lock +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 0x5657bb21 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5673432b cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x567f8819 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57bb6b4d lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57dbe34b cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b409f lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58594c0a iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x586aa7ff cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58de9a03 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b3dd527 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b7f8885 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c708150 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d95c0f4 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dab1391 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ec6ff8c cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5efe2d4b dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f14c504 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe36b96 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x601e1702 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60e20903 lu_object_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 0x6328846b lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x633e40c3 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64009bb1 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648c17dd cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64ec01d9 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6517d0c3 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65e5d4f8 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675c29ea cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6796be01 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67c9365f lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67ccab3d cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68ae9878 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68d99785 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68efad0d class_config_parse_llog +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 0x69f845aa cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9edfb5 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ae99522 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b095bc7 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6df3841a class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e719068 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e816299 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e8a4c77 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70e14d73 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x713cd1e5 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7157c5bd llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x720fb22f cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7248e821 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72ae3cba llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x731a5187 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73727226 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74bca95b llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74f1227e class_disconnect_stale_exports +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 0x7551938b class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756f1744 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76d81177 lu_site_purge +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 0x79bc9dc5 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79cc66ce cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a48c6bf dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a61abc2 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7aaa267d cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ac8c3e0 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bb45efa cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc35f14 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bef34fb cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ce5dad2 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e3b0d1f lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e9a8043 cl_lock_print +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 0x805117bd cl_lock_at_pgoff +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 0x81705f06 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8219dce0 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x841791bf lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8418d5b5 llog_open_create +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 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8662a407 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x871bed01 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x873007ff cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8730cfe7 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87469fb6 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87fb656a cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x889af3d5 cl_io_lock_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 0x89539331 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89fcf0e9 class_uuid2obd +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 0x8c44e124 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c9e1e5f lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ce789c3 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d198d5b class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d8470d8 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ee843a7 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f0bf2b3 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f13bfb2 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f583803 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fe348ff cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x907a4a3a class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90e3670d lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90e87bd5 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92bd5228 lu_object_find_at +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 0x946aca73 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94b372ed cl_lock_state_wait +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 0x95906be7 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x967b0859 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96b94578 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9747e20b llog_init_handle +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 0x9a952b61 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bf644fa obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c52cd4f obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ca70165 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d1d5f2e cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9de309ee lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e4a2cb6 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e71409b lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f9a68a5 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0d3eefb cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3629946 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa43c25d7 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa491305c cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4da81bd cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa521f7e7 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa63d1d22 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa70c4357 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7c315bb class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7df6c63 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa82a3dd1 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa837258b cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9530de0 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa991e633 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9a3ee22 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa1ea594 cl_lock_mutex_get +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 0xab2203f8 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabc65d52 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac48e539 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac83b01b cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad365d34 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xade49684 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae03fac4 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaea9c35b cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaead2aa2 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf46c7d8 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb031f501 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0a6fec4 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb12e89f4 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1726607 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1c0cb46 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb27c9360 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2d08a9c cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb360bff6 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb377354f cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb38308d7 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3ab8d8c class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4020a90 cl_page_list_unmap +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 0xb62f0de9 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6b63e5b dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6c9d33c llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6f000b0 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7785166 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb78f7814 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7983558 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb859e30a cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb88f2ed2 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb93d7e71 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9cfaf61 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9e44cae dt_find_or_create +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 0xbb2ea373 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb4dfc77 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc6e336b lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd6350c2 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe12d4ad cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe686c07 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe6fa900 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe8f26e3 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc031910f cl_page_delete +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 0xc1d5b8ef lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3b9d85e lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc50537d3 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5db1268 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6608cae class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6b7ccf2 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc71ae473 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc747e73a cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc76aacae cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7df240f lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc83ccdea llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8dc37b4 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc905cba2 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb04a888 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbd162d8 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc4ebe9d lprocfs_alloc_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 0xce02cb2c cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceeb5cd1 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf475ce7 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf9869f8 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfd486d1 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0570dce obdo_from_iattr +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 0xd1c75dd1 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2226605 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2a3e59e obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd32c2fb4 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3457ae7 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd36d57c6 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd38d43d2 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd514c6d3 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6f19bd2 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7805202 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7977e0e cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bda5cb cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7dd1552 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd80e7ba3 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8608047 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8ad1dfe cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac3012d cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdafdb1d5 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb14e25e class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc66fe20 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc7907d7 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcbcaf94 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcd03de0 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd0af564 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd93f4c9 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde193820 cl_req_completion +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 0xdf830073 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf8d0e1a cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdff34b9d cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe08b2f4b lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2314aab cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe251a07d cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2c81a9c llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe37042d8 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5dee583 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5ee251d cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe67f7fe0 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe699ff2c cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe71a2af8 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8307f7b dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe872d979 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8d74d9f llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe946e14e cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9f636de cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea5837b7 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebdf1138 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed19eb74 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeea826a class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef3ec921 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefab57e2 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf032a642 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1155aaa cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf164b887 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf47ca7a2 lu_context_fini +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 0xf62c1a17 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf686408b lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf987b1d6 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa480d1f cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa4df1a3 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbdd74c9 cl_lock_modify +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 0xfd521a30 capa_cpy +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 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 0x006919ba ptlrpc_restart_req +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 0x01e156f4 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0280fd08 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x030a7ea1 client_destroy_import +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 0x04a81ac8 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06980d52 __ptlrpc_free_bulk +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 0x0af6af1b sptlrpc_unregister_policy +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 0x0d0247fd ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x105b1f9d ptl_send_rpc +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 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 0x14ed49e0 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15334e13 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1592a696 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15c505d6 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x164f0a40 ptlrpc_init_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 0x17ac0a97 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1866403b ptlrpc_set_add_req +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 0x19d60259 ptlrpc_request_alloc +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 0x1ac4b78f ldlm_pool_shrink +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 0x1b51ce15 ldlm_completion_ast +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 0x1ce5fe74 req_capsule_set_size +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 0x2026ccf3 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x206abbfd ldlm_lock_get +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 0x22475259 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2270831e lustre_free_reply_state +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 0x245a3d88 ptlrpc_pinger_sending_on_import +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 0x25b0100c ptlrpc_request_bufs_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 0x28317493 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28d8e618 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x297530dd ptlrpc_send_error +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 0x2a9f5b30 ldlm_pool_add +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 0x2ca9db6d sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d2e984c ldlm_pool_init +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 0x2e1c6546 ptlrpc_unpack_rep_msg +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 0x2edab5ad req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ee9a536 ptlrpc_request_alloc_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 0x2f9736fe ldlm_resource_unlink_lock +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 0x30dde0e8 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x30fe42cb ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31384433 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x319514f6 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31a2c30d lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31d8bfc3 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3268a7c3 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35d3f69c ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x365936db lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36eee5d7 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38472f96 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38929d51 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38cdf22c ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39b033fc sptlrpc_lprocfs_cliobd_attach +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 0x3af0d5e8 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b7f0d66 ptlrpc_buf_set_swabbed +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 0x3cab2dc2 ptlrpc_register_bulk +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 0x3e25b8f0 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e6003f3 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e845040 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 0x3f7535eb ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x417019fd ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41f8563d ldlm_completion_ast_async +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 0x443d8b1b ldlm_resource_putref +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 0x45e2142b ldlm_cli_cancel_list +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 0x48831cba ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49c77bf5 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a31bfcc ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a47b647 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a6f66be lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b71f528 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d5c7535 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7765a7 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d77c5ff ptlrpc_req_set_repsize +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 0x4f1ba516 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f3f1d72 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f5aecd2 lprocfs_wr_import +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 0x50b9229f llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5163fcf2 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x518a7792 req_capsule_server_sized_get +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 0x536dc7b1 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x536f7fe7 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54002328 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5408583a ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5514bf29 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5551cf33 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555fca7c ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5570c53b ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55a10498 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55b5faa9 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55e978ec req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57615b17 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59262f2e ldlm_destroy_flock_export +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 0x5a0ab01f ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ad24576 sptlrpc_sec_put +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 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e639637 lustre_pack_reply_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 0x5ecb620a lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ee953d2 ldlm_cli_cancel_req +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 0x5fb0a0bb ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc27573 ldlm_namespace_cleanup +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 0x6388cb35 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63970262 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63ba3537 ptlrpc_reconnect_import +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 0x66f5bbda lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6738fdf4 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6789f254 ptlrpc_prep_bulk_imp +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 0x695cbdcd client_obd_cleanup +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 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 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 0x6fc5fe39 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70c841f6 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70d4e4a0 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70f21db1 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71ae5038 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72171b60 ldlm_extent_shift_kms +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 0x72f34b98 ptlrpc_cleanup_client +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 0x757100d0 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a8c51e ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76d03e51 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7706744a req_capsule_filled_sizes +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 0x79155919 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7abcb5bc ldlm_cli_enqueue +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 0x7cc71ecb ldlm_resource_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 0x7d63197b ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7daf8cc5 sptlrpc_conf_client_adapt +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 0x7f3ff769 ldlm_resource_foreach +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 0x83cbe7f7 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x844627a0 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x847dfe99 sptlrpc_import_flush_my_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 0x85e13eec ldlm_namespace_put +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 0x86a37261 ldlm_register_intent +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 0x87b5498c _ldlm_lock_debug +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 0x89ea960a ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89fab730 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 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 0x8add478d ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8bd432ad ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c230b89 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c3f474c sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c5f925b do_set_info_async +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 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0a8ec2 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f557d43 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91457fab ldlm_pool_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 0x920320a6 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x934d2bb9 sptlrpc_cli_unwrap_bulk_read +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 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9613b1c1 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x964b1c37 sptlrpc_cli_unwrap_bulk_write +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 0x96c45164 ldlm_pool_set_clv +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 0x98dca665 ldlm_lock_allow_match_locked +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 0x9a5ccc80 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9aa5ad4f ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ad38603 ptlrpc_set_import_active +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 0x9c910ae7 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cc1dd01 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e37d312 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f72c73b ptlrpc_request_set_replen +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 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 0xa5426d79 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa543d303 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5650470 ldlm_resource_iterate +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 0xa8408506 ptlrpc_retain_replayable_request +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 0xad46450f sec2target_str +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 0xb040119c ptlrpc_abort_inflight +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 0xb280158d ptlrpc_prep_req_pool +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 0xb56b1842 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5e0e0f5 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb664be93 req_capsule_init_area +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 0xb821f91f ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb842e63c _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb94afe5f ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb99bdfe9 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9a55460 ldlm_cancel_resource_local +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 0xbb3e333c ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc0dfbd4 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbcc7098b ptlrpc_req_finished +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 0xbf5a7e73 ptlrpc_send_reply +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 0xc140e521 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc14f0620 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc20e1fa4 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2a21d64 ptlrpc_request_committed +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 0xc33d50ce ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3a7ae22 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4176504 req_capsule_server_pack +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 0xc6145ea4 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc614639f sptlrpc_import_flush_all_ctx +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 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 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 0xceaa398b client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec3a158 ptlrpc_connect_import +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 0xcf44d0cb sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf57e3df ldlm_flock_completion_ast +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 0xcfe166b9 sptlrpc_svc_ctx_invalidate +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 0xd35ee4dc ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd45533e9 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd46c57be sptlrpc_cli_ctx_put +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 0xd6b1d7df req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd732634a sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd734b4de ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd761d764 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7cbfca5 ldlm_namespace_foreach +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 0xd959c8e0 req_capsule_has_field +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 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf1b33a1 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf543ec8 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf8402b0 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe01b04a7 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe06008f0 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0acff51 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0e56968 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe184737d ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3954bbb client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4d16eb4 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe55d48dc ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe56573b6 llog_client_ops +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 0xe738b447 sptlrpc_enc_pool_get_pages +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 0xe9b535aa client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea1e6ad2 ldlm_cli_enqueue_local +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 0xee113dd3 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee86361d ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeec8137d lprocfs_rd_pinger_recov +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 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 0xf2f93efd ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2f9e393 sptlrpc_cli_ctx_expire +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 0xf4619a14 ptlrpc_cleanup_imp +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 0xf5db9349 req_capsule_get_size +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 0xf688dc93 ptlrpc_set_add_new_req +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 0xf7d28b0c ldlm_lock_convert +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 0xf9125418 ldlm_pool_set_slv +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 0xf98bb3c2 ldlm_prep_elc_req +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 0xfac6b7d7 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfba679a3 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbe8175d req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc7d580e sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc9bdac5 sptlrpc_target_update_exp_flavor +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 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff845307 ptlrpc_request_alloc_pool +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 0x4641b580 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x025fd5a0 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09050da8 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0aa3a65b rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0cfe6320 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0de019ad rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0e02d176 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x104bda06 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x117117d5 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x143d9b32 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1bf8f40e rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1fbd1688 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26c3437d rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a752286 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3049dde7 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x306c57c0 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x325c1ce9 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x32ce1fad rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x40d90429 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52c626d3 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5c480a51 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63c79d1b free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6e719814 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74b3bba5 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74d56c07 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86060acd rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8b2cb919 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8dea1a62 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92995559 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93600b05 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9cc417c5 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa37150e1 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa73b7bb1 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa9c4944d rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xafa2e22a rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb7217f00 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0e9ad81 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9230e7c rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcd5ce7ea rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4e0c830 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd6c3d4cf rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd983e5b6 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xddcae969 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xded529c4 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe0bb6c1d notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf1848ea9 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf65d10a0 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf9fcb080 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa1cffd0 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfde3a319 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff201f7d rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0021db2e ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00b220c9 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01a42810 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x080e35f7 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x09be42c5 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a17ff2d ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1389eb0d DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x144e66fb ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x19b29dbb ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1aaecd73 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2137ce2f DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x23c53afa ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2df54ea5 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x306bf89d ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x36d0bc0a ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3735b867 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x383b9aa8 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x387036c2 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3bb52f40 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3eb2da54 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x410cc90e SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4340dac1 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x45bd0e85 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f3069b7 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5cfde2a1 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61466679 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62163a48 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x68709628 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6b1bda1f ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75c30db0 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x98f24430 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4ae1d47 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa5d8d8bc Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa7808188 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa988c6c5 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1cd1904 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1e06502 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbf21e927 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbfa40366 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc3f234b3 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc6e3dc6b ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcadb00ca ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcb0023f1 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3ea03a7 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd660227b ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd80a7526 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdb239522 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdb3779ca ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdbdd5621 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xde15a501 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe2d2e626 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe636d6ca HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeeb7491c Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc8b7ff0 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0a29318e iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1494a8ed iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x189bbc04 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x216d8449 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x259f72e1 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x25cde520 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x290cf219 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2d781b9d iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2e733e53 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x313a2cd2 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x329e5f95 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x382cc674 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x39c721dc iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3e0c75a8 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5ae11f57 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5df49076 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6342a276 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6798484d iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x70027f3f iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x71a4243c iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7ee00b58 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xadb6362a iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc4424902 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf5751d7 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdc5cc7a8 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe6bafda5 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf12278c8 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfe939649 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x05fd9eaf target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x062e53ab target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x09766e1a transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x09c7bbb4 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e000dac core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x1240c41f target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x147d0e1e core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x1486d459 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x163f4ef2 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x185cce7b core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d047363 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x2fd44d50 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x319c92b7 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x32e33d82 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x35cff91c target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x3757b97c target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4140020c target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x43337607 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x460fe8d3 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x4bdbb2f9 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e59b0d5 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x5255e6eb transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x52ecf9e0 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x55f87b6d sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x588d501b transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x58ef9adc core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f438600 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7191aef7 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x742c36ed target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x7934b533 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b383bb7 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ced1dd5 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e4096dd transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x90191597 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x913bebe2 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x931ebf91 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0f3865a passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa26cd6ae target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xaec410b5 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2a917a9 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xb45c8a1a transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb9c2613 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xbde19db4 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xc18a38d7 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1ec62b6 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3c8cbc7 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xc96310ce target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc9b4eb19 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xccb7f740 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0a2e295 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xd17116af target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd3c9ee5b spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xd8131abc passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9bf7fe3 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb8203b4 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc7404c3 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd767b71 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfd03130 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfebc1a1 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8fe1bab transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xea8dd56a transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xecf361e3 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4b18cb2 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf57dfa27 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xffa48a70 transport_generic_request_failure +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x6cb9ab4f usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xbc11d725 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x834beb05 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x088e5501 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x176a7ba1 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5fcd3098 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x642787e5 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x74ad6758 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9795c45e usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa00699e4 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb252fbc6 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xba7a27d4 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdb339806 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe9a16ea5 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe9d6d426 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x7ae63f09 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf6270c8b 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 0x74b988ff lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x7864f008 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc33f0f68 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe1f76a0a 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 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4b9fdaa5 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4c78f27f svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x556a6381 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 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa24a0c7b svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xac046141 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb8d7fcea 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 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf078679f svga_settile +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 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xd6d51a6e cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x5293899a matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x62c495b9 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xea41cd56 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x868a31d2 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x9adf8ddd DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xbfebf22f matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xc2d5ccfd matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x12733af7 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xf85da6a6 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0cb21b3d matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9139b6e1 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xa0e986a7 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xd87e5376 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x93592f66 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xc019c6ac matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4ef981da matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x507c002f matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xa0b02af1 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xa5b4a936 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xebd15557 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x37334c11 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 0x21a9b04f w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x24e8caee w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x275a70bc w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x3ac37c7a w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x19e5ed84 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xaa4107eb w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4f319a15 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xd2b8ee4b w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x4d467112 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x6ce28bc8 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xe74647f9 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xed195e07 w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x0a51e155 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x16cac52b config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x27c2e6da configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x4283a76b config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x58c8ac38 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x883fdb70 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xa60f940a config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xc81baf5a configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xcc88c492 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xd948bc45 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xee74dc2b configfs_register_subsystem +EXPORT_SYMBOL fs/exofs/libore 0x13809c81 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x16a1b0f0 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2dd61ff5 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x5bdeabc8 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x6d4cb726 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x7c360002 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x8b2435bc ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa353d4c5 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc00ac7cc ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xfd6a6450 ore_put_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x009c46f0 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x04494e54 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x0edba6bc __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x13434369 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x1aa3cf1e fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x1bf3751e __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x1d18e602 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x20db0fcf fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x20e8de7b fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x2ee7b8b7 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x2fb95f2c __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x2fd987a9 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x3059073c __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x358adf8e __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x37d471c6 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x385f115e fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x3a2b9eda fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x3bd2181d fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x3e45f94c __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x52990de1 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x549bf38c __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5dd5b249 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x736c9be8 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x77b7b6af fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x7fc5c6ac fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x8e25721d fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x9677511c __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xa61dc24f __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xa9bba1f1 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xaf2466d2 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xb35f8e83 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xc08addde fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xd6f48b9a fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xd9529bc2 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xdff19c47 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xead58ef8 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xf3921cd1 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf90589ce __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xfc174b05 fscache_op_complete +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x0b10ab66 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x328f071d qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x4ff72e66 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x96be5672 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa13ee3aa 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 0x0f315bec lc_seq_printf_stats +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 0x8ba64dea 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 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 0x264da303 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x83b1a16a lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x0b9ab4ff register_8022_client +EXPORT_SYMBOL net/802/p8022 0x9749cf8c unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x58658cba make_8023_client +EXPORT_SYMBOL net/802/p8023 0xdb5deda3 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x64e578ec unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xfb223488 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x041aacb5 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x0c2a751a p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x0c54f063 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x0f630f6f p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1b27a3e3 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x1c672358 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x2369db63 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x25e6bd97 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x2ca49e49 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x34ffae32 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36ba2e0b p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3f62f7bc v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x450c4ca7 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x46a0c703 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x470cbe7c p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x63eebe4e p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x66d4d7b7 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x67ddb896 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6bf538e7 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x6d85dd85 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x74fc4cba p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x77bae6e5 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x88326a63 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x96e3cb3a p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xa0779cfa p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xa8fd5ba2 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xb2043770 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xb81e984c p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbb854c65 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc165aedf p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xca60b536 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xcf058965 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xd3ed8c2e v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xda4d0bd5 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xdb6e1cdc p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdbbb77a6 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xdbca543c p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe060f7ba p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe6f2e469 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf79d1438 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xff0f562c p9_client_write +EXPORT_SYMBOL net/appletalk/appletalk 0x069d5f6c atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x9a09b111 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xc7fdb645 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xd5d3b5be atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x0cba71d5 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x20890092 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x341b7097 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x358c2d82 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x49572629 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x638500f7 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x6582f255 atm_charge +EXPORT_SYMBOL net/atm/atm 0x8445b30c atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa185c4e0 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc29ce2c0 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xe65fb327 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf5ee834a atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xfbb8ed20 vcc_insert_socket +EXPORT_SYMBOL net/ax25/ax25 0x19de9c23 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x413319c2 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x48bbc63f ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4f1855ac ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xaa7fda83 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xca79b5b2 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe960d371 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xf1dff9ee ax25_listen_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x036f0ce9 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x094fdbfc l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0a2fec8c hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0abcf096 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0ce3e7d9 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0effbc88 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0f593082 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15bf1b4a bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x17b71477 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ad4c686 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2f55e4dc l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x328511d6 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x32a6c752 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37b78927 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48debfde hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4e0beedb bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x51ccc5c9 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x56c1f971 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ecad3ec hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ecf8c4d __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6920eb5f bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ed234cd bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x77b769b1 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x93e220a8 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98cca92c hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x994b7441 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa4698872 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa5827fce bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaa02fcba hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xadad46c9 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb16467b4 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb795a63e hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb9d3ecc7 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xccd5f1b3 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd01cb271 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd5590079 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeb478651 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeb593f91 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf59fcab9 l2cap_is_socket +EXPORT_SYMBOL net/bridge/bridge 0x36c59f1e br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x6b10aa57 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x9223fd72 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd0b0b2e5 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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x587e7a07 caif_enroll_dev +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 0xa0544be3 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xbe85e75f get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xd1707908 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xfce704e6 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x0de60b6c can_send +EXPORT_SYMBOL net/can/can 0x872a47ea can_rx_register +EXPORT_SYMBOL net/can/can 0x9d8181f5 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xb9d8e166 can_ioctl +EXPORT_SYMBOL net/can/can 0xc56a22b8 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xc59c9c89 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x03212eb3 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x033ac577 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x050e7a29 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x084f671f ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0ac0701c ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x0c1820ac ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x149c6344 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x1d7a4dfc ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x20a28320 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21d109fe ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x270f33e9 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x27e4879a ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x2800d3db __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2de38cfc ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x30bcc7a1 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x31cff7f8 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x33016bf5 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x3307761b ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x3409e6d6 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x39bd737b osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3d6f1c77 ceph_osdc_build_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 0x43fd1509 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x460e7e83 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4d0ba0e7 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x4e3a8d5c ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x4e87f5a6 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4f9867ca osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x507bdb90 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x553faa4f ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x5584793d ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x587879ee ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x5b86caae ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x60ba8d70 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x60bec262 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x628daa2d ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x64e2bbb1 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x65f4522d ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x73df013c ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x73e1f145 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x743cec58 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x7440d23e ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x7693dca3 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x76c4a48d osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x7bc5bce9 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x8006ca85 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x8008c6b3 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x86caaaf5 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x8e1065c7 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x9192f436 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x976b9757 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x98b07df1 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9d7045f2 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x9dbd5f82 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa6b00343 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xaa0f04a7 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xaa3bb7a5 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0c246e7 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb4d3b407 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb63b50a8 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc4fe8dc8 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xc7931fb1 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xc8d890ba osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xc92ecac9 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 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd6596564 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xd7dab937 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd8600549 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xdb03d3ed osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xdcb0a2c3 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe223e533 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xe26ec674 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe2808f14 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe96937a6 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xec1126af ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xed33a206 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xee309705 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xeefec9cb ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xf09958c9 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf5404080 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xf7dcb6de osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xf9d01ea8 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xfba6b983 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x2dd58310 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x8dd1a4ce dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xe190fdaf lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x22a87bfd wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x85980cbe wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x98254b60 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc4ae8822 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcb331ff8 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf86252f5 wpan_phy_for_each +EXPORT_SYMBOL net/ipv4/fou 0x864a5018 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xba0f309d gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x11021f8f ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x32757de8 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x48740fdb ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6aee3686 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x959117ad ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xaf795dcc ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x729e7f0c arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x74f44122 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf9bf6b0c arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x42de459c ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb3984ee9 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe6da1caa ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x08da61f3 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xb747f45a xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xda8892f1 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2689bd69 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x7b1864f3 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc37702a8 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfc50a9e5 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x1dc490a3 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4f38119e ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb86ba97b ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x6901b831 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x8aabcb02 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x8ca89ddc xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xbd77a1ae xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x06e0994f ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x19dc01ff ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x33031cf2 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3aeba3fb ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6a4bf9a3 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6a568f18 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x714173f7 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xeae94dd4 ircomm_close +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x04dacdf4 irttp_disconnect_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 0x0ccd5a1d iriap_close +EXPORT_SYMBOL net/irda/irda 0x13683493 iriap_open +EXPORT_SYMBOL net/irda/irda 0x1b6ba89f async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +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 0x47027826 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x57140ae0 irlap_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 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 0x7ab7f7e2 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x872d3f3b irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x8c28918b irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94702769 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9860d53e irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x9a4b3d4f irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x9d30ebe8 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xaac0c8a0 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xac8fbf57 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb38c46a3 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xb62159ce alloc_irdadev +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 0xce7c70cd irlap_close +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd081d758 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd31b0e32 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +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 0xeffe1da5 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf803ae6d irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xfa143bf4 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xfd680b24 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xff196e72 irttp_connect_response +EXPORT_SYMBOL net/l2tp/l2tp_core 0xc2b3795d l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x04469b65 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x0ef9aa9d lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x2ea89178 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x344a3b79 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x4112173f lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x634370c8 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x8f37fb11 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xab18795a lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x347804d7 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3e1b9583 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x4aa5c56b llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x540ad923 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x614c85b1 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc1618a40 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xf9c598e4 llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x03892597 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x045773b0 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0adebc10 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0b35b62a ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x0e149a7f ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x0e1efc75 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x24b7a372 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x2b632898 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x2fc44600 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x33ebf13c ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x3649b8f2 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x3823c114 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x3f733b65 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x40fdfcbb ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x49e94147 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x4a2ba468 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x4dbf2979 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x4f023895 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x4fdc976e ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x58d00a15 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x5c2dc3f0 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5eec530d ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x610e62af rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6b40cc42 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6ba0ba7b ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x6c8d93ce ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x6ce48b0e ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x728ea76c ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x74a37b05 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x76262290 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x778cd365 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7878cfb6 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x794cd336 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x797efc26 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x7c4e06e3 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8389c122 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x8f7ebf38 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x917d4185 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x97b08880 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x987b665f ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x9944eba3 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9a26872e ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x9a396d40 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x9c8c08e1 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xa14b0a9a ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xa16a6717 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xa62aa16e __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa9289294 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xaab7f931 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xaf8d97e7 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xb0c921b9 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xb140d23a ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xbd533023 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xc1172869 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc64cf027 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc77e14c1 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xcdfd9305 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xd2b05023 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xd65a5da3 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd78c17df ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xdb0feba2 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xdeb3b1cc ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xdff7078a ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xe3f2f981 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe9327166 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xea99ba37 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xef69f70e ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xf1cf8c20 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xf1d8d217 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xf33a30b6 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf44565a0 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf685afb1 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xf7126190 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xf7af7b4c ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xf88e39e2 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf89e1a6d ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf8f31557 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xffb3e89a __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac802154/mac802154 0x035dff12 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x1a86c542 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x268d1492 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x2e31d440 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x48289b30 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x756d6612 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xab175cc3 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xb26f089f ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xf065952c ieee802154_xmit_complete +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x15a55556 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x15ceed63 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2348d6f0 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x341c31a9 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3de25ce7 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x54e9ffa5 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x58f83682 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x648818ec register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8c39000e ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x931fd2b2 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x997edd67 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb5928e4a ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbe093920 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeab86434 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xb4d24233 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xbe885668 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xeca42090 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x3adf1212 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xa9519680 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xb1cf54c3 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xc045d73e __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd4e670fc nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xf9a6e854 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/x_tables 0x158713ae xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x16943e5e xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x52ed8fa4 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x580a5a8b xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8bef83f8 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8d291cb6 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x900e6765 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa3af6456 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xbc68c043 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe6e59eb7 xt_find_match +EXPORT_SYMBOL net/nfc/hci/hci 0x021e9f25 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x05ad5171 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x0e6d658a nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x1ca4e2a7 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x28eeb21f nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x2aae9d68 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x351f12d5 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x454c85cd nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x51916d9b nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x536f8d4f nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x88addf0f nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xa323fc4f nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xb0b8330b nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc0639b8e nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xda3e677b nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xdaf8a794 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf41a69bc nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xfdc4fa6e nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xff968b20 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/nci/nci 0x164668b6 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x33454212 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x4851892d nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x5abbf1bb nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x654a45c7 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x7a38d88b nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x80157705 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x823f3622 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x8c3e2354 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x97ff8012 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x9c17c502 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xaec28c15 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc10d8e31 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xca3a0743 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xcdd9a386 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xd552ad80 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xd7f7e894 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xf687bd39 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xf96167eb nci_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x0a83412f nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x242ddbc6 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x243d0699 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x33d50127 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x37036011 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x4246133c nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x441f8baf nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x6711c7e6 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x84807bb8 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x85d220cc nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x923ff768 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x950618ef nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x983f4626 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xb46a0ebe nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xbf020e5e nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xc6ce2a69 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xcf1652c4 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xd6932370 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xe2009ce7 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xe90d8cb7 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xf34c38d9 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xfa8174c1 nfc_class +EXPORT_SYMBOL net/nfc/nfc_digital 0x0b25838d nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x677b5f92 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x938e9f69 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xeb793f12 nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x2b121764 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x3d279e66 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x53f3c01c phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x72aaec87 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x73b1fdbc pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xbc1bb131 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xcecba224 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xe1590de4 pn_sock_hash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x14ea2f00 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2104cc42 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x307e5019 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x52a383cf rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x53f83938 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6313af87 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x69225430 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7021147c rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x78fa6c10 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f8b4087 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x90d413c9 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x93c8c309 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe03068ce rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe31359c6 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf7befac5 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/sctp/sctp 0x035cc2c6 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x3cf81684 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xbae9e48f gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xfda3cf40 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x318fe878 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x64e298f4 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x6cbf206a xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x30fb904d wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x934e4e22 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x00434a29 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x02f209cf wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x03d92a78 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0631f74b cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x09a6b5c5 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0d7d20c3 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x13d72eb7 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x14d6cb64 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x155eab9b 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 0x1d0c790a cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x2100f522 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x29fd2d22 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x2adcb21f wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x2d3ab723 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x3147dc45 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x317756cd cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x35464676 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x3743535c cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x389d0eac cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x399d99c2 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3a6340a5 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x3ab7516b wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x3bcb7b5d cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x40fcfbdf cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x44b4c9fd cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4a2dc26c ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x4b9ce068 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x506106dd cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x59cf327e cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x5c72dc6a cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x5d0bad95 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5edc92b7 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x6072f73e cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x613a0093 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 0x73cec1c4 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x77d75c23 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x7db761a7 cfg80211_notify_new_peer_candidate +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 0x866f0d6e cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x895d5e57 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8a08e704 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8dadbfa8 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x8fb0b110 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x92ab39e1 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9500ac58 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x968a1792 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x970de82f cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x9748391d cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9b499250 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x9eb0f98f cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x9fe1cbf9 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa0171516 cfg80211_tx_mlme_mgmt +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 0xa372d50e cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xaba61275 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xac7b6929 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xadeeeaac cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xae45a070 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb1e3adbd cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb8c5a4f8 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xc0e0794c cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xc0fd2d6a 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 0xcb3c9fd1 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xcbeea632 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xcf2820b2 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xd209ad3b cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xd4f13872 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd66e8ec0 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xd71740c4 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdd5d61e6 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xdea819be __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xdf763731 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe407af37 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xe504a7d8 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xe8d34ce0 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xe9f01789 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xea5f51bc cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xef07a656 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf315ebbd cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf46a0bd3 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf680d95a __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xfb07941c cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xfcb1cb81 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x48e4f893 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x5a8308a2 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x6e3c1b29 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x9155b540 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc3a99437 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xfbc77506 lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xa6680b74 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xff0c63de 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 0x1e3e65c0 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x394cde0e snd_seq_create_kernel_client +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 0x8f09abed snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa200fe05 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 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 0x54402f7e 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 0xd5d3072f snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x06f3af3d snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x09009de1 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x139fe37c snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x16a4e871 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x1908b34a snd_unregister_device +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 0x1c2841bf snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x20eb3cb1 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x22618afd snd_ctl_remove_id +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 0x35548c3c snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3ac4377a snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x3b1c29a5 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x3ea953e8 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x40ba850b snd_info_register +EXPORT_SYMBOL sound/core/snd 0x42183cc8 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x43b31408 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x580db200 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x59a21060 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x653b6347 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x686b6bea snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x68eb6fb0 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x6d3d8991 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7c996563 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x7df82a9c snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8323b876 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x843d0387 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x879e4f19 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x8c5c6b40 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9b1f45b3 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x9e0cfa3c snd_card_free_when_closed +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 0xa406749b snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xa5a216ed snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xa5e65bb5 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xaece2d6c snd_card_register +EXPORT_SYMBOL sound/core/snd 0xb116074b snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb8462cdb snd_device_free +EXPORT_SYMBOL sound/core/snd 0xc7d8daac snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xce3baedb snd_register_device +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd5b90179 snd_cards +EXPORT_SYMBOL sound/core/snd 0xdbda2aff snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xdcc57e6e snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xe3260278 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xe527bd1c snd_device_new +EXPORT_SYMBOL sound/core/snd 0xe88581d1 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xf3e2726b snd_card_new +EXPORT_SYMBOL sound/core/snd 0xf8c05b94 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xff3b8897 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd-hwdep 0x96082fbe snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x01e040fb snd_pcm_limit_hw_rates +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 0x0f6d5dc7 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x12be34ab snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x171ba58d snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1abea2c9 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1c82b300 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x2509c181 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x25260cb2 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x333fb3b1 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x33567a3d snd_pcm_hw_param_first +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 0x39c40e34 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x3a0c2272 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x3af350ac snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3b9574ac snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x3bff2ecd _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x49a41445 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x4b53342d snd_pcm_suspend +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 0x52979a62 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x552c9cf5 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x5bc86a43 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x64b7d164 snd_pcm_hw_constraint_ratdens +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 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x73568ffe snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x7413e2f3 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x8017fcba snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x95562334 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x96b3a7bc snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x983cc3c2 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x9aa2f031 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x9c5668f5 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa8deeaaa snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xac2aaae9 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb250631d snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xb2b59286 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xb43bb132 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbdd40a5e snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xc251a16e snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc256b9b5 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xc88e6697 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xc8f1288b snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xca49a178 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xcb45054e snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xcc114997 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xd7e8c888 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xdf4093c3 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe5f8606c snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xf0593ebb snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xf295cd36 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0d0b930a snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0d0d6913 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x13db5f2a snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1ddb1a87 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x20ef3d40 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x388a3ef2 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5311c449 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x58068a1e snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6b210a3e snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x746860d3 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7b912fac __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x838b5efd snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x860b2a2a snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8dc8e33d snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8e8456d5 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc8b69c91 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcf3da717 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf57ed1e0 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfd99fe6c snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-timer 0x18d9df2f snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x1dfa73c3 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x294c7c2d snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x3c1bb9ac snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x4cb584c8 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x4ecb8884 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x58570796 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x7170682c snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x7a066777 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x9c2cf1fd snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xab8217f9 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xb6342214 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xf66b62c0 snd_timer_start +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x2bb09956 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 0x5f1caa48 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x62b4a884 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7e8f117f snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa2288c6c snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xac6f0a62 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc71d415f snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcc809784 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd9ff1797 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdae57fc4 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x04f13c80 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x10823cfe snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x19999b38 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x48933f1f snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x514a5f40 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9bce3086 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa8c6cebe snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xde2218ef snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf279db24 snd_vx_suspend +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0cc0ad53 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1ed1f0b8 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x24e92e15 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2642e8b7 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x281f9d7c amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x37d4a49b fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x388f581e fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x39279e00 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x451ee139 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x454d8a2b avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x48b2c7b4 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x544b88fa avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x57010109 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7aff7579 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7f2b6fe7 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d4e430e amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9284580d amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9979e4c0 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9e065371 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xab899efc fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xada65264 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb52d10fe amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc1e51fe9 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc29f192a snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc6385af8 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc8b27b28 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe48a75b2 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xebd6ef7a iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf953502c amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfc1d4f47 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfc4b6d6b amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x2d77c61a snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x32f3efb8 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x1405489a snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x1f6fbcd1 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3525ad97 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x42174436 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x70a8bebc snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x851acfac snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8e5b00ed snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb8adfc07 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x11e4e61c snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x7302b820 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa62a4dd4 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd0a5a1b1 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xdde17f77 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xfe346fab snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x089c2299 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x22f11129 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x8ba8feb2 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xb292f378 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x33df8679 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc0f9133a snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x125f0923 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x269c2cf7 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x351da204 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8ff669ba snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb9f24bfc snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xbe09411b snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x987b0a26 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xc2391b70 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xc344a3bf snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd10a03b7 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xec5da47c snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xef9c5e35 snd_i2c_readbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1ceacc4e snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1f422bcc snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3bb07182 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x513f934e snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x98e31829 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9956cf24 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xaae6d23d snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe1720d88 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xfa07bf1e snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xfe3570ff snd_sbdsp_command +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0e672a18 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1ae35c2a snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1c776270 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1d94ee09 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3602f6ef snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x488ae7f9 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6a62e87d snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x719881a2 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x85b449e7 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x900cecae snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbe15222a snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc3710196 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xce256f1a snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd897bf5d snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe526ca63 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xed8e2ce8 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfa9281e5 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3061687f snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x33ffce53 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x386f03c4 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3899d611 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x68971a21 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x701862f0 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x91d0d05b snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9a943ee1 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe58ec67b snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0f3636c8 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x47179d50 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb0b8cd09 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1794b037 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x31aa81ba oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5965ef8c oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x725f0c93 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x840e0de7 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x84adc1eb oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9ec6c128 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9f4721bd oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa210109c oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbacd20e7 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbba0e583 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc66d115e oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc7678e2e oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc8ef1643 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcd2efd60 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd14131d5 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd60e5d16 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdfb1ee6f oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xed2ffe06 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf4a8808c oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfcd91357 oxygen_read16 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1abc3b6a snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x72ce937a snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbcf39344 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xf6305f70 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfbd7d48f snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x49f5eaed tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x864daf2f tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0xd09a4bf0 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x4cb7765d register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7f3380ff register_sound_special +EXPORT_SYMBOL sound/soundcore 0x89711e61 sound_class +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xaffa432a register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xf72e6836 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/soundcore 0xfdc10462 register_sound_mixer +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x023c2f2f snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x061d7cb7 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1480ddd4 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 0xb938660f snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc7e0caa3 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xccf91d42 snd_emux_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3a013de2 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4e0ae1ae snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x50d34c7d __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x58a87b02 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9274bfec snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb8a15e8e snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe4b311cf snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe9e1025d __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 0x704dd485 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 0x0029385d qdisc_destroy +EXPORT_SYMBOL vmlinux 0x0061bad6 simple_fill_super +EXPORT_SYMBOL vmlinux 0x007247ea agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x008bfd1b lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x00910398 mutex_trylock +EXPORT_SYMBOL vmlinux 0x009f3f85 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x00b72257 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x00b8d4f6 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x00bac781 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x00c73f4d serio_close +EXPORT_SYMBOL vmlinux 0x00cdc027 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x00d513ef tty_throttle +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00f24bcc fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x00f4a3cc nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x010b6751 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x01112a7d jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01142a3d kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x011859ea tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x013ef234 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x0140866e put_disk +EXPORT_SYMBOL vmlinux 0x01629aee handle_edge_irq +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x01900101 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x019d4337 install_exec_creds +EXPORT_SYMBOL vmlinux 0x01db3ceb blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x01eaa5b2 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x01f7965c pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0x01fa3b92 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x01fdeb1c bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x0208ddca udp_del_offload +EXPORT_SYMBOL vmlinux 0x021f995f tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x0243a8a3 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x0254663c swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x026432f2 touch_atime +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x02660b9d simple_transaction_set +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027ace16 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x028fa962 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b9e704 ps2_drain +EXPORT_SYMBOL vmlinux 0x02e592dd __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f29429 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x02fc6d73 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x02fdb220 mac_find_mode +EXPORT_SYMBOL vmlinux 0x030294a3 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x0308632c single_open_size +EXPORT_SYMBOL vmlinux 0x0310fcb1 sk_capable +EXPORT_SYMBOL vmlinux 0x032b7aea poll_initwait +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 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0390c25f scsi_register_interface +EXPORT_SYMBOL vmlinux 0x03981a59 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x03a61efe path_is_under +EXPORT_SYMBOL vmlinux 0x03b746a2 bmap +EXPORT_SYMBOL vmlinux 0x03cd4590 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x03e01527 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x03ef5951 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042d37de mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x0447a2e5 unregister_netdev +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045b5831 dm_get_device +EXPORT_SYMBOL vmlinux 0x046d49c0 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x046ec971 __seq_open_private +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04be9185 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x04ca6eef tcf_hash_check +EXPORT_SYMBOL vmlinux 0x04ddc2e7 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x04e1650c param_ops_ulong +EXPORT_SYMBOL vmlinux 0x04e86b68 __page_symlink +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f1041d lockref_get +EXPORT_SYMBOL vmlinux 0x04fd343f __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x05065971 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x05314657 to_nd_btt +EXPORT_SYMBOL vmlinux 0x0563d842 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x05653d80 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x05747157 security_inode_permission +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05d26989 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05dd0daf led_set_brightness +EXPORT_SYMBOL vmlinux 0x05e89bba t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x05f0c5a2 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x0602a28a tcp_connect +EXPORT_SYMBOL vmlinux 0x0607aa83 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x0610a551 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x06154064 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06178bfa ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x0622cf7d bio_copy_data +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06609056 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x06638c4c tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067948e2 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06979dc9 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x06aa436c framebuffer_release +EXPORT_SYMBOL vmlinux 0x06b3a135 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x06b909f2 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x06c8adfa qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x06d709d3 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x06f4249a xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x06fa52e1 i2c_use_client +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07029c35 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x071175e2 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x07122710 kthread_stop +EXPORT_SYMBOL vmlinux 0x0720e02f tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x07291311 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073d4311 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x0750127d tcp_proc_register +EXPORT_SYMBOL vmlinux 0x0770e82e file_ns_capable +EXPORT_SYMBOL vmlinux 0x078bf064 from_kgid +EXPORT_SYMBOL vmlinux 0x078dfc7d vme_slave_request +EXPORT_SYMBOL vmlinux 0x07a308f0 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d10ada inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x07d8c10f of_clk_get +EXPORT_SYMBOL vmlinux 0x07da2345 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x08032115 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x0808a0ed d_set_d_op +EXPORT_SYMBOL vmlinux 0x082a0f5f cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x083f9e3c nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x086d8cdd irq_stat +EXPORT_SYMBOL vmlinux 0x0884d03c import_iovec +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x08b33969 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x08c8d838 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x0904c934 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x09253b47 mem_map +EXPORT_SYMBOL vmlinux 0x0927d25f fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096b7fbc eth_gro_receive +EXPORT_SYMBOL vmlinux 0x0971197b make_kgid +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098cd19a mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x098da5fa blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x09979477 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x09bbbb91 trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09c8efc3 dev_emerg +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d84ac9 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x09d8ee54 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x09ea7478 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x0a09dc36 netif_carrier_off +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 0x0a47b326 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x0a658fd9 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x0a68dffa xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x0a7165c5 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa52969 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0acff96e sg_miter_skip +EXPORT_SYMBOL vmlinux 0x0ad03b29 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x0ad22124 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x0b0c23bc input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1769a2 sock_wake_async +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b495650 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x0b7259bb start_tty +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b81a63a padata_start +EXPORT_SYMBOL vmlinux 0x0b8b137e filemap_map_pages +EXPORT_SYMBOL vmlinux 0x0b967af9 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x0ba58cfa devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x0bb858a7 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc7c4d6 __lock_buffer +EXPORT_SYMBOL vmlinux 0x0bdf827c jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c27aad8 proto_unregister +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c4f7f75 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x0c586929 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c66d447 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x0c7725b7 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x0c84a6a6 set_bh_page +EXPORT_SYMBOL vmlinux 0x0c957dda kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0d202638 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x0d435c75 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d988f7d __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0daba9ba pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x0db7b642 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc0eab0 vfs_symlink +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dee05aa check_disk_size_change +EXPORT_SYMBOL vmlinux 0x0df43b00 kill_anon_super +EXPORT_SYMBOL vmlinux 0x0e13b38c crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x0e356103 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x0e4647d1 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x0e5d24bc xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x0e6751c6 skb_find_text +EXPORT_SYMBOL vmlinux 0x0e6c4cd6 __sb_start_write +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e6ec861 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x0e80de7f uart_add_one_port +EXPORT_SYMBOL vmlinux 0x0e8acfaf cfb_fillrect +EXPORT_SYMBOL vmlinux 0x0e8b82f6 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e9484bd of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x0e9a6d2f generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x0ea46443 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec418ec wake_up_process +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f020dea kern_path +EXPORT_SYMBOL vmlinux 0x0f22d91e mach_c293_pcie +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f33f1c9 netdev_state_change +EXPORT_SYMBOL vmlinux 0x0f35fe22 led_blink_set +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 0x0f871a25 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x0fa1bbde mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2c363 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fcbfff1 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x0fccb376 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x0fd08935 dqget +EXPORT_SYMBOL vmlinux 0x0fe0bc92 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x0fed0bcc dev_addr_init +EXPORT_SYMBOL vmlinux 0x10083432 genl_notify +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1080797e xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x1097ffa6 path_nosuid +EXPORT_SYMBOL vmlinux 0x10a1a37c get_thermal_instance +EXPORT_SYMBOL vmlinux 0x10a34ce0 __break_lease +EXPORT_SYMBOL vmlinux 0x10ae6c6f __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x10ea5ae7 vfs_statfs +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fb0170 md_flush_request +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111a82e7 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x1132821e iterate_supers_type +EXPORT_SYMBOL vmlinux 0x114c3d06 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1178a0b7 elv_rb_add +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x118f6843 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b0edbb __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x11ce4eb7 phy_start +EXPORT_SYMBOL vmlinux 0x11d2f33e dev_get_flags +EXPORT_SYMBOL vmlinux 0x11ddd9b6 sock_no_poll +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x1237889d md_unregister_thread +EXPORT_SYMBOL vmlinux 0x12436308 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x124e3de2 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x126dfd80 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x1285ce3c padata_free +EXPORT_SYMBOL vmlinux 0x12876b0e mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x12950ae2 input_event +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12ca1c21 tty_free_termios +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e5c9af irq_set_chip +EXPORT_SYMBOL vmlinux 0x12fbc404 fget_raw +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132fd108 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1356b6af pci_dev_put +EXPORT_SYMBOL vmlinux 0x1367763a of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x136f8c96 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x13937989 neigh_for_each +EXPORT_SYMBOL vmlinux 0x13a442ea pci_restore_state +EXPORT_SYMBOL vmlinux 0x13a5af98 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x13b438a1 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13dd8bd2 udp_prot +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13fdfbeb __ip_dev_find +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143febbd xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x14422422 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x1443cd88 vfs_llseek +EXPORT_SYMBOL vmlinux 0x1462999e submit_bio_wait +EXPORT_SYMBOL vmlinux 0x149a484e phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x149aef93 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x14a473d5 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x14cb4afc __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x14d619eb security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x14f6fd35 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x14fbad3b __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x14fce9c4 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x152dcab9 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x154702ac sk_common_release +EXPORT_SYMBOL vmlinux 0x15474f1e blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15591494 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x1575a8f9 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x15779349 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x15873335 seq_lseek +EXPORT_SYMBOL vmlinux 0x158c29fb agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x158de790 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x15a09c02 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15d680a8 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x160271b4 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x16218b80 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x162dfbfa unregister_qdisc +EXPORT_SYMBOL vmlinux 0x163701d2 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x163b6290 security_path_unlink +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16852df2 mntget +EXPORT_SYMBOL vmlinux 0x16a1555d ppp_dev_name +EXPORT_SYMBOL vmlinux 0x16a7cd31 mach_twr_p1025 +EXPORT_SYMBOL vmlinux 0x16b36f91 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x16b6754d nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x16b68202 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x16c2a828 agp_bridge +EXPORT_SYMBOL vmlinux 0x16d21477 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e3e205 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x17180cad dev_notice +EXPORT_SYMBOL vmlinux 0x171f89dd blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x172bec1c generic_file_fsync +EXPORT_SYMBOL vmlinux 0x1735f7a4 dquot_transfer +EXPORT_SYMBOL vmlinux 0x173ff830 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x17438565 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x177064b6 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x17774729 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x178a24bd freeze_super +EXPORT_SYMBOL vmlinux 0x178d65ef request_key +EXPORT_SYMBOL vmlinux 0x179fca22 dqput +EXPORT_SYMBOL vmlinux 0x17a734b7 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17d66ec3 security_path_mknod +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f26dcf of_dev_get +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x18024bae key_revoke +EXPORT_SYMBOL vmlinux 0x18042c0e neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x18108254 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x18238bf2 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1829bbd0 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182a50ec pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x183bd38c of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184788d5 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1853fe9e ata_link_printk +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x1897c284 serio_rescan +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b08e47 do_splice_to +EXPORT_SYMBOL vmlinux 0x18b0b127 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x18c019ea blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x18e70fea ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x190eaf2c proc_create_data +EXPORT_SYMBOL vmlinux 0x19197a08 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x191d304e qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x191e81ae mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x1921b756 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x19291648 would_dump +EXPORT_SYMBOL vmlinux 0x193400d6 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x1956f53b blk_sync_queue +EXPORT_SYMBOL vmlinux 0x195ad2a1 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x197a8af2 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x19851def agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x19901f37 cpufreq_global_kobject +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 0x19c15ca7 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x19cceb63 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x1a0341ff lock_fb_info +EXPORT_SYMBOL vmlinux 0x1a39844f dma_find_channel +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a66555b sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x1a665720 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x1a69aec2 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x1a79faf5 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1a97f2df inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x1aab50ca xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x1ace208a blk_end_request +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1ae895ce scsi_device_resume +EXPORT_SYMBOL vmlinux 0x1aeec5b4 down_read +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b01c58b skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b1e1a1d fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b879f31 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1bb19562 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc10458 tty_name +EXPORT_SYMBOL vmlinux 0x1bc3352f vfs_writev +EXPORT_SYMBOL vmlinux 0x1bc43b55 key_link +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1bd4b139 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x1be5c167 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1c08b1bb register_md_personality +EXPORT_SYMBOL vmlinux 0x1c2e90e3 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x1c43c857 read_cache_page +EXPORT_SYMBOL vmlinux 0x1c5d993a key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x1c5ee169 blk_init_queue +EXPORT_SYMBOL vmlinux 0x1c5f4dd9 vme_master_request +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1cdfb5d1 dev_set_group +EXPORT_SYMBOL vmlinux 0x1cff34b0 phy_attach +EXPORT_SYMBOL vmlinux 0x1d013b66 locks_init_lock +EXPORT_SYMBOL vmlinux 0x1d2ad6e7 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x1d2d5311 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x1d31eb7c devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x1d322079 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x1d467ec8 input_open_device +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d746f9c __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x1d7f55c7 dev_crit +EXPORT_SYMBOL vmlinux 0x1d818f7e generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1daf0a9f xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x1db0edb4 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc93cc8 nobh_writepage +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dec1120 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x1df9228b netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x1e04e79c genphy_update_link +EXPORT_SYMBOL vmlinux 0x1e0b4448 netdev_crit +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e5f2f31 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e8e41bf d_set_fallthru +EXPORT_SYMBOL vmlinux 0x1e9851c4 inode_init_always +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ed6abe6 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x1ef2df1c bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x1f0496dc of_phy_connect +EXPORT_SYMBOL vmlinux 0x1f146a3c xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x1f5eaa43 tty_register_device +EXPORT_SYMBOL vmlinux 0x1f78dae8 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f960c7c set_user_nice +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc8b2fa kernel_write +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd3e927 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x1fe60517 bitmap_end_sync +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 0x20014d8e inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20170da7 set_groups +EXPORT_SYMBOL vmlinux 0x203dec65 blk_rq_init +EXPORT_SYMBOL vmlinux 0x20439425 param_get_uint +EXPORT_SYMBOL vmlinux 0x20444f33 iterate_fd +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c3c37 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x20643750 phy_device_create +EXPORT_SYMBOL vmlinux 0x206687ad cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x2068a826 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x209126a4 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x2091e2be security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d5fff9 netdev_alert +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e507e1 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x20e6f52f seq_file_path +EXPORT_SYMBOL vmlinux 0x21146f0b genlmsg_put +EXPORT_SYMBOL vmlinux 0x2121ea72 give_up_console +EXPORT_SYMBOL vmlinux 0x2122e9cb dst_destroy +EXPORT_SYMBOL vmlinux 0x215a1aec inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x2178b7ed dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x218141c4 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x21966f9a udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x219f7459 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x21be722f inet_offloads +EXPORT_SYMBOL vmlinux 0x21c5c59d vfs_readf +EXPORT_SYMBOL vmlinux 0x21d10a4f scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21f3dc15 cpm_command +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22349086 request_key_async +EXPORT_SYMBOL vmlinux 0x2239bcd2 __vfs_read +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x225fccac ___pskb_trim +EXPORT_SYMBOL vmlinux 0x225fdfbf swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x226a470f ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x227b1f95 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x22894cdb abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22d08ccb xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x22d1b67c tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22ed111d __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x230a4801 md_register_thread +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231fde8d get_tz_trend +EXPORT_SYMBOL vmlinux 0x2326b613 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x234b68ca unlock_buffer +EXPORT_SYMBOL vmlinux 0x234d20b2 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x23576a3b dm_unregister_target +EXPORT_SYMBOL vmlinux 0x23584c59 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23636a66 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x236a8df7 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23ca51c8 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x23cf460c pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x23ed6693 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f4c013 pid_task +EXPORT_SYMBOL vmlinux 0x23f9d34b sock_rfree +EXPORT_SYMBOL vmlinux 0x23fbef90 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241f374f pci_bus_put +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2425c4d4 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x2439bab3 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x24715fb0 __register_binfmt +EXPORT_SYMBOL vmlinux 0x247c025e inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x248004ef fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x248916ce mapping_tagged +EXPORT_SYMBOL vmlinux 0x24a76358 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x24a79691 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x24b07495 elv_rb_del +EXPORT_SYMBOL vmlinux 0x24b27fb6 bdget +EXPORT_SYMBOL vmlinux 0x24bb9355 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x24c72ed3 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x24ca5d12 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x24d6e1e7 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x24dad514 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x24dfe44d devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x24ed4cd3 agp_backend_release +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f5da36 phy_detach +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x24ff6f31 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25085ab6 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x25254d85 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25374866 sock_no_getname +EXPORT_SYMBOL vmlinux 0x255cfa4d param_set_ulong +EXPORT_SYMBOL vmlinux 0x25651fca serio_unregister_port +EXPORT_SYMBOL vmlinux 0x256f4902 proto_register +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x257b469f phy_find_first +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25909a04 locks_free_lock +EXPORT_SYMBOL vmlinux 0x25b16846 pci_dev_get +EXPORT_SYMBOL vmlinux 0x25c7350a bitmap_unplug +EXPORT_SYMBOL vmlinux 0x25c97e4b devm_free_irq +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x2602897c component_match_add +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2655b27a vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x26763e06 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x2688bbb9 mmc_release_host +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c61559 __devm_release_region +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26e95cf3 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x26f9199a agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x26fc2573 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x270181d4 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x27053597 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x270f1c18 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27533874 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2764fddb nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277ba038 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x2792fb8f tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a56c31 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c0ad70 vme_irq_free +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x28040858 vfs_mknod +EXPORT_SYMBOL vmlinux 0x280b8ed4 dev_uc_init +EXPORT_SYMBOL vmlinux 0x280e97dd udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282ede32 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28aafad1 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x28b76ba4 load_nls_default +EXPORT_SYMBOL vmlinux 0x28b9c848 inet_del_offload +EXPORT_SYMBOL vmlinux 0x28c055aa try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x28c40451 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x29115265 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x29342a54 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x294dcfe7 bd_set_size +EXPORT_SYMBOL vmlinux 0x295199b4 __kfree_skb +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x297bda4a of_device_register +EXPORT_SYMBOL vmlinux 0x29a0e85c user_revoke +EXPORT_SYMBOL vmlinux 0x29c45adb vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x29f78cf6 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a05104a from_kprojid +EXPORT_SYMBOL vmlinux 0x2a074622 generic_getxattr +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3da828 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x2a4d6a6b tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x2a4fe81e bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x2a63f546 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x2a7380f3 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x2a9bab3e blk_register_region +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa2c2d5 skb_clone +EXPORT_SYMBOL vmlinux 0x2aa3fa3b skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2abe7b1b pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2acfa77c inet6_getname +EXPORT_SYMBOL vmlinux 0x2aec461b param_get_charp +EXPORT_SYMBOL vmlinux 0x2aec4b15 vm_map_ram +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b25ad23 scsi_print_result +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2cf7a4 put_filp +EXPORT_SYMBOL vmlinux 0x2b312412 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x2b53c6c1 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x2b57605c dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x2b626f5d phy_drivers_register +EXPORT_SYMBOL vmlinux 0x2b816013 seq_vprintf +EXPORT_SYMBOL vmlinux 0x2b81c6e4 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x2b8fd0d8 add_disk +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bba5cf3 param_get_string +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2c0f8a38 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c4261f4 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x2c44a295 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x2c5304be agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x2c59f70e register_qdisc +EXPORT_SYMBOL vmlinux 0x2c5d1f6a crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c7ed532 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x2c7f2b75 user_path_create +EXPORT_SYMBOL vmlinux 0x2c816b5e pci_set_mwi +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca24920 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x2cae8662 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x2cc6b567 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x2d056a6e __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d19c7c9 netif_napi_del +EXPORT_SYMBOL vmlinux 0x2d2c36f7 proc_set_user +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d35bc77 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d3ad2ca kill_bdev +EXPORT_SYMBOL vmlinux 0x2d52df0c generic_ro_fops +EXPORT_SYMBOL vmlinux 0x2d59c786 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x2d8d0396 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x2dd42108 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x2dde3caf skb_checksum +EXPORT_SYMBOL vmlinux 0x2dde6e64 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e17d5dc alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1e4771 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3aeda9 mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0x2e705ea2 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x2eb2deac dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec91dd2 noop_fsync +EXPORT_SYMBOL vmlinux 0x2ec92323 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x2ec9f261 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x2ed6990f vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x2ed6b9b9 skb_insert +EXPORT_SYMBOL vmlinux 0x2ef4c7d9 dst_cow_metrics_generic +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 0x2f25c56c nf_log_unregister +EXPORT_SYMBOL vmlinux 0x2f2df5c4 udp_poll +EXPORT_SYMBOL vmlinux 0x2f3efc5e mount_nodev +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f611472 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x2f66b3b4 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x2f7ee8b8 inet6_bind +EXPORT_SYMBOL vmlinux 0x2f8a9513 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x2f9e3881 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x2fa84792 read_code +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fd23b4d param_ops_bool +EXPORT_SYMBOL vmlinux 0x2fe083aa uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe8b102 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x2fefe105 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x2ff0884b pci_choose_state +EXPORT_SYMBOL vmlinux 0x301e85c4 account_page_redirty +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x30252727 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x30289e72 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x302cf92b fb_find_mode +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30335a7b input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x3057ef39 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x3058b939 thaw_bdev +EXPORT_SYMBOL vmlinux 0x3062e4ff textsearch_register +EXPORT_SYMBOL vmlinux 0x306a4e1c of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x307181cf vfs_fsync +EXPORT_SYMBOL vmlinux 0x307224ca rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30900e0e dup_iter +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ac6907 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30c29722 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x30cd8b01 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x30e45499 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x30f2258b jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x30f3ce80 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x30f5695c pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x30fcb21b fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x30fd2453 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x3100cd08 keyring_search +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x3122597b tcf_action_exec +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314a7b19 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x3154d407 __devm_request_region +EXPORT_SYMBOL vmlinux 0x3164e4db tso_build_data +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31790202 netif_skb_features +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x3193c041 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x31bf692c pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x31e0c0c8 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x32040dd4 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x3219da84 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x3225bf3b dev_alloc_name +EXPORT_SYMBOL vmlinux 0x322fbfbd inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x324d1fb8 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x324d73f3 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x326cd9fa tcp_sendpage +EXPORT_SYMBOL vmlinux 0x327dfb6d nonseekable_open +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x329088eb mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x32aab796 input_register_device +EXPORT_SYMBOL vmlinux 0x32b06f98 __frontswap_load +EXPORT_SYMBOL vmlinux 0x32b84ff0 sock_register +EXPORT_SYMBOL vmlinux 0x32c64003 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x32d7ed1b may_umount_tree +EXPORT_SYMBOL vmlinux 0x32dd29df mdiobus_register +EXPORT_SYMBOL vmlinux 0x32ff0a6a xfrm_state_add +EXPORT_SYMBOL vmlinux 0x33033dad commit_creds +EXPORT_SYMBOL vmlinux 0x3306aa7c scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x33b6b430 __napi_complete +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c074f0 vc_resize +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33ca6a50 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x33d2d9be uart_get_divisor +EXPORT_SYMBOL vmlinux 0x33d44a01 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x33d57c79 udp_set_csum +EXPORT_SYMBOL vmlinux 0x33d5d52d dev_trans_start +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e473b9 sk_net_capable +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x3402bb0b unregister_binfmt +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x3419a50d dev_get_stats +EXPORT_SYMBOL vmlinux 0x3426527e vfs_iter_read +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x345bfef7 file_open_root +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347282d5 d_move +EXPORT_SYMBOL vmlinux 0x347deb2a dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b81cf7 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x34bbadba __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x34c33535 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x34d9d83d blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x34dd4319 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x35084531 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351f8529 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x358de277 kmap_to_page +EXPORT_SYMBOL vmlinux 0x359af769 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b5e0ab pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x35c9b58b get_task_io_context +EXPORT_SYMBOL vmlinux 0x35e88c46 d_make_root +EXPORT_SYMBOL vmlinux 0x35fb0e53 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x360491ca genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x360e799f copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x3614e421 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x362370fd zpool_register_driver +EXPORT_SYMBOL vmlinux 0x363cae80 to_ndd +EXPORT_SYMBOL vmlinux 0x365e3be1 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x3666c1b9 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x36780fd3 make_kprojid +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x36815df7 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x368485a4 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x368514f7 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b3bbd2 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36db54cf netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x36f10d89 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x37185406 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x371e8668 free_task +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374e9410 complete_request_key +EXPORT_SYMBOL vmlinux 0x375f6243 alloc_file +EXPORT_SYMBOL vmlinux 0x378b16bd __dquot_free_space +EXPORT_SYMBOL vmlinux 0x379e58ae tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x37a0d1d8 pci_release_region +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b1640a of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c209ea netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37e77935 kernel_read +EXPORT_SYMBOL vmlinux 0x37e785f8 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37fc4a34 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a526c of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x38290cc1 key_put +EXPORT_SYMBOL vmlinux 0x383f2ebf __elv_add_request +EXPORT_SYMBOL vmlinux 0x3854eea6 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x38559708 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x3878f48b t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x387ab2e6 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388d8d26 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x3891ee30 input_set_keycode +EXPORT_SYMBOL vmlinux 0x389ce8c1 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x38a5a78f pci_enable_msix +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 0x38c1b63a pci_iomap_range +EXPORT_SYMBOL vmlinux 0x38de1e4a lock_sock_nested +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3913adb2 cdev_add +EXPORT_SYMBOL vmlinux 0x3918d8f3 block_read_full_page +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393ee108 vfs_setpos +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39596922 dev_add_pack +EXPORT_SYMBOL vmlinux 0x3976c3cb netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x39827c8b open_exec +EXPORT_SYMBOL vmlinux 0x39873f38 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x399273f4 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x399773b6 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39a71ea8 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39c42226 arp_send +EXPORT_SYMBOL vmlinux 0x39c7f967 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x3a014914 km_policy_notify +EXPORT_SYMBOL vmlinux 0x3a096364 ppc_md +EXPORT_SYMBOL vmlinux 0x3a0e8d13 param_set_bool +EXPORT_SYMBOL vmlinux 0x3a11b618 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x3a18af26 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a1be86b unregister_console +EXPORT_SYMBOL vmlinux 0x3a307f6c genphy_config_init +EXPORT_SYMBOL vmlinux 0x3a35ba00 kern_unmount +EXPORT_SYMBOL vmlinux 0x3a4d09c4 bio_split +EXPORT_SYMBOL vmlinux 0x3a95ed92 release_sock +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9cf926 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x3aa1241e tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x3aa5efcc dquot_quota_on +EXPORT_SYMBOL vmlinux 0x3ac0ee35 nf_reinject +EXPORT_SYMBOL vmlinux 0x3b0dad97 nf_log_trace +EXPORT_SYMBOL vmlinux 0x3b1b8604 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x3b4e2727 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x3b5f295c rwsem_wake +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b724f2a sock_create +EXPORT_SYMBOL vmlinux 0x3b84d84a agp_copy_info +EXPORT_SYMBOL vmlinux 0x3bc6cbe7 genphy_read_status +EXPORT_SYMBOL vmlinux 0x3bdd93d0 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x3be6c816 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x3c1a8a9d tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x3c2054a0 seq_write +EXPORT_SYMBOL vmlinux 0x3c2a7331 skb_tx_error +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c7e1326 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x3c806693 input_set_capability +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cb52831 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfa77ad cdrom_check_events +EXPORT_SYMBOL vmlinux 0x3d0702eb netdev_info +EXPORT_SYMBOL vmlinux 0x3d2f37f3 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x3d41c51c mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x3d4e1065 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x3d59764a netpoll_print_options +EXPORT_SYMBOL vmlinux 0x3d5e6895 input_get_keycode +EXPORT_SYMBOL vmlinux 0x3d65d0b8 cad_pid +EXPORT_SYMBOL vmlinux 0x3d6be0e7 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x3d7b1f10 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x3d7e8ad3 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x3d8cb265 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0x3d98205d __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e1d8ec3 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x3e34dd53 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x3e5a026b pci_claim_resource +EXPORT_SYMBOL vmlinux 0x3e628958 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x3e69b7ac netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x3e6a6dae blk_stop_queue +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e903cce gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ea6f6c8 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x3ec2ce86 mntput +EXPORT_SYMBOL vmlinux 0x3ed32be7 of_node_get +EXPORT_SYMBOL vmlinux 0x3ee5b43c bdi_register +EXPORT_SYMBOL vmlinux 0x3ee708f4 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f311106 dev_add_offload +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f524581 free_user_ns +EXPORT_SYMBOL vmlinux 0x3f52a342 seq_release +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f677543 ps2_init +EXPORT_SYMBOL vmlinux 0x3f7e7c9b input_unregister_handler +EXPORT_SYMBOL vmlinux 0x3f89eab5 blk_complete_request +EXPORT_SYMBOL vmlinux 0x3faa7f88 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x3fad9d48 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x3fb0e38e scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fb256d6 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x40005f76 generic_read_dir +EXPORT_SYMBOL vmlinux 0x400305c5 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x40079673 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x4013fae5 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x4017bcc3 dquot_initialize +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40665538 machine_id +EXPORT_SYMBOL vmlinux 0x4084c00f blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x4088f746 simple_release_fs +EXPORT_SYMBOL vmlinux 0x408ac35a pcim_enable_device +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +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 0x40beb95b gen_pool_free +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 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x41190e28 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x4129bb55 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x41377feb blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x413e0b28 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414c1a4d __vfs_write +EXPORT_SYMBOL vmlinux 0x41521d07 sock_efree +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4183ab67 gnet_stats_start_copy_compat +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 0x419a884c pneigh_lookup +EXPORT_SYMBOL vmlinux 0x419c0c80 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x41abe2ff user_path_at_empty +EXPORT_SYMBOL vmlinux 0x41b84d03 iterate_mounts +EXPORT_SYMBOL vmlinux 0x4202345f cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x4210b6c2 input_inject_event +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42246d08 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42801a73 iget_locked +EXPORT_SYMBOL vmlinux 0x4287270a scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42b3dfab pci_get_subsys +EXPORT_SYMBOL vmlinux 0x42b4ea1e ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x42d25a46 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x42df9e2a mmc_add_host +EXPORT_SYMBOL vmlinux 0x42e3fde7 __brelse +EXPORT_SYMBOL vmlinux 0x42f39f1e follow_down_one +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43124038 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x43194b8c iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x4336b969 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x43512573 __bread_gfp +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436c7657 single_release +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439233dd neigh_seq_start +EXPORT_SYMBOL vmlinux 0x4394d77b dquot_commit_info +EXPORT_SYMBOL vmlinux 0x439c1209 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43d1ae12 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x44049471 __neigh_create +EXPORT_SYMBOL vmlinux 0x440e5a4f clk_add_alias +EXPORT_SYMBOL vmlinux 0x440f31dd inet6_ioctl +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4419d2aa con_is_bound +EXPORT_SYMBOL vmlinux 0x441cc3e6 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x441ebee1 blk_make_request +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4450dfa7 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x44855e8e up_read +EXPORT_SYMBOL vmlinux 0x44938a40 bio_put +EXPORT_SYMBOL vmlinux 0x44a850fd skb_copy +EXPORT_SYMBOL vmlinux 0x44a96743 arp_xmit +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44da4f3b nf_log_unset +EXPORT_SYMBOL vmlinux 0x44e7f91a balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x45063d55 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x4518ab48 sock_wfree +EXPORT_SYMBOL vmlinux 0x4519dac6 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x452ff80a twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x453c2459 get_disk +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4552f99f up_write +EXPORT_SYMBOL vmlinux 0x4560ff05 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4584e434 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x45a690f0 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45a8be81 invalidate_partition +EXPORT_SYMBOL vmlinux 0x45b3ad9e mpage_writepages +EXPORT_SYMBOL vmlinux 0x45b62e07 pci_iounmap +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x461f14d8 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x462345e1 xmon +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46329088 misc_deregister +EXPORT_SYMBOL vmlinux 0x4649ed59 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468595d2 bdget_disk +EXPORT_SYMBOL vmlinux 0x468d9e9e tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x46ac1832 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46f1e216 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47176e5a tcf_register_action +EXPORT_SYMBOL vmlinux 0x47220556 sock_release +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x47612285 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b2b04c page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x47c16996 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x47cce613 dev_alert +EXPORT_SYMBOL vmlinux 0x47d7013f skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x47e74880 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x47ea516f phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x47f00e46 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x4813ee52 page_waitqueue +EXPORT_SYMBOL vmlinux 0x481685e8 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x4823fcaa devm_clk_put +EXPORT_SYMBOL vmlinux 0x4839709a truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x48564e82 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485e42f5 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x48768213 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x487b6133 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x48939e58 current_fs_time +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48be7ca0 pci_bus_type +EXPORT_SYMBOL vmlinux 0x48cd990a vm_insert_page +EXPORT_SYMBOL vmlinux 0x48e10f1a filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x48f89325 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49199b76 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x492431a6 security_path_symlink +EXPORT_SYMBOL vmlinux 0x4924e003 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x492a5b8a sk_alloc +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496b8850 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x49724192 param_set_ullong +EXPORT_SYMBOL vmlinux 0x4987883e simple_dname +EXPORT_SYMBOL vmlinux 0x49b05493 param_get_short +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b4418b skb_vlan_push +EXPORT_SYMBOL vmlinux 0x49ded50d input_reset_device +EXPORT_SYMBOL vmlinux 0x49f098c6 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a24fe0d mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x4a6415b9 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac454d8 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x4ac88f0c find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x4acb876d simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0d8fcb blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b23d501 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x4b274a1a nobh_write_begin +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b3bc3dc get_acl +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b685ad4 free_netdev +EXPORT_SYMBOL vmlinux 0x4b7fa7ad kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bba697e twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c113b1f neigh_table_init +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c3ab234 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x4c6078c7 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x4c89ab5b tty_write_room +EXPORT_SYMBOL vmlinux 0x4ca147cd kernel_connect +EXPORT_SYMBOL vmlinux 0x4ca64ac0 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x4cc3af2a i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x4cd189c5 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x4cd3d248 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cde2423 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d60cbe8 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x4d71004a __cpm2_setbrg +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d97c2c7 d_instantiate +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4dbf6ea0 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x4dc06e8b agp_enable +EXPORT_SYMBOL vmlinux 0x4dc67f1d dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df03298 seq_escape +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df23f00 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x4df95205 inode_init_once +EXPORT_SYMBOL vmlinux 0x4e015e4a netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x4e2b1397 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e43152a save_mount_options +EXPORT_SYMBOL vmlinux 0x4e5e6116 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ebe6c89 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4ec97ed5 finish_no_open +EXPORT_SYMBOL vmlinux 0x4ee4f89a phy_init_eee +EXPORT_SYMBOL vmlinux 0x4f183160 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f27bf8b block_write_end +EXPORT_SYMBOL vmlinux 0x4f37991d elevator_exit +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f59410e netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b762a xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x4f7a2a2b bio_advance +EXPORT_SYMBOL vmlinux 0x4f8f6b27 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x4fa6b447 nf_log_register +EXPORT_SYMBOL vmlinux 0x4fcaeb88 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x4fd7cef5 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5030b682 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x5051a800 kobject_init +EXPORT_SYMBOL vmlinux 0x505a09d5 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50696cdf generic_listxattr +EXPORT_SYMBOL vmlinux 0x5074ef1c cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x50831785 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50a52b39 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x50af64c4 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50d9214f md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5144d49e arp_tbl +EXPORT_SYMBOL vmlinux 0x515a27d8 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a37261 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x51e560cd blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x51e5d2c9 init_net +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x5221dbf6 single_open +EXPORT_SYMBOL vmlinux 0x52241f51 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524c1e62 inet_select_addr +EXPORT_SYMBOL vmlinux 0x52547a35 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x526a9cce lro_receive_skb +EXPORT_SYMBOL vmlinux 0x5279ff75 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52ced395 blk_run_queue +EXPORT_SYMBOL vmlinux 0x52d92397 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x52ea93f9 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x53143065 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53444ea3 irq_to_desc +EXPORT_SYMBOL vmlinux 0x5346c7b3 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x534a85a0 deactivate_super +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x53623496 elv_register_queue +EXPORT_SYMBOL vmlinux 0x536372ff input_register_handler +EXPORT_SYMBOL vmlinux 0x53979722 of_phy_attach +EXPORT_SYMBOL vmlinux 0x5398b3f5 param_get_int +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a0f003 bdevname +EXPORT_SYMBOL vmlinux 0x53a54025 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x53a7e1ec netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x53c58449 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x53c9aed9 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x53dc66e4 vfs_unlink +EXPORT_SYMBOL vmlinux 0x53df4f33 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x53eb3b57 param_ops_short +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54130340 prepare_creds +EXPORT_SYMBOL vmlinux 0x5426b0e3 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x542bfd92 audit_log_start +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x546d92ea i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x547aea88 dev_deactivate +EXPORT_SYMBOL vmlinux 0x547ea448 __genl_register_family +EXPORT_SYMBOL vmlinux 0x54a4950e __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x54a806c6 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54ad8733 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x54b5a183 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c74f88 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x54d324a7 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5515a92c console_stop +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551d7a81 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556e25c3 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x55835263 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55fcaf32 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x561d8cde nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x561e427b eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x56293cd5 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x566c7bcc eth_header_parse +EXPORT_SYMBOL vmlinux 0x566de0a7 consume_skb +EXPORT_SYMBOL vmlinux 0x5692b5ad sock_no_connect +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f3038c sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x5704c7d2 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x571631c2 d_obtain_root +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573327db ppp_channel_index +EXPORT_SYMBOL vmlinux 0x57343144 lookup_bdev +EXPORT_SYMBOL vmlinux 0x573443e6 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x573d3d37 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x57461216 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x5749933b bdi_init +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574eca57 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x57535ed4 pci_save_state +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 0x577d6ff5 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x57841e4e neigh_table_clear +EXPORT_SYMBOL vmlinux 0x5790848e jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57bb600f xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x57dd3e7e zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x581e35e1 unload_nls +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58498af7 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x5853b9b6 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58a09605 md_done_sync +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d80de8 softnet_data +EXPORT_SYMBOL vmlinux 0x58d90db5 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58f51701 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x59093299 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x591692c8 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x591e37e2 inet_put_port +EXPORT_SYMBOL vmlinux 0x59369208 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x596e4dbc blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x598895ba flush_dcache_page +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x599ab3d2 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x599ca0de phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59c3ac14 netif_device_detach +EXPORT_SYMBOL vmlinux 0x59c60aa6 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x59e7dce6 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x59ec1564 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a0e05d1 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x5a1e551a vfs_readv +EXPORT_SYMBOL vmlinux 0x5a2f1f8a clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x5a4ab72a scsi_target_resume +EXPORT_SYMBOL vmlinux 0x5a5c7eae mdiobus_scan +EXPORT_SYMBOL vmlinux 0x5a5d683d sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x5a795123 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x5abddf4f dev_err +EXPORT_SYMBOL vmlinux 0x5abfdff8 netdev_notice +EXPORT_SYMBOL vmlinux 0x5accf2a4 blk_put_queue +EXPORT_SYMBOL vmlinux 0x5ad5595f sock_i_ino +EXPORT_SYMBOL vmlinux 0x5af451c3 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b071a4a rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b31b7dd flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x5b38d4b8 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x5b498842 xfrm_input +EXPORT_SYMBOL vmlinux 0x5b590a2b tty_hangup +EXPORT_SYMBOL vmlinux 0x5b5de61a __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x5b67731e blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x5b6fd0a6 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x5b80381e agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x5b89e838 mount_subtree +EXPORT_SYMBOL vmlinux 0x5b8c6d0c security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9ddee3 vga_tryget +EXPORT_SYMBOL vmlinux 0x5ba0dd6d param_ops_uint +EXPORT_SYMBOL vmlinux 0x5ba709f3 seq_puts +EXPORT_SYMBOL vmlinux 0x5bd53c27 check_disk_change +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c743833 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x5c7b55ac i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x5c8ebcf2 is_nd_btt +EXPORT_SYMBOL vmlinux 0x5c990667 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5ccaeaa5 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfb5ad7 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x5d0958de bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x5d2a3040 simple_empty +EXPORT_SYMBOL vmlinux 0x5d493723 d_splice_alias +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d947770 kunmap_high +EXPORT_SYMBOL vmlinux 0x5da07504 mutex_unlock +EXPORT_SYMBOL vmlinux 0x5dbe8b1f rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x5dcdf1ac ata_dev_printk +EXPORT_SYMBOL vmlinux 0x5ddbae42 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x5dffe6c7 ata_print_version +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e491780 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x5e5843b8 put_page +EXPORT_SYMBOL vmlinux 0x5e69c90d trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x5e79652e __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e8d76ca __frontswap_store +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebb468e module_refcount +EXPORT_SYMBOL vmlinux 0x5ebc7b6d mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x5ec38ee8 key_task_permission +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed54f32 d_find_alias +EXPORT_SYMBOL vmlinux 0x5ed85af7 input_register_handle +EXPORT_SYMBOL vmlinux 0x5ee803ac seq_open_private +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f192942 udp_seq_open +EXPORT_SYMBOL vmlinux 0x5f264678 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x5f2a651f tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x5f6b3cd4 vmap +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f772550 devm_clk_get +EXPORT_SYMBOL vmlinux 0x5f77d3be dentry_unhash +EXPORT_SYMBOL vmlinux 0x5f7e49b0 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x5f826136 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x5f853d61 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f8aeaa4 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x5fad3201 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5ffe8ddb xfrm_init_state +EXPORT_SYMBOL vmlinux 0x60034b31 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600c7112 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602f30fb mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603551a2 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x6036771b xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x60480568 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x604b6e83 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x6068dcf1 scsi_device_put +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6073732c cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x6083d219 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x60862841 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x608f9cd8 ata_port_printk +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a4580c alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x60b3e8ac blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60bbabbb netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x60cf34ec uart_match_port +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x61145c42 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x61228aa6 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x617f917f inode_change_ok +EXPORT_SYMBOL vmlinux 0x618315ba buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x61849f34 inet6_protos +EXPORT_SYMBOL vmlinux 0x6198c209 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c56cad sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x61c66d90 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x61d78aa9 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x61ec7c92 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61fd51a9 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x620483b8 __mutex_init +EXPORT_SYMBOL vmlinux 0x6210ec3b tso_build_hdr +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621bb014 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x621cc72b jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624080c4 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6257c151 netif_rx +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62ca045a tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x62f9efdc scsi_execute +EXPORT_SYMBOL vmlinux 0x62fb86fa jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631884b7 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x633bbd37 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x63431417 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x63783b79 soft_cursor +EXPORT_SYMBOL vmlinux 0x637defcc inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x6381c383 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x63935a07 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c05132 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d1b97c agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63fcc0a0 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641b568d of_get_next_parent +EXPORT_SYMBOL vmlinux 0x644d72ce may_umount +EXPORT_SYMBOL vmlinux 0x64565307 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x6459a378 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x646375b5 tcp_prot +EXPORT_SYMBOL vmlinux 0x6464d72f pagevec_lookup +EXPORT_SYMBOL vmlinux 0x647f734b __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64b399fb mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x64c874b5 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x64ebfac1 lock_rename +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65159155 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x6534c0f1 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655221f8 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x655b4874 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x655d2585 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6596629d agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x659c5950 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x65ac80d2 try_module_get +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65cc37c3 ihold +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65ec89f3 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f44b37 param_set_bint +EXPORT_SYMBOL vmlinux 0x6626902c __register_nls +EXPORT_SYMBOL vmlinux 0x6636a005 override_creds +EXPORT_SYMBOL vmlinux 0x6636a1e5 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x6639ea9d sock_setsockopt +EXPORT_SYMBOL vmlinux 0x66608011 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x667d0cb6 inet_ioctl +EXPORT_SYMBOL vmlinux 0x66852d67 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x668a5dbb ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x66a0750f skb_copy_expand +EXPORT_SYMBOL vmlinux 0x66de6f73 pci_enable_device +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x674e8cb4 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67885466 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x6789e0a5 netlink_capable +EXPORT_SYMBOL vmlinux 0x6792eafd devm_release_resource +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67be37cd pci_remove_bus +EXPORT_SYMBOL vmlinux 0x67f171d3 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x67f17dbd neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x67f77595 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x6802f813 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6835be60 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x683a0e12 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x684332c1 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x6849a52d abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x6856d1da dev_get_by_index +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x6899fe86 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c0215c inet_register_protosw +EXPORT_SYMBOL vmlinux 0x68c1738c blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x68e660d5 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x690c88b6 __frontswap_test +EXPORT_SYMBOL vmlinux 0x691dc211 __breadahead +EXPORT_SYMBOL vmlinux 0x692cc312 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x69399249 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x693ef035 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6983c06d eth_gro_complete +EXPORT_SYMBOL vmlinux 0x698a2a17 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x699dd601 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b0d752 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69d9f7a6 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a3baf4b security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x6a55e675 tty_port_close +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a69b687 param_get_ulong +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7a576a pipe_lock +EXPORT_SYMBOL vmlinux 0x6a80a3f5 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x6a80c96c dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x6a87451e devm_ioremap +EXPORT_SYMBOL vmlinux 0x6a8f6312 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x6a99f801 dev_uc_del +EXPORT_SYMBOL vmlinux 0x6abcc05b skb_store_bits +EXPORT_SYMBOL vmlinux 0x6ac31f74 vga_get +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad109b9 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x6ad2bb07 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x6ad7eade nobh_write_end +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af9cc97 serio_interrupt +EXPORT_SYMBOL vmlinux 0x6aff78b4 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdac9ee of_iomap +EXPORT_SYMBOL vmlinux 0x6bdb097f dquot_get_state +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bfcf451 dev_activate +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0b2f76 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2baae9 __kernel_write +EXPORT_SYMBOL vmlinux 0x6c45474f param_set_ushort +EXPORT_SYMBOL vmlinux 0x6c50189d netdev_update_features +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5bcc7e dput +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c8cef8f dquot_destroy +EXPORT_SYMBOL vmlinux 0x6c8ea32a unregister_md_personality +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6ca62a72 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x6cb351db mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d02653a __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x6d0c2ec8 get_gendisk +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1da220 __inet_hash +EXPORT_SYMBOL vmlinux 0x6d24622a simple_follow_link +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d3f1949 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x6d66a9cc bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d7469c8 skb_unlink +EXPORT_SYMBOL vmlinux 0x6d81a686 fput +EXPORT_SYMBOL vmlinux 0x6d82573c param_get_ushort +EXPORT_SYMBOL vmlinux 0x6da2ff54 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dad55b7 inet_release +EXPORT_SYMBOL vmlinux 0x6de93498 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6dfa2213 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x6e00b41e udplite_prot +EXPORT_SYMBOL vmlinux 0x6e0ac4a5 drop_nlink +EXPORT_SYMBOL vmlinux 0x6e0df483 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL vmlinux 0x6e38b73a unlock_new_inode +EXPORT_SYMBOL vmlinux 0x6e4f4d35 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x6e50339d xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x6e5d69ea generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e66f6dc generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea03773 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x6ea67485 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ebcb23d sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x6edf409b inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x6edfa4d9 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x6eee3fe9 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x6f00ca7c of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x6f0166cf input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x6f14ae0e skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f29c385 file_remove_privs +EXPORT_SYMBOL vmlinux 0x6f467ce3 padata_do_serial +EXPORT_SYMBOL vmlinux 0x6f7d142a alloc_disk +EXPORT_SYMBOL vmlinux 0x6f87c62c netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fa13bb5 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x6fa6f87f xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x70109a64 da903x_query_status +EXPORT_SYMBOL vmlinux 0x7027a4a6 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x702e6786 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x7037f376 kernel_bind +EXPORT_SYMBOL vmlinux 0x7044bf45 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705f6b63 neigh_xmit +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70707916 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x707457ab scsi_unregister +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x709dfa73 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x70a7fbc9 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x70ae6999 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x70d1c6e2 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70dc47bf set_anon_super +EXPORT_SYMBOL vmlinux 0x70e89563 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x70f521c9 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x71167499 sock_from_file +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x71309246 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x7152e64f rtnl_unicast +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x718b1298 __quota_error +EXPORT_SYMBOL vmlinux 0x71974712 ping_prot +EXPORT_SYMBOL vmlinux 0x719a1ff7 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b14c1c tty_lock +EXPORT_SYMBOL vmlinux 0x71b3a34a sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x71be59c8 km_is_alive +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e1cc0e dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x71f4cfad dma_common_mmap +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72042495 inet_frag_find +EXPORT_SYMBOL vmlinux 0x720e2505 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x720e6d48 fasync_helper +EXPORT_SYMBOL vmlinux 0x721709bb inode_set_flags +EXPORT_SYMBOL vmlinux 0x72441353 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x72742b7c release_pages +EXPORT_SYMBOL vmlinux 0x727b1cba cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x72a2ce54 skb_dequeue +EXPORT_SYMBOL vmlinux 0x72aef9ff dev_open +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72d436d0 param_ops_long +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ec011a xfrm_register_km +EXPORT_SYMBOL vmlinux 0x730c7646 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x73285085 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x732c1515 __scm_destroy +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7347c617 scsi_device_get +EXPORT_SYMBOL vmlinux 0x734f36ac call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x7357a8fc dev_mc_del +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x736aca3d giveup_fpu +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x73b426de ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x73c160e9 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x73ca7399 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x73df8113 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x73e185b3 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73f2a3d0 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x74016b0d local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x7403d38a insert_inode_locked +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74121d45 udp_disconnect +EXPORT_SYMBOL vmlinux 0x7412c1f0 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x742071d1 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x74305a66 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x74309d05 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x74589f21 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748ddc0b elv_rb_find +EXPORT_SYMBOL vmlinux 0x74904583 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c4efee bdput +EXPORT_SYMBOL vmlinux 0x74ce4f90 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x74d57eb4 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75112af0 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x75332b76 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7556196d kernel_accept +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x7588021b iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x7591c206 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75b05580 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75bf9922 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x75c4af50 tcp_req_err +EXPORT_SYMBOL vmlinux 0x75ff038a down_read_trylock +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7625c390 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x7630a5ed mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x7633b3f6 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x76862fb8 fget +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76a62d67 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x76b71a4c fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x76c401e9 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x76c9a6e9 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76e2af54 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770e0a1c vme_irq_generate +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x771f4f3a dev_set_mtu +EXPORT_SYMBOL vmlinux 0x77244ffa tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x773f3ea9 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x77566c4c md_reload_sb +EXPORT_SYMBOL vmlinux 0x776590cd mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x77699947 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x777b553d sock_edemux +EXPORT_SYMBOL vmlinux 0x777cbac7 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x777f261d load_nls +EXPORT_SYMBOL vmlinux 0x77935166 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77aae252 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c46147 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x77cee99d blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x77fe25c9 inode_permission +EXPORT_SYMBOL vmlinux 0x780b50b8 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x780d2164 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x782666fd tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x78267f1f ab3100_event_register +EXPORT_SYMBOL vmlinux 0x7828a253 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7860bfe8 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78921ce3 of_get_property +EXPORT_SYMBOL vmlinux 0x78968c9a blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78c80bb1 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e46134 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x78fb9510 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x79061d56 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x790d95c5 sys_imageblit +EXPORT_SYMBOL vmlinux 0x7912553d dev_load +EXPORT_SYMBOL vmlinux 0x7947f9b9 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x794c434f of_device_alloc +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797c6838 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x7987239d pci_reenable_device +EXPORT_SYMBOL vmlinux 0x799e28dd bio_chain +EXPORT_SYMBOL vmlinux 0x79a0525d dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c13a46 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x79c25fbb seq_release_private +EXPORT_SYMBOL vmlinux 0x79c408b4 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x79c60644 simple_write_begin +EXPORT_SYMBOL vmlinux 0x79dcc492 mmc_start_req +EXPORT_SYMBOL vmlinux 0x79e2cd37 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x79ed9e33 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x7a0c7d9f block_write_begin +EXPORT_SYMBOL vmlinux 0x7a236353 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x7a25c31b blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a432819 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4d1ffc find_get_entry +EXPORT_SYMBOL vmlinux 0x7a623e9c __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x7a7b3770 register_console +EXPORT_SYMBOL vmlinux 0x7a847beb neigh_lookup +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a944149 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa3afac tcp_child_process +EXPORT_SYMBOL vmlinux 0x7aaedc29 unregister_nls +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7adaa112 param_get_bool +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7adfa7d4 led_update_brightness +EXPORT_SYMBOL vmlinux 0x7aef3b67 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b1bf75a jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x7b1e4e0e __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b5423f7 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b75af13 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x7b860be6 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x7b9f1a2b vme_register_bridge +EXPORT_SYMBOL vmlinux 0x7ba4853b get_agp_version +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7bfcbcd2 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x7bfee108 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c08d458 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x7c096d3f sg_miter_start +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c14be95 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c293d70 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x7c307967 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4d19e2 mpage_writepage +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c79bc52 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c962ca9 generic_permission +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cafad7e kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbace32 inet_sendpage +EXPORT_SYMBOL vmlinux 0x7cc49007 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf1ceb7 contig_page_data +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 0x7d4b557f key_unlink +EXPORT_SYMBOL vmlinux 0x7d6cb9fb jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d72b0a4 tty_port_init +EXPORT_SYMBOL vmlinux 0x7d79b6c5 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x7d98d6c8 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x7db1c39f mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x7db64950 input_flush_device +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e10a790 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x7e1388c0 fb_set_var +EXPORT_SYMBOL vmlinux 0x7e3132db qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x7e37387e kmem_cache_create +EXPORT_SYMBOL vmlinux 0x7e764d4c unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x7e82607c __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e9f23a8 set_security_override_from_ctx +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 0x7eec37a4 wireless_send_event +EXPORT_SYMBOL vmlinux 0x7efd4fe6 simple_open +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f13980a page_address +EXPORT_SYMBOL vmlinux 0x7f1b6a17 vfs_link +EXPORT_SYMBOL vmlinux 0x7f1d6296 d_path +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f255720 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x7f270c17 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x7f28c8da t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x7f37a408 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x7f3f65f6 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x7f46a7ff netdev_err +EXPORT_SYMBOL vmlinux 0x7f6019e4 migrate_page +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f687765 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x7f69e488 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x7f6d6f5f simple_rmdir +EXPORT_SYMBOL vmlinux 0x7f71d715 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x7f8bedcc kmalloc_caches +EXPORT_SYMBOL vmlinux 0x7f9929f6 register_quota_format +EXPORT_SYMBOL vmlinux 0x7fab355d dentry_open +EXPORT_SYMBOL vmlinux 0x7facdbe7 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x7fc12701 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x7fcaf1b3 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x7fce884e of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fec17f5 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x7feccbc9 sk_filter +EXPORT_SYMBOL vmlinux 0x802a5ad5 sock_no_listen +EXPORT_SYMBOL vmlinux 0x80417484 param_set_long +EXPORT_SYMBOL vmlinux 0x80515564 cdev_init +EXPORT_SYMBOL vmlinux 0x805537aa skb_pad +EXPORT_SYMBOL vmlinux 0x805ce662 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x807d2f7f seq_printf +EXPORT_SYMBOL vmlinux 0x809814ce tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x80a07c83 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x80b353c3 request_firmware +EXPORT_SYMBOL vmlinux 0x80be4c56 vfs_create +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e78276 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x80e79bd0 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x812b2390 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x812e98b2 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x814318d5 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x8144329c devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8150c634 noop_llseek +EXPORT_SYMBOL vmlinux 0x8152e937 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x81587b97 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a1aadd elevator_change +EXPORT_SYMBOL vmlinux 0x81b6501d netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e2aaaa phy_device_free +EXPORT_SYMBOL vmlinux 0x82023429 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x82031efb simple_rename +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82191496 pci_bus_get +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x823f46aa vfs_mkdir +EXPORT_SYMBOL vmlinux 0x82449761 simple_link +EXPORT_SYMBOL vmlinux 0x824b77df scsi_scan_target +EXPORT_SYMBOL vmlinux 0x82618e3f dst_discard_sk +EXPORT_SYMBOL vmlinux 0x8265a7d0 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x827f79fd ipv4_specific +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x828c2138 vme_irq_request +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82bea7af vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x82d0642f dquot_enable +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82ecbd7b tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x82eed878 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x83004bb6 down_write +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x8316c5f0 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x831f3593 dcb_setapp +EXPORT_SYMBOL vmlinux 0x83222911 __netif_schedule +EXPORT_SYMBOL vmlinux 0x832e0b75 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x832fc8f7 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x833cb6ce inode_set_bytes +EXPORT_SYMBOL vmlinux 0x83636a13 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x83710fa4 del_gendisk +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x83927ded end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b46005 serio_reconnect +EXPORT_SYMBOL vmlinux 0x83b9d0f5 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x83c20aee unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x83c4751a scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83cbf4fe bioset_create +EXPORT_SYMBOL vmlinux 0x83ce6d9d remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x83f95de5 key_validate +EXPORT_SYMBOL vmlinux 0x8403e44c km_new_mapping +EXPORT_SYMBOL vmlinux 0x8404a5bd tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x842562f8 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x842b7b4b sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x8435147f mach_ppa8548 +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x84633cd9 dump_align +EXPORT_SYMBOL vmlinux 0x846f4ab1 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x84792df6 bio_map_kern +EXPORT_SYMBOL vmlinux 0x8479ca1c scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x848e060c skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84e54888 unlock_rename +EXPORT_SYMBOL vmlinux 0x84fa3da0 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x851d9f5c submit_bio +EXPORT_SYMBOL vmlinux 0x8537c043 km_state_expired +EXPORT_SYMBOL vmlinux 0x8542bd8e dquot_acquire +EXPORT_SYMBOL vmlinux 0x85492c78 security_mmap_file +EXPORT_SYMBOL vmlinux 0x855b9a31 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x85666d32 sg_miter_next +EXPORT_SYMBOL vmlinux 0x85668019 inet_frags_init +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856832bc vfs_iter_write +EXPORT_SYMBOL vmlinux 0x85731db5 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x8576edd3 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x859c25ce fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x85a3c6c2 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x85a962a1 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b67007 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x85bbf8eb dev_addr_flush +EXPORT_SYMBOL vmlinux 0x85d6ac30 of_dev_put +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x86378a59 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x86496dbd cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866f61ea netlink_set_err +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86a6ac8b set_blocksize +EXPORT_SYMBOL vmlinux 0x86abc591 kill_fasync +EXPORT_SYMBOL vmlinux 0x86f49ec3 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87168ed3 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873360b2 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x879b9200 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x879bb9da swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x879c7278 prepare_binprm +EXPORT_SYMBOL vmlinux 0x87b24b23 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x87e49537 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x88279f25 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x8827aa2a devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x882d313d genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x88330211 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x883b0958 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x883f2daf __ps2_command +EXPORT_SYMBOL vmlinux 0x8842edb6 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x88441aa7 __skb_checksum +EXPORT_SYMBOL vmlinux 0x88693e86 security_file_permission +EXPORT_SYMBOL vmlinux 0x887c524c km_state_notify +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88bc16c7 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x88dfb72b kill_pid +EXPORT_SYMBOL vmlinux 0x88ec1182 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x893a16bd tty_mutex +EXPORT_SYMBOL vmlinux 0x89522c2f tty_check_change +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8954963e tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x895ba838 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x896096ff param_ops_bint +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897ebbf0 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x897fd2fa tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x8984279e blk_start_queue +EXPORT_SYMBOL vmlinux 0x8985cdf1 __getblk_slow +EXPORT_SYMBOL vmlinux 0x89a63a8f pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b27e33 update_devfreq +EXPORT_SYMBOL vmlinux 0x89bdac77 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x89cbcd5d inet6_release +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e3567b xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x89e6ce80 seq_pad +EXPORT_SYMBOL vmlinux 0x89f02c76 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x89f47288 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x8a0a5f51 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x8a0f7868 xfrm_policy_byid +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 0x8a50ed64 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a638306 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x8a7907a1 __d_drop +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7e78c9 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x8a8d8591 of_node_put +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ab08de5 file_path +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ab42456 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x8ab705c6 register_netdev +EXPORT_SYMBOL vmlinux 0x8ae7074d skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x8b161d16 i2c_release_client +EXPORT_SYMBOL vmlinux 0x8b215960 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x8b344d0a page_symlink +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b584cb8 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6646a5 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x8b6927ec pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x8b6dbb8d uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x8b72931e __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b885ba2 __invalidate_device +EXPORT_SYMBOL vmlinux 0x8b8c981e clk_get +EXPORT_SYMBOL vmlinux 0x8ba0579f fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x8ba88cda genphy_resume +EXPORT_SYMBOL vmlinux 0x8baaa546 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x8bb0b9ff ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x8bbe697b __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x8bdf639e scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x8be3e8c1 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x8beca0bf inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bff7979 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x8c12957d tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c21eae9 filp_close +EXPORT_SYMBOL vmlinux 0x8c2c8f88 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x8c30a60f iov_iter_npages +EXPORT_SYMBOL vmlinux 0x8c34c1b2 pci_iomap +EXPORT_SYMBOL vmlinux 0x8c393486 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x8c39ae85 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x8c3a4246 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x8c3dbb6b blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x8c4a3933 dev_printk +EXPORT_SYMBOL vmlinux 0x8c509078 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c70eec1 block_write_full_page +EXPORT_SYMBOL vmlinux 0x8c8b2ee6 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8cc4509e mach_corenet_generic +EXPORT_SYMBOL vmlinux 0x8cc6ca50 fd_install +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd10a64 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x8cd71ac2 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x8cf22fd6 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x8cf40e35 netdev_all_upper_get_next_dev_rcu +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 0x8d748089 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x8d7b97cb of_root +EXPORT_SYMBOL vmlinux 0x8d7ce331 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x8d9858ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x8db56c71 generic_readlink +EXPORT_SYMBOL vmlinux 0x8dbd51c8 dquot_drop +EXPORT_SYMBOL vmlinux 0x8dca1a8e notify_change +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8df75a13 dev_addr_del +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e5820d5 param_set_short +EXPORT_SYMBOL vmlinux 0x8e7dac11 dst_release +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8e9329bc devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x8e9ed48a rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8f1f8027 seq_putc +EXPORT_SYMBOL vmlinux 0x8f2745e8 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x8f297c31 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x8f310cb6 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x8f3732b0 __napi_schedule +EXPORT_SYMBOL vmlinux 0x8f5518bf swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x8f6b9a74 blk_start_request +EXPORT_SYMBOL vmlinux 0x8f7b0207 send_sig_info +EXPORT_SYMBOL vmlinux 0x8f80ba8a xfrm_lookup +EXPORT_SYMBOL vmlinux 0x8f826f3f fb_blank +EXPORT_SYMBOL vmlinux 0x8f8433db tty_devnum +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fc0da3b agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fe02220 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x8fe44804 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x8ffd877b devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x901a6bff page_readlink +EXPORT_SYMBOL vmlinux 0x9020440e dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x90375c90 d_rehash +EXPORT_SYMBOL vmlinux 0x903b1f3c wait_iff_congested +EXPORT_SYMBOL vmlinux 0x903b347f validate_sp +EXPORT_SYMBOL vmlinux 0x903cd6fb sock_wmalloc +EXPORT_SYMBOL vmlinux 0x9046f04c peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x904ee82a get_cached_acl +EXPORT_SYMBOL vmlinux 0x905218a8 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x9058ebc0 tty_unlock +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x90947a5b rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x9098152b dquot_commit +EXPORT_SYMBOL vmlinux 0x90982556 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x909cc68b mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x90bfe5ab flush_tlb_range +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c8c1be __sb_end_write +EXPORT_SYMBOL vmlinux 0x90e9ddeb jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x9123e002 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x912c93ee submit_bh +EXPORT_SYMBOL vmlinux 0x9139a99c of_match_node +EXPORT_SYMBOL vmlinux 0x9140d3fb tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914ad531 generic_removexattr +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91b79822 get_user_pages +EXPORT_SYMBOL vmlinux 0x91df6277 stop_tty +EXPORT_SYMBOL vmlinux 0x91e7eb28 pci_get_device +EXPORT_SYMBOL vmlinux 0x91f327d5 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x91fcb85e input_unregister_device +EXPORT_SYMBOL vmlinux 0x91fe889e jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x9230db4f frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923b789c dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x924f2f96 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x925be094 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x92752f5b kernel_getsockname +EXPORT_SYMBOL vmlinux 0x928f0cb9 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92adc757 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x92b5fb43 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x92b6561a pci_release_regions +EXPORT_SYMBOL vmlinux 0x92c32b4f blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x92cbeebb set_create_files_as +EXPORT_SYMBOL vmlinux 0x92d5016c backlight_force_update +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92e8584b audit_log +EXPORT_SYMBOL vmlinux 0x92f63a5a mach_p1023_rdb +EXPORT_SYMBOL vmlinux 0x92f6cc03 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fcbbbe pcim_iomap +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9324165f blkdev_put +EXPORT_SYMBOL vmlinux 0x9325e64f tcp_ioctl +EXPORT_SYMBOL vmlinux 0x932d98c1 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x932fb578 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x9332b2b9 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x936b0f82 down_write_trylock +EXPORT_SYMBOL vmlinux 0x936ea8e8 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937ce4fd dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x93ab2079 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93dc15cf swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x93e296eb devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x93f7b11f pci_match_id +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x9409df97 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x940a1998 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x94374861 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x9438906b iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x94792f01 pci_get_slot +EXPORT_SYMBOL vmlinux 0x949350ea mpage_readpages +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a41384 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94c37c21 fb_show_logo +EXPORT_SYMBOL vmlinux 0x94e29328 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94f6a133 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x950bfb12 key_type_keyring +EXPORT_SYMBOL vmlinux 0x950c1c7c d_add_ci +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9518d06d dma_sync_wait +EXPORT_SYMBOL vmlinux 0x9521c86b vfs_writef +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x95317f29 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95495c08 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x954bfc84 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x954fda45 icmp_send +EXPORT_SYMBOL vmlinux 0x9553ca25 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x956193a7 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x957c8504 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x958fa990 try_to_release_page +EXPORT_SYMBOL vmlinux 0x95919c15 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x95969588 security_path_link +EXPORT_SYMBOL vmlinux 0x959705c3 tcp_poll +EXPORT_SYMBOL vmlinux 0x960969e3 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x960d2ccf scsi_init_io +EXPORT_SYMBOL vmlinux 0x960dd452 __check_sticky +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x960e0581 inode_init_owner +EXPORT_SYMBOL vmlinux 0x9621fab1 rt6_lookup +EXPORT_SYMBOL vmlinux 0x9630a1a1 d_drop +EXPORT_SYMBOL vmlinux 0x9642bebd input_free_device +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96628f50 vga_put +EXPORT_SYMBOL vmlinux 0x96659c4f abort_creds +EXPORT_SYMBOL vmlinux 0x966994c2 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x96770e61 kset_register +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x968b5769 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x969f1875 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x96aae63d blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x96b357f3 backlight_device_register +EXPORT_SYMBOL vmlinux 0x96b7aacf __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x96c50f18 fsync_bdev +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96db2818 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x96dc44e3 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x96eefce6 netdev_emerg +EXPORT_SYMBOL vmlinux 0x970a8097 do_truncate +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9733125f pci_clear_master +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9752e424 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a709e9 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97d99a91 flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x97e91e23 tso_start +EXPORT_SYMBOL vmlinux 0x97f1ab19 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x97f40f2e vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x97fadbb0 of_get_address +EXPORT_SYMBOL vmlinux 0x9804cb21 read_cache_pages +EXPORT_SYMBOL vmlinux 0x981f44ba register_gifconf +EXPORT_SYMBOL vmlinux 0x9823cbaf simple_lookup +EXPORT_SYMBOL vmlinux 0x9824d556 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x982b5dcd mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987bad79 simple_setattr +EXPORT_SYMBOL vmlinux 0x9883eb11 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x988f742e fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x98b9f0f2 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x98c7d120 md_integrity_register +EXPORT_SYMBOL vmlinux 0x98d537e3 sget +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98ec5e7f dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x98f5bb1a mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x9903cf10 follow_down +EXPORT_SYMBOL vmlinux 0x993898ab pci_pme_active +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 0x9960a6bd pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x9969d64a loop_register_transfer +EXPORT_SYMBOL vmlinux 0x996bc110 fb_get_mode +EXPORT_SYMBOL vmlinux 0x997626c8 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x998af6b4 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a0e53c scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x99ab82a8 skb_pull +EXPORT_SYMBOL vmlinux 0x99af5ce9 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x99af6c32 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99ba0139 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99bfc543 input_close_device +EXPORT_SYMBOL vmlinux 0x99c96c48 mmc_free_host +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d22d1a dma_direct_ops +EXPORT_SYMBOL vmlinux 0x99d553e3 __scm_send +EXPORT_SYMBOL vmlinux 0x99e67221 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x99fef746 pci_map_rom +EXPORT_SYMBOL vmlinux 0x9a1a1fa9 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a2c3350 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x9a329aa9 bh_submit_read +EXPORT_SYMBOL vmlinux 0x9a40b5ae simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x9a4763bb ip_options_compile +EXPORT_SYMBOL vmlinux 0x9a48fa68 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x9a532e59 proc_mkdir +EXPORT_SYMBOL vmlinux 0x9a59cbfa register_framebuffer +EXPORT_SYMBOL vmlinux 0x9a649445 get_super_thawed +EXPORT_SYMBOL vmlinux 0x9a66a93b clear_inode +EXPORT_SYMBOL vmlinux 0x9a67c92b ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x9a9601ed devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x9a9a47cc devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x9ac714af devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x9ad4d228 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x9ad5b0ed vme_dma_request +EXPORT_SYMBOL vmlinux 0x9aea1532 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x9aea990d set_page_dirty +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b06d704 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x9b11c4d6 param_ops_byte +EXPORT_SYMBOL vmlinux 0x9b1b07e3 ether_setup +EXPORT_SYMBOL vmlinux 0x9b1c2eee cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x9b1de465 simple_getattr +EXPORT_SYMBOL vmlinux 0x9b2a7115 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b393c5c pci_find_bus +EXPORT_SYMBOL vmlinux 0x9b3b5354 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x9b3c5a3e sync_blockdev +EXPORT_SYMBOL vmlinux 0x9b431e91 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x9b4874ef cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b731948 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba8638c sk_wait_data +EXPORT_SYMBOL vmlinux 0x9baa29f3 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bec64fa debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x9c101391 dquot_disable +EXPORT_SYMBOL vmlinux 0x9c199435 address_space_init_once +EXPORT_SYMBOL vmlinux 0x9c2107d4 cdrom_release +EXPORT_SYMBOL vmlinux 0x9c2cf225 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x9c39b179 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x9c3d09dc framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x9c444c91 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c9dc7ea dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x9ca46b1d scsi_host_put +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cbf8220 set_security_override +EXPORT_SYMBOL vmlinux 0x9cc23047 netif_device_attach +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d107a52 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d188237 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x9d1aa5f7 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x9d1f0e36 agp_free_memory +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d659017 dev_mc_add_excl +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 0x9d9bf149 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x9da74632 skb_put +EXPORT_SYMBOL vmlinux 0x9dba135e posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x9dc98866 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x9ddcba42 should_remove_suid +EXPORT_SYMBOL vmlinux 0x9dee9a84 cpm2_immr +EXPORT_SYMBOL vmlinux 0x9dfd6d8c inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0de2e4 skb_trim +EXPORT_SYMBOL vmlinux 0x9e17d800 ilookup +EXPORT_SYMBOL vmlinux 0x9e1f00a6 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x9e3ad222 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x9e461823 dquot_operations +EXPORT_SYMBOL vmlinux 0x9e4694fa force_sig +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e56d0df generic_fillattr +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e7305b5 dm_io +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e916e67 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x9e980c5a __neigh_event_send +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9ebcbf33 eth_header_cache +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ee637d0 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x9efd8de7 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x9f2fc2df blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x9f3fc3cf sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x9f415582 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f631631 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x9f88b3c6 poll_freewait +EXPORT_SYMBOL vmlinux 0x9f908e36 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fd5a4d2 bio_reset +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa022108b alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xa0267a03 put_cmsg +EXPORT_SYMBOL vmlinux 0xa02e8cba md_update_sb +EXPORT_SYMBOL vmlinux 0xa0315f17 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xa0384349 param_get_ullong +EXPORT_SYMBOL vmlinux 0xa042f205 set_wb_congested +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa045ef31 vme_bus_type +EXPORT_SYMBOL vmlinux 0xa0489535 proc_remove +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 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa089bbf3 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xa09c5460 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xa09e6264 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xa0a86773 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ce3b9f scmd_printk +EXPORT_SYMBOL vmlinux 0xa0d1d7b1 lro_flush_all +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e0eefb xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fe9d57 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xa0fea786 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa13fddcd simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa1465d4e tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa162cbd5 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xa1671b7e ppp_input +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1b7ca0d forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xa1c71d03 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1f261c3 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa210f945 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xa225a67e freeze_bdev +EXPORT_SYMBOL vmlinux 0xa22d43a4 mdiobus_write +EXPORT_SYMBOL vmlinux 0xa237184f fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xa25ea017 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xa2673b46 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2bd28a9 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa30a8d1b ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xa31560e8 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xa31ab00c param_get_invbool +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa33c082a swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xa34a8b21 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xa35af0e1 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xa3775c45 setup_new_exec +EXPORT_SYMBOL vmlinux 0xa3794b98 input_release_device +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa389375e agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa398d93b path_put +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3df658c blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3eafe60 netdev_printk +EXPORT_SYMBOL vmlinux 0xa40a7276 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xa43180b2 neigh_update +EXPORT_SYMBOL vmlinux 0xa43783fd __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa44c5f5e kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xa451b508 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xa45717e1 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xa45ed057 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4734de2 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xa47505ea d_alloc_name +EXPORT_SYMBOL vmlinux 0xa47e4fc4 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xa483cb8b tty_vhangup +EXPORT_SYMBOL vmlinux 0xa4881a34 filemap_fault +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4de4bdd of_platform_device_create +EXPORT_SYMBOL vmlinux 0xa4ede37d xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xa501f59c of_translate_address +EXPORT_SYMBOL vmlinux 0xa52f5f44 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xa542ef0f iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xa548c2bc __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa57697ba agp_find_bridge +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5b38c93 kthread_bind +EXPORT_SYMBOL vmlinux 0xa5d5cb54 seq_read +EXPORT_SYMBOL vmlinux 0xa5f5081c pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xa62a2067 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xa63bdb07 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xa6563ddd inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa65b46c4 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xa6637498 skb_seq_read +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6a45a49 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xa6b1111c dev_addr_add +EXPORT_SYMBOL vmlinux 0xa6b7f855 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xa6e3f1fb filemap_flush +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7052506 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73c1af2 igrab +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa76a515e phy_stop +EXPORT_SYMBOL vmlinux 0xa78b3bfb __i2c_transfer +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7968519 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xa7b463f7 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xa7e94902 kmap_pte +EXPORT_SYMBOL vmlinux 0xa7effd11 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xa804c8b1 f_setown +EXPORT_SYMBOL vmlinux 0xa8197680 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82ef975 rtnl_notify +EXPORT_SYMBOL vmlinux 0xa836e59b ps2_command +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8449d75 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xa8467384 file_update_time +EXPORT_SYMBOL vmlinux 0xa857ce9e datagram_poll +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87bdbc6 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8ca6fc7 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xa8cf67e8 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9039745 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xa90943c9 set_device_ro +EXPORT_SYMBOL vmlinux 0xa914f625 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa9467c33 sync_filesystem +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa958782d block_commit_write +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa976d231 module_put +EXPORT_SYMBOL vmlinux 0xa97df8aa param_array_ops +EXPORT_SYMBOL vmlinux 0xa997971e dev_mc_add +EXPORT_SYMBOL vmlinux 0xa99c3aee bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xa9a15d2e blk_put_request +EXPORT_SYMBOL vmlinux 0xa9b09b56 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xa9b3b2d5 keyring_clear +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xaa0ad2c1 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xaa1f300b get_super +EXPORT_SYMBOL vmlinux 0xaa2d5978 tcf_em_register +EXPORT_SYMBOL vmlinux 0xaa33e770 posix_test_lock +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa63571b jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6d76a3 flow_cache_fini +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7e9353 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xaa7f8fcc generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xaa8370ed inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xaa896aee generic_update_time +EXPORT_SYMBOL vmlinux 0xaa91deda build_skb +EXPORT_SYMBOL vmlinux 0xaa9ddb9c nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaac9db1e dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xaacffdc2 __dev_getfirstbyhwtype +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 0xaaf85646 phy_device_register +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab3a3fb4 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xab3e7107 input_grab_device +EXPORT_SYMBOL vmlinux 0xab453ac4 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xab601a8f pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xab60d072 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8ef024 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xab9c1be3 ll_rw_block +EXPORT_SYMBOL vmlinux 0xab9fc4b0 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xaba03997 get_phy_device +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabac5adb tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0fbea inet_listen +EXPORT_SYMBOL vmlinux 0xabe89892 set_disk_ro +EXPORT_SYMBOL vmlinux 0xabeb6de6 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xabf31546 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1dae25 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xac20d575 dquot_release +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac37dcb0 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xac4051e9 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xac4cc1bc lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xaca13ba4 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb8b574 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd5c650 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad09c268 inet_add_offload +EXPORT_SYMBOL vmlinux 0xad2a815a fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xad442994 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xad44b188 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xad4ddad7 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xad5d5192 nf_afinfo +EXPORT_SYMBOL vmlinux 0xad5ed3ac invalidate_bdev +EXPORT_SYMBOL vmlinux 0xad69c8f6 i2c_transfer +EXPORT_SYMBOL vmlinux 0xad6ccd71 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xad7295c8 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xad79e817 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xad7f4217 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xadc02dc2 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xadc64ea7 copy_from_iter +EXPORT_SYMBOL vmlinux 0xadd1b7e1 param_set_charp +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadea5b73 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xadf0811d get_baudrate +EXPORT_SYMBOL vmlinux 0xadf0c9a3 input_allocate_device +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae2af3ec twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xae325d22 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +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 0xae856156 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae883b74 get_empty_filp +EXPORT_SYMBOL vmlinux 0xae8f1452 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xae8ff23f default_llseek +EXPORT_SYMBOL vmlinux 0xae9bff11 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xaec48852 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed7c306 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xaefaf7db vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0b81c2 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xaf0f37ef icmpv6_send +EXPORT_SYMBOL vmlinux 0xaf2b9df3 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3f28d7 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xaf4ae882 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xaf4ff14b blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xaf6e5c5d security_path_truncate +EXPORT_SYMBOL vmlinux 0xaf75b402 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xaf7e25bc inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf9e6d3d pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xafc71d64 have_submounts +EXPORT_SYMBOL vmlinux 0xafd57773 mount_ns +EXPORT_SYMBOL vmlinux 0xaff02a2f mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb045007d netdev_features_change +EXPORT_SYMBOL vmlinux 0xb0595070 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xb059c7e3 dev_uc_add +EXPORT_SYMBOL vmlinux 0xb05b27bf xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xb05d313d free_page_put_link +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06955e6 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a12f60 md_write_end +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e6b20e tcp_init_sock +EXPORT_SYMBOL vmlinux 0xb0f6997a blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xb1023dfe mutex_lock +EXPORT_SYMBOL vmlinux 0xb11eef07 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xb126d65a tcp_close +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12da4b0 sock_create_lite +EXPORT_SYMBOL vmlinux 0xb1472f3c dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xb1479a56 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xb14b59d5 __find_get_block +EXPORT_SYMBOL vmlinux 0xb1539aa1 iput +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 0xb17911b5 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xb182b8b9 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xb194151b mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xb1b5d829 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xb1c2fcca dcache_readdir +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c5925d qdisc_list_del +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1c8bd71 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb21d5590 vga_client_register +EXPORT_SYMBOL vmlinux 0xb21f475f generic_perform_write +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb2366940 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xb240cabb max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xb25b9379 vfs_getattr +EXPORT_SYMBOL vmlinux 0xb25c841f phy_register_fixup +EXPORT_SYMBOL vmlinux 0xb2616387 mmc_request_done +EXPORT_SYMBOL vmlinux 0xb2664772 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26bee5a __bforget +EXPORT_SYMBOL vmlinux 0xb2829e38 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xb28b6fa4 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xb2a1728f sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xb2b2912d param_ops_int +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2bee78c flush_old_exec +EXPORT_SYMBOL vmlinux 0xb2cab3a1 netdev_warn +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2da9808 generic_make_request +EXPORT_SYMBOL vmlinux 0xb2f70422 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xb3022718 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xb326fb91 kill_litter_super +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb352a415 mdiobus_read +EXPORT_SYMBOL vmlinux 0xb3555ab3 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xb3615c48 dm_put_device +EXPORT_SYMBOL vmlinux 0xb371e8d0 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xb39f22a4 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xb3b99ee7 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xb3ca9cf1 blk_init_tags +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d53d67 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb40874d5 __alloc_skb +EXPORT_SYMBOL vmlinux 0xb40e9ba5 set_binfmt +EXPORT_SYMBOL vmlinux 0xb4144889 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4244cc8 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb46b3467 revert_creds +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47aec53 i2c_master_send +EXPORT_SYMBOL vmlinux 0xb486ffbf atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xb4a5829f eth_type_trans +EXPORT_SYMBOL vmlinux 0xb4cee8ba seq_dentry +EXPORT_SYMBOL vmlinux 0xb4de7706 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xb4ea9084 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xb4fffbfa mount_pseudo +EXPORT_SYMBOL vmlinux 0xb51e529b uart_resume_port +EXPORT_SYMBOL vmlinux 0xb52e8af0 update_region +EXPORT_SYMBOL vmlinux 0xb533e6c7 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xb54401eb ppp_unit_number +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5772d94 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xb57a7340 inet_bind +EXPORT_SYMBOL vmlinux 0xb57da657 key_invalidate +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c71b0b md_check_recovery +EXPORT_SYMBOL vmlinux 0xb5c83ff9 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xb5d10444 write_cache_pages +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5eb20dc fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xb6133321 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xb619235a copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xb620b41f neigh_seq_next +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb637c5d5 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xb654b9ff udp_ioctl +EXPORT_SYMBOL vmlinux 0xb66acffc dst_alloc +EXPORT_SYMBOL vmlinux 0xb66d9d6d __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xb6779719 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb68678c5 seq_path +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68dafc9 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a9cea8 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xb6eefc6f rtnl_create_link +EXPORT_SYMBOL vmlinux 0xb6efba5f pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xb6f9d7b1 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xb7328326 d_tmpfile +EXPORT_SYMBOL vmlinux 0xb736b4b7 inet_getname +EXPORT_SYMBOL vmlinux 0xb73fc7c6 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xb7411b22 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xb7413131 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb7549171 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xb754d9de __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xb7582a18 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xb768b368 console_start +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb79148c8 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a15fb2 page_put_link +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7ac2f14 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7df56a6 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0xb7ee5e28 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xb7ef9532 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xb808f42a __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xb818d697 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb82657de __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb86e74b1 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xb870dadd inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb894c559 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xb8ba4a4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0xb8bb085b rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xb8ccbf58 secpath_dup +EXPORT_SYMBOL vmlinux 0xb8d34999 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8fe1a45 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xb907df5e d_delete +EXPORT_SYMBOL vmlinux 0xb958b0eb nf_setsockopt +EXPORT_SYMBOL vmlinux 0xb96565f0 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xb970bd55 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xb9741bed xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xb9893b08 tty_port_put +EXPORT_SYMBOL vmlinux 0xb9a0aa6d ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xb9aa56ef mpage_readpage +EXPORT_SYMBOL vmlinux 0xb9b6a987 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xb9c87f03 send_sig +EXPORT_SYMBOL vmlinux 0xb9cad3dd kfree_put_link +EXPORT_SYMBOL vmlinux 0xb9d05f77 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xb9e08cdc dm_put_table_device +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f2017e vme_lm_request +EXPORT_SYMBOL vmlinux 0xb9ff3e48 mmc_get_card +EXPORT_SYMBOL vmlinux 0xba0f9c12 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xba216b09 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xba2fade3 inc_nlink +EXPORT_SYMBOL vmlinux 0xba31813f tcp_parse_options +EXPORT_SYMBOL vmlinux 0xba33e65f of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xba38318d elv_add_request +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba8bec68 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xba8d6f18 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbae68b1e end_page_writeback +EXPORT_SYMBOL vmlinux 0xbaf73974 __sock_create +EXPORT_SYMBOL vmlinux 0xbb040d1b locks_copy_lock +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb316bde uart_register_driver +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb380ac8 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xbb525dde devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xbb52b47d genphy_suspend +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6186d9 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xbb61f67c agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xbb755395 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xbb8c42c0 tc_classify +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9db2fe d_genocide +EXPORT_SYMBOL vmlinux 0xbbbbe964 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xbbbda016 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xbbd16965 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xbbe00efa follow_pfn +EXPORT_SYMBOL vmlinux 0xbbe7e495 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xbbf774af sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xbbf79835 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xbc1e1e53 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc339d61 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xbc42c8e1 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xbc69dbf4 misc_register +EXPORT_SYMBOL vmlinux 0xbc6bef30 keyring_alloc +EXPORT_SYMBOL vmlinux 0xbc9efb50 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd24cb9 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xbd094f7d dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xbd3b6d18 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbda6de68 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xbda814c6 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xbdbfbc46 sys_fillrect +EXPORT_SYMBOL vmlinux 0xbdc7f78b redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbdf88ad3 empty_aops +EXPORT_SYMBOL vmlinux 0xbe07be86 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1e8712 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xbe45845a security_path_chmod +EXPORT_SYMBOL vmlinux 0xbe52778b tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xbe6ab1d3 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xbe768bb7 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xbe7a9c12 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xbe82bde9 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xbe90741b inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xbe9c6699 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xbe9db29f sk_receive_skb +EXPORT_SYMBOL vmlinux 0xbec138a6 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xbed068e7 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xbed0b30f __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xbed16ca6 scsi_print_command +EXPORT_SYMBOL vmlinux 0xbedcb6f6 pci_request_regions +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef0e5f0 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xbef1bcbc dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf146162 vm_event_states +EXPORT_SYMBOL vmlinux 0xbf3a3b34 netpoll_setup +EXPORT_SYMBOL vmlinux 0xbf3f163a i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xbf3ff6f1 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xbf4d7591 netlink_unicast +EXPORT_SYMBOL vmlinux 0xbf5aaaa0 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xbf730c13 of_get_parent +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf82e2f9 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa1c4a6 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xbfaf3559 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfbc2962 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xbfbd7086 kill_pgrp +EXPORT_SYMBOL vmlinux 0xbfc0ee0d phy_connect +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc8a940 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbfee9db9 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xbfef8c8d gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xc0074c3c fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xc0138be7 blk_free_tags +EXPORT_SYMBOL vmlinux 0xc02f62a0 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xc0381019 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xc052aee3 lease_modify +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06e86af netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xc0748a67 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc095262d loop_backing_file +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a71848 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xc0f814ee bio_add_page +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc142a1ab param_ops_invbool +EXPORT_SYMBOL vmlinux 0xc16b570d done_path_create +EXPORT_SYMBOL vmlinux 0xc1c144b6 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xc1c1dadf get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xc1d2daa9 posix_lock_file +EXPORT_SYMBOL vmlinux 0xc1d7d798 iunique +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1ef2b1e mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xc1fd2ca4 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xc200fbfc dev_change_flags +EXPORT_SYMBOL vmlinux 0xc2043821 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xc2265ef1 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xc23ad1eb switch_mmu_context +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc2720be1 fb_pan_display +EXPORT_SYMBOL vmlinux 0xc29cecfb pci_disable_msix +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b176d5 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2d83df5 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xc2da6f4d cdev_alloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f04cb7 param_set_invbool +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc30221e7 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xc349978f pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xc34e7188 brioctl_set +EXPORT_SYMBOL vmlinux 0xc3595d37 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xc367a752 d_alloc +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc37da3a6 dev_driver_string +EXPORT_SYMBOL vmlinux 0xc3940606 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4254d82 scsi_register +EXPORT_SYMBOL vmlinux 0xc450f9f6 ppp_input_error +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4702fe5 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc4830c29 __lock_page +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4b840a1 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xc4b98ebd km_query +EXPORT_SYMBOL vmlinux 0xc4bd94b0 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xc4ef5354 serio_open +EXPORT_SYMBOL vmlinux 0xc4f475a2 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xc4fad031 devm_request_resource +EXPORT_SYMBOL vmlinux 0xc5288bad dev_close +EXPORT_SYMBOL vmlinux 0xc5523e1a alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc58a39a6 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xc5919344 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xc59447a9 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a75894 clone_cred +EXPORT_SYMBOL vmlinux 0xc5b2b612 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xc5ba5a74 mmc_put_card +EXPORT_SYMBOL vmlinux 0xc5c41906 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e107c5 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xc5f8775b skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc62bd417 tty_register_driver +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc661695a bprm_change_interp +EXPORT_SYMBOL vmlinux 0xc66345d4 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc66f065c ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xc674ea90 skb_make_writable +EXPORT_SYMBOL vmlinux 0xc67643d6 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xc6789404 of_get_next_child +EXPORT_SYMBOL vmlinux 0xc67e365d scsi_block_requests +EXPORT_SYMBOL vmlinux 0xc693d8db udp_add_offload +EXPORT_SYMBOL vmlinux 0xc69af1c2 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b71eb2 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xc6ba7cef lock_sock_fast +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6fbd81d pci_pme_capable +EXPORT_SYMBOL vmlinux 0xc6fcf0c6 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xc704ca9a kernel_listen +EXPORT_SYMBOL vmlinux 0xc70b3d42 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xc71b9ec7 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xc71d61af inet_accept +EXPORT_SYMBOL vmlinux 0xc71f835d init_special_inode +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc735e629 write_inode_now +EXPORT_SYMBOL vmlinux 0xc74fb400 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xc7524c35 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc7740c85 flush_tlb_page +EXPORT_SYMBOL vmlinux 0xc779cef9 filp_open +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc788e7f8 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc78a3951 mipi_dsi_host_unregister +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 0xc7af7622 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xc7b9621f tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7ef6d0e napi_get_frags +EXPORT_SYMBOL vmlinux 0xc7f5753e blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc8362c79 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc8457022 eth_header_cache_update +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 0xc87fe3e7 security_path_chown +EXPORT_SYMBOL vmlinux 0xc880c4f8 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b5075c sk_free +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8ccdefc alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xc8f152d2 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91568fb padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xc9247cca dcb_getapp +EXPORT_SYMBOL vmlinux 0xc92dceab generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc946f8b4 bdi_destroy +EXPORT_SYMBOL vmlinux 0xc94e9f66 make_kuid +EXPORT_SYMBOL vmlinux 0xc95d62f7 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc967cd00 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9aeaa9d mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xc9c57dc2 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xc9c98e7d qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc9caf54c vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xc9d15c7b netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xc9f5f74f of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca0f604f inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xca150432 dump_emit +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca43130e kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xca4976f1 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xca832064 mdiobus_free +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca977381 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xca9f2a8e __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xcaa3d58c flow_cache_init +EXPORT_SYMBOL vmlinux 0xcaa518c7 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xcaa8b373 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcae1fc1f dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf89f1e inet_addr_type +EXPORT_SYMBOL vmlinux 0xcafcdd03 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb045504 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xcb049900 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xcb06e671 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xcb1bfc44 __destroy_inode +EXPORT_SYMBOL vmlinux 0xcb446977 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xcb50b37b netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xcb77bf27 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xcb820009 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xcbbe0070 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc392a6 kdb_current_task +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcb674c __nlmsg_put +EXPORT_SYMBOL vmlinux 0xcbcb9515 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xcbd5e5a7 of_match_device +EXPORT_SYMBOL vmlinux 0xcbdf7265 ip6_frag_match +EXPORT_SYMBOL vmlinux 0xcbe09ee9 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbf94481 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6e3071 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xcc953aaa generic_file_open +EXPORT_SYMBOL vmlinux 0xcca8bfe1 vc_cons +EXPORT_SYMBOL vmlinux 0xccc1588c n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccddd755 iov_iter_zero +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 0xcd39c0fc gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xcd5afcf1 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xcd6b4af7 phy_driver_register +EXPORT_SYMBOL vmlinux 0xcd775663 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8847ca dev_warn +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd9896b2 napi_complete_done +EXPORT_SYMBOL vmlinux 0xcda69988 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xcdbd0304 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdfba25e skb_queue_head +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce47aaae sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce9cc8c9 cdev_del +EXPORT_SYMBOL vmlinux 0xcea2124d blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcebc6f27 generic_writepages +EXPORT_SYMBOL vmlinux 0xcee9cb51 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xceedd3c8 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf09f1a0 make_bad_inode +EXPORT_SYMBOL vmlinux 0xcf1d7646 isa_mem_base +EXPORT_SYMBOL vmlinux 0xcf257a48 release_firmware +EXPORT_SYMBOL vmlinux 0xcf2a043d fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xcf3e2260 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xcf55d73b block_truncate_page +EXPORT_SYMBOL vmlinux 0xcfe47be5 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xcfff1bad blk_get_queue +EXPORT_SYMBOL vmlinux 0xd035f87a block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07307e4 dquot_file_open +EXPORT_SYMBOL vmlinux 0xd0999634 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd09c99bb pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b10623 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xd0d100ee locks_copy_conflock +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 0xd106b0dc jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xd112ca9e param_get_byte +EXPORT_SYMBOL vmlinux 0xd1261e1b writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xd145bc69 path_get +EXPORT_SYMBOL vmlinux 0xd14b5e72 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xd155f8ee jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xd157e6e4 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xd15d43d2 tty_do_resize +EXPORT_SYMBOL vmlinux 0xd1624427 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xd16afad0 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xd16d1836 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xd170fdea generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xd17ac3bb mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd185e914 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xd18f7b67 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a6fdd1 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xd1a77dd7 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xd1b5b002 __get_page_tail +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1c9aff4 kfree_skb +EXPORT_SYMBOL vmlinux 0xd1d85ea5 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd20f6fe8 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xd21913d7 iterate_dir +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd238a882 scsi_host_get +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 0xd2771066 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27c4974 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xd27e1d12 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xd288e308 vfs_whiteout +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b1b2a4 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xd2babb8a fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xd2c5aef2 cont_write_begin +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e79199 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xd2f8b40e jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd2fd81d9 noop_qdisc +EXPORT_SYMBOL vmlinux 0xd30c48ee __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xd311d905 get_io_context +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32707ae inet6_offloads +EXPORT_SYMBOL vmlinux 0xd36c580a security_path_rename +EXPORT_SYMBOL vmlinux 0xd38b875d generic_setxattr +EXPORT_SYMBOL vmlinux 0xd3946e55 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xd3b2f1d3 bio_init +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3be670f mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xd3cc1a3b pci_platform_rom +EXPORT_SYMBOL vmlinux 0xd3d33c1c inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xd3d7d614 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xd409b0bb mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xd42cc964 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xd43383d1 tty_port_open +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd463189b pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xd471fabf inet_shutdown +EXPORT_SYMBOL vmlinux 0xd47d8883 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xd48e8bfb param_ops_charp +EXPORT_SYMBOL vmlinux 0xd4e3b5a7 mach_bsc9132_qds +EXPORT_SYMBOL vmlinux 0xd4e9db68 ip_defrag +EXPORT_SYMBOL vmlinux 0xd4f6fff4 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xd532cdc0 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xd53d1b62 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xd54d89af truncate_setsize +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5732ed7 pci_get_class +EXPORT_SYMBOL vmlinux 0xd57f4918 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xd5a069e1 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xd5ce1031 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xd5e533ec __blk_end_request +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f12482 blk_finish_request +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5f8112e jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xd602017a bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61bb30e generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xd6262a09 phy_init_hw +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62a834c copy_to_iter +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62e16f3 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xd6354f21 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xd642ecfc inode_dio_wait +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6529fb2 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68c96a6 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xd690b210 __init_rwsem +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6a818e8 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xd6b5dd26 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xd6cd072b blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6daa983 pipe_unlock +EXPORT_SYMBOL vmlinux 0xd6e4cfbf dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xd6ec291a twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fb5d34 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xd713ded9 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xd7422f3b udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xd74dada4 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xd750b079 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xd75482d2 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd77078ac simple_write_end +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7ad27e5 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xd7adfe3e padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xd7b6b5a2 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xd7c777d1 get_fs_type +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd830684e nd_integrity_init +EXPORT_SYMBOL vmlinux 0xd8450cd5 neigh_destroy +EXPORT_SYMBOL vmlinux 0xd84c43a6 lockref_put_return +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85e4da6 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xd8600741 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xd86257ca __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xd8858fcc mmc_can_reset +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b9fa38 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xd8cb8f29 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xd8d4fee2 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8edfbb7 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xd8f13016 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xd8f2d22d twl6040_power +EXPORT_SYMBOL vmlinux 0xd90d91e7 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xd90e95e9 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xd92b623b scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xd92daf4a netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xd93e486f swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xd93e69b9 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xd9408bc8 I_BDEV +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd9658592 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xd969419a scsi_add_device +EXPORT_SYMBOL vmlinux 0xd969d0ba of_device_unregister +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd995cad1 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xd996e3f3 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xd9a615fc of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xd9aba0e8 pci_find_capability +EXPORT_SYMBOL vmlinux 0xd9aca74c __pagevec_release +EXPORT_SYMBOL vmlinux 0xd9af73d9 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c55e00 param_ops_string +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9dea5d4 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xd9e5aa36 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xd9f4af4e vme_bus_num +EXPORT_SYMBOL vmlinux 0xd9fa4c18 bioset_free +EXPORT_SYMBOL vmlinux 0xda1a4ee7 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xda1d59ed vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xda24986d xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xda27dc8a qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xda3264a8 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xda348abe generic_setlease +EXPORT_SYMBOL vmlinux 0xda3547e1 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda5e1e51 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xda784339 cdrom_open +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda85a4bb sys_copyarea +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdaddf68f xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xdae27a47 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xdaed1f69 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb068246 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xdb1f237c ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xdb2e5a7d key_payload_reserve +EXPORT_SYMBOL vmlinux 0xdb3dd275 sk_dst_check +EXPORT_SYMBOL vmlinux 0xdb4a6b84 param_set_byte +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb811175 downgrade_write +EXPORT_SYMBOL vmlinux 0xdb9f9bc2 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xdba85964 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xdbcbf061 _dev_info +EXPORT_SYMBOL vmlinux 0xdbe35657 d_invalidate +EXPORT_SYMBOL vmlinux 0xdbe6f909 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc24eef6 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xdc2770ce generic_delete_inode +EXPORT_SYMBOL vmlinux 0xdc2a88aa tcf_hash_search +EXPORT_SYMBOL vmlinux 0xdc3f6dc0 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4611e2 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xdc4bf41e put_tty_driver +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5820c7 proc_set_size +EXPORT_SYMBOL vmlinux 0xdc91bf14 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9f6a7d __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcf890fb param_ops_ushort +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0da1b9 sock_init_data +EXPORT_SYMBOL vmlinux 0xdd105c7f inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xdd24f59b mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd320e31 bdev_read_only +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd570f18 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xdd817832 __put_cred +EXPORT_SYMBOL vmlinux 0xdd848fe4 __module_get +EXPORT_SYMBOL vmlinux 0xdd8d3ee6 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xddde5245 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xdde05bcd mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xddf94b0d simple_readpage +EXPORT_SYMBOL vmlinux 0xde00e668 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xde0a8497 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xde104843 devm_iounmap +EXPORT_SYMBOL vmlinux 0xde1b307b rfkill_alloc +EXPORT_SYMBOL vmlinux 0xde316c5b kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xde41138e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xde43ad30 dquot_alloc +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde515bd7 register_cdrom +EXPORT_SYMBOL vmlinux 0xde58f288 module_layout +EXPORT_SYMBOL vmlinux 0xde6c81c8 __dax_fault +EXPORT_SYMBOL vmlinux 0xde90a788 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea61133 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xdeaa0ab8 seq_open +EXPORT_SYMBOL vmlinux 0xdec108f9 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xded900cb __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdeef42ec napi_disable +EXPORT_SYMBOL vmlinux 0xdef2122b d_walk +EXPORT_SYMBOL vmlinux 0xdf2ae26b bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf4cf972 nd_device_register +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5a3d1f do_SAK +EXPORT_SYMBOL vmlinux 0xdf5c1058 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xdf5c840b do_splice_direct +EXPORT_SYMBOL vmlinux 0xdf5e14bb tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xdf5f1ebe of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf7836c2 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xdf830a6b pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xdf852fc4 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfb12e89 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xdfbb7c9e PDE_DATA +EXPORT_SYMBOL vmlinux 0xdfc39cc5 fs_bio_set +EXPORT_SYMBOL vmlinux 0xdfd76117 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xdfe5a20f tcp_read_sock +EXPORT_SYMBOL vmlinux 0xdfe624c8 generic_write_end +EXPORT_SYMBOL vmlinux 0xdff19876 of_get_pci_address +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdff95c10 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xe003984c scsi_remove_target +EXPORT_SYMBOL vmlinux 0xe03994fc pci_dev_driver +EXPORT_SYMBOL vmlinux 0xe03b4943 __blockdev_direct_IO +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 0xe08f1b05 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xe0906082 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xe0a93aaf jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b46d46 kern_path_create +EXPORT_SYMBOL vmlinux 0xe0c1927b kernel_getpeername +EXPORT_SYMBOL vmlinux 0xe0e710ac iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xe0eeaa41 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe114cf6a bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xe1292a65 flush_signals +EXPORT_SYMBOL vmlinux 0xe1457aab is_bad_inode +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe1c850d1 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xe1d1c16e mount_single +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20cd750 acl_by_type +EXPORT_SYMBOL vmlinux 0xe217b7a1 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xe22cdd37 read_dev_sector +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2436503 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2528b72 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xe26ae008 proc_symlink +EXPORT_SYMBOL vmlinux 0xe26df71c dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xe276adc9 sock_create_kern +EXPORT_SYMBOL vmlinux 0xe28d7812 mount_bdev +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2b8c607 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d74b4f padata_stop +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3422477 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xe346c821 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xe34888fc tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xe34960ee ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xe36368c0 mmc_erase +EXPORT_SYMBOL vmlinux 0xe384e259 finish_open +EXPORT_SYMBOL vmlinux 0xe393d08b bio_endio +EXPORT_SYMBOL vmlinux 0xe3bb23b4 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xe3be79f8 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xe3c87eaa input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d8e5b9 pci_select_bars +EXPORT_SYMBOL vmlinux 0xe3e1960e write_one_page +EXPORT_SYMBOL vmlinux 0xe3e2c938 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xe3e3cd6a of_device_is_available +EXPORT_SYMBOL vmlinux 0xe3e5d02b ps2_handle_response +EXPORT_SYMBOL vmlinux 0xe419e5b0 elevator_alloc +EXPORT_SYMBOL vmlinux 0xe41d1337 ilookup5 +EXPORT_SYMBOL vmlinux 0xe41ec525 vfs_write +EXPORT_SYMBOL vmlinux 0xe430801d set_cached_acl +EXPORT_SYMBOL vmlinux 0xe443c1b9 do_splice_from +EXPORT_SYMBOL vmlinux 0xe477735a __inode_permission +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4a90873 tso_count_descs +EXPORT_SYMBOL vmlinux 0xe4b3a722 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xe4c53648 of_find_property +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5005532 pci_set_master +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52d852f unregister_key_type +EXPORT_SYMBOL vmlinux 0xe533e169 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xe5501254 clear_nlink +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe58281cf bio_copy_kern +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe594f86f dma_pool_create +EXPORT_SYMBOL vmlinux 0xe5b98a48 free_buffer_head +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5caeb75 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xe5ccf6e2 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe6028c7f tty_kref_put +EXPORT_SYMBOL vmlinux 0xe63b763b of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xe64aa789 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xe6506472 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe6667433 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xe670440b kill_block_super +EXPORT_SYMBOL vmlinux 0xe6735ee6 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xe67c332f max8925_set_bits +EXPORT_SYMBOL vmlinux 0xe67df4df phy_print_status +EXPORT_SYMBOL vmlinux 0xe681ff08 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xe685d930 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xe686df21 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xe68857db ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6b96c08 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xe6b9e3d7 ps2_end_command +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fd190b dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xe70260a9 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xe723e0b0 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xe7298c17 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xe72fa1a7 kset_unregister +EXPORT_SYMBOL vmlinux 0xe735679b xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xe75f581d vme_irq_handler +EXPORT_SYMBOL vmlinux 0xe768bb34 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xe76a80ad vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xe76adf82 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xe76dbbb6 skb_split +EXPORT_SYMBOL vmlinux 0xe77f549f alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe78d7519 ipv6_sock_mc_drop +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 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7cee898 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e6fecb find_vma +EXPORT_SYMBOL vmlinux 0xe7ee2120 dump_skip +EXPORT_SYMBOL vmlinux 0xe7fb137f netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xe7fcab8f tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xe804c4d6 passthru_features_check +EXPORT_SYMBOL vmlinux 0xe818bc30 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8231087 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe84aeaab __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe89eddef netlink_ack +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8ab14d1 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d79f9c dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xe8f53ae1 dma_set_mask +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe92f9c54 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xe932fdc6 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe93892b3 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xe93b3d06 register_key_type +EXPORT_SYMBOL vmlinux 0xe93f38bc mmc_can_trim +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96445de netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xe98bafca sync_inode +EXPORT_SYMBOL vmlinux 0xe98f8de7 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xe9c758c1 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xe9cfbe6f vlan_vid_del +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea47c852 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7fd146 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xea8e2271 __serio_register_port +EXPORT_SYMBOL vmlinux 0xea91f0b3 kmap_high +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa1312a textsearch_unregister +EXPORT_SYMBOL vmlinux 0xeaa698d6 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xeab0527c generic_show_options +EXPORT_SYMBOL vmlinux 0xeae24f6c skb_append +EXPORT_SYMBOL vmlinux 0xeaee4a01 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xeb1d30c2 nf_log_packet +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb53166f pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb59c4ba drop_super +EXPORT_SYMBOL vmlinux 0xeb5bff55 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xeb6f8eae __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xeb74cdc2 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xeb7681c4 put_io_context +EXPORT_SYMBOL vmlinux 0xeb8d93b5 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xeba10f57 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xebcd0c94 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xebd388b8 param_set_uint +EXPORT_SYMBOL vmlinux 0xebe1d1e9 phy_disconnect +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec4c4eda param_set_copystring +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec4f6cb0 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xec7517df clear_user_page +EXPORT_SYMBOL vmlinux 0xec87d31d vfs_rename +EXPORT_SYMBOL vmlinux 0xec8ad421 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xec8c7c7a nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xec8ca775 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xecbb14ec vga_con +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecc9bf74 param_get_long +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xecde2de2 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xece35cb7 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf796a4 dump_page +EXPORT_SYMBOL vmlinux 0xed157074 dget_parent +EXPORT_SYMBOL vmlinux 0xed2b748c sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xed30adf4 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xed345156 md_write_start +EXPORT_SYMBOL vmlinux 0xed3a382b km_policy_expired +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6555b4 __free_pages +EXPORT_SYMBOL vmlinux 0xed737f46 simple_unlink +EXPORT_SYMBOL vmlinux 0xed77309a tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xed848f23 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xed89ca13 init_buffer +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9718d5 init_task +EXPORT_SYMBOL vmlinux 0xed9877cd sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xed9df72a ip6_xmit +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb341aa pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc9923a dquot_resume +EXPORT_SYMBOL vmlinux 0xedd30420 set_nlink +EXPORT_SYMBOL vmlinux 0xeddc4979 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xede5129f dm_register_target +EXPORT_SYMBOL vmlinux 0xee248b0c vm_mmap +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee48da38 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xee4f934f padata_alloc +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeed0badf simple_statfs +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef9710a mmc_remove_host +EXPORT_SYMBOL vmlinux 0xeeffa1cc agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xef678cee sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xef6a8cd1 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xef716696 nf_log_set +EXPORT_SYMBOL vmlinux 0xef922111 nd_iostat_end +EXPORT_SYMBOL vmlinux 0xefcf047c find_inode_nowait +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 0xefe2cb47 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xeff9472c inode_needs_sync +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0071f65 nd_btt_probe +EXPORT_SYMBOL vmlinux 0xf01802da blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xf0181e3d napi_gro_receive +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0190a92 vme_register_driver +EXPORT_SYMBOL vmlinux 0xf01e5381 from_kuid +EXPORT_SYMBOL vmlinux 0xf024d538 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xf0301110 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xf05ece8e of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf07763d9 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xf08147c6 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08f2a5a bdgrab +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0b00b4a d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xf0b4b55c register_filesystem +EXPORT_SYMBOL vmlinux 0xf0b7cc1e sock_i_uid +EXPORT_SYMBOL vmlinux 0xf0bf91b4 sk_stream_error +EXPORT_SYMBOL vmlinux 0xf0cd0d69 revalidate_disk +EXPORT_SYMBOL vmlinux 0xf0dcde0a pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xf0e4d6e1 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f52f25 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf10eb551 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf12016d1 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14e75f3 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xf154ee80 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xf15b3d74 iget_failed +EXPORT_SYMBOL vmlinux 0xf1639c2d ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xf174180c filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19c90af pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xf1c3cbea mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xf1d09a19 no_llseek +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e22d0c tcp_conn_request +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf225ca03 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22967fa skb_clone_sk +EXPORT_SYMBOL vmlinux 0xf22c4784 generic_write_checks +EXPORT_SYMBOL vmlinux 0xf23e9cc4 elevator_init +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24b2691 iget5_locked +EXPORT_SYMBOL vmlinux 0xf2571ed1 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xf257d169 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a34485 netif_napi_add +EXPORT_SYMBOL vmlinux 0xf2b05175 agp_create_memory +EXPORT_SYMBOL vmlinux 0xf2b436d1 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xf2be620c __block_write_begin +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c677a4 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xf30cfe47 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xf3114e18 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf316668a blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3471096 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xf349a7a7 kobject_del +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf353fe15 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38ce89a fb_class +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf391d9b8 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xf394bd96 phy_suspend +EXPORT_SYMBOL vmlinux 0xf3d0b723 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xf3db61c6 redraw_screen +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3fecbbd __register_chrdev +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf428be14 setattr_copy +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf44b5fd7 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xf4502690 netdev_change_features +EXPORT_SYMBOL vmlinux 0xf4544431 __get_user_pages +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf478fe90 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xf47d94b7 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xf482f08f __f_setown +EXPORT_SYMBOL vmlinux 0xf498a1b2 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xf4aae314 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xf4ae4558 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xf4bba926 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4d77733 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xf4da1efe skb_push +EXPORT_SYMBOL vmlinux 0xf4da4b27 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f3f926 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xf4fda2ce tty_set_operations +EXPORT_SYMBOL vmlinux 0xf5152a0b blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf52bf89d mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf561179f nf_register_hook +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5ab534b skb_free_datagram +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c4d2f7 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xf5c60510 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf5c8aed9 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xf5da5eab jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf602f8fe memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xf61ba92c km_report +EXPORT_SYMBOL vmlinux 0xf61e34a4 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xf627f062 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf6789a40 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xf67e3901 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6a4aaa7 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d40904 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xf6da10f9 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xf6dce893 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf704f8a3 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf733da86 d_lookup +EXPORT_SYMBOL vmlinux 0xf74e121e pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xf7560c0a add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf778dd36 follow_up +EXPORT_SYMBOL vmlinux 0xf77cfbad tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xf786585c new_inode +EXPORT_SYMBOL vmlinux 0xf7b2e514 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xf7c590f2 tcp_check_req +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8256edd tcf_exts_change +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf85e0daf __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xf876f4a0 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xf87abe31 md_error +EXPORT_SYMBOL vmlinux 0xf87afe3e sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xf87bbfc2 qdisc_reset +EXPORT_SYMBOL vmlinux 0xf89484b7 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xf8dee7de udp6_csum_init +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf8fe6dac replace_mount_options +EXPORT_SYMBOL vmlinux 0xf903e6a2 iov_iter_init +EXPORT_SYMBOL vmlinux 0xf90c7c6e napi_gro_frags +EXPORT_SYMBOL vmlinux 0xf9181836 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93601b1 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xf9397955 blk_peek_request +EXPORT_SYMBOL vmlinux 0xf969165a xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xf9750a5d pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xf97ddca8 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xf9923814 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xf997dd3b mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xf99e4cec unlock_page +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9dcf801 sock_no_accept +EXPORT_SYMBOL vmlinux 0xf9e082e3 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xf9fe2e9e thaw_super +EXPORT_SYMBOL vmlinux 0xfa061117 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xfa085dc9 register_netdevice +EXPORT_SYMBOL vmlinux 0xfa514b96 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa6ab261 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xfa8851a7 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xfa9b5419 blk_get_request +EXPORT_SYMBOL vmlinux 0xfa9c55cf fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xfaa817fc pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacc975a kobject_get +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad63100 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xfad6af80 pci_disable_device +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaebdf48 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xfaf97bff netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xfaf9edc4 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xfb03b75d ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xfb4edd1d __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb92c090 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbafa1cf blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xfbb5a238 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbdf4d31 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0xfbe4b7b4 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xfbedafb4 blkdev_get +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3a238d pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc41fdcb arp_create +EXPORT_SYMBOL vmlinux 0xfc47a336 search_binary_handler +EXPORT_SYMBOL vmlinux 0xfc4e9e2a mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xfc5b097e __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc6d7d84 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xfc7298fe pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xfc8872b6 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xfca06ae4 sock_no_bind +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd8d622 udp_proc_register +EXPORT_SYMBOL vmlinux 0xfce82a9f param_set_int +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd1d9dd8 find_lock_entry +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd36f1c5 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xfd39b1e3 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xfd3c9d91 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xfd5487ab registered_fb +EXPORT_SYMBOL vmlinux 0xfd549bc7 __dst_free +EXPORT_SYMBOL vmlinux 0xfd551d76 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xfd55574e devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xfd5f1e5b netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xfd77da6c of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xfd838afe pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xfd928151 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9a0cfc devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xfda26531 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xfdb1c8bf filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdccc8d0 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xfdd3a8c6 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xfdebd0a4 ns_capable +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 0xfe0ce9fa vfs_read +EXPORT_SYMBOL vmlinux 0xfe12797c pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xfe3ce880 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xfe452090 vme_slot_num +EXPORT_SYMBOL vmlinux 0xfe53e440 key_alloc +EXPORT_SYMBOL vmlinux 0xfe562a34 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xfe58fb06 lookup_one_len +EXPORT_SYMBOL vmlinux 0xfe5abe5c inet_sendmsg +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe822d55 get_brgfreq +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee63f90 eth_header +EXPORT_SYMBOL vmlinux 0xff00bddc dev_mc_init +EXPORT_SYMBOL vmlinux 0xff0ca959 touch_buffer +EXPORT_SYMBOL vmlinux 0xff11bad3 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff27b0bd ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xff2baf2c of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xff320f2a cap_mmap_file +EXPORT_SYMBOL vmlinux 0xff3b4683 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff4908e2 pci_request_region +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff8c6ab5 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xff972c7d phy_resume +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa25f40 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xffbf0ef6 zero_fill_bio +EXPORT_SYMBOL vmlinux 0xffd01eb9 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xffd06e54 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe19aaf dev_remove_pack +EXPORT_SYMBOL_GPL crypto/af_alg 0x14b40dca af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x2f72615b af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3091271f af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x3c921a7b af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x87c16dc2 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x92b7f169 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xa28f644d af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xb407549e af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xc15a0ab0 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xc7cb83fa af_alg_release_parent +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 0x0def682c async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x26809835 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x6e62b927 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x1dd883ad async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x6e184ff7 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00294489 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3fbae6c4 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x4a98ada0 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa13f3609 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x4bfcb1e6 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xa0ecf2d0 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x8298d3e8 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 0x827da362 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 0x270c508a 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 0x14746b42 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x166709b5 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x18e12213 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4a16bce9 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x979ee7a9 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa09c9fd0 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xb10fb820 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xbcb59230 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xc3b80d5c cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xe88ef57d cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x46186882 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 0xbe3e896a lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x014c53f9 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x23ed5bea mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2a8b6068 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x4f114345 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6b42842e shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6fda74a5 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x75bd23dc shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xaa7993d7 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 0x8f450ffe serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x809b50ee twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x487429ec xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x025ddd14 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x136d218f ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x19e39496 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x206d0e15 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x21269e1e ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x21c306a4 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x37a9b4c7 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x43ac1973 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4ad4aaab ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5a18a191 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7261ddee ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7db1af86 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7ed1f6bc ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f0805ac ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8307a4b6 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8dbe39e5 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x97374441 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd61e4e8d ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe73191cf ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf2fef49d ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf4586a70 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6820a41 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x07f1fa7b ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x26735721 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2f700c47 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4442db03 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4b4588ad ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5280dff9 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5c620729 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7180cb28 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9608191a ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9911570d ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb41a4c49 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xc8793af2 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xeb089ab8 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xbf41f57a __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x83c4d4d2 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 0x2ed6b011 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x4e73cb88 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x54c2ed1f regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xa9b1f2d2 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x043d74b3 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x08c3c5f7 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x18148ae5 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x36449b4c bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x36baa077 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3b2e57b3 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4b8104a3 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4e82e59a bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x50ba8ef6 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x535db708 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5a9603e3 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5c6f45f4 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6652d6b1 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x669393b0 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x78226f6e bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8fc41d3a bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x91edddf6 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9e3e34d0 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa0c1fed7 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc0a12425 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc35bfd61 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc919696a bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcec2f065 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd336e8e7 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x10eb1d7d btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2ff866e5 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6643af53 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6919c911 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd3259e0b btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xfb2b90e3 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6e04ac1b btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xd41baf49 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00eb617f btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x29a8c76b btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4f1a0161 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7b2b98c3 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7dc35e07 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x967be061 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa06dab83 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbb90ae81 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd50b5543 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd6d4dd92 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfe0b48ba btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x5587695f btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x16a821bb dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x648d4cd8 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7473758e dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x843fcc3f dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbb0b9bf5 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/fsldma 0x4939cee0 fsl_dma_external_start +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x4252fcab hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x8d19cba6 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xfd069097 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x2b21f3ce vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x4e608b51 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x684a42b8 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xef1ebae0 vchan_init +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0b920a7d edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c7fa2f9 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x42458182 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4de41ee0 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x66b61559 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6a828f02 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x70882af7 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7167d1a9 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x76e51511 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x82cebf59 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8b44304c edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x92943617 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9324ba70 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x98f2bb52 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9ebca6af edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa80f7a6a edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc4ccdb4d edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc6f0fc30 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc8c85236 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe9329f35 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf207dee8 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf4f75a97 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfa7b5067 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x2f9b3d6d bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xccaf078e bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x3d774f79 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xd042644a __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0d5cd7eb of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4144c71a drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8d612c0c drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9ffb4d4a drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcd468ad5 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf69c5d78 drm_class_device_register +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 0xed9cdb08 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xf206fe22 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xfcf929da ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x06507ec2 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x075ce94b __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1a7492f2 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2518bed9 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e3a20bd hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3cf4ac56 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5471a774 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x56932477 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6018380d hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x64820b57 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6cf13007 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x85cf6a64 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x98559db6 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa0ae01ff hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa7423dc0 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xac1c9574 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xadedaa2b hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2ae7858 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb3c8a55a hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb596abcd hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd4061a9 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd687b63 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbedb926a hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf938cab hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc7b84ab4 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd01f49bd hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd02e44bc hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2820376 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd3455251 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdef4e84d hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe0b3f62d hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe225e5d7 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe3faa116 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf7e06c11 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfdf6bafd hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xffddb04f hid_validate_values +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 0xe36f75e8 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x22deecaa roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5dc14b31 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6d713cb4 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8ac47627 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9a025076 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfc6ee08f roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x377b55cd sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4e6ca2dc sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x70e8c950 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8cd8aa43 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8f1e5803 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xaff15cb6 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd2deedf2 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdd570e5e sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdf066bbd sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x83d8daa8 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x185084d3 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2c83cb3d hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2d31ff49 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3a4586ab hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x57686ecc hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x609d49c9 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x63815807 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6cdf2684 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x870e6522 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x88e29e44 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa1e77bd3 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa2d00d4f hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa5354101 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb8651baa hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc538d5f6 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc5a78281 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe6c24a1f hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfda3d470 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x5dcd1065 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x6e0b9b21 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xb17bc54f adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x00f489f2 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x27e7bc33 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x27fbd18f pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x32548af2 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3cbe24f0 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3cfdbd99 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x48c127c7 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x939fb9d9 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9ee5be86 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbb57e635 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd31964b1 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd40a82dd pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe2184bbe pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe388eb97 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xeb771585 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1efc6c78 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x250695eb i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x30ff825f i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x589585c5 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 0x649ac3d5 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x70afef01 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7824895a i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x88b5a84a i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd967be7c i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x57d9dd24 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf309a0ec i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x70fb1b91 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc0b46fe9 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x027e8239 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x19cbe793 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x23d9e08c ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3a5e4259 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6ad7ba4b ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x983e64f5 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9e401c66 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa36d6048 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe111b2fd 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 0x04cfd361 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1e47d0f9 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x273c61ba adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4486f959 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x510db685 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa9ec5374 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xad2b3481 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xadca91a1 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xba44c7ac adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc64abe31 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd840552c adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe5c78274 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0937ef93 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0dbc6e22 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x16fc426d devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x24bedae2 iio_scan_mask_query +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 0x33a27538 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x36277b8f iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4d6f8889 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x55eb83bb iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x564b40b1 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5a224f38 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a6d97cf iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d617790 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6ee39605 iio_alloc_pollfunc +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 0x911a45f6 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x98735d83 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9a73c36e iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9d925703 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9f85abe4 iio_enum_read +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 0xa595a8a7 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaf7b7030 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc9c50523 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcacc2313 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdd818a81 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdfa19920 devm_iio_trigger_free +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 0xfd511543 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfeacb810 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x2a07c8e4 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xf9cfb19d matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x35058925 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 0x2dbaa28c cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5a32dc78 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xb34d772a cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x65106d4c cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x8a9efc95 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xd6aa53a2 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x151746e8 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x3281b97e cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x09f97f8a wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x144762d0 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2227a041 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2cfb6205 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x614251f4 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6ec6d42f wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x87a0d90b wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa3fe7f24 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbbe569c6 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc5537f14 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd914d197 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf36a86c3 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x537537a3 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x59bd189a ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6a593e9a ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7aa2043e ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7bc441b4 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x828a9618 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xae58caed ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc3554ca3 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf3d7d315 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 0x06662c22 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x07d0b7ee gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x43430f31 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x82835e21 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8a5f95d4 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x92856eb8 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x930417aa gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9fe3121d gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa0c7b9f6 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa4476f70 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xba9ee69b gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc4dd7da7 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc72ade4d gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xde0458b0 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe7b71823 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xeca09480 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf3a3b408 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x45b077f7 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x4d4b9045 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x72869c6e led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa555a9bb led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xaa944d01 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe5f5c61f 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 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x137cb4ed wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x1a01a95b wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x212ead30 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x2729c99e wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x62a2f70b wf_find_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 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xce7dbd61 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd1ce25ae wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd8672a3c wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdaefb6a1 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xea060581 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x066b177e mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x12ed3bc4 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3136ccc5 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x48a9c8c2 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6219de3c chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x62865b2d mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x896b2fc2 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x92d2257e mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb349a416 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xce3a86cb mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd2f1d041 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xeb291aa9 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xeed4d6d4 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 0x0a3e832c dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x20347380 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x210f74a6 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x25a324ad dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2ac359b2 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4718fd20 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 0xa42c306b dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa4d7c5c2 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 0xc46e7048 dm_cell_visit_release +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 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 0x66416208 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 0x067f1982 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x84075018 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9a816d45 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbd8dbafa dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd2b06d98 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xeecd6138 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xfe3dfe95 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x1c08ff2d dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x5c5ad5e5 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 0x149f5cae dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x1f24b3bd dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x20edda5e dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2a5e2a3f dm_rh_mark_nosync +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 0x4fc34bce dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x76051b13 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 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/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 0x325231f3 dm_block_manager_create +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 0x42d1207a dm_btree_lookup_next +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 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 0x009c9990 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x129ce3e7 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x401214e1 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x54b9c4ae saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x596cf61a saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x648b78b6 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa343d03a saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa6906501 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xbfca5b7c saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd3336044 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3e17c799 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6c60cc76 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x798b2875 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb64d13a8 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd024cf32 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe959b431 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfc724a2d saa7146_vv_release +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 0x39e81944 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3dec1810 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x41be0c9c sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x742a0fc1 sms_board_setup +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 0x82d0f9eb smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9817fc46 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x98f17fd9 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa90a92f0 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa9ed75d3 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaf2eb2a6 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb3c1ac63 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb7395804 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc2a119c0 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc8dff589 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe3d751f0 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf84cb40c smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfb59d5f4 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xbef0f054 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x9e019a83 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xee221729 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x060024ea media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x0819140e media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x17072c9c media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x26ce31cf media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x2d93a0fa media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x5f6e687d media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x642a09a9 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x66505c22 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x789d8bf7 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x7d31b233 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x9133a966 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xca473f4c media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xd1230b3d __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xd3d0f8a0 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xd6f25115 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xd8c3821a media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xd90bf42e media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xe8895dd4 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x10d08ae4 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x03a9022a mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0446468f mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x06411eb4 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2ee845b7 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3027e366 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3fa25455 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x43920f85 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x51f2aeb2 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x61c4a12b mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6c1aa9f4 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7f1994f5 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x887a4e3a mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8c07a4b4 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa221c523 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa35a1bf4 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc2b08141 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd61cbb44 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe4836d58 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfc47305d mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x04423b66 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0b5023f3 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1251d4ca saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x159582b6 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x22151587 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2f1bae57 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4529dcb7 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x508c4d58 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6c6ac1c6 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x771fc27e saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x80e85cd7 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x89b01d77 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8d37d0d1 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9478624c saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x98f17e6f saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa23e6184 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd48796ed saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdff3db9b saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe9a31062 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0116f19c ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x05f987f0 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x477d8fbe ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x52573431 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 0xc396b5c3 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe09e9817 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfa9c6225 ttpci_budget_deinit +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 0x75b02716 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x776d7396 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9bb7e4d8 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xac224471 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb3d5b3da xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xcd9fa70a xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe4981ba8 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x06741029 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 0x17a5c232 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xbeb052e0 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0e7dbc43 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x212f145c rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5b404fad rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5db9830d ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5ffe6395 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6c26f6da rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6f962ed0 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x73136467 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7930e95a rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x88bcbb32 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8ebe5068 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8fe999b6 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9957ec4e ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc32040e3 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc2bd78f rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe12f47a7 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xaccefca1 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x6123453a microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xbbe9cb84 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x8661862b r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x51072e8d tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x0705d0eb tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x5bc80945 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x5f779aae tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x676d9bd6 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x32238176 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xa5777b6a tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xa33e09f8 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xdbad2b28 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xd3284d3d simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x00cea58d cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x036ab7ec cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1d93a342 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4c56455f cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x55888230 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x67e33e6f cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x700673e5 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x71a219e0 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x71c7f2bd cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7cc5621d cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x88f29754 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8cbecaaa is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9a4f0ea8 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xafc4b7c9 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc8202b2d cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc84c6845 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc8b7804d cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcb6c44fa cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd40f7f69 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfc0802c1 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x8347f46b mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x5c48cb3d mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x05191306 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x06820a5e em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1e793ad3 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2f2db60a em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x31a95628 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x357245f4 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x392e2f07 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3f636e24 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x48a317b5 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4e3ba4eb em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4fba2b35 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5c727e0f em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x63626ef2 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7a3e96e9 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7d844a39 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x810585a1 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa3ff6403 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb1b726d6 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x08a13436 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x488d8eea tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x81c4b4bc tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa5ebfbfa 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 0x0cd11deb v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0cd811c2 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0e1420c8 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 0x87c5b385 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x9eaf8a25 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd2efc230 v4l2_i2c_new_subdev_board +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 0x88c301e5 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xb2bc0760 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0cac56e0 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x19bb3e10 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2936f5f2 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2ecc55c0 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2eda7ece v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4ba8aeae v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4c20b357 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5934adde v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61583bcf v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6bf7e02c v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x73e1b771 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x77ef3fe4 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x79b2018f v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7c675007 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x81ab1d09 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x827ae26e v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x88543c4a v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9ada4c1b v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9f6191d1 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb56c0450 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xba17de76 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd4bbcbdb v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdf916dbd v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe48eb83a v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeb0a4954 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf58a8a72 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfc83796a v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x05a1f920 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x19eac39b videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1c0fd5ee videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x25b8a29b videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2e88ee7b videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2f0d39e1 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x457fe193 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4664353f videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x52ab2a85 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6396b195 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x78f3b431 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7a2fb162 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8aa11654 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9a6d0da1 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa26b86c6 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa2b2ba0f videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa884b088 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xafe35492 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb605633e videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc0cfde98 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe14e6048 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xee2ee677 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf20a2e50 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf59ceab2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x40abeca8 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x935e0491 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 0xb72698b2 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe564db49 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x050221e0 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe43d7142 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xeb6d9c68 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x07c66457 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0bf9411a vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x178bf4dc vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a03efed vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x241e8d5f vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x248fdef5 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x28edfd82 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2e7cb4eb vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2f563b66 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x33c0f7fb vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x38f15008 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3b00eee5 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3ce92517 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x48a8987c vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x49734e1e vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6414deb6 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6449c981 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6689d369 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d730c52 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x87035ce8 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8f6530d0 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x957001bf vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9f148419 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa5454d4e vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa6faad41 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa73a55b2 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbca0b786 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbd5f3ee9 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbf48810c vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc4de0b8f vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcc056f6d vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd0b18d5b vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd7fc30d0 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdb34f0f1 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe1de965c vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe406bc61 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf31158a3 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfbd9dee4 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xffc1e5f6 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x80a86825 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 0xf6d218a7 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x7bf8ae69 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xc70fa9f3 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 0x9ee4a6e4 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xbc03bd62 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xbcee227b vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xda7dc5cc vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x5daed632 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x188761c3 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a724c34 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x20294c42 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x24aa8a58 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x26080aba v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ddca05c v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4837c184 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x61c81379 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x661422ff v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e9cb939 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8382feab v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x93d770f0 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98587336 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x99df6db2 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa4846994 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb75762d8 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xba3d61cd v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbe41dc7f v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc5b77c7c v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6e34f70 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcbe3e10f v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcf299f36 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd76ff6e2 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdbb54a23 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdf1a344a v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xefb0ee9d v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2060640 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x5ac4ca1a pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xc7174a8a pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xeb9df103 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x282fb8e5 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x72af4b7e da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8287cdf6 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xbdab0992 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd0fd0a57 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x32e2c390 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x712e2584 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x78487584 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x8329610d kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x975d0f81 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa5b8506f kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc9727c3d kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xff878530 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3740ed63 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x9fa07e2f lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xf80b04b4 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x45135161 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7bc24508 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8b18547b lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8bbe35b7 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb4aa0913 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbfe9282a lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xec58dc40 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x3ca212ab lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x6410f80e lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x8b2e21fa lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x15eecde6 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x27ca4aae mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x621c598e mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8c5cc713 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xcce68c33 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xdee9795b mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x07c238fa pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0f913482 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3ff90aa5 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x509acd4a pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x672e2525 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6ce4e300 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x80e76172 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x89eadd36 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb2e90bf1 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbf3c7888 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf947e15c pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x7b51f3d3 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x9301d757 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x040dff20 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x2c499712 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x896b4d7e pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xacd5126e pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc1004b79 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 0x02540ba1 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x098fd844 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x25b05b68 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2dc37b49 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x30723ce0 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3b32f078 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x42e5edb6 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x46fef66b rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x626bf523 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x63315997 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x63b9db3f rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x79c150e9 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x864f155b rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8d0dcf7d rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x984f3a1f rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9c4a6736 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9f803179 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xad137da5 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc9a74fbf rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdac86f7c rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdd6c4342 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdde2a3bb rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xef931299 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf269088c rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x22c31f75 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x278689c0 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3592cc8c rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4b19e19b rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5be83a04 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x805a203b rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb9041be7 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd1ae7363 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd5138709 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe21613f7 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe913e10a rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf7835c3a rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf8e4d669 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x03fb6f49 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x04bf7f19 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x08e95d11 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0a62a51a si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0bdff42c si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x136d26f9 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1af108af si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1d8221fb si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2054e4fd si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x26ba6b6b si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x28752d8d si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x31354a05 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3299c7e8 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x35055238 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b4908a8 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3e416063 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x57aa1938 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6284ed54 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x970bd933 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x999bb500 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa4406bb7 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa440f2c4 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbeb632e0 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4c2c409 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc8301084 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc9a14457 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd614fc6e si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd768f6a4 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdb06b8ba si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf4bc1371 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf87cc2d7 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfa0a7214 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfd798c86 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xff7a9c3a si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x2cfe31f1 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x41a04a64 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x614e2f83 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x90d9b031 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd3cb4472 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xac70d344 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xefe11476 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xf847665e am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xfe5ad273 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc62f8187 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xd001a2ff tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xd37c2358 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfaf7b1c7 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x14b00b31 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x27ff81d9 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x8990a694 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xc3e692ff tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x10515846 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x34588cb3 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x56212ad3 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x5aa79d07 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xfe14d108 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 0x228cacfa enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x41332d74 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5100e4fc enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5471efa9 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7f5aca7a enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb671bbc3 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xbe78e9f3 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xdb3c0dc4 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3377cfb4 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7ccb7a3a lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x891f9af2 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8cf8bab1 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xade644ac lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc99e5d5c lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcb348988 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf3c1c71a lis3lv02d_poweron +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 0x36f55ab5 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x45dabb3d sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x54cf48c0 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7135a119 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7cde9fd2 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x82a4c186 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8986b654 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x902b1829 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x91365f59 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9e32d51b sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9ea6a643 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc5abdae2 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc6599014 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcf2655ed sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x15087644 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1d6bbfd1 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x25622903 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3b393e7d sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8f514ba7 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbd4219dd sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xce5e5ffb sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xcee621b4 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe3f551d8 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x72198b6e cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x8f07aef8 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb02e8b10 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x26c5c87f cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xab6e4c29 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd53c07f9 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x01545a8b cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xb8e61008 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xc9c3bd46 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe31e3dd9 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0452acc6 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x06933dd2 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0a93bcfa unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0b1112fe __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0f3f2454 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x11a533bd mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x14215b70 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x14c64881 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1585b14a put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1aac6e97 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1ae48839 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1c40490c mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x220bcd7f deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2baa49cb mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2c811d29 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2e106476 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x33731ac1 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x404a5c0f mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a3d62b9 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x59eef1c8 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x634d002f get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x72721651 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x72b0b591 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7dfac0dd __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e20f0fd mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x85dcc1e7 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8ef734a0 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x92697cf9 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1a3f220 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcca238a6 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd1a644d4 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd28d17bc kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe43e1f1d mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe45fc261 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe586ab17 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe6e7e3ac mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xececa36c get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xef6254dc mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf1c283d2 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf470b620 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf696ed27 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc14b63c mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x06ee2d3b add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6331af7d deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xbbc8d49a register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xbd37774e mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc0dfe0a8 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x1262208f nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x4a606635 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x89f13e79 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x19623a55 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xa982dec4 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xbbe15cc4 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0bde1290 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x16c7722d ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x19def210 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1f803e26 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x27638aa3 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x305e3568 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3d5149ca ubi_leb_read +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 0x7ced3b16 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8a73c1a8 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd9f325d6 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdfe385c3 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xefe3b49e ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf0fb7e65 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf1b36200 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 0x02eb899e free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x252b92bf c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3151edd1 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5f961793 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb3d39674 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd197d9e9 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00465e32 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x159d81b1 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1a08b59c alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x33b74e3c can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6064be4d alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7caf1d96 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x994eeaa9 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9adf302f devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9e570682 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa9300c53 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb6668f51 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbe6063bf alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbf08e096 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc38a3508 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd6708985 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd92d39d7 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe656c29a can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf692b100 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x03a59711 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x83e1733c free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x86271a2d register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa14a5e75 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6a2d3baa unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8ad7384a register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xed60c760 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xef95a0c0 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x48ae2f3a arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xeed53960 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01467e8f mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02f1b827 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04526ba6 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04b8da6c mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05ad7618 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x092f35d4 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x098e88cf __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0af184bf mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c7395a1 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fd86130 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10486115 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x117a0466 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x160cf641 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19cc5842 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19e51845 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1aaa371a mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1da3bcdc mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1fcee6af mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22530e7f mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2404d062 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25f7e926 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x267bc470 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28bbdc31 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29a026b5 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bc76d4e mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bcecf97 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3075445c mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31c59cee mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34c8c136 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3807a44f mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e767322 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x419e8dde mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43e2d532 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44675821 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45167439 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x480e4ea9 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4817c4d3 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b30347e mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b85d20e mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c2f09b5 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e1579a3 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ede1657 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f66d080 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52c887ad mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53026917 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53b6d219 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x585ccd1d mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5aee54ac mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c4dd49f mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c4f2f22 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ca76cba mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ff7aed8 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60c43ee1 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67cc8d45 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68919866 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b16ed58 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bff7ea4 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c06d704 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c41a09a mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f7e26bb mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7762c497 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77863316 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x779b06e5 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78d3d965 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a1eba59 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cdbe9f8 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d300a45 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f494d81 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f6f20c6 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x800488d1 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x822ea612 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83b5b9e0 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x866b4f8c mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x884b5e72 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e9fef9d mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90ffa01e mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9160d246 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x932bc826 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x940e73ea mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa30c7032 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3aef125 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6f89d6d mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8b73556 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa940d9ff mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab25f978 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac165b1d mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac3bcfbd mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaecf560e mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaeeb8842 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf0f3857 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafde0df0 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb2421d2a mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3eb5c26 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6c0f331 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb99ad1a0 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbadfef03 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbffceff mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd17a049 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd2fc386 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc079f240 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0d4901e mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc31aec41 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd26cfce3 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4cbaa4c mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdaa38d60 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb506c42 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdcac8799 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdcddd4bf mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd1f9de6 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdedb3fc6 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2039289 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2676fd3 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7d2b21c mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe95deddc mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee75a677 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf01f49e1 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf195f6e1 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf53cfdec mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5a5647c mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8106c24 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9b678b8 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfab4b0de mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdb59956 mlx4_get_internal_clock_params +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 0x09c964ae mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1469deb1 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19ac0660 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23344973 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x248e4a96 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2bbb4b91 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4173039e mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45919f22 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a64cb30 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ff83650 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6324e7e5 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x680cffca mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x69dab5d8 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71f53f52 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80de0d83 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8256d8d5 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87a76ea9 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8aec951f mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f34bc46 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8cb774e mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbbd7bf68 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbca43e97 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc150db65 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc589e844 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd348ef34 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4cf409b mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf375b0c mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe396dfc0 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe62bdc7d mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec1363db mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf02d6862 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0bd419e mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1937307 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf58fe66a mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf99ad49c mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x0fd38ba3 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x155fd394 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x56d6fac1 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x729d32c1 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x0962d922 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x716aa97f stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xb702cc5c stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x23db3706 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3eb0a631 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5551432c cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5fe78df3 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x63b86225 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x63b975e7 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7c5f0513 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb04ceb0d cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd81aaa90 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xda54250d cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe19d434a cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe5b41501 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xea6e4d45 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf91bc297 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfd25292e cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0bac0d4d macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3e0f7f94 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb9185d5a macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xef523581 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x4ef024a6 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x75ec7197 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x1ea65dbe usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x75135e75 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa65a9a38 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe9750741 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1ac82100 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3b6f7ba5 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x504ebab9 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa6bd0f51 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb0115c91 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb06c4b7b cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xce4ab1f4 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xed31de85 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf39e3d6b cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1025868b rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x379c99ba rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x97b4dfd9 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd7fb9fb1 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xdc5b1b9d rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xde2158e3 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0bdc3e16 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d44662a usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x13a7e6ea usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1dc33701 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x20ce0c99 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x291564e1 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2ed38c0d usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x38dff75b usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a321076 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3ecfa494 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4ae40a75 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5f6a8e94 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x691c6b21 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x73b4a37d usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7a87287d usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x92689e8c usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9341350e usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9573a1bd usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9a2c3fa2 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa98282a0 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xadb3d18b usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb181255e usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb67a62df usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbf4b66be usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd1ff4122 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd3a7e10c usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd74940dd usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xde052922 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdf62cd21 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf27f6b9d usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf364b2b0 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf3a52cba usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x45c5836c vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x5f35d276 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x6c044088 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xccfbe4cc vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0a3bb0de i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1a93f1b5 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1e546195 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x30f7c602 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3f9c90d2 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x43f272c3 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x47f83328 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x63307d30 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x689b4fea i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x83e5b57f i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x95d751bd i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa6ff2b12 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb0b2f1fc i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb36639b8 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb4404512 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf588207b i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x0e17c8af cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x327502bd cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x721f6672 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xf992f057 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xcde2e2d6 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3d63f236 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x483cc18b il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6cb8f993 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x81dc5773 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xd01016ed _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x01308bf9 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x08049b21 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1129a0a4 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x19352382 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2081fe27 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2362b64d iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x246ed37d iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2b0a4fbe iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3be4418d __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4d8af3c7 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5b5b7a0a __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x63347707 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x64f9b51c iwl_read_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 0x9c699903 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa379a810 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa6035a19 iwl_opmode_register +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 0xd5122608 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd7e9a16e iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd8c20b65 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe2145bfa iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe246be90 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xefdecb13 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0024d04c lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x025f3378 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0b484137 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1f83a859 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2d998037 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4ad38fbd lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x53928d58 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6b8943b5 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x72ebb95a lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x85282d38 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x88edf5f7 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc37a33d0 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd38bbc14 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd91e672f lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe0adbdc4 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfe3fead8 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2375f713 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3002b160 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5a72211a lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x824ede26 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8ed1737d lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x97f3508d 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 0xcd487f28 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xd0ffa291 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x17762d0a mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x43082152 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4d6fd70f mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5431bef8 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8bdb6474 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9c17cfd8 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa4742ca8 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa4b77bf6 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaa37f688 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb611f81d mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbabae681 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc7d4603e mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdc844582 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe5107e59 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe533a593 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe9448f4e mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe9b78be3 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x209e89e0 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x31bae84a p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3d19252e p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x442356fe p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7824f16d p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7b3963ad p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8a24670b p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9491dab8 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd4926d9f p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0f67aa1c rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6f6b60ce rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x91bf4de1 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x9c800678 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00d2fcb6 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0a0f473e rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0fcfd562 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1663b737 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1e94fbdd rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x209802c7 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20def84e rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24b4df17 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24f7a3cc rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2cf3f20e rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d84a4ef rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4ba9a242 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x59cdce87 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5d928cd1 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5edb151b rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x60c2c05d rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x60cf490b rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x621a1dc8 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63e12fa5 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6864cec1 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x73286bd1 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7400a598 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7d593cf4 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x84a9be7d rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8618e3e0 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x879dd632 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x99fb008c rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa3a30817 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa4d7263e rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8e45319 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xabb2a915 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc00a2bba rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc6bceb8f rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xca3dc738 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdd5aac72 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe075124d rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xea1f6c61 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xef38f651 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x05b70ed1 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1142f066 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x25ea163b rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x32c0d766 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x33352d5a rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x43e56bd0 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x61dbcacd rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7ab91ff3 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa93009fb rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xaf7aa29c rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd55a1698 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdd680464 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe96888f5 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x045eebf8 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x073cccac rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x076cdd56 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0de19f56 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x14c0f1a2 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x16bc132f rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1cada85b rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e6fbf1c rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x211c4712 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25c3bb69 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2996fe9b rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e4bbca4 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x31f1a1e7 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x361f69e9 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3ad1350f rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43d79391 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b1eb40f rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4de4ca2c rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e28231b rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x57a0f021 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6037c017 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60a3b15c rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6214f777 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x667bdd04 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a0df136 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x70bd6827 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73c07f31 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79fd54d0 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x84e20215 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8f7cd273 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9486a212 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9c90ace6 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa11e4067 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa1da0007 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa3119717 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb94bb2f3 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe1e1901 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcca1abf7 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd6dec4e rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd4d30da0 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xde04eec8 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe150980f rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe1c188d2 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe30b2017 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe3a59788 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf6b47426 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x52151b48 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x55781f33 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7eef30e4 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xb9560a8e rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xbbdb296b rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x86ef62cc rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa63c5906 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb1da201d rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xca7b1deb rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00e57959 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x03901ed5 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x072a5795 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1b688719 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x341d3fbc rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x34a3776c rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3d9c018a rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4d202eee rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x670c1a1d rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6e4a6e2b rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x746511cb rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xacec63a0 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc30436dc rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe09aba87 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xefcaa21c rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfce9874c rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e9c8960 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c72c438 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b9bd8b4 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe0ddcf5f dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x005492d7 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x01f65ece rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1b3b683f rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x20383d87 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2f45996a rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x336b5e4d rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x472265cf rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x47ef65a5 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x48c3ddcc rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x533838a2 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5a445fa8 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5b12fd5a rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6171d381 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x646c5625 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 0x7c05a906 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7d8a7ea8 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x95dbca99 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x972dace1 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9fe982b0 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa34eca93 rtl8723_enable_fw_download +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 0xb00a62c7 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd81d638e rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdfd7c4f8 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe650ffe7 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe8f1b82e rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfacbe827 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfb493926 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d3da1cc rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x10c8de81 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x22324bb4 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x26d84d3c rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x362869aa rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x433c8840 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x518b300c rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x59d5186a rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x861b0f26 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8790997f rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x91b7a358 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaf470efa rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc23886d4 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf0501e38 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf20c2b83 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf562ea2c 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 0xfc0934fb rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7f2a56d3 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8a662f5e wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xeb997107 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01ca1624 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x027eb6bb wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05bce211 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0684ae62 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0bf6eabd wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x12115a23 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1ad6796d wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x217bb7bd wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x223cce9a wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x28ec366d wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x31e0426e wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3af6c923 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4aaa3d7c wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4ea8ac35 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4f984f95 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5d5eb6f1 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5d86fb56 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x62d36b42 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x64ad8e61 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6750020b wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x768462af wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7939479f wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8607559f wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8dc92483 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e3e9976 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x96819e40 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9aee5003 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa21802dd wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3e56cfc wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xae02f047 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb0bdc74c wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb1636b39 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb3fadd50 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb6b65eba wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc5123cef wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd42a07f8 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd45dee8c wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8148fff wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd454c55 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xefebab49 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf01aaa4d wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf97a9bf4 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfc87c856 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x0a7a5d0f nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x198f2c96 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xa6297d2d nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xb73d452d nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x369c48f9 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x395d3ba3 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7f3e0920 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x82885b90 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8897e48d st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x90d7bc07 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9139f4c3 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcf0c6f15 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x164a404d 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 0x73b68124 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 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xcfe037b5 ntb_transport_create_queue +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 0x50435967 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x79e8d59e pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x9932da7d pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3318ade4 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x714d35fd mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9e091214 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe34380e8 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xfaf660eb mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x03c3ecd7 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3ba6bdb0 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x63b8291c wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa264cdbc wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xad7072af wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xec275860 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x7b9e50f1 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02caf9b5 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03d00a30 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x04ef668e cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d2d051a cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x118044f7 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x216ac78c cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x22b5b8b2 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2666353d cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x270f6b01 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x280057ea cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x282057b9 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34aa04c8 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 0x44a85c2a cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x49fc4b8d cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4a308796 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x585d3d69 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e5e3170 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63ec0af4 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x664e9103 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f8925c3 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x74103ef0 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x762c7094 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x78b40f8a cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x875f6125 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8bebcbb2 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c72bbf0 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e65a207 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8f32a531 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x917785bf cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x93ea08d4 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x97e442e3 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d866121 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ede381d cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2920bc7 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa73a8611 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaca21c41 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae2fa066 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb5a58b04 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb7df7d0b cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb8825a02 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbd838822 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe046df85 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe1602242 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe693952f cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef05893a cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef75570a cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0a618297 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1498ddc0 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x51f500c5 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 0x7d604f00 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x92f56919 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x99d5e93e scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xcd62912a scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1854645c fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1efb0c5f fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x39c61eae fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6164ebcf fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6d8d57f1 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x70dbd33d fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7d349e23 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x890de813 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x92f215f9 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb6effe88 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba851621 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba91432b fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xca52e8b0 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe78923f1 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe9e34a14 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfcff8e12 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x258fc204 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x3999e5ae iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4523bbb4 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb17d555e iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xec5399d0 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf1841973 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0144ca12 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f0cc2f3 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x246d80ae iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3a658d81 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3f38b322 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x427be5c9 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x44cd44ab iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4acbf723 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5994afb0 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5fb0d8be iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60dc7462 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x63136fd1 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x646551fb iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6bb6ca6f iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6c511232 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x76cd1f39 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7b4eb020 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c1322c1 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x829cd128 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86b91d24 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x892eb47f __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa0cf5143 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa1e65889 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac7a20f1 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc138405a iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1c08718 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc814da35 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcf0db834 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd1b73d8a iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd6afccfc iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd733da68 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd8beb054 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdc44a8f3 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd7f0d76 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe112e1a6 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3275e45 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe746a2e6 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8c8bd7b iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeca3b272 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf8dafaed iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfb964934 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfef1c602 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x05682a9f iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x087fd344 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0e55758f iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x176a3924 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x365f0955 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4af49eb9 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6a2bd801 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa5b1e38f iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xae478a00 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb4a60699 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbb3fd1ee iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbf111fce iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd3d621df iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe7b95f5b iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe9168f51 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf6eae247 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfa1494f6 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x021ea092 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x040bb740 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x06a7e355 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0e5c2f30 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1f0ec2c4 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x22d56009 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42222737 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x580a51f2 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5dbbc0b1 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6c327604 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7d2d6c97 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x88a38f57 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8b4915e7 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8daef3ea sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa08a0893 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa6cded33 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb7139b8a sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc827d6af sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce1de86e sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcf147b63 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd1717c6f sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf4dff6f5 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfa9fe117 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xff6f78cb sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0e88e9fa iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x192a35b2 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1c67b164 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x262f659c iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2ce7951b iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x312387e8 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x378ea8de iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3d326f94 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41727eab iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4d70c20c iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x54746f13 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5514b8f6 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55efd304 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x57e621aa iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5828088c 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 0x6fd9cf36 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77a46d25 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7a631f95 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7d2f6cfc iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7d4048dd iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8eb9efdb iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x928c4d72 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x959bf17a iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9b424514 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa0ac94a3 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb13b76a6 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb3608002 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbae6ad45 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 0xc028e263 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc061c916 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc4b01dc1 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc89afe23 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xce454a9f iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd0031eab iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd648a239 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd664eb66 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdc7f85f7 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdffbe191 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf916731f iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf9ff464d iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x07f04653 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1dbce47d sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8239ff98 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xebec04ed 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 0xd4662354 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0e651227 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x2e1d808c srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5eb69d33 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x72980c4f srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc4a214c1 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfded444c srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x2e658510 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x515cbd74 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x9711dc37 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb29ac617 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2d9c19ac spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5d0a85ac spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x89c54db7 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd14a86c4 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xec806155 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2b4abc82 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x416fa111 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe06500d1 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfe04460f dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x083c27b0 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0f9ecb9a spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x12436fa8 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x21f74b58 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x289c6d8f spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2b4c123f spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3f6e3ca3 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x53bacb31 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5bb65405 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x660229cd spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6a080332 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x74d4ac58 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x77bc72ca spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x84d4bc98 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9c995070 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xeada7da9 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xedd63674 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf63a36f8 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x2c26e233 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x02e40ad5 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0504af62 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06965249 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0749ec77 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x14282242 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15e5edb2 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x19b0db47 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2036748b comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2862a835 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2d8a9fc5 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x363a73e4 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4dc26aa6 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x51692ff4 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5845c73d comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x618343ff comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x696d40d3 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x711066cf comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8ca5f5e7 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9413bc55 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9dbec4fa comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0a5cc6c comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa393e462 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa49339d4 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa72a06fc comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9f54a4f comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaed5498d comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb1398aeb comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb919e8e5 comedi_load_firmware +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 0xc2d81b2d comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc45be6ce comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xce8828f2 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd1e4b115 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd5c6c267 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdbde3dc5 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xea25df49 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1bb6a842 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1e6715a5 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x35fab0e8 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x4e83dc1b comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa1327008 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa48cf287 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb212eb64 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc04b5794 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x0e1a69a7 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x2e744bd8 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x3931ff30 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x40e2b88f comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x4599ff7a comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x9799cc81 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xcff8a0aa comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x03368244 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xabadc946 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd8608e4f comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd8dabee9 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xdf3855a0 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe6431fe7 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 0x80fd0bee addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x6fccd6d6 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xe60f22e5 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xc819e429 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0d3e2e7f comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2908ec48 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4b9a073b comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x78ab027a comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7abf9a1b comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8a04912d comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc19f56b3 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcdccfb99 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcf25daa3 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd0367d07 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe2d7c5f9 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf001b3fd comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfe6be4fa comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x12e52303 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x482004ff subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xf10738a8 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 0x9b37560c 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 0x932a3646 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0b0a214b mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x169d66db mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x229fd054 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2be6693a mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x40c6483c mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4361491a mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4c17b4a8 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5437c998 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x64817d37 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6cad5570 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x82d80502 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8e18558a mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa33af95f mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb234bf8f mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb8bb08f4 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb9602847 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xba7da1f7 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbbb87ede mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdb8a34ad mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe0f77384 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xeab6d32b mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x2529d6a6 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x4c9f82c1 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x49d05b13 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x8d5db56d labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x97289639 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xaf3f98a7 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xf57dca31 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x316d9b1f ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x56e5359b ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5ad34a39 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5d3d1020 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x664652ab ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8f901d55 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa15f274c ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xaf050c77 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x74fb5dee ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x921d5654 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x9933ae21 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb65af2d7 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xcc131501 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf6e064bb ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1186e2fd comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1e29e7ed comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x3cb1aca9 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x526e3492 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x84f12692 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc81a24fe comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xfc342d91 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x12431367 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b33e3b6 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x4dc10a89 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a8b1499 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb001444c lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8a59fa4 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 0x0f87b8a0 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2cd0bb6d spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x301a7a91 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3ede4f73 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4188c977 spk_synth_is_alive_restart +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 0x572daa92 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x897f4179 spk_synth_is_alive_nop +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 0x9dc7084a spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xad04ab77 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 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd2de30d0 synth_add +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 0x6ef77a18 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa9caeae2 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xc1a5acb8 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x3d25dabd usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa31793bb usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x02ec3ab7 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x9d6799ea ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x3de9c838 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xefeac333 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xfe105d9e imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x158e1297 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5ec172a0 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x7e2c7e8f ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9c7fb22b ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xbd7a1c25 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf6ffd6db ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0945630c gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0a4c7898 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2996b643 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3e8c6f38 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x408e2180 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x40911943 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x45c79307 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4b050324 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5d9ca048 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x714ae557 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x73b3685e gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x848e767c gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x92aeea94 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb5edbb94 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe468549d gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x190f058d 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 0xf91b053e 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 0x1381d421 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x25313c4e ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x7184bb40 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 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 0x35700038 fsg_show_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 0x3fd829ed fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x406588ee 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 0x4858f383 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51134933 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 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5a3b8c46 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x68d0358f fsg_show_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 0x714fb51f fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 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 0x99c0954a fsg_store_nofua +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 0xbf756a4d fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xcb906988 fsg_common_remove_lun +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 0xdb88dd9b fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe03d348b fsg_store_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 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf8f06f92 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xfc9ebe41 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x03225335 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x03d53e5a rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0566fcdf rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0927c211 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x09aab138 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x17f87503 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2d3ffd24 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x409db636 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x60222d91 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb0d709af rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb3507681 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb7fbdec2 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc6594d1d rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe95e1d36 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf6260da5 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x03b9c6c0 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x05087d71 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0aa85da9 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x125779c8 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x14b2e450 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x175b5613 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3f10e3a0 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3f23b956 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x406c0197 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4b81a8b7 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x58247264 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5ca23d77 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x60b54027 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68249463 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x798f0a58 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7a1741f8 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x801f7365 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x98662216 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa4332b6e usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa53a793e usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xac604f47 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb7bce555 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbb9be66f usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcc6acd9b usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcdc34c8b usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcf955fdb usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc40e4e5 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf9f77ae3 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x186e147b usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1f4cdb3e 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 0x422fa157 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x451aef74 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x54a8c1ab usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x61a576e8 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x743221b0 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8395a24c usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9ff65bb2 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa17e599d usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xffffb107 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x46944ec8 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x87cf710c ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x146a0e3b usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x201c8b1d usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x48d2cb17 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7ca36f64 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x85106ba1 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8a4a31bf usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9a493582 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xacb273a7 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf30d4bb3 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x4d563e72 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 0x00d11655 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x1872a48d usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x08bc32a7 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0d51271b usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x24b7c62e usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x256ed310 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3b16f9bd usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4fc2316b usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x67e0a55b usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x69e3ecff usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8108cf2d usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8264e28f usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x839f60c4 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa9d71b65 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb0cac4ac usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc56ed801 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd8d62315 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xda5c7527 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdd69f385 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xef4c2567 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf2932a3a usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf44a8e5c usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb91d9f1 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1486c59c 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 0x1dd83fa1 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f47ee14 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f6ccc5a usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x572378f6 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x659dd967 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6ae1c88c usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7749a83f usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7d63d535 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x89667e3a usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9f76596e usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaec69026 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xafa61f57 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb29c3b3a usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb57bd235 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb87ab79d usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb96d1117 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd12cb1e0 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd2a522ea usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe59182d7 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe83a9670 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf003a756 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf12f0fed usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfc42425a usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x138e9269 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x24dc47a5 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x41869e2c usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4d7f8eb7 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x528ed0a1 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x56d6852f usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5b276d7e usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x652ac007 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8283e71f usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa2a05d43 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb3d25445 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb9b4cb1b usbip_stop_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 0x28964a48 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9c430d69 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xae8ceed0 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb7bc163f __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb8fe94d8 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 0xefb03fe0 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfa77c374 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x01fc3e65 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x22260c36 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x54ccbfd8 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6bd5d695 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x78778330 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7ae06428 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8512f248 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x870cfd21 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa63738b0 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa8e69172 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbe66c4f6 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc0a18327 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd0401fc1 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xede7f622 wusbhc_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 0x0ebc806a i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x295afb0e i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x71266266 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x16d9626b umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x453721e1 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x50f4ad1a umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9ad2a0ed __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb4123dbe umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb93fc08d umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xbe7a2fb8 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf9382836 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x00d43ff1 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x07974059 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1ba6c9b1 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2d01b52c uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2ec067d3 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2f4c8202 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x38c2ea2c uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5257cf1d uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x59bbdafd uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ae76ae4 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x676e8c6d uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x762d3144 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x784407b4 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7b722f06 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7bc98eff uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7bde815f uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8a605c8b uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x95cacf00 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa9366f9b uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa952435d uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xad00473f uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaf3e0d8a __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0440945 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0fb43bb uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbe5c459f uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf080a85 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc0b47619 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc40fc243 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc9938615 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce683709 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd1ea08c5 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xef24a94e uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf3bb8e11 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf687498c uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf913c0db uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc33613d uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfd647789 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x64d5a6c9 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0801f970 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x084204a7 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0f08b163 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1caa0910 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x204ea196 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x27e25f5b vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3a27266f vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3b68b3fb vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3ba3016b vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x494a1914 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4dabd56a vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5663b79c vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x650a1778 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x69625b55 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6f4ce8ed vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9543792a vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa24806fc vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa7461766 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb7a3fedf vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb823a61d vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbeaea946 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe15c823b vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe189fa6b vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe71e8fc4 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe8b4fc81 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xed72a21d vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf57d66d5 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8b10977 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfb934d9b vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x15284a9e ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6c4440a9 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7395fa24 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa11d316a ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd6c9ee7c ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe2c68c6d ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xedf94cdc ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x09771838 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0a07b3f7 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1173f10d auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x7be4e4f2 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9e259ece auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa739a6cb auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb38e2f24 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb3d66cd0 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xcf0e43ad auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xdd75578c auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xd4477088 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x5490dd57 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xf318002b sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x03ac2176 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1d34efcf w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2c9de791 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x50079d11 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x78ece522 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc5c11bdc w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xce1cbd70 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe062f41a w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf7e9c65d w1_write_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00e646c4 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6cd41520 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/dlm/dlm 0xe9c4863c dlm_posix_get +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x16459a56 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x372e4be2 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x65f2cf15 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x72f2cdd1 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa2dc21c0 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xab3f9c8a nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf04b57d7 lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01eedebe nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02d9390b nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04e132bb put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0521d8d1 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08c17be6 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a5be3c3 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a792a5d nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c53b018 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ed279cb nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ee0372c nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fe93620 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11ac21ab nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14b2835a nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14c442a4 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x170d1120 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cb51223 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cf576b1 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x210ad16b nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2382a5fd nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2391a884 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27cdb784 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x283863bb nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3055a3bc nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x317aaeb9 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32f52404 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34392ade nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35938cf0 nfs_setattr +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 0x3f0305c3 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3fdacd18 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47050653 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47c58706 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e1fdb54 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f396a00 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51195706 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51211d38 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x516217a6 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5234cf30 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52db4c95 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x544309a6 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55535229 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x571a193e nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5893a825 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5914157e nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5af4b30f nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d4da2e1 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5de37fe8 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62f5ed83 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62fdf83a nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x638b03ff nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6976659b nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a6ca047 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b830054 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c1cd09a nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e9dcdd1 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74510145 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a68a4ab nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bbbf4e6 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d7b8356 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f55ba8b nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8015bb5c nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81c9a0dd nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8234c9d6 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8633a22f nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87bc2f33 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x899e9b70 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f3ee0c3 nfs_retry_commit +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 0x93af2c70 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e0b4613 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fa1eab9 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0119541 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0a7395c nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5bc6b09 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5d9e66e nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6490e61 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7a4d1b5 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 0xa907c1a4 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9a61e53 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab00a716 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaef58093 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb05ec9bf nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb10385d0 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1f390fa nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2ca5fc6 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4347594 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4a63a24 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb547e015 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb61e634f nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7abb44c nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb87b5cde nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8958b1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2c6f937 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc386dec5 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4596e6c nfs_file_fsync_commit +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 0xc81c4f74 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc988b22a nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb847ec1 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfd3a6e1 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd09aa022 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1ddddd8 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd338d5a3 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd462076e get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4bb4339 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd64b00b8 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda46ced1 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb90e170 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xddbfcfd0 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdfab08fb nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4981df2 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4ab1727 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6e47003 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xece353a5 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedbd151e nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee288601 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee8ef30b nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0a93b46 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf22269e2 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2c29ed6 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5c2f1a1 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5ef1b4d nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf60c083f nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf725eb9c nfs_unlink +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 0xfe79b6bf nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe8d96bb nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfeee7634 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff82960e nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x7a4800e9 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08add2ee nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08fcb006 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a96751f nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1258c61d nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x18b22d4c pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ec81fe0 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ef477a2 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f3545f1 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x202f3418 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x28751e25 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a02edfe pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x384c31d5 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e2bcb1e pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ed41253 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4b4120d9 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x525ea99a pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5483df42 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x56391f8f pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5839e156 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x587e2c41 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5b649af8 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6858e802 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x70fbbaac pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x712d6330 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x74af1fa6 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8809fd50 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d420e06 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e53561f _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x906d529c nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9c992165 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f21479b nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa7615984 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb09dc88f pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb18cbeb7 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe3e64dd nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbf521901 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc00875e8 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc19237ee nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3cac907 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4358695 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4bf16f6 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc58ccd4c pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc865c841 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd7cf59f pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2e4529d pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd3305cfc nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd905d77a nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdad866e8 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb22bca2 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde8f5dad nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe14f2925 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe283513e nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe8296f4d nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xefb09b7e nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5192ee6 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf566959d pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf593a451 pnfs_layout_mark_request_commit +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 0x9cbd8219 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xef407772 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x59c7157c nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x99ca7354 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x09662aee o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x15096a98 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x15a41a80 o2nm_node_put +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 0x1f384f50 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x3cc19f3a o2hb_unregister_callback +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 0xa0344d3c 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 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 0xfd8ecc9a o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0827430d dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1ee7d763 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x25f934fc dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x2ddffa0d dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x46d4ac6c dlmlock +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 0xe4a11f9e 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 0x60ca3b8f ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x74685cc6 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 0xfa6c5205 ocfs2_plock +EXPORT_SYMBOL_GPL kernel/torture 0x0457cfb2 _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 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xcea5706a _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe6ff0f20 torture_shuffle_task_register +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 0x111424e5 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x62931529 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 0x5a57a5db lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xd734213f lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x0ea1b90e garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x2c703991 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x49b1ea56 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x65f4b189 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe1efc422 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xeb03c6aa garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x0855edd2 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x182ad10f mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x229d363f mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xcbfb0a1d mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xd77d1ea3 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xf65133a6 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0xd803e808 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xfb797661 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x49c50e3a p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xc8ba71b9 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 0x6bbf3ce6 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 0x0b599a50 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1c594b02 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1e5f9802 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5a72bb1c l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5ffbe3e9 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6a1ebb51 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x74b4ffd5 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbbc5b6e6 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0ca539e7 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2c3b9784 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5e53f583 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6ac493e6 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6f10e73d br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x73b71446 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xee34d767 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf07c3225 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x1aa715d6 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x63df1382 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x020a01e0 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1354aab0 dccp_init_sock +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 0x2255bdb2 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x22f042a0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x24f44dbc dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2f8807f2 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3918ed5d dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3bc5141f inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3f6ae2b4 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x47e4dbdd dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x48725ffd 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 0x5153086f dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x55ddb6d8 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5ca51974 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x69e1dd08 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ef11ec6 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x73877c8e dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7c245136 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7edd5a3b dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8968026f dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x90cd0227 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x93f7c4b2 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b971d77 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1e0940c dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xabe81b81 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb18a7f9a dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb681f338 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb8e5e7f2 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb9ff3115 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xde9c6d0a dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdf518755 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4909c48 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8f238cc7 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xacd934dd dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb5493119 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb842b5d2 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdad9a342 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdd29a91d dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6d6739cb ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x716a686d ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xdc038c4b ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xe0c05e18 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x2a11c5b2 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x3dd9ebdf geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xe009bb26 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x33d629e1 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x657417eb gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc83edbef gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcd726f38 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe1aeacfb gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6cafed76 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8e02cf6b inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x90edd8a6 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd3472b87 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd5522d77 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfa52ba93 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0a521a5e ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0ad4ed3b ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0d0adbaa ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x21167f7f ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x229d5682 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4d2f433e ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5d1d3c62 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8fdfb836 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9be0679f ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa173c7ce ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xad217b71 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbb0554c8 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd8e2ab3a ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfdeb3500 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xf800b09a arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x84ae91c3 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 0x4a416708 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x564c02d2 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x753d3949 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x81cefc6b nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x979521b8 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 0x9350be28 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 0x718647ba nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x962c609d nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x9c2a8e75 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xac4573a4 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb91999a7 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x83f7a1fb nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x7827dadc tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x7bca52ef tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x947f6533 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xade8a040 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xafd328ae tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x4e99fdc5 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x569a8485 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xda6502ec setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x56d252cc ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x81343402 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8c1ad363 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xaaa0f5ea ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xac69a49f ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x063c6264 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x787d53b7 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x990aca1b 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 0x04c703f1 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x2b41fe40 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x72bb3650 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa55b1f83 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf560973a 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 0x81cbc183 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0e07d1f1 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x14859e94 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2082e268 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7c722d39 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xbe5310fc nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x4c0ca814 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x09ff3090 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x10bfbaf3 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x205c1fcf l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3a43ab69 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7b7bd331 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x81c6053f l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x81e27565 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8f54e495 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9c86f2c3 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9f3c2d45 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa0b351f4 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaa6fa888 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbf826b4b l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd14e5dc5 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xeb07db9a l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfa497b9a l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x061eb82c l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x195bc972 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x26699a9f ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x311436e0 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x38b54d41 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x59466596 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5b2aceeb ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8082387e wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x861ffbdf ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9fc7beaf ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa4f379ff ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa6d4f2df ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xafd10ee6 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbd161b86 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd42aff15 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe46a2d1a ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xee3cde79 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x04403921 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2fdbc127 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 0x398c1073 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4d637eca ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4d68e2e3 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x59f68e83 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x78ca6f5a 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 0x7b6df5a3 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7e19244a ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80854176 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 0x96c64437 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e810ddd ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa253f095 ip_set_get_byname +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 0xa85d197b ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xecbb6afa ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf74c87c8 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1725b11e ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1dc92001 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf1100fd4 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf5ba4ee5 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06e7b60f nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x08eab2f8 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09286ec0 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0accb62b nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c6b1557 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11113097 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x13655fed nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1662c0b2 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18e05ef0 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c51fc30 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2638edb5 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2add863e nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bb4b6d1 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bb9dbfa __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3181aeb2 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3285bc62 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ac3bec6 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d7c153c __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42bef518 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x46557bbe __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51923096 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ac84ffd nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60e10699 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6235e407 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64db3028 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68e7621d nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69aa6066 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d06a537 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6eedbd5e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7088979a nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x717c7c27 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72b6850c seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x749221e1 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a40b450 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f8eda34 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8288f9a1 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x839e1dd6 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x839f6292 nf_ct_get_tuple +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 0x923cf93d nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92b7a1b8 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x937b2b60 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93e12294 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94ee851b nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95202302 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x977fb666 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9980d548 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99858c0c nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d15badc nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa00a9bbf nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4dbf3a4 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9d34b5a nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa554144 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab090557 nf_conntrack_find_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 0xb4b0bce0 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb59614ed 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 0xba378c57 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd2728d7 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbea336ef nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3b9f3ed nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3fc3113 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc5d348dd nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc971600f nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5695044 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd73bf6ff nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd95515d7 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9e72507 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb2abb77 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe313b96b nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4ca3969 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee38cba1 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeecdaceb __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf06832ff nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf11be118 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4a418e2 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7549a89 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdd1dddc nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x2afbeef4 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x03ac4a0c nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x44da5174 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x08787bf1 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4881c94c set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x73565140 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x811cc79d nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa2415230 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaa34f94a nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcf390542 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd644503f set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe74f544a nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xeff4c57f nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x4b164e21 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x48154294 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8e4d1cd7 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xda1343ab nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xec44ff3d nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x93a79f10 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xeb98902c nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x39542b62 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8e56bea8 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x930e9bcb ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x99ccfb53 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa3ca8657 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa77d3bdc nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd84c6b06 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xac6f50fb nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xc21f0eb2 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xaaeb693d nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xdcb33c9b nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xe4e11b3d nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xedc7930e 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 0x14335a91 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6d0d1613 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x71cadc92 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7336c115 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7fa67b14 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x85c3026b nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb3832418 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb44e9452 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd5e55e8d nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x617109ad nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xb942044f 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 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x7782aa75 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xa6e9d5b3 synproxy_parse_options +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 0x0783b16d nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x174e6d78 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2fef7d62 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x30b5bbd7 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3c735619 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x408a5d8b nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41f2e4c7 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4ad19958 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x540f3c7e nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x58c0e433 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6cd31f26 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x847f54c2 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x97afda28 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa9da08c7 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb0412cf7 nft_validate_register_store +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/nf_tables 0xf546a1ff nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xff5ab15c nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0b213950 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4adb4a48 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x71e8dcc5 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x732f43fb nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7c54d907 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x84700f6a nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xaecd1ef4 nfnetlink_alloc_skb +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 0x5dfb752f nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xd78ebb3b nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x7666ec3b nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x8bb47d88 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x917af39c nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xb97b2763 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x03c640d9 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x630f111a nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x716942be nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x751c48e2 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xda3811f0 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xec713845 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x28850d29 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x9f461d1c nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc54a7e6b nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x013da0cc nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x3d582654 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 0x2ef1a929 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x346ddf33 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3ca60fb7 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x79801dbf xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x890e0bfe xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8e5a973f xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x941212f2 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcc7fb649 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcf22d8c9 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd14badc2 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdd53cc76 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe17972e6 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe3cd3309 xt_hook_unlink +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 0x7b064942 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x9e642f3e nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xfdc04ce6 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x070cd84d nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x420273c9 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x7699fbce nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x11267033 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x678daa06 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7355d5db ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x873073a7 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9c31214a ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb25a2566 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xe409a55f ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x011d04d2 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x046ce248 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x1175ab48 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x15f9aa34 rds_recv_incoming +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 0x3bd6417f rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x4b584f21 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x4d1deb9c rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5e9d5d98 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x7316a8c9 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7e3046a8 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x8a6ba490 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa110a233 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xa568aa80 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xae24134d rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xbc2cc496 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xc256fec1 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc4bba86f rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xe12883fe rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xe13c59e7 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xe56dcd19 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xe5c5bf92 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xebc51cfe rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x708ad422 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x7a671614 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 0x14853ec3 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2a479c63 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 0x9905d8f3 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/sunrpc 0x01f3e1af svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02c391c6 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x040ad80f svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0433d5cf rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x052bde66 rpc_clnt_swap_activate +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 0x0673cf46 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07d0fe46 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x085bd82c rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0979e737 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e0bb633 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0eed3aee rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f402e11 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1050e88d xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11d8e0c4 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x123dc3f3 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14bbd4e6 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1500d92d sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x170bc3ff rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17fecac8 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1820bd3c cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1848083f rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18f1d8c3 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1adf100e xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d1aece3 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d512f51 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e74803d rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fbde871 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20916db8 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20bd065c rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x222bf2f1 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23d0d904 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2504bfc6 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x298ccd8d rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bf92a3e svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d4a8063 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dbc0393 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dc2e38e svc_xprt_names +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 0x30083c34 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3246071f rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32cdba52 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x334a928a xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x339e3f96 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3533dfa0 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35acf28e rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x377cfbbf xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37e30cf2 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b4853a2 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c0a23fe rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e83d64c rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f4ca842 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f77263c rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f951eb8 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42235adf svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x452ee456 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4693d2ce svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46c69366 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4807f3f3 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a87514b rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4aba25a8 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ae5e981 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b3fd03c rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b69f36a xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cc9fccc xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50a7aabe cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50e77565 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x512f4499 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x533fac92 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56ad4d96 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56bd4642 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5731965e rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58647840 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5869e8b6 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58ff40b4 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59cb64a7 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a75d174 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b6e426e rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bb9c5d7 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f9ddfd2 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62f2c29a svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x655d3a55 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ca7e0c csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66eaa9a7 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67a7888c rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67de1c29 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67fd3a0a xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a3ac623 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a53fb0e auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a7597c6 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c6cbe26 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d3c4357 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fbcd842 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fdb21ca rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x707524bf rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70f11de8 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73164ba3 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x739e55a7 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x744a0068 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74db90b9 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a41eb88 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a7633fd rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b280c4d xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c784f05 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cb2e34d rpc_clone_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 0x80f02dd7 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x811e8687 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81421861 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84c084a6 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x858311a2 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x869f4499 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88dc3438 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89a2f02c rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89a6f987 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89ae3d9a xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fe1c51f xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93363590 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93703e12 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x965f9a7d rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96a80222 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9857fe1f rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99c560f1 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99ca27bd sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ad2a48b xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b616900 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c166ed0 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c4bf4fd rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d49df03 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa18aff88 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa374cb15 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4dcb857 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7110049 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad282b14 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad50b3d0 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1ffadad sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb40a9202 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb43a6e86 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4b95c26 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8ce25ca rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb92ed40e svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb98bee3f xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9e2746e auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbba3a018 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbe2cee0 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd291513 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe2b8a77 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfa884b1 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0692faf svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc20fa10a xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc352d0b0 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc48b5b96 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc582ca95 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5c6d7cc svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5d8c4be rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7dbaafc sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7f703e7 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc922107b rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9347df7 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9bbfabc rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9e92e20 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca6bb3b1 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc50ea5e sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccdb3246 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf06af6e xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd17c2b8a rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd19b8d2e read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd31fe534 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd71a00e6 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7ae8923 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9b79219 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda450c7a svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbc25a01 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcd528e2 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdce31701 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1e6395b rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe750bbe5 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea38fe0a xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb3d8c2a xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec2a72cd _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec35c0fa svc_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 0xf121e0fd svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1a96595 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf27cde5d rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf299f612 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf533f7dc put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf689ebbe svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf913c047 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbb3d22e cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbe23c9d __rpc_wait_for_completion_task +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 0x165bd7da __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x277cbbd7 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x33df881a vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5508f192 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6b43dc4c __vsock_create +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 0x91fc8a10 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xafe31c22 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb24fa037 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb8475555 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xba0d2cba vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd41d0274 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdbaa9b2a vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf9515b02 vsock_remove_connected +EXPORT_SYMBOL_GPL net/wimax/wimax 0x052f2a41 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0deb2f06 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0e68d37a wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x12d27605 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x12fc7e17 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7200319a wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x73493c13 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x878f885b wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x93aec05f wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc457bb15 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xde55d66f wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xde596f48 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xed0afc34 wimax_msg +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x03ca407e cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0fdf902f cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0fe937bf cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3434620b cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x46de7449 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4bb38680 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5a4e53b5 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x70745374 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7f3d69a0 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa2564fbf cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbd2e73a3 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc889e06b cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd3bf3abf 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 0x3216b1fc ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4d13a49f ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5bff1faa ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xa4afc01a ipcomp_input +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x9c42256b snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x9cceaf67 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x05a3b52c snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x0a4dcee1 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x1a340872 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x31c5828f snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x6478e700 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xaab30cc8 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xd85ea40f snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x4dc761cb snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x6fde843d snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xfa19d9b0 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 0x0c676591 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1971bd04 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x2e63860a snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x3e7042e8 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x68b7f714 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x82331bdf snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9a14ddf6 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 0xcda9413d snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe29dc444 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x08faea24 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x0a198a8e snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3d9cfe68 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5256b455 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x62257858 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7db3d8f5 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9a3888cc snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc3dc2365 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc8a9e8c8 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xcb093113 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf99a5cbc snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x05e97f23 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x07657cc7 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0bb12336 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0f9a2324 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1257652d snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x14885eaa snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x175ef5d9 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x18beead5 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x215fb894 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x21ef3a4e snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x23a00389 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x24a11b2a snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x26cba6b1 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x29af94e3 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2cff74b1 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2ee06ed2 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3765d4a2 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x390a4c49 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3b849f4e snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x43029d32 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x451275fe snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x46f0bdd1 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x48119a95 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4a4d1781 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4ef0933d snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ba564c1 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5bd0395f snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5d490138 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x65c30fef snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6a0e5eac snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6cbfafb3 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76e3457d snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7e532a7a snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fea6942 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9166a1c1 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92b9b80f snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x941cae49 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x970950e0 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9927d53f snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9c46d78f snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa4eabde7 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabdcb88d snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xac093620 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb77d8d98 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba97bd86 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbcbc1928 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 0xbf475e14 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc1dd798c snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc30aa208 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc82f1f75 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca1018d6 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcb37bd17 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcd46d627 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcf26804f snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd24ee097 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdac83901 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdae5a3e3 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd256b1f snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe0e51881 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xebdb3cd8 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xecdedfd2 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3a5953e snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa386449 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfbf40448 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3394d818 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3c5892c0 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x566cf601 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x62259e16 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc8e2863b snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xedd29e08 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0165f9e2 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x027a2473 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02d998b5 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x031f4307 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07b55498 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12aaff13 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x133dc9fc azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14ca2cce snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15a7a647 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18aecd12 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1bd655dd snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x205c0bbd snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23b8f170 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25c00c1e __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26adbb46 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2918100f snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d0151b1 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2fd7b53d __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x321d9aba azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35db5fa8 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3742f593 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x378ccbe9 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37b1636c snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a0144dc snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a126e1e snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c1348ff azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a392ea8 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c7eb230 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e52dca1 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4efb52fe snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50841b29 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x516572dc snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x551a9d60 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55c47171 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a3d65c6 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c26de00 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d19a2cf snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f17e39c snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f36bed2 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f9ead48 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fc7f41e snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fdc0e55 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60bb7297 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x629edc13 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x655f9f51 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x694f93e6 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ac3b728 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b077eee snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6be4e56d snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d0ecedd snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7282bd72 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72f01712 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74c30b96 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x750083f4 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76afdeeb snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x778cd845 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77ce89c3 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fe7e4d8 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80fe1739 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x828edd65 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8444a7c7 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8615fdbd snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x874f5c4f snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89440b38 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8991c190 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e539082 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f155bfc snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fd89643 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9095eede snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9519fe3d snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9748a447 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x988c28ff snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x99ce885b snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a6da7d3 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b80e669 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9eb52d47 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9fbdaecf azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ff42b02 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa13221b2 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1df4eba snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa32cadb1 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa671d1b5 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9d1c85b snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae2498bc snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb192a395 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2113347 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb25451bb snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6043a95 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb65a37d8 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6ba5b35 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba6aba03 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd107d0f snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbdd9d84f snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc105044c snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc589e12b snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc71aa6b3 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 0xcbdc6809 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd098212e snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1c33424 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5d20e10 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd69efa09 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda8131f3 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbaa5e22 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddcce0ec snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde0a1141 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe04ed159 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0505c0c snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe156c9ef snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe238b2f8 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe72c5942 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9355d48 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec605867 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xecd4a573 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed7eab71 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee85ff09 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef5975ae snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0c7755e snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2101b12 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5ba3759 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6582b98 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8a816dd snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf952d59d snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfaed48d2 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb529479 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff021d9b snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0e950c8f snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x162c6b8d snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x26af9899 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2b59d280 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x320220d3 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x34fc1f69 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3f3e6427 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x41e3ccc0 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4a92a886 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4e6eeabe snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x84513abe 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 0x9cf80c6a snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xac37cc78 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xaedc7622 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb54bf2de snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc050fade snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc8a24515 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xca337260 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xca9370c9 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xce4caa8c snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe289c5ec snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x0775e3d3 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x92f2ad4b cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x13ee1441 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x69a57f29 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x1a42ea35 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x521ffd53 cs42xx8_probe +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 0xdd8007e8 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x4281ec59 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xd63b0aee es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x3d860aaa pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x966995de pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xbff3bb56 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf903370b pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x43236a45 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x49e23549 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x53c58b6f devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x8ece3bec sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xd26c1879 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x49cb1be0 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x6aa29266 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xb5b059c1 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xb0508264 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xb247152c tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xa8528ca6 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x3225687d wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x4a31e844 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x6272c8e1 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x9a562feb wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x999c0748 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xf00aa8a4 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x45e09497 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xef4cf114 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 0x00c0fa80 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03d5eaaf snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03eb0152 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04088f8a snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05623a2f snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c1b8fee snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x123329a7 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12ae74c4 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1415c787 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x146288e8 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14eb854f snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16472920 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1665c4c4 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17db58be snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x182e7861 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aae19ce snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1af80a3e snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b63d4e4 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2298b6dc snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x239396d5 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28d4219f snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c3fdacc snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2eae357c snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36bc87f4 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38cb6592 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b70100c devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d37ad09 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40625504 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x415e1391 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42cbf6dd snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42e98c12 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x435542ed snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x443dddc0 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c185bb0 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e16cb0c snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e4e07c6 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51093e41 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x556e2ccc snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56522c1b snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x568ef019 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x577c3faf dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58dcf17b snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c6d4f7c dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d14921c snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e2fb61b snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61e8aad3 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62f0a2e2 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65ea1036 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6684bc3a snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6688de35 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67872cb5 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67d27669 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69436870 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cba1198 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d6d95ed snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ee9ffad snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7010d4c3 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71db4b57 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77969722 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7899ee8c snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78a9710d snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x796c5aae snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a3431f1 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b2d8ff8 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c2c1de7 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fe4f14f snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x822d855f snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82fbb967 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x848c79dc snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84b0b099 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8511e420 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87d59931 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x886d6272 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x887d8b9a snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88b6d678 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8be75d8d snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c0d00ca snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c1015af snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8cd5de05 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8fa048e4 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8fc23e42 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90b3c36d snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92519920 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9300960e snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93029294 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93691404 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93a987ef snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97aa948a snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9aadbf8b snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0770391 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1a316e4 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3728c05 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa407d8b7 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa559492a snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7ddf1ec snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8c2c6f6 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9bde6d4 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaac7148b snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab239273 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae460d41 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb02e8139 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1ec6359 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8a7800f dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb943b9dc snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9ceba00 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbaf626d snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcdab685 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbedf2f9e snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc033f8a3 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc11dcf3c snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc20a1557 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc385b99d snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4a96415 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc84345c1 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9172f48 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc99d0076 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbb4c947 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbcc42b1 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbfbcc10 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce9f9c95 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfa29b02 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd14b5712 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd607fd43 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7531f19 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8e415df snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc289348 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdeb29dcb snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf969a22 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5c12d81 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8d86ad1 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe986e389 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec192d5d snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec87cab7 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xecd251bf snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed8916a4 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeddcd823 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee27e8d5 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0ab3903 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2455fe1 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3dd47f9 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3f06622 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf41249ea snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf899b51c snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa7441c5 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfbd56769 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdb1525c snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x05c87398 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x06d2a985 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x190e6665 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2a20adde line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3dd221ec line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5df7d75e line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6941179a line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9e0daee1 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb7af0e83 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc56040ba line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcb73e6c8 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xce5d1f39 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd300dea5 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd9cb41ff line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdf0dcd1e line6_write_data +EXPORT_SYMBOL_GPL vmlinux 0x004ecbc1 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x00742bf7 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x007663b4 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x008f3085 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00ccd7d9 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01019175 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x010f83cc usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x014f1453 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x014fd91a da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x016406f1 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x0183f060 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x019239c2 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01977a6f invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x01ba0eda ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x01cdab45 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x01d075bd pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x0229b7f6 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x022f3475 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x0232c4f6 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x023e0135 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x02464c97 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x0256640c do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x026f64fb dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x02867c9e cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x0292f875 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x02b58d8b rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x02b92334 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x02e23cac rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0310a217 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032fceb4 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x034102a8 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x03430fdc crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x038b6fcc clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x03967cb0 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x039a5638 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a074df regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x03b0d6b1 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x03c4ed26 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x03ca33ae rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x03ccaa12 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x03da1bca wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03ebcfec driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03fffa41 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04054786 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x041a859f fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x042b8b95 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x04548a61 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x0460c451 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x04650b15 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04a6eea8 da903x_write +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 0x04cc5461 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x05086309 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x05170ea2 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x0527e5a6 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x053fb94b virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x054b8d58 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0550f051 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ec6e40 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x060f180f blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x061d215f to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0647bf7b gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06903c98 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x0694594d component_del +EXPORT_SYMBOL_GPL vmlinux 0x06a038e4 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x06a33422 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x06a86fdc regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x06c11375 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x06d735f4 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x07298d79 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x075eaef7 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07774b43 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x079dc224 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x079fb2aa crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07c44c0a smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x07d70e15 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x07f34ea8 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x0805b81b dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081c142a add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x082dadbe devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x083de4f5 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x085fd75c __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x086745f3 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x087d4c2a inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x088379dc of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x08842689 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x088548fb i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x0885d707 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x08a55da6 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x08bfd80b pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x08c02c21 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x08c14e0c clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x08e24e3c rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092c7dd5 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x092d5232 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x0938e44a kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094d777f irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x095f6224 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x096eeb77 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x097ba395 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x09a796e4 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x09bb683e cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x09d48967 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x09d99650 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x09d9cd3c rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x09e94276 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0a3ceec6 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x0a4c9be9 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a633a0a led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x0a78d3ff ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x0aa42bae blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0aacca4b devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x0aee2415 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b064f52 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b276e4b pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x0b37a6fe usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b7991a3 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b87ecf0 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x0baf953c is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x0bee3901 ata_std_error_handler +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 0x0c4a70bb wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x0c8e3b9e xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x0caba351 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc46559 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x0cc5099d device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x0ccac652 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x0cd0be1e debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x0ce1d72a gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x0cef1973 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0d0e92dd of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x0d3e5a08 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x0d4860b8 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4be562 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0d4d696d gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0d56c212 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0d5a94e9 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x0d6352f3 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d8ddbc1 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x0dabe016 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x0db52b6a thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x0dbd6339 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x0dd7e4fe sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0debeaf1 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x0e150e87 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x0e2fabaa sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x0e35a3ab dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0ebc7db1 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x0ec35bd2 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x0ed0f507 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x0efc9f97 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x0f13c132 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f370bd4 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x0f690dc6 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7dae4f dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x0f7f50d6 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x0fa52ad3 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcd6123 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0fd6df95 split_page +EXPORT_SYMBOL_GPL vmlinux 0x0fd92e69 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0fe95438 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x10069886 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102a5914 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x10328c79 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1051f8fe driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x105f76cc ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x1063779c uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x108037c0 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x108653b0 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x10c1f2a8 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x10c61276 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x10cb61da device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x10e2b13a syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10ee2c1b dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x10ee3d65 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x110ed4f3 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11159423 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x112c717c dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x1138c1d6 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x1152cb45 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11851c4e kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11becb12 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11ef8177 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x12043245 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122f0f90 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x124efa13 kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x127fcdf3 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x12859093 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x129a282c extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x129f6743 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12e07bc0 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +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 0x1374e5b3 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x139adbc4 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13aded44 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x13b7ce19 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13ee3744 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x1421d951 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x1433d155 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x143ae599 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x1455cea4 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x14742098 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x1482c4dd page_endio +EXPORT_SYMBOL_GPL vmlinux 0x149894d9 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x14c8a462 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x14d3817a sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x14d597d4 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x14f018a2 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x14f79444 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x15580eba transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1564202a pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x15707273 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158ef86a devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x15a4a792 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x15b1272e inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x15b7f6e6 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x15b87319 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x15bb67db ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15c5e691 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x15cff1d8 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x15d022e4 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x15d98352 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x15ebef0e dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x162a7184 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x167b7d01 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x1695e630 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x16ad479f ping_close +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17902377 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x1795847d tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x17973d24 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x17987ffe md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x17a38680 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x17a98285 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x17b1d875 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x17b83109 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x17bf4411 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x1848bc1e usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x18764c36 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187e6ab2 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x188e77b7 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x18b1636c led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x18b60dc6 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x18cf9233 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x18f306d4 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x18ffd3ec regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1900af4e inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x1902dfa7 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x1914cd19 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x192764e4 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x192f8595 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1998a2cf debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a3a1f2 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x19ad21a3 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b94f8e of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x19d5ca4a usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x19fc717b gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x1a07470a cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x1a0ae4bd pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x1a12016c of_css +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a26bf96 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x1a2877da power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x1a50102c security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x1a647e7b kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x1a64e68c regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a8f24fc nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1ac85c54 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1accee02 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1aff29c2 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x1b2aad80 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x1b38c962 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b5f1173 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x1b6342cf pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x1b73d17b devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b89d67f fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x1b931929 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bb48600 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x1bd776fb wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1be5a29e ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x1be97dac kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x1c011899 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x1c050a20 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x1c063fed usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c566469 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x1c5a6b88 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c967fa7 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x1c9f05d6 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x1cb3d0d2 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x1cc2e47e usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x1ccdaec0 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x1cdc6c27 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x1ce94a3d get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d161dc5 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x1d1ecb1f power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6132a5 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1d6aaec4 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d9572c7 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x1d96bb0f relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x1d9c35a3 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x1dc139d5 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x1de136ba dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x1de78d45 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e2795ff subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e724fdc usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1ea51d9e single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x1eb1d844 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x1eb41072 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec62d9b sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x1ecddef6 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x1ed2fadb platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1f0203fe dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x1f23a07f regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x1f302e96 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x1f3fbd67 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1f48a58d rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x1f49a08c da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x1f49c4c3 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x1f4b0a1a tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1f68a2b4 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fb421f2 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0x1fbd2556 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x1fc5f1ab scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x1ff2c115 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1ff2f9da trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x20470e04 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x2071e42b dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x20820513 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20ccc4c5 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x20d30773 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20f4f7a9 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x211f5b14 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x212796d6 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x216d4219 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x218afd84 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21aceffa ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x220a3e49 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x2238f5a7 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x2258dda0 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x225e1755 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x225e5992 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x2268ae69 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x227cce88 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229e27be rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x22a54fc2 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x22baf243 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x22d67f4d sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x22f402c4 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x22f85464 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2317501a i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x232be6d8 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x235d6a56 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x236c8b50 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x236f49f6 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238cc4ad debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x2396bd72 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23aae58f crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x23c4b61a regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x23cfa2a4 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x23e48498 kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0x23e79b5f devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x23f752ae max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x240613a1 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x24293a68 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x24323fa1 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2446369b of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24a208ac generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ab021a i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x24d9b392 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24feca5b usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x252e63f8 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x25388be8 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x254f4d30 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x25572d7d devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2568b2d2 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x25769a3c crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x25955e0f usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x259c7550 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x25b46754 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x25bff561 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x25e09acf platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25fbd290 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x25fd7963 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2647db4d ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x26497946 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x264bf9a0 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x264cf8e8 balloon_page_dequeue +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 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26dffb1c of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x26f50227 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x27195fc5 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x271b587c regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x27401a8b platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x274e9397 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x27768dfa rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27f0442f irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fcbbc3 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x280a981c uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28382eaa of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x285f4158 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x286d4895 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x28a20666 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x28a94066 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x28c4355b stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x28ec70e2 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x29045cbb wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2910ed96 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x29163c98 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x292a1251 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x293818fe device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x293e0aba irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x29411fc2 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x296421fa __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x296a06f2 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2985a0f4 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x299d9ba4 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x29a23b27 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x29bbb772 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x29e85e23 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x29fb7dfc smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x2a0bfb62 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x2a26e175 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x2a3707f3 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x2a377bb9 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x2a41d6f6 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x2a476add reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2acbd324 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x2acf4ea0 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2ae6a659 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x2b17973a ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2b2ae5ab wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2b3e1c43 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x2b4148a2 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x2b45c02a perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b5d74b5 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x2b6846fa ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x2b710720 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b8629a5 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x2b86a48c crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x2b91c534 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bc804f7 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x2be4811a kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c03038e usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c5b7b96 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c83f766 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x2c8616f8 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c97fe6b mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x2ca1029c nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x2cb0eaf4 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x2cb1f49f uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x2cba1c47 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x2cc9f1ab device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cec38e2 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x2d12531c rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x2d15f35f ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x2d16f62b regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d26fbe6 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x2d315bd2 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4a2432 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5e3339 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2d67a647 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x2d6ecdb3 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x2d786abb devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2d836850 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2da08def PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x2daf2bc3 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x2db1de7f crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x2db1ffa9 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x2db52abc devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x2db6382d ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x2db95adc rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dcdffb2 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x2dd797ed rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x2dedb110 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x2df0836c blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x2dfd8e77 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x2e0b18d9 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x2e1c2957 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e23f1a8 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2e287950 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3fdd09 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x2e5a353f raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x2e75b5cd hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x2e7b8ba8 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec78f23 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x2ec7ea45 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2ec93f5a ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x2f027a94 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f264bd4 device_register +EXPORT_SYMBOL_GPL vmlinux 0x2f34247a device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f665e56 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x2f724acf sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2f82a358 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x2f86af1e aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x2f8861c5 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2f9e4b6d device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x2fa01ddd get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x2fae1e90 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x2fd01594 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x2fd4031d dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x2fea0fad of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x2fed5b21 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x2ff15a54 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x303c9a7e __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x306ccee4 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x30753f0e devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x30813b70 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x308b66f0 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x308c3dc3 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30f48575 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x3106b588 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3118f5bd skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x312d7532 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x3139d06f usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x31764fb2 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x319778e2 fsl_spi_cpm_free +EXPORT_SYMBOL_GPL vmlinux 0x31b8285f part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x31bc8704 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31c7cb62 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x31e1dfbe tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x31fec380 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x32257dcc register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3255c567 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x325cd9d4 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x3290cf22 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32a1e261 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x32afa0f7 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c2acf6 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c53429 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x32c648b1 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x32ddb0aa rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x32e25348 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x32ea312e spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x32fd5a9e ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x33000c12 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x33002375 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x3323e992 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3354b765 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x33605c0e virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x336d49e5 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x338b16dd pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x33a8a3de relay_open +EXPORT_SYMBOL_GPL vmlinux 0x33c23c77 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x33d67072 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x33e0efbf rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x33e923eb lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x33e94d88 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x340a73b7 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x340d5346 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x340ec83c __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x340f62d1 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x34528cc0 uart_handle_dcd_change +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 0x3498666c pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x34a52493 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b45fdc get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x34fe0227 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x35093ea8 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x350aaf21 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x35374778 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x354a0db7 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x354c4320 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x356ce713 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x356e9ced pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x357ed4bf pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x35833c03 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x358d2f46 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35cb866e x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x35e678e1 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x35e7ab43 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f60f75 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x3601c0b3 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362d276a pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x363122ad regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x36584580 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x366de74f tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x36780f0a arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36b00d31 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x36b41bd2 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x37314aba crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x3733d0fd dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x373a2ee4 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x3756b806 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x375cfa55 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x375d68d1 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x37cdcaa5 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37d50ec8 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x37de49cd request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x37def6b3 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x3817661d serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x382b482c regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x383ce680 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x385bf48e bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x385ec34f crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x387cc61a crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3886feca inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x38871e03 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x38a72d80 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b2d196 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x38c1a939 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ea786d key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x38ed06bd get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x38f12049 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x39037736 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x3906a27c dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x391a90ad task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x39221de5 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x392486a9 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x3950e357 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x39628c6b unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x396a6d0b udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x397b084c blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x397ece93 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x398f05b6 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x39a56973 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x39baeafb regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x39c78c24 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d8455e crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x39db1b2f __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x39df2f6c dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a21de80 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a410ac3 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7b3b71 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x3a7ca2df tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x3a876e60 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x3a8f5507 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x3a9b6d43 fsl_spi_cpm_bufs +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab5f497 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ae8ad38 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3b62401c regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x3b7b3786 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x3bac371f sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x3bb14827 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x3bb890e0 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x3bb8cf97 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x3bef06ca blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x3bfdca19 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x3c260617 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x3c48f4d4 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x3c575cad usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x3c6246b6 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c95ef12 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x3c9ecbe1 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x3ca2727e sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x3cac9c94 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cec91a7 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x3d07902e wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x3d084072 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d41dcfa dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x3d4b4d8c reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3d55ee19 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d77f825 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x3d914818 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x3d9174f4 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3dadaaa3 ata_sff_busy_sleep +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 0x3de8fa0f __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3def0ca4 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x3e082364 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x3e0f9e0b of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x3e17bde5 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3e1b8d70 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +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 0x3e792990 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x3e809126 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x3e987dcb crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3ea6cd9b pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x3edcd65f regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3edf4bfb devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ee4e76b dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x3ef71bc7 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f075277 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3f12afcd rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x3f1cb321 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x3f3f4594 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x3f58caf3 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3f819b88 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x3f8b51a4 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x3f912fde virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x3f91db7a sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fbf05cd nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x3ff4f3c1 fsl_spi_cpm_reinit_txrx +EXPORT_SYMBOL_GPL vmlinux 0x400495d7 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x4006dbe1 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x40302fa2 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40453556 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404be0d0 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x40559804 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406680e9 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x408031d2 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x40943cfd devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x409a72d0 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x40aeacfe of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e267a3 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410b1f26 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x411b43e0 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x413f4181 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x413f66f0 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x4142d6f5 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x4146b0b1 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x414bd1c1 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x41576076 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x416f8c0b rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x4170163e __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41a25fc0 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x41e09596 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x4201d9c6 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x421defa4 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x4227ed70 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x422f93a7 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x4257366b serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x4262d951 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x426ebc37 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x427a066b trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42a23555 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x42bee2b0 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x42d18806 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x42e02aaa tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x42f47e9a rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x430dd4fc bus_register +EXPORT_SYMBOL_GPL vmlinux 0x4313f6a0 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x431fc808 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x4329ecaf ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x4333c33f kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4336e5af __module_address +EXPORT_SYMBOL_GPL vmlinux 0x43398c4f fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x4397ce86 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b2129a dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43b7d1fb __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x43ca51be __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x441288e6 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x44226477 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x4432d042 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x44549dcc rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x447b408e __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44e0efd6 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x44ee0600 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x4529aef5 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x456e6b15 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45813366 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x458289df pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x458e68dc clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x45acbbe1 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45f34b9b sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x45fc6358 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461b1819 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x462cd8d0 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46405bf1 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x464dc833 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x46661bda trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +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 0x46ab8d33 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x46e3be64 fsl_spi_cpm_bufs_complete +EXPORT_SYMBOL_GPL vmlinux 0x46ec4990 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x471fb195 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x474eaca9 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x4750c1f7 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x47546cef replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x4756b912 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478c70c6 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x479a3dab mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x47a59fc6 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b40043 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x48075e21 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x48090501 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x481837d7 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0x481b6744 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x4821c1bf raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x484568c4 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x484b2215 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4869647f pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x4879c7ff gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x487ae52e mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x489680a8 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x489e0f54 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x48b25db9 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x48bcaa7c spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x48c31d74 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x48cd0f81 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x48f397a2 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x490e7360 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x49265362 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x4947072f thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x494b644e mbox_client_txdone +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 0x49b330c3 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x49db49a4 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x49e14048 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x49e67b0a dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x49e9574a cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f6f00c attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x4a0986df irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x4a14bbbd clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x4a63e422 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x4a739076 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4a8a3df3 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x4aa315f4 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aba56e6 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x4ac6dce0 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x4adf6b56 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x4ae06388 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4ae9a1b1 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4b2674a8 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4b27d399 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x4b607509 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x4b674d51 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x4b736cb8 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x4b73adc9 kvmppc_st +EXPORT_SYMBOL_GPL vmlinux 0x4b73dcda tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x4b8ff26c crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4bb0a577 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4bc5ea43 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x4bc98c6e posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x4bf0b129 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x4bf3f235 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4c11d12c __class_create +EXPORT_SYMBOL_GPL vmlinux 0x4c208d60 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x4c4078a4 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4ca90766 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x4caa8314 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x4cb91e8e irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4cc7915d ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x4cd24092 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x4cd99847 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d2dc058 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x4d32483f kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x4d35fe7e proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x4d6e2687 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x4d8439a8 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x4d9fc29d max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4da43637 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x4da83dae yield_to +EXPORT_SYMBOL_GPL vmlinux 0x4db731b2 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e0ec0a0 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e226955 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e30976d tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4e3aa1c0 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x4e48db60 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x4e4d3636 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x4e618f9f of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x4e6590d6 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4e65bf94 device_create +EXPORT_SYMBOL_GPL vmlinux 0x4e85309d skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x4e8cfa4f led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x4e8ef7ab devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x4e915c45 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x4e9c974e clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4ebc9a7a raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x4ee05e0b desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x4ee3c088 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f17b76a file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x4f32bf09 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x4f464d38 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x4f52553c bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7a2a8c tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x4fb8e7a0 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x4fbeb84c of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1662a kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x500828de dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x505a9332 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x506c7f63 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x507596d8 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x507eed15 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50abae2c inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50ea03c6 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51467922 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5153b834 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x51742593 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x51a3b34a bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c58773 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x51c65df4 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x51cc82bc tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x51d43e32 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x51debecd device_create_with_groups +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 0x526e63e7 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x5272be42 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x527e9a8b kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x5294cc13 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x52b677e6 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x52faa412 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x5301aa28 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5304e127 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x531860fe ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x53588873 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537944eb sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x53924687 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x53b85c47 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x53f05a0f crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x53f5bc0b usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x540a697e pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5442f55f rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x545443bb __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x545e6a82 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x546ce094 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x5471cf9b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x54750601 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x547b6e72 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x5484602d page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549a2e66 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x54c14ae3 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x54c7a06c rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x54c84b90 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54fbbab1 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x551d9442 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5548f23a regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x555b4ae4 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x556fe8b7 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x559c07be thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x55a21ce7 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x55bb451d thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x55d1b2db kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f51ef3 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x561c89b0 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563d8242 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x56493d20 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5655a264 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x567ccc24 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56972ffe usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x56976f94 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56cdf5a9 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x56d38f47 phy_power_off +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 0x56f3cc22 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x5703e32a ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x570b05fe simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x573a0175 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x575e014b kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57ca1da0 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x57ceac9a ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x57d0959f devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x57d0b673 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x58074847 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x5816c92b regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x582f05e1 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x5836f3a9 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5877a5df sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58980cf9 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x5898f126 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b3ebea crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x58ce4b80 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x58efb7b7 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x58feb892 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x591d5a38 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x5921a41c da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x592d14c5 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x593b0a50 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x594682a1 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x594f8630 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x595d62f8 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x596719a2 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x59679150 component_add +EXPORT_SYMBOL_GPL vmlinux 0x596c0359 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x596db82a kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5995cda6 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x59cf284c put_device +EXPORT_SYMBOL_GPL vmlinux 0x59d1d4b7 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a0f8165 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x5a25d1b9 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x5a25d7d8 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x5a271bd4 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x5a4a3082 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x5a533433 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5a603e2d reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5a76f2ca unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7e47e5 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x5a93ff2d handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x5acb9f32 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5ad271b0 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x5ae943c3 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x5b055a85 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x5b093b10 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x5b0e541c devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b197c56 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x5b24acdd pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x5b31db0a usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x5b3446a4 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x5b403f11 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x5b686b3a crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x5b82c788 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x5b908f38 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x5baf96b5 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x5bb5e2b4 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x5bbe1a68 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x5bc6aa53 phy_pm_runtime_get_sync +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 0x5c09413a of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x5c1cc726 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c4ebbdf param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c641f75 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x5c9df753 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc4a196 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1eb485 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x5d21f582 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x5d9bb9c3 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db2453b tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x5dbb501b nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x5dc310ad dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x5dd3c8d5 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x5dd7cd5a usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x5ddf9029 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x5dfbdad0 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x5e0e7796 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x5e452fb6 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e71d785 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x5e85bbfa crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x5e976f95 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x5ec71ef3 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5efc234c stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5f02a619 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x5f058ae5 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5f05b51f extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f0d0597 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x5f0ed54e gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x5f0ef6f4 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5f5679da crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x5f5cf342 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x5f7c9b6c __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5f7f34d6 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x5f9c85e7 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5fb53a44 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x5fe3fa41 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x5ff41333 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x60179f9c inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60567f58 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x60853e76 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x609ee5c3 mmc_get_ext_csd +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 0x60aac1d1 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x60ad071e get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x60fa50bb ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x6128233d inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x61727051 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61b4d07f of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x61c7318b relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x61d8504d mmput +EXPORT_SYMBOL_GPL vmlinux 0x61ddb107 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x61f802ac ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x620af9d6 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622cc16a sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x62936b7f skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x62965ca1 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x62b7bf92 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x62be0842 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62d59c9e trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x62d94412 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x62debccc arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x62ed5486 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x62fcb5fc ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x631ab9f5 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x632f3293 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x63526645 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x6355cdb0 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x63569794 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x63651a6b component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63ea8932 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x63f3f333 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x63f7b593 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x63fc999b usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x640b884a __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x64452d2b blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x644d2d89 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x64b808fb kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x64d32f3d rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x64d61d05 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x6507fedf dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x6515d832 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x65464e03 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x6549b425 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x655f3a27 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x659d78d1 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65dbf4a5 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6619be58 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x662a5da2 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x662b5d83 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x6633fc67 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x665f2779 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x6669bc16 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x6673074e of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x667d393e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x667e4e4a ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66853018 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x6685c318 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66c0324c gpiod_to_irq +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 0x67103e5c __blk_put_request +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 0x676dc61d nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x6771cee9 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x67830394 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x67877d0f of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6797b9d0 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x67bbfaa5 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x67ee4f45 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x67ef100c ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x68050a42 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x6812efce ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x681402c7 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x68219c45 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x68293197 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x68371e22 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x685427e6 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x687082a4 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68733408 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6888a77c of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x688c2837 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x688ea41b ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68a983f9 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x68abbe59 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x68b332c8 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x68fcef67 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x6913eb0e noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6932bee6 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x69358589 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x6940d2b9 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x69512af8 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x69516da5 use_mm +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 0x698ba34d scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x69a1b878 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x69ab121d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x69af8fdd rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x69cd9ad4 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x69d9b46c watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x69de32d1 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x69ef6aa7 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x6a18803a rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x6a385d84 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x6a3e3af2 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x6a451340 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a62ea7a pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a88d9e1 kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0x6a8a3c56 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x6ab3781f trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x6af9add7 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x6b1d482f xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x6b2546af tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b340d7a mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x6b36b12b pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x6b397de0 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x6b3dd2bb ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b550983 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b91b7e4 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6ba9a140 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x6bafb1dd debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x6bb33d29 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6bc0e860 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x6bc2c274 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6bf5416f blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x6bf78482 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x6c00f9ab get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1ef6cf filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c240812 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x6c2a1f4e bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x6c46b73c mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6c498580 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c6b46ba ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6d24dbe3 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3509d0 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x6d442d56 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x6d75164f ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x6d9c5ed0 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x6da6f0cc extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x6dbfcd8e kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x6dc427a9 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x6ddda014 input_class +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e557ac5 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x6e58856f of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x6e64d615 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x6e6db476 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6eaad548 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6ed44c3f save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x6eef3376 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6ef76cd3 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x6ef92d0c user_read +EXPORT_SYMBOL_GPL vmlinux 0x6f120a03 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f297e39 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x6f6af8f8 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x6f6e3377 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6f773199 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x6f793b64 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x6f7a303a find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6fb8cfe0 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6fc0285a regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x6fc71dc9 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6fd16648 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x6fd2bd21 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70050100 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x70570677 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x7079fccf virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70870e2f key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x70907119 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x709f9771 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70b5afa6 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70c68975 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d63f44 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x70f4acab device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x710900d2 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71605888 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7182292e blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x71985834 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a770d8 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71b0b85b devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x71b500a1 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x71dc917b dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71ec2d4e serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x71ef4ebd gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x71fc552c powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x7208bef6 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x7243eee7 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72a4478c mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x72a69b97 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x72adcb1a debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x72cea224 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x72dfc41f dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x72f3deb5 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7338d06a crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x733f624c eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x734e620c kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7358808a skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x73730675 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x73780550 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x73863ed0 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x738f5624 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +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 0x73dea6af regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x73e39b4d regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x7403f1f1 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7416957e md_run +EXPORT_SYMBOL_GPL vmlinux 0x741e7195 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x7428d23a ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743dd1fa devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x744d66d0 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74722fa5 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x748320b7 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x7487f96f rio_request_dma +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 0x74c5cb38 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x74d40fae regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x74d74780 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x74f4e7e8 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7530ba85 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x75431334 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x75446768 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x75754031 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x75761ea8 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x75764163 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x758083d6 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75be17b5 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c9d8c3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x75e5a9b7 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7600fca5 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x7612c0d6 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x761ed6ec hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7633c0b0 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x7673bfd0 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x767bfbe9 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76834c97 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x76b6cc13 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x76cdda55 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x76d051db bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76ef7b57 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x76fac7a6 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x77279bd9 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774a8475 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775f4b3e inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x7760dd44 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x7777e84d __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x77ca7db1 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x77cc1387 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x77f95b01 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x7830f815 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x78738188 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x787d7eac kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0x788c9c82 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x789b8128 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b6b073 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x78c02ea5 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x78d9c37f gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x7913741d __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x7924f629 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x7935ee9b blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794518ef sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794d2677 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x796260c9 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x797a4983 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x797c3398 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x798cb218 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x799a498c phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x799c1dd4 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79db0d54 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e1401f ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a13edc4 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x7a29e5f0 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a4417d6 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x7a52bdcf nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x7a66e1eb sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7a78dfa8 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x7a8f7113 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7aa824e3 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7aee55c8 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b13e6e3 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b22ee6d skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x7b300653 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b32d586 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x7b3a2da1 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x7b4e4bd9 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x7b53aaf2 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x7b5aed5d call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x7b801444 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x7b89214d regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bb37351 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7bee8b70 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x7c1a705c kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c45af5d pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x7c6bb265 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9ef49c vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cdaadbd irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf8a920 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d0f74fc disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x7d34c2bd i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7d4fe466 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7da9ebd6 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dbaa807 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x7dc1e388 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dea27f5 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x7dfb94d2 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e30bb39 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x7e52b476 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x7e5f6920 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x7e6294c8 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e68d390 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x7ec0986b __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x7ec9256e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x7ed791d3 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x7edebeff hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x7ee74bae usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x7ef4527a thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f18dce0 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7f3c615e kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x7f42e009 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x7f5ed77f class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7f6f78b2 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f8f4061 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x7fd05935 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x7fd6a5a5 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x7fe67e78 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x800d457f regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x8041f235 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x804b343e crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x80692a98 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a2b76e sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x80b0eb6f ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x80b495f5 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c82737 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80ddacc2 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x810a8c7c pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x813e908d pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81545d80 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x81872a93 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x81914a6f __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x81aad622 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x81b004d4 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x81b1d865 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x81b85a1c tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x81ecdee2 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x81faf6d0 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x821f4640 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8245acfa tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x824add82 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x828dc847 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82b62c65 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x82bb4321 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x82cd9788 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x82d05bf9 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x830ec387 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x832a0c6c regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x8335a8be debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x834f48c9 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x836bf539 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839aef9d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x839c7999 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83cf830b pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x83d3433a of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x83d96d1f module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x83dafa63 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x83e2fe2e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x83eb4457 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x83f4d765 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x8404ba84 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x840eb7bd get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x842110ed ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x848c7f00 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x84ad1dce dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x84c47095 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x84d59db6 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x84f9a33e tps6586x_update +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 0x85217de4 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x8537b729 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x856c1072 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x857f4eb0 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x85997fd0 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85da5aaa ref_module +EXPORT_SYMBOL_GPL vmlinux 0x85dd3d12 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x8615acaa pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x8619c00b __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL vmlinux 0x86304b56 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x863efa5b ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x86606df8 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868c96bb pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x869c07f8 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86a4cb91 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x86aca5c6 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x86e892b0 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x86e8c787 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f4b99b ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87447e1e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x8759e3a5 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x875bdee5 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8794220f ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87cdf63e of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x87d11126 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x87d266ae tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x882502e6 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x88300b5d blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x883e8a6d devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x884b0c36 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x885e1212 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x888c0313 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x8893987a usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88edf340 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x88f7e362 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x894fdd33 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x896effe8 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x8985a09f ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x89989d17 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x89badd45 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bd08a7 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x89cfb68a ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a087f59 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x8a21845b key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x8a252a20 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x8a52ae9e __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8a54f8bd ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a561272 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x8a67bed0 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x8a6d8010 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x8aa14f54 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x8aaceb6a tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8ab0576c __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abe7c65 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x8ae89904 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x8b11499c extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b2e56de platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x8b504651 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b9ab413 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x8ba96299 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x8baddb8a simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x8bbcfab6 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x8bcfe398 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x8beac655 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x8bf7b351 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c374988 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x8c3a3a28 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x8c52c5f6 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8c5d1186 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x8c63fe95 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c765ce3 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8c84a87b register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8ca01c2e locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x8cbe3620 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x8d02b7af netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d088c19 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x8d2d79f3 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x8d66b99b hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x8d753101 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x8d77eeb8 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x8d9f429c cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8db8cba2 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x8dbe8f0e ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x8dc5e191 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x8dc9d172 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e028581 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x8e053738 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x8e13ed25 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e27abaf nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e462234 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8e4c47f8 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e652ba1 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x8e7daa19 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x8e972bb8 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x8ec51d15 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x8ef49775 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f32b6b5 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8f50bdb7 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x8f698960 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f79f31a kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x8f8dcebd fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x8f9ab2cd __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x8fcd5b6f irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x8fced602 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x90220845 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x903a2204 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x905cab65 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x90944601 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x909cde2f ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x909f3f2f device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90f24cc9 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x9114d720 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x912356de of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x917ba36b fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91903593 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x91983ea2 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x91ad3d88 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91e5058b usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x91ead76c of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x91f30c4a kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0x91fc238d __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x91fd10d1 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x92271f2a device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x922ce8f1 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x9237778b __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x927e5106 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x9285b08a sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92bf55b0 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x92d11fea wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d567ca sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92edfd4a regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9323b0f6 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x932d64b4 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x9337936e rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x9377a202 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x93918b4b usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x939b2b72 pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x939ff08e fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93c98b51 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x93e7d680 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x93fdd325 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x941e3d3a key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x943cc7ec ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x946a36ef sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x94a58db0 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x94ab7745 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94bdfdf8 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94fb21d0 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952eef30 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x95450c78 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x954fc393 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x9554b291 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x95550dbe fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95794fed ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x957f155a bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95aae34d sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x95b16a0e ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x960c57a7 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962c4933 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9678c538 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x968a9ca9 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x96cf7cb7 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x96f121a7 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x97006714 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x97021531 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x9743f38f digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97818891 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97f937cf __put_net +EXPORT_SYMBOL_GPL vmlinux 0x97fc780f bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x9818c920 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x982aeea0 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98346e46 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x9849240a kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9868052c arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9884e632 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x988e58e7 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x98944ae7 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x989c8365 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x98a8b584 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x98aa72d3 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98b1ee29 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x99068397 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9940e264 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x994b6612 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x9950e82c phy_get +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x996d1393 inet_csk_reqsk_queue_hash_add +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 0x99e68a93 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x99e6dfff usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9a10d990 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a204ce8 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x9a2107c0 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a5ac97a ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x9a64de4a nl_table +EXPORT_SYMBOL_GPL vmlinux 0x9a75b9be regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x9a7de033 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aa8106c device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ab03490 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x9ac7b865 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x9acc068b blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x9ae60dd3 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af3d132 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x9af648d2 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x9b0e62bc ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x9b360509 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b5a3823 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x9b6c9197 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9b9eb276 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c0c30fc blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x9c16be4e of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x9c19edc0 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9c1fe1e7 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x9c34953a spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9c53cc7e pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x9c5b2717 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x9c94b627 fsl_spi_cpm_init +EXPORT_SYMBOL_GPL vmlinux 0x9ca26198 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x9ca39277 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ce526f9 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d05d656 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x9d2cef2e spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9d34be29 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9d4168aa agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x9d5f6d2c fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x9d6b3a1a devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x9d6d5d23 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d99b870 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dbb7777 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9dc710e6 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x9dcdde2d pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e242a49 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e51ccc4 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x9e90047d ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x9ea53947 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f07cbde fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f1fe193 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x9f2d4a22 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f37744c clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x9f4b0ba2 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9f7988fe xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x9f8c8336 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x9f8fcc61 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x9fc46070 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x9fcbd8cf ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd9d92a regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa03d3d5f pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xa061c691 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xa07be117 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa080c686 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa1193df3 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xa1392f1c rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xa14369ef cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xa1643c31 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xa176206f pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xa17b1abe pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa198d000 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xa1a4e78a regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xa1b943c1 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1dda454 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xa1f95bcc regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xa21cbef2 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xa220389e regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa225cb13 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xa22ce90d attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xa23380f4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xa2362543 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xa24d4d17 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa28a4cb6 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa2996d93 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0xa299d582 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xa2ac4991 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2bb734d gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa2caeecf sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xa2d3d1e0 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa2dfb017 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xa2e1c540 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xa2ea933a rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa314cb9c fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xa342d1d9 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xa350dff5 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xa356b4a6 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xa35ed9c7 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xa35f039e zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xa3742449 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xa3850abc bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa386ef3a vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3999721 pci_check_and_unmask_intx +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 0xa3db9324 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa408e3b4 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa42456f0 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xa443ce27 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa455358a fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xa45c240a fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xa4650de1 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa495ddc8 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xa4b4695e tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xa4dcefa2 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4dcf001 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xa4ed0d15 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xa4f5b91b kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xa5118ff3 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xa51e2250 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xa520c9bd debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xa5277f04 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xa532bd2a bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa55b988e input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xa55efb2c user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa5665548 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5711ee9 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xa59472ec spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b898e5 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xa5bce38a wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa5c4f5e2 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xa5d42f3d regmap_register_patch +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 0xa5f95e72 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xa5fe6aaa kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xa619bcd0 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xa61a1001 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa65b085f blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xa6664f17 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa66a8c76 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xa66c3515 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xa689146c sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa6913e8d shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa69b08a2 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b337b9 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xa6d18598 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xa6dd7bc0 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xa6deb4bb pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa71bba2d fsl_spi_cpm_irq +EXPORT_SYMBOL_GPL vmlinux 0xa74bd6ce tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa769ff6e inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xa76b7dcd gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xa76b984b ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa776e876 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xa7b72be7 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa80f59d9 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa82509b6 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xa836d220 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xa84ad97b fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85a0780 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xa85f266e da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xa86614f2 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa898b04c tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8e09346 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa8e1c2a7 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa8e31316 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xa91603b1 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa943152a of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xa9773ead ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xa97968af of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9b46005 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa9d1aa2a raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9ea084e devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3566 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xaa034f30 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa5882eb of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xaa5a4c84 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xaa7ad020 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xaaa611b6 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaa23f6 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xaac1039c __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xaae8443b usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xaaeb3517 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xab0dac8f max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0xab15931a regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2f882c rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xab59d373 kvmppc_free_lpid +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 0xab819f78 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xab976f18 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xab9d6527 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xaba885b2 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xabaff50b free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xabb40016 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabdcd090 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xabee55a4 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xabfee938 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xac1bea37 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xac3a1067 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xac3c6258 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac498edd fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0xac6cbfdb ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xac8fa513 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xac98afe9 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xacd3fe11 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xacdfc8f6 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad15bef0 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xad3a36b5 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xad4e78ec kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0xad4f10b5 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xad4fc0e1 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xad4fe370 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xad69a1fe crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xad72dd80 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xad89ec45 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae042e06 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xae1c1568 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0xae497978 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xae5456b7 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xae5f0074 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xae6375f4 device_create_vargs +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 0xae864ae6 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae98322e scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xaec7fe2c pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xaed57ebf ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xaf2e1e6b ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xaf485547 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xaf568ac7 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xaf5b9608 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xaf5be95c pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xaf783c2a scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xafaac959 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xafb3b103 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xafcda18c sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xafcf678a gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xb005b334 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb01cf35a netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xb035082a mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb078200a ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0a2dba8 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xb0aabb3c to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xb0b08848 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bbf61f elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb0c1c989 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb0d08f67 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xb1128ce2 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xb12729c9 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xb12c51ad blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb140dd35 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb140dde9 driver_remove_file +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 0xb14dfc18 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0xb1525732 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb15e3e58 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xb161d10d ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xb17846e2 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xb183026f sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18553c1 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb1aa7368 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bc99d2 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c23b76 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xb1d0feec power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ebdddc ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xb20e5d22 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xb21b44f2 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb225dc0b srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xb23f62a5 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xb249dc53 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xb2977e74 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xb2a15b0a ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xb2bc70d4 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xb2c07625 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb2c2d3ed regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xb2ccad55 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xb2d92cb9 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb3520105 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xb38c64e2 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xb38e947b thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xb3c0d987 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xb3cfc3ac wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xb3d7589e crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xb3e69e2f phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb3e7513e fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xb427d325 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xb42bb618 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xb4332234 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb48fdf58 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xb4a0eda4 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c6a14e fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xb4d07296 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4fa8467 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xb5003aa0 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54d8b2e kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xb562dece inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb58aa243 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xb58dcbdb kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a87ae1 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5ae1c76 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xb5b990c9 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f7986a dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xb604c0ea virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xb6069819 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb64acf6c device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb6500e43 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb65381b5 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb656de5d find_module +EXPORT_SYMBOL_GPL vmlinux 0xb675564d rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xb676d207 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb691037f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6dc8f20 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6fc5a41 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb701ba97 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb727af6c shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73d3a3a ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xb7587607 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb79d5406 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb79f8f43 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7a16121 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xb7afa971 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fd17cb key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xb80330c5 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb85201f4 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xb86baef0 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xb883206b hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb89e595d blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8dc3ce4 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xb901beb3 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb907788b of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xb908f07a devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb91a4cd8 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xb91ac511 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xb91babda platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xb929ad35 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xb949e09d extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb951cefa blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb96b3579 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xb9720da6 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xb9730b2f __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xb9a31766 platform_device_add_data +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 0xb9e19d74 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xb9f03d15 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba59cc35 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xba5e4152 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xba807e08 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba8d0b1e securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xba8f9ba9 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad420fa regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xbaddf8b1 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb08bc09 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb151923 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0xbb3c370f devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbb6af7dd arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xbb70c05f posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xbb728bc0 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb833b9b regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xbb8a83d6 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xbb9377d6 device_add +EXPORT_SYMBOL_GPL vmlinux 0xbb9ba951 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xbbb38bdf da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbeef708 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbc0bfdac scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xbc1e4c3c irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xbc2c128a pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xbc3ca0a7 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xbc559f87 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xbc635143 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xbc9fc684 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcfd35a2 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xbd0e72e2 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5bf151 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd6be577 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5a561 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xbde8dc00 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe4653d5 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xbe5bf2e1 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xbe6183a4 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6e4428 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xbe8359d6 of_clk_src_onecell_get +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 0xbeb8f4a7 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xbec206b7 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xbec6ee70 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xbed42c03 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbed90613 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0bf93d regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf1ce234 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xbf7b349f ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfb75ddb kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xbfb882e2 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfcc64f3 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfd1a049 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xbfdbe151 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xbfdcd744 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff08e06 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xbff84304 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc014b84f mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xc024b316 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0363375 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xc036e6a6 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc07b5023 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a042b1 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xc0a11f8a virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b12255 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc0cc825c pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc0ce2e35 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0dd8e97 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e1b518 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0ff8ba4 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc11675b2 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xc1193ebf crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xc15ba2f4 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc199080f mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xc1a5798c power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xc1b38738 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc1c9e577 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xc1da1811 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xc1e74600 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xc1f656c1 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xc1fa66fc pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc244250a bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xc2490882 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc2576a07 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2997e7b rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc29cd331 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xc2a04846 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xc2aa7312 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2e25197 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2f96720 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xc2fa8f97 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357342b of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc395c8a1 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xc396f631 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xc39a09b7 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xc3a1cda8 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xc3a7a146 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xc3bde660 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xc3c5229e regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xc3e1ea50 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xc3e9d277 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xc403bc2f crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc437cd14 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xc43f35de crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47c0c79 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc496d77d rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xc4a4c347 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xc4cb4148 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xc510be94 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xc5185c4b usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xc5421c5e usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc55d3494 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc58a1687 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xc59d7d51 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b0c8ae to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xc5f389ec of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xc6016b1b blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc6154db6 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61815bc regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xc627431a alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc63840cc regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc642b497 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xc65a361d tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66e1b04 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc68f5f2b sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xc68f63c9 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a4f579 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xc6b502e3 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6ca078d driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xc6e6fa9b fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xc6ebd4cd pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc73c5187 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xc75374ab powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc75ff72c exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc77ae567 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xc77b66bc user_describe +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7beb04d sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7c8d451 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e812dd ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc7e8b42c tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xc7eb40a5 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xc7ef1a5d i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc7fc0dd9 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xc8185d5b ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc819c005 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xc84b7344 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc878768b dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8a2630e ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8cc3749 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8f5f3ba __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xc8f8ecb9 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc8f97d88 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc8fda643 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc903c94e phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc93be7f2 user_update +EXPORT_SYMBOL_GPL vmlinux 0xc9499c13 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc954c643 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95c9b50 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc98a8149 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xc9a34bbd relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xc9b5a6e2 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca164586 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xca4f8b93 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xca67a7c1 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca7f1647 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xca89ea3f blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xcab091f3 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xcab72b0d crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcaee3c21 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xcaf1f351 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xcb01ff6c tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb347baa wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xcb433938 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5da679 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xcb5ee621 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xcb659016 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xcba4b4ea ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xcbaa8ac4 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xcbc1e0bd usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xcbd81b26 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xcbdeeb0b set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf898e0 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc1f657c fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc706e60 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc9446d5 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xcc9785f3 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xcc98f6e1 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xcca5692d regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xcccb3285 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce3d2e0 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xcd0fd866 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xcd1645c2 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xcd16eb5e led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xcd360ece dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xcd3a8f7f register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xcd3da472 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xcd4d4b9e usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xcd6492ab trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xcd733f70 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xcd771146 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcda3f93e sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdba0cbe smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddf0c5c sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xcde3e9c4 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xcde7dd2e rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xce233d96 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xce600ab3 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7159c8 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xce79e56c regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xce7b336a class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xce839ba8 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xce868bb5 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xce97d2de of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xcebebb2f spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf051b71 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0xcf32de2c dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xcf4c7bc6 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf8c7459 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcf8f9ece rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xcf9bb831 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xcfaac8d4 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xd0088a0f transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xd0252626 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd04ec2b6 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xd059ae8a ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067864e sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06bec66 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xd07d4f9b gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xd09713eb tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd09a88b9 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd0a8dde5 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xd0a9c592 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c29d94 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd0c4f752 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd0c719c8 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd0e211dd pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xd0f5627b wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xd0ff78bf da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xd10763b7 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd1124b29 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xd115f27f of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1698bd4 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xd186813a ping_getfrag +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 0xd262349b unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xd2707519 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c907ad md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xd2d07d10 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd326893f led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xd327b349 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xd3484371 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xd3556dab set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xd3584c73 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xd37c324f devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd3a556ed usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xd3a86666 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd3b07bd9 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xd3e021b9 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd3e109d9 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xd3f54139 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xd3f8e0a9 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xd3fad75a irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4268fab alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd4299595 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xd4315755 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd4435751 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd466f1d6 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd46bed84 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xd47ec64d rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xd48b7b88 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xd491d41e swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xd4943b34 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xd494c5fc __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xd49dc99a swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xd4a178b1 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c342fb pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xd4c890e6 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xd4de2249 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xd510f75e nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xd54a60eb blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xd569cb53 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd58cf233 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xd5908cd6 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd5933e8d transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd5b83ea6 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd600a2a2 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd62f2adf usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xd631290b __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd6631c58 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67a1ea5 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xd6844c35 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xd6afb1e3 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6e476dd ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd6e642bb da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6ece58b class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd711d5f6 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xd7534535 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd75d1660 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77b262b ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7c1b8b7 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f80078 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xd7fc3e98 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xd801d872 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82d90c8 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xd847ed5f ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xd8608b38 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xd8706268 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd895bd96 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xd8c1a23c device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xd8c40999 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd8dd14e2 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xd8fdd751 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd907fa16 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xd91791db pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xd91a46e8 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd91d595b adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xd927a623 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xd92934fc xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xd9361ed5 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9466f6b invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +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 0xd97d8343 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xd990dc25 kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xd997d398 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xd99840dd dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xd9a71209 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xd9b05429 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd9d4d10a regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f0a6cd usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xd9f3fa65 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda4f1958 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda574e24 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xda67c81f devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xda7a363d bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xdab44f9d shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf45651 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafbb0d7 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xdb00884a netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb0b9f7a page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xdb341441 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xdb5c6662 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xdb71da2a bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xdb75256a kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdb776f8e usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdbae51da wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdbba9512 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xdbeb3aff securityfs_create_file +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 0xdc1ee096 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xdc4925d4 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xdc54989b usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xdc55e7a9 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xdc6080ee ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xdc685a39 usb_get_current_frame_number +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 0xdccf7e66 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xdcdfe0a8 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdd01b89a tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xdd0b0265 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xdd14931e posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd249b4f crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd60223c rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd79e5b3 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xddbb223f platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc15475 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xddcf2a89 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddee6aac kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0xddefed19 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0xde146451 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xde1d0b15 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xde255082 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xde821701 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xde8a2ce6 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xde94b314 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xdebadb80 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xdeff9ef3 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf7dad47 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xdf85b19e ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xdf91e5d5 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xdfaf58f5 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xdfcb490f fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xdfd78c89 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xdfda2fa8 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0xe00344a9 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00cb7f3 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xe00d5841 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xe00f26e3 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xe01d80c9 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe021e417 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe02a1c62 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe041beed of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xe04c221a thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe06478ef device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xe073e4c8 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe092a6c1 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0ba40c8 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe0d357e2 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xe0e6c41d gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe144b943 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe14c3434 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xe154c04d bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe18b7c34 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1ad3061 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xe1b09e9d sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xe1b23ae4 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c8d544 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xe1d8f271 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xe1e67678 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0xe20429cc device_del +EXPORT_SYMBOL_GPL vmlinux 0xe205ffcf thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe23b6342 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe242be77 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xe24d88ad debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xe27747d2 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xe27cd6e8 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29718cc ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xe2a6251c sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xe2adbc19 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xe2b45725 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xe2bf71a2 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31208f8 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe34312bd sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe34f970b ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xe351b905 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xe366c57c ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xe368ae99 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe39262ae blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xe39585e4 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xe3a4d5f5 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xe3dcb946 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe3e0c1e6 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xe3fe1b5c tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe415f581 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xe42e9850 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe483c4ad nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4cce28f tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xe4cce436 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe4e4fd46 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xe4e5ed11 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xe52ed544 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xe53e83db regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe57e19ff i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe59c0cb8 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe5abc3f7 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xe5bcd1ca sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xe5c6a6e4 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe5ddb2b9 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xe6017336 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe61e156c rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xe6267287 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xe630a483 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xe63ad648 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe66f9b52 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe68422c6 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe68c2355 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe6c33f41 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d8f20f device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ed9841 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe703d43c ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe7057d6c crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xe709aa5e security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe71ee6d2 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe71f32a5 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xe71f4a9d rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe7472df5 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77f2afb usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7897f6e ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xe79a732f ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xe7a32a00 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe7c10ec5 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7d081b5 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe7d0c105 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xe7d52b28 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xe7ddb2be cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f6c81c ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe80af059 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8215bb8 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xe827e355 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xe82cc477 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe85d1095 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86f5aae pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xe886f4f7 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xe8a011a1 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe8bb2096 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe8c13176 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe8e8ddf0 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe91f5e3d stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe973b472 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xe9a27922 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe9a820b5 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe9b49099 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe9cb787d inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xe9cc301b nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe9cf9112 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9e6c82b regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xe9f73789 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea349e74 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea650b57 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xea6c4df4 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xea8b07f3 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xea96ce65 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xeaa592ce __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xeac3d18e ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xeae97d09 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xeaecd918 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xeafa8188 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xeaff1dc4 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xeaffa4c5 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb02a2c9 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xeb195760 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xeb396e03 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xeb47437c ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xeb6a091b sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xeb6f4bff nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xeb712256 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xeb7fd1ec ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9d3f04 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xeb9f2c26 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xeba1327b perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xeba6c248 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xebd8e8d7 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xebda7141 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xebdb31d4 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf9ce2c tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xec011bc8 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xec01274b skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xec0b028e root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec198a7a crypto_tfm_in_queue +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 0xec45127b get_device +EXPORT_SYMBOL_GPL vmlinux 0xec675127 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xec6b481d ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xec91c5a7 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xec945178 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xeca08f1d pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xeccfe968 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xecdb486d sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xeced49ce task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xecf173fd devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xed0ec772 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xed0f8895 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xed15c4a9 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xed226047 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xed2459d7 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xed366ec2 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xed5d4ea9 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xed7acec9 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xed91945c usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xedb7cbc2 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xedcc821d blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xedd294be ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xede237fe inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xede61299 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xedf97335 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xedfaa49e __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xee05167b udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xee086b2c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xee0a7a74 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xee0e4808 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xee16a2ff regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xee2af3fc inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xee4c75b2 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xee4e7ed5 of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xee6375fb device_move +EXPORT_SYMBOL_GPL vmlinux 0xee65b601 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xee6987ae wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6e3db4 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xee996ae5 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xeed07014 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xeedcb232 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xeef48b40 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef25909e blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef48820e thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xef56d6dc system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xef64f8a5 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef71f038 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa9d72b usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xefb3d277 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xefd14e0a virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04fb7bb tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xf04fd651 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf05f5a31 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xf068a325 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0976054 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xf0b61393 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xf0c13c1d md_stop +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf12bab29 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xf140afb1 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf1465ba8 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18876e1 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf1a42b2a regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1acd379 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xf1afeb05 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b78f42 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xf1c3934b crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf1cc6e3a of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf1d63fbb evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xf1dd4723 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22a5e1c relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xf2471541 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf25901d6 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf26e8259 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf285c33c led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xf2c0ffc3 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf2c1bb65 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xf2cca623 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xf2d4d07e sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f525a5 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf306151a rtnl_af_unregister +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 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf35608f5 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xf35e7035 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf3676b14 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xf37ac70e devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38d79e1 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf39468a8 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b493a5 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3bee6d3 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3c300bf mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xf3e2366d usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f25165 kvmppc_ld +EXPORT_SYMBOL_GPL vmlinux 0xf441c194 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xf457fc9d param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xf466f572 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xf4792b2d device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xf47e8289 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf48546be regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4b333d1 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xf4b8db49 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4ebec7b ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xf4f48bf9 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf514f84e firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xf51bd580 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xf53c9241 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf5509697 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xf5532357 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf557972b usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5c92953 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xf5cbfd23 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf5e01f68 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf605bb0a dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xf6145109 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xf61652b2 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xf6446ac9 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf71a564d fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xf729c509 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xf72fc7fa ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xf7392cce usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xf74ef000 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xf79adb04 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xf79e5714 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xf7cf4e26 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xf7fe6639 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xf8177dba find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xf81c906a rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83757f8 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf83eb778 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf860f278 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8944be1 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8990d91 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xf8aef5e0 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xf8c9d852 thermal_generate_netlink_event +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 0xf910912d gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93246c3 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xf93b9fd1 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xf94ac6bb thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf96cde9c max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf992e76a devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a56b86 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf9bd86e8 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cc5eed wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xfa09265b regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xfa0e04f0 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xfa12b539 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa16da0d regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa275d43 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xfa2e4792 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xfa48a6c4 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xfa7b8ea5 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xfa8860db __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xfaac899a arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfadad718 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xfae21aa2 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfaf42520 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xfb1aa93b anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xfb24668f driver_register +EXPORT_SYMBOL_GPL vmlinux 0xfb32166d aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb34acb0 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xfb38e986 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xfb46bb86 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xfb4a20a6 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xfb4dc613 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfb8541eb pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xfb89ab39 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xfba17bf3 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xfba46768 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xfba46d07 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0xfba56188 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbd67e8d of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1d0e2d tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xfc391db9 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xfc806f78 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xfc9435f1 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xfca08ca9 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xfcb6216f da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcf51fbd gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xfcfa3166 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xfd12aefc tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xfd213abd _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xfd46da75 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xfd5ca1e8 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xfd5e6300 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd88f7e2 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfdd4b49d __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0xfdec1f75 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfdf096ca spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe078c04 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xfe0d81bb bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xfe11f89f device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xfe15de21 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xfe27bb23 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xfe2a9031 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xfe436b2d usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfe686e24 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xfe823670 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xfe8773fe crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9d70dc trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xfeae2325 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xfec078d8 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xfed017e2 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfedb498f pwmchip_add_with_polarity +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 0xff2f35d5 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xff47c876 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff707207 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xff733647 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xff826560 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xff9f054b platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xffa4202a device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xffaf19ff spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xffd8ecbe ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xffda1c15 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xfff5db33 inet6_csk_xmit --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/powerpc/powerpc-e500mc.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/powerpc/powerpc-e500mc.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/powerpc/powerpc-smp +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/powerpc/powerpc-smp @@ -0,0 +1,17958 @@ +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 0x135a7511 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xf298b1fd uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xa2ee193f bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xc1360f7b 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 0x15a2fb18 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x22eb654a pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x34793267 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x3bde7536 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4e80ff92 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x66ecefd8 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x8f083539 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x9519de24 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xa564450d pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb5b2e0a0 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc9474b10 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xde7bb180 pi_read_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xc7a19781 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 0x336a66ad ipmi_get_smi_info +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 0x6e6267ae ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78c79d87 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 0x87c36076 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 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa4b69ade ipmi_smi_watcher_unregister +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 0x5f4c08c8 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x6803f583 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x74a393b2 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x764a3972 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x75a6e7e4 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x8364777c xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x872060c4 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1934d998 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1e21c9d4 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x4b70c798 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x65fc908d dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x75b9afce dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb045e185 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/edac/edac_core 0xba2097d7 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x09c30a7f fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0ac5586c fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0b807daf fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x112fae5a fw_iso_context_queue +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 0x363c6a49 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x423515ad fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4b44a0b5 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4e3b6277 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x51e37c4e fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5807f98e fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5f2e85b4 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x67d95641 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x70a94fb2 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x713dd741 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x77066a3e fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7ab7a66a fw_send_request +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 0x899454a9 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9e3aa878 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa04b2b5e fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa4bc1544 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb9714c1f fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc98add27 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcd3f13c7 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xce2c3d8e fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf265dcc5 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf8768304 fw_cancel_transaction +EXPORT_SYMBOL drivers/fmc/fmc 0x0ebfbf20 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x394415d4 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x5ab22e3e fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x5fbd11c0 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x6deb6e0b fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x909997ca fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x980f1af4 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xac7c7f16 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xb4c4dd23 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xbecb6f49 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xf7670617 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00a0060e drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00be420d drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00cfa608 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x011349f1 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02753c40 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08126b2c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0864468f drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09779f2e drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09fe8f13 drm_sysfs_hotplug_event +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 0x0b4a1ef0 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0da5626b drm_atomic_set_mode_prop_for_crtc +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 0x1004f8fc drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10086402 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x101f11da drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1117d812 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11a80bb5 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13a9e768 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x140772df drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14565cd6 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15160ed3 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x161ede23 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1665b32a drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1672f318 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x179a3f5a drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x187b2dbc drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x195ca17f drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19eb52b7 drm_crtc_vblank_put +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 0x1b0b25fd drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d8ed54b drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e536f09 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f905214 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fed9eb4 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20813296 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21a92f2f drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x224350a5 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22a2bda5 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x237c1ea8 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x274d55de drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27af4765 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27efaa64 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x283c10ed drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2877c684 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a6cdb4c drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bcef9b7 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bd3dcc2 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e2a72d6 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f329075 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f3c18fd drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30d0ad92 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30ef1c5b drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31091d24 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x313c1835 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3218feea drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3226a62b drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x324ce09a drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x334d2787 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33766428 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35c28dae drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36797564 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36ab1200 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x370901e7 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x370fb205 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x380d9786 drm_object_attach_property +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 0x39979554 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39ec3fb3 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3acf4fbe drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d8283c8 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d861f00 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e124de6 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e91547c drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40062bfb drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x403e41bc drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40e3c0a1 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4175037e drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x434c4d2b drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x435cf21f drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4736ec0a drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4736fc5e drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f4ba3a drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47fe9fbd drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48c7d874 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4acbcef0 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b28ce77 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d627f59 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f7b05b3 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5021e340 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5065f8e5 drm_gem_vm_close +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 0x51fdb93e drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52a7c3c6 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53884521 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53e24f73 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x545ef9d9 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5670cc89 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58419713 drm_property_destroy +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 0x5a99b5ce drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cb7dfbc drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ee3009f drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60054f3f drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6048f5e2 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6152facf drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6239eb23 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x633cd51f drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6513811f drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x651b1672 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65306721 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x656a4692 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x657ae9e3 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x659b2fb2 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6669b5b7 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66b0f7a1 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6763a664 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67a1f445 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67c43df0 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69b332af drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a3c03bd drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6abd07d6 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ad32003 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6e1fee drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c2c1fc3 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c62ec1c drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e676de7 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71db2068 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x727b008e drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72d851ed drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73354c9a drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x735dc901 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73c2140c drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x756c6849 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7572aed3 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x773732b6 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78c93969 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a8cb0f1 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b6ac6ff drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ba70742 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c53ea2c drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d0efe01 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d3ff901 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d5a315a drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e558a09 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ea5a369 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f71227d drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f84aade drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x803de73e drm_reinit_primary_mode_group +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 0x85500486 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85d32ecf drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85fa6fc7 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86288bbb drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86de29dc drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86f71488 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x877db6bf drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x887fdd12 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88e10c15 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ac70a41 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b0c3582 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bc1a031 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dc63581 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de430ac drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e8ff467 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91087cbc drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92197195 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x931ef9c2 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9449c1bf drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x953ed2b9 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x988c26b2 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x992a672f drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a936c8e drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ad5d708 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c6143aa drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cdc2f8c drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cfec80b drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9de8b440 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eb793cf drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f882b8b drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0541ec3 drm_plane_index +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 0xa321e6dc drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa328bc58 drm_mode_prune_invalid +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 0xa44b72d3 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa45e75bb drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa48b6df6 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa50af641 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa855403b drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa903a275 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9f7a1d4 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa5ffcf0 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaf0f2b9 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac349638 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad40249f drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae28202c drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae3f2ebd drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd6a076 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafff0f06 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb05b857a drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1020d97 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb264e851 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4c410b6 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb600a59d drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6491441 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb700b939 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb94bbc6a drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbacd19e8 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb09da46 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb6214f5 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc76653c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf56b262 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0228d6f drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc09c33e4 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1329c64 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1fc3f09 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc786e96c drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8c21f08 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8e3e77e drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc91d0ef9 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9991c13 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca362268 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca3c2e19 drm_mode_create_tile_group +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 0xcad46347 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb733c61 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce34baac drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce4ddeb5 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd069b3a7 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13bf81b drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1917024 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd239c4f4 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd29ac5f3 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2f2bc40 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3d15c04 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3fc5b71 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd45c98f2 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd68129a5 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd68ceb16 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7bf3419 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda7e7c34 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda80b703 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcb18d9f drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd130f1c drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdda7d430 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xddcce839 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde88368e drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf15e4b8 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0a35db5 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0f6af9f drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe16d2ac1 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1ebe4bf drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe39ea014 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe59b857d drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe65eaddb of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8c4e520 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9c51e8c drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea0a1140 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb87c5ef drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecab18ab drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed1eb78a drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed4aa4b2 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed93f1bd drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedabdef3 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee523cf2 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef8fd5cb drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1a9a2d7 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1acb833 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf26e8667 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf27456c4 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2757918 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf372ebd9 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf43a3908 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4a92b47 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5298f61 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d62324 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf767aa10 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7a8ecf4 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9c5b748 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbd4d0b3 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcb6ba07 drm_bridge_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 0xfe57b693 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x029cf00d __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05e702f1 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0644a454 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x086770d4 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c730f7b drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d70ad43 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e393932 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f7fd64b drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0fda19c7 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x107473da drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14f7a7b9 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17e824fa drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ab13104 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1afb7d37 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d25e931 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x243de86c __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24cabde3 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27fd6456 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c50fa89 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d9978bf drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2deaf1b6 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30444dc4 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31d3e946 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33f61336 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3457ddee drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3481135e drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34909239 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b7cff59 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b8249b7 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d34a554 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e649c5c drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40397399 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44c1d455 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45ae6faa drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46c05d54 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x485aea9b drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49190038 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b1addbe drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4df69d85 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4eb3a3cd __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ed9244e drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57f1e27e drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x586d6802 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5da55641 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5dd36a65 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f0f95fc drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f19682a __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6342c4f2 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x696c89a8 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a053c18 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c3d7ad1 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d4e5fba drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ece89ad drm_fb_helper_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 0x71c07625 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7939326e drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e3f4af3 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83a789ed drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86b6e3b6 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c8ae882 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d688eb8 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ffe07f5 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9511167c drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x995a463e drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9be6bd98 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa08f176a __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa491aa9d drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4d974f4 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5cdd4c2 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa666164f drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa66713fd drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6d03033 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7b1bf97 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7e5f82c drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa2d9104 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaeb3e67e drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf265a5f drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf41c612 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb445ac9b drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb54185de drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6a74368 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7c6ecf6 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd0c8618 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdc44748 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe911a5a drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc22b85dd drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4bab948 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3b8493a drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd48762d0 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd49780d2 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5192482 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5a87394 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5c4bdcc drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd17fa53 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd2c92f8 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfa6cddf drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe30ecb41 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4bfce47 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeaa4e584 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee6506df drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeef13c0c drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1da1ae1 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf41b2885 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf53544a1 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf630b309 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6a64ff2 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf767d5f1 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf865e0c7 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff2b879a drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff4b4cd1 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x00ad1efa ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0925a926 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c36bc22 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x111ad724 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1128f490 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x140858c9 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1611283d ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x176e2741 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1dce3849 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x27cfc41b ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x27fafbd8 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31536fd6 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x338e9f7e ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3a21e5ef ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3a252d93 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4637a56f ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46ce679a ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c3b963a ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ffe2d44 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x51bc84db ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x555778b2 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c48439b ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x63e3bac0 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x649d9b96 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x707165a6 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70786652 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70ec2da8 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a223052 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7c521ac4 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d314efc ttm_pool_populate +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 0x82e05bd5 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8465d718 ttm_tt_bind +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 0x8ad8322a ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8df1e7a4 ttm_bo_synccpu_write_release +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 0x9cad4963 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab9966e3 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb30da687 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb5dbc7ab ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb667dd74 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba286fb8 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5ea10a1 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6dbcb72 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccc71119 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd4a6d06 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xceadfb86 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf31d2c1 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd2edc642 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd6be9918 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8cef8f0 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde67bbe0 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe0b27438 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe84cc253 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf29f4941 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf462e826 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf63b2187 ttm_fbdev_mmap +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 0xb0e3987b i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xcb3697da i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xd27916de i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x42de7207 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x835f139d i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xb4781d07 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x15da9048 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4242e1ea mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4993062d mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x56254c44 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x59fee5c4 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5f45f8ce mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x65bc902f mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x72080fb0 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x813ca27c mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x900ba90a mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9601e22e mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb1bd1449 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb35666c0 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd2529f54 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd2975c84 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd2ccff08 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x419b1dd5 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xb4b4b9eb st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1fb59b17 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2bac21f2 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x30f9bb43 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3ca218ca hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5da14fc8 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 0xcfbe2780 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x076dad1c hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x164a928e hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x1f904a16 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xe105fcd8 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x20d17c59 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x4426fc1c ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5d431f7f ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8aa8d534 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xfe74f1d9 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x3bd2a26c ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x6aacb7de ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x9e0a7abb 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 0x08294654 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x14cde428 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1c258182 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x376ee815 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6d4c67db st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7a5553be st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9d9cce7b st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa33ab35c st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa815415e st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaf043ae0 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcfff3469 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd8a22789 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe591b75d st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf3484d32 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf4050b9d st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x186dd197 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x98bdb165 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xa9a1b792 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x06da5419 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x42aaad27 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x987f97c9 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xd065903c adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0dde3f42 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2482a9a3 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2f2a519a iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x35de2204 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3e5cfc89 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x490ecf9d iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x50ea181d iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x57430217 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x5f8ea0d2 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x729ca263 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x8a630194 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xa146448a iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xabfd46c3 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xf450f2f7 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xf6d100bc iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xfdbd014a iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xff65ea58 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x2b84f1fa iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xd197615f iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x8e0308fc devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa937ef27 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xd62f8289 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xef605e62 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x8f3559c3 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xa170ed8c st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xe4a5d5cc ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x53a10372 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xec0c83db 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 0x46e5b896 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 0x09fe7c23 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x187a70c5 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x195bc258 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x19841d56 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1cad0bfc ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x507a63a0 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x586e11f6 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x646f44f1 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6d29f61f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7f1f69ff ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x96f9c3d0 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x98d280b6 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcec33733 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd081c756 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfcea5900 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfe16c13b ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfee8cbed ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00ce4817 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x031ec43e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x049ff973 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a40d09a ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c92f987 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d06c782 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e61b5a0 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x138393c9 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1cc2428e ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d56b35c ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1fdf1ac6 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x202897f8 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x231c88a3 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2765693a ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b9362fa ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ceafb86 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f69ebf4 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33701240 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3616b85c ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36202b94 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39148556 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c4cbba9 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e3a5a2f ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41e633cd ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41f522ae ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43dab53e ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44cff099 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fdf6a5 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b07eabf ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4cb28de6 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f2f4c5e ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50247113 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51513bf3 ib_query_ah +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 0x562ab427 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x586ce2fa ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60c84984 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62e08f09 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62e1351a ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65703a6b ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x688353b4 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c700f52 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c9a5759 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6daf4aac ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6eb00238 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x739da0fd ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74c7e12f ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81896a3d ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8370152f ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91247e84 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x919aa3b7 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x926ca633 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9969bc33 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ae70aba ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9dd5dd5b ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e6e2f11 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f3680ef ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7b10fff ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8402611 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaffd676c ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2f64edd ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3be5ef2 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba596a9d ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb48427d ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe2adb09 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe5febd6 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbfe7e9f2 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3ff1c3e ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc87a128d ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4bd6113 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd62ee6af ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde6fe6f4 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde9add25 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3198a8d ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3608cc6 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4d6da01 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6eecca5 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9397d1d ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec0e9cca ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xecf4c0e3 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef40e106 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf04d68a1 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf54f753a ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7634ad5 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7ee3268 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x348fc493 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x46ded81b ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x49361547 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x543d0f29 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x545aff32 ib_post_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 0x7bf5a681 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x920d7856 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x965dc198 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa0fda06c ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb2e20fcf ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc80378c8 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xca5385ee ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd5540e7d ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x190d3f91 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x25008bae ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x339b1da5 ib_sa_get_mcmember_rec +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 0x5deb127b ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x62d49623 ib_sa_join_multicast +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_sa 0xe282a90a ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xff3760fc ib_init_ah_from_mcmember +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 0x0c327619 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0fa0fe50 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x12d79862 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x267d6b7b 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 0x6c0cafde iwpm_register_pid_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 0xa2abbaf8 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xacab7037 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc1e6905e iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc6f01adb iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcd0c6909 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcdcbc27c iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd78d49a9 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe375631d iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xef90646a iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfa7a440b iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x096b0811 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0ba548a7 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x15dcb3eb rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1dd06593 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1fa023f6 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x416f4582 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x47e9cbe7 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4c322349 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4d62aeee rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7adf54c9 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8bb60eca rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa54954be rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaafff85e rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xad53cbdb rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb81818c5 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc0239466 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc291055d rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdfeed8f6 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe11df805 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf84d2df2 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfd5575d2 rdma_resolve_route +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3c9382da __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4e712214 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x51648636 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5b58c29f gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa594168e gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa8ca86f0 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb103ce61 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc5b02e21 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd0d680b7 gameport_open +EXPORT_SYMBOL drivers/input/input-polldev 0x13146f39 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x447efeea input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x5652944d input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x59140dd8 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x8b9c554a input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x90bad6ff matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x402302b3 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x741c49d8 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x89342708 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xd86a8f54 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x1c65305f 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 0x417eef0f sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5916e6a0 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7bea7b74 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x898d2fa8 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9e2f000d sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa1762537 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x254dc3aa ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x476971e6 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x03d609ea capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x094d8e34 detach_capi_ctr +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 0x36eb8fa3 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x48dcdfc5 capi20_release +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 0x8136e5b5 attach_capi_ctr +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 0xa4f4e8d0 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa8a5d904 capi_ctr_down +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 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe53c0ec7 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf1b93cc5 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf3cd5444 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x003c53c8 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x01759d59 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1c26047d avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x251760a5 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x25c28d6a b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2c936a14 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x318f3c1b b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x32306a2d b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3bbbf319 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7ac583af b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x80ad2271 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x82780622 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb1929fe2 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc09393a7 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xefd649b8 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0eb72c67 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2c29d0da b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5ff9a6e3 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6c2db362 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8ccee073 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa2711ed9 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa6f0de4e b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcdb8df08 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe2e760f5 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 0x16a47d18 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x19817b9a mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x9f7d1175 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xff485449 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x66f7c431 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xd2f708af 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 0x6c199976 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 0x1dee8b86 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2e6cc8e0 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x37b934c5 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7964aa33 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe594f609 isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x42a15f20 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa2c1569d isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xb1d06ace 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 0x07ca6eed recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x113d0bd8 mISDN_ctrl_bchannel +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 0x2c3e24b7 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x33cb2296 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3c218193 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3eaeb4ba recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x42d0bee2 mISDN_clear_bchannel +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 0x6730522e dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x758b0220 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7668d13a create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x79d89d19 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x83f83698 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x867de9e6 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8acdecea mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8dea9084 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa0ef1396 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaca065a6 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3fa9b78 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcdbb34bb get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd1aa763b get_next_bframe +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 0xe293299b bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xecfdd648 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf3e59944 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 0x0c4d0956 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +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 0x8b24280d closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa90deca5 closure_sync +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 0xdff1b8a2 closure_sub +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/bcache/bcache 0xf7f3a2c2 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 0x01046975 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x160f6e8b dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x29865970 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x2b67fbf1 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3a6643d9 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x45f3a630 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5d809900 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x68c0344b dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x76172e29 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xaacc1720 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x273e98e7 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x03f4db2c flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x10f6257d flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x38fe0593 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3aa5718a flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8399f153 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9eaeb5eb flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9fa24f75 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xaf9756d1 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb7ef009e flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd34b5f0f flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd558a71e flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe46d11cb flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xed8e64ed flexcop_pass_dmx_data +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 0x621bd7e9 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8189c361 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x97bdf8bf cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc43136d6 cx2341x_handler_setup +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 0xad2e84fc cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x8818aefe tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xc980ca5e tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0ac96f9f dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x15f25172 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1f98038d dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2d5b83e8 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2e23c4a0 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d5a2b90 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x65886421 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6cdf9746 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70848759 dvb_unregister_frontend +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 0x7adc48ba dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e590041 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x88c0ea33 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3bb8511 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa508f415 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa727b7c5 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa853b81c dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd2f8095 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbe8eca40 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc37a1c3c dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcb4fa7f6 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd5e23c58 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd9a59e6d dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xde7915c1 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe0ad2451 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe1e329fb dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe30950b3 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe7f7e05c dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeba8a5c3 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xecd5ca8b dvb_generic_ioctl +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 0xb7a34fbd a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x08e26c6b af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x62f40cf3 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3f72eff0 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5e851f8c au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x91c681f0 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9b369708 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb713af35 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb72aadc6 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xddfc63ae au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdf52a3b0 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xef644c4b au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xdb44f104 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x79f9dc5d bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x587ab94b cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x8153ba9c cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x97e37597 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x4ec14b30 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x7b45a608 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xaef71c5d cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x1c49e233 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x1c534baf cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x89fd0db3 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xb06eedbb cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x401fd7fc dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5d03b481 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x8a89b795 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa2426222 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe85ffb7c dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x284d6b52 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3cb42dc4 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5e05c6fd dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6375320a dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x69b3a648 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x749335b6 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x80904ed8 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x845bacd6 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x96a0bb70 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x971a2e9d dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcac3b80d dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xde7bcd02 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xec6d17a8 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf3a79398 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf890e929 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x60cbbd71 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x64377656 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6cc6fc29 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x81508c61 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xaaddf0da dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc0faee75 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd859744d dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x64171863 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x865b0f10 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc6a18255 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xcb9cf597 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe67a3946 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8cd98475 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x26e34c21 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7544ef44 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9c1d077f dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9e4c0ea7 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd424fab5 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x1b175286 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x1dea6398 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xb2e4b98d drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x59bcade2 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xb015c3ae dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xf16c606b ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x78903971 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xc987fceb isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xa37b0488 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x9d2b6186 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x0ba865cf ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x99a5e9f8 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x6e7b4214 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x09ade30c lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xc442d53f lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x190adc8a lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x15883ffa lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x9a985cbd lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xe06fd88b lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x4c94c759 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x87dd54a7 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xd0787c6d m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x746be757 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xc386e8c1 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xb997bf6b mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x66f6bfcc mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xadaa0c93 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x1649def1 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xb72fc54f nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xad972ec4 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xa6654cd2 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xb08e2279 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x04f7a535 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x0710bb03 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xbe887a7e s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x2de7ea97 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x5dd2f70f si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x3e04d843 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xd2d4f380 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x81613141 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x59867120 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xcda3e296 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x84196bb3 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x48a9d8ed stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x9e179e92 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xb1509263 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xa06c3063 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xa3350879 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x8b5ea4f6 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xcf3c21a3 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x2574dd8c stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x563ca598 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x096ff56f tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x5e0bc0d0 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x076954db tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x526a17e1 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x667fbf89 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xf69d2b80 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x85480f5c tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x160539f5 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x35c0b917 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xc74e5f92 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x4d4f5cb8 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xb11fedce ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x06697f57 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xaf905f7f ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xb86e7f9c ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x3d555cee zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x5f758158 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x5182fda7 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x16b2f65c flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1dcae47c flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x648e2fe5 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x66dacb3c flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9ea7285e flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xcd78b985 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd0733254 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x28568014 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x31bf3dcf bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x6b4dcf00 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x94605ac0 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 0x82f62d68 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/bttv 0xdde09107 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf5d553d5 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0142a3db dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x079e7037 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4e1deadf dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6c8820ec read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7255e79b dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x735c0b35 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa925ad07 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbe714d7b write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf9c984c9 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xcaa18c5d dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x00746cd5 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x850fa11f cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x937d0946 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xaf9afd6e cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb3b214e4 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x0a7d1f12 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 0x20731fdb cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3c35172d cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3ebce0c0 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5d844cc6 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6404171e cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x8b1b4b23 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd3f6684c cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xcac914f1 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xd5269f03 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb2322c4f cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb88b10e4 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xef18efc3 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf9c15646 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x3a339b58 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4d0f01f3 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9209ab97 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9aa679bc cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa6869a7a cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc9164e92 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdf9ee2f7 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x129f3b1b cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2e325489 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2fc996d8 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x36feef42 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4ca379b9 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5fbf8d4b cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x645903e2 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x72b55553 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x80da71e2 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x880eda7a cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8c291efa cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d3cd8d2 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x95e4e2f7 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa68aabe8 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb6502c50 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc04b8114 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd219f36f cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xde8bb485 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf2590702 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfe135418 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x05358bf9 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x05c5243e ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x10477172 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x167e6a3a ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x29bd15dd ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x485755be ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4c7b57a2 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6c258309 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x704a2ff1 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x846f3a1e ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9afe4cb5 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb1f65046 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc867e915 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xea1ff07c ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xed768819 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf7c03f46 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf978d981 ivtv_api +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x113ef1cd saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x13716c6b saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x157140ba saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3d30a8f7 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x65843001 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x877271a3 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8b996beb saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8c4781b7 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8e3a53de saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc69e5963 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe1ed0cc7 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xefe05acb saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xa05a24a7 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x3b24f903 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x59d31b92 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xcb9cd11a videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xda476945 videocodec_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6687ad83 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6bc2dc84 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x78a61370 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x80a0b3a2 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x99e9a198 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbae58868 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc316111c 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 0x0875e4ad snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0ad411f8 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2a88c8ad snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2bb09d4b snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4c537b86 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7880346e snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc9be8d2e snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x46268f74 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x593c63dc lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8cb245f4 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa5f366bb lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbc1490ae lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc6a7edc6 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc8d76c0e lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcd39506c lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x1fa75d31 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x5c1faad4 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x55bf7eaf fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xa0cf680b fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x28836019 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x9d3c37c3 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xe91490b4 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x882ce32e max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x94c36002 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x2e0039b6 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x16488e93 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xc602a885 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x81190025 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xbfadabaf qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xb451c515 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 0xd81c673f xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x384dfb1b xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x166ea0a7 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xbeebcebd cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xd4dcccb3 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x06a37c69 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x669d4f32 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x66c0c065 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6e54b8d4 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9988d7a5 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb0862d14 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbddae081 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe3315186 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xff070e97 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1fc3d1d6 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8fde566b usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9beb52cd dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa6c87d85 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xab8cc173 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xcfdbafe1 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xfe76ae85 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 0x380a3aae 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 0x00634160 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x04903034 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x16b4120e dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1d8367b8 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x481afcdf dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x54fba535 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x825572ed dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa823d045 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 0xdff2e518 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe76636bd dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfd08c20f dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x60d9f1c9 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xfb199fe3 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x13929d73 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x17370cd9 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1f33bb21 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2eb4832d go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x33e39a0f go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x52be58d2 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5687dc56 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xcea2e8bc go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd965fb2a go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x301f5434 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5b523aa1 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x68241305 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7d702692 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7dc47d26 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x93a1e99f gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe6d34aaa gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf67c8da1 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7f0871a8 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb4e9f976 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc01a7460 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x8937ebc1 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa2f0ea0b ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x3bf2f542 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 0xb5c7958c v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xeb0310d8 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0d42e464 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x359c1471 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x3c2bd2b2 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x3d2e92f0 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x81a99f74 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa2865dd4 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xb2a6e729 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x0cd49b87 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x43eb8f75 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x444b4ac6 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x49ebe5b0 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x7380564e vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xadd3dcef vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0381398f v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0623d1f5 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x07b7fa41 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08e37e09 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0c05e11f v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0c6dcb49 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0cd0161f v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1146be43 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x15cdc743 v4l2_clk_put +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 0x1c4de1f4 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x26be0fb9 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2a43d5a2 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32f95e06 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36faa788 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x38f3bf73 __video_register_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 0x417689fa v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47af022d v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4a681b08 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c9959b8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ce8f40b v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d8b33be v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ed24b7e __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x556e2478 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58de1135 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5b694f99 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5b862d25 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5daf6422 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5dd74308 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f7ba11d v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x657452db v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x67ad8e51 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6965c6ca v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a39006a v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6d4a70f9 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e8154d2 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73dc005e v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78404915 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ac387c4 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8117361c v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83627908 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89766d73 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9767d865 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1530a3a v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2f9da16 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa5ba6bf1 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7ba5521 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf4d497f v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb3bd2728 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7154636 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8cb8948 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba159c00 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf43b7a4 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf95cae9 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbf2fe11 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6293fb8 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd66a497d v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdab87d18 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd491381 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe129618c v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe5a9f4e6 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe71cd4a9 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee37daba __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeebc3e2e v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf23c2616 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf349fa92 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf373e0c5 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf5918575 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6cd5600 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf886ba46 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf89a4f50 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfafdf8b2 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc0f712c v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe2c7560 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0bd8b2ec memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1896c80b memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x24437887 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2ff270b8 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x37ff704b memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4e70e8d1 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x796f9227 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8625b4fd memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x92278330 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc3bf4acd memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfadcde9f memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfe1f8d32 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0ab7e4ab mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0c8cd645 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0dce32b4 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x107296a5 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1b255fa4 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1f9a170a mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3bf11e15 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x494ef088 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5da66c58 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5e47ef66 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x62e1b019 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x658f03dd mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x782faea5 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x82b38e6c mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x837fc1e2 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x83aba793 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8cefa203 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x906a5002 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa1687d28 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2116a76 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xab6f647c mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xae0b33b6 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb17ec524 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb7d9ff67 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbb074e88 mptbase_sas_persist_operation +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 0xcce71940 mpt_raid_phys_disk_pg0 +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 0xe571607c mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xebd03026 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xef9df28e mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0467014b mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0f429e8a mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1bdcabd9 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2d69de65 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2dd9cb68 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5ac09e9c mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5e484ccd mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5ee9211c mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5eeed448 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x635e27d4 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x65e1d9e0 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6acd1885 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x74f4d96e mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x82211d1a mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x86c7f276 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9342949e mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9cd107c7 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xacdb7c1f mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb7e89c15 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb901e237 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbd2e9448 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbea72486 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xca06163b mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdda83dda mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe5f91703 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf343922b mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf76c6144 mptscsih_abort +EXPORT_SYMBOL drivers/mfd/cros_ec 0x41ebcb00 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x4b170cbb cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9b27f409 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe448f7e6 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x1b9addf2 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xb2407143 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xd72cb5cc dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x679a3c0e pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8268ba76 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0107034c mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0cfe34c8 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0fa21b9d mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1c09a2e1 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5cb0dfd5 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x672287c3 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x72f381b7 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x83134b98 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8ba08f24 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdfc211c0 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf606829a mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/tps6105x 0x4fd16a63 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x87bdc146 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xc3383c34 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 0x1594f648 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x5d397778 wm8994_irq_exit +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 0x01c38666 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x3f117f21 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xd19d0b4d altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x54ba3ca7 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x87e96c0c c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x4232aba1 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x88102671 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x141e5ede tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x209447b6 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x2a197b5b tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x5d912b11 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x86838787 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x9684729b tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xace3bf79 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xb617c0e6 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xbb448dba tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xd7e18f42 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xda7f22b1 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfe45604e tifm_eject +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xa1d7d91c mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0db3c8c8 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0f1fa9cc cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x322ffbd2 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x3fe00c6e cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xaac23f48 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb262ea3c cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf9cbdad6 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x5f6a91f2 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x84b3047d register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb89c0868 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xce2a5c73 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x2ce4516a mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xa322c5da lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x6c71cb68 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x1c938b88 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0x210597d7 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x419ad1fb denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xa56f5efe denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1ecd165d nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3f2a0bfb nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x5d7e419b nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x77c4cc1d nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x79d22987 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xdd9c7e1c nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x2baf1f73 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5932c565 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xa817b362 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00854e14 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x995637a8 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 0x3b69212e onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x75207b41 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7859904a flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd2921e67 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1097db30 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x48fa0541 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x59f99464 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5a561ca4 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6b036c2d arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9d7f6bb8 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa680b5bf arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa7c7ec68 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbd112d57 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xca46601c arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x179ffb07 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x9e3fc55f com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xffee531e com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1121877e ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x4cbc5bcf ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6cea1450 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6df6d21a ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7b4adfab NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x97f3de68 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa6390ccb ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb5bfbbb8 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd06bfbf5 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe88eeade ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xf3120aba bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x8b41ab18 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0198219b cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0d7d5d4b cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x19abe360 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x27f7bb87 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2895c46e cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4e2d676c cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x55ceac2b dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6c3c8809 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9cf2fc05 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa3eaea4a cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa62a4f88 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb26bbb21 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc542387c cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc5686d5d t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcb1c8244 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf9589ff3 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c1e76b1 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1ca7ecaa cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2b443f3b cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x300a897f cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35093c84 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3cb3cca6 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3cb4bee8 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x41a956c7 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x44fb470a cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x52fcef3e cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6cec7bef cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7710f04f cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7bcf387f cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x83166ce0 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x842e8317 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x84ce48e1 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8f68474c cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x92652f68 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x991fcd24 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3326685 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa68a1970 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xad68bffb cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc0f0641 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc677485 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc5cd3140 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc637d25c cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd227f2a4 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd2bef1bd cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xda437c55 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde515cb1 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe08f2697 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe43689e9 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe4a3c209 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe6491626 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x290310a7 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x2aed1c84 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 0x9316e756 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 0xdcae6fa5 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xedd32fd9 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03de0f26 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0582ca93 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x080689c9 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09ab0a3a mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a1af7a9 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d5cdec5 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12b2e0d4 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d957ffa mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x280dbbfc mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c7763b4 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ee69788 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b81c26c mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fa2689e mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x551a3872 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d1fca21 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x770df5b3 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7980db54 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a35e516 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f88a7d1 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x821e82fd mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82489573 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a751527 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8eb4c3d2 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ed9ab7b mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95c1d539 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9efea3af mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaee7edb8 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4993644 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb691dc14 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb5b5124 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda832453 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda8f7294 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdafcf6fa mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea4c6f21 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee62ea10 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf70f0378 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01dcae81 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04d253f1 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0512a428 mlx5_core_dealloc_pd +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 0x10fe1633 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x114a556f mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x121cbff6 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f30ccfd mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32271778 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e9eb1e1 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4564689d mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x471eff21 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f97a3f3 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x560c399b mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e2d15c4 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x630a117a mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6413ea11 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6436b71b mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d041b89 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x73932b2c mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x879b625a mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87f4d0da mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92055dee mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92e04583 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95b06971 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9792d008 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac157346 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf73331e mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafd3d87f mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2122251 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1e7ef38 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdabe7d5e mlx5_core_destroy_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 0xebdb38bf mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee947dc2 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5aaa04a mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf635abf7 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf71f7a5a mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc02061a mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x18d19589 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2a0ffc9f hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x91e24a4f hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x950f0dd7 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa6a1b738 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0a46f0e5 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0df66af1 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x21130e84 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x35a59f35 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x49c3e249 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6230a288 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6fe0b774 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x823f1003 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9d13c288 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc61e969c 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 0x39365051 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x3a9a4c68 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x525727c7 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x5efe29e1 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x625f8439 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x9cba3ef8 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xaef4a53d mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xd45a845a mii_ethtool_sset +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x46dd0faf alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xb15c9bfd free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x8cc7e0d1 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1b90fec1 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xc75b2c9d pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe23ba39a register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x6d6f344b sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x1ff291e8 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x2f3c28f6 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x2f7929f9 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x6e061f4a team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x8046978d team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xcbaf54e7 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xd02d8c64 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xd90c4af4 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/usb/usbnet 0x1a81222f usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x223ec7bc usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5a66141f usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x21291764 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x37628cd7 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x47d7c725 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x497b8ab7 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x67dcb998 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x879dc2fa hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8d0837bd detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa9c96ed3 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcb4362c7 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xec11f0ba hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfc91c92d hdlc_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x032e5e23 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x0ecc05ea init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x52da8b53 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x840c47da reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x52104666 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5264d067 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x66d9f5f6 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7b24fe82 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x810f23c0 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x977195d0 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9811ca76 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbd244b89 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe05267d3 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xeb7ee3f1 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xef54f101 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb6d8f0b dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0c29a722 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x123c0e42 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2960f1e7 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2e9a3f36 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4bdb2a88 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x678f8242 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6abc076a ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7f329fda ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8ed67883 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe4fdb2b5 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf9f5a9fa ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0a199f1b ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2011b738 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2caf84ee ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x61213eeb ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7d674272 ath6kl_core_rx_complete +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 0x9397295e ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa5a2a4fd ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb48af683 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc54842ce ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe82174b8 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0916a6bd ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x154612a1 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x167f5b56 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x184b73e2 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x19a8040f ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x24a2c307 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x285f9b10 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2f527919 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3994c338 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x58bd2a1a ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5ad61323 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x77823fdb ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8416077a ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8731c2fe ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8fc8003c ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x945e978f ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb224a173 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb5bd408e ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbe2ac0b6 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcce2eb60 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe313da53 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xec0182a3 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xedd28764 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0056742c ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02f152b3 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x094a75be ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0eccae01 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1305eec7 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x133878e8 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x144f08b6 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14d59f18 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x153b1ed4 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1685d617 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18bb79e4 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b2aa7ac ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d31a496 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e3d271f ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x214cecf7 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bb292da ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cc800b6 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3054fb81 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3276dd6b ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35bd6875 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37f6bf40 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38ed5d92 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3920665b ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d7ea677 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4409b513 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47e7a031 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48e95ac9 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49352789 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49ed64ee ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c477c8f ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4cdad260 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55628663 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57611a7a ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b1c7d10 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5efbf892 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62e9558a ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66a70f03 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x677c6a50 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a97b68f ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6facca8f ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x729ff64a ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74e1ffe7 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76ccfeda ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7775a186 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x787a7b1a ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b58fb50 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e3b6200 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ed23046 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83a2f81b ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8658a166 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87bf78fc ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87e07d22 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88ad5671 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c90a063 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8dbcce28 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90ebb272 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92f15ef0 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x947dff07 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95c2a9f4 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96d6af57 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97be7b7f ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c863939 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9cbfda10 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d067ee8 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d792c85 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ffb54b6 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa21aeddd ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4cbd2c5 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5d2775c ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa645bd56 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa70f72d5 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7ee8f9b ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7f23225 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa969564e ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa9461e5 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0392663 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8939f13 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf74fa52 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc2c989d3 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3218830 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9aed3be ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcce69063 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce4f2c51 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf736d31 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0c0e71a ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1542d20 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd29d6086 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5d93613 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd650b205 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd65a205d ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd96421f7 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd7b47d1 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdec64194 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe185730d ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4638bcd ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea9ece67 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeccd1476 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf06f2c2c ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1667af9 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2585a57 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf559a9ec ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa98d889 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbcef059 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfde0880c 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 0x61d5cc5e stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x6eae33a5 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xaeb7025d atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1055b7a3 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x49d0a93f brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4eb7d401 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x55d0e717 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6d49366e brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8ec6d2ed brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x955240ac brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa3ba5036 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xafcff611 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc1e1d5ce brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe77203d1 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf4e36548 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf95b17c6 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1642e2c4 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1c00c121 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3d733880 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4203aa5e hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x451fb1f2 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x741c54d9 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x758fcb1b hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x75e36254 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x78258e21 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x78bbd0d5 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x86f44bf0 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb10da8be hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb3aaf41d hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbeb2a77d hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc247d323 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc3193c8b hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcd7e18ba hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe8f37439 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xec2e5cf5 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf00e6139 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf290d4a3 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf4343b03 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf70210f3 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfa1ef43f hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfe1f49e6 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x07bb18d3 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x08193642 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0b2db82a libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1bbb365d libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x303fdfaf libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x34cd9e34 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4b482e92 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5acaf1ce free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6c590484 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7757b274 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x89d1b172 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8a3df971 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8b465db3 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa75cee98 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb6aced6c libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc71c6cc7 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd3064678 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd8b3981a libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xec7b39c6 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xeccc6f10 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf8d1215f libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00fa811a il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x036f5134 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0809fb61 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0eb1629f il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1247a36e il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x141a6c12 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14bffdab il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x158b9b33 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1804267e il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18563522 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1937b02e il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19fb175e il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b253f91 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d397b1d il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d579dbb il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20263fe1 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21657e78 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x22a16a59 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x232c97ea il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x271f136d il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29e52d83 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2cdee1bb il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d5a4e11 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ed25b7f il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f7efd58 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3075d1f2 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31890f30 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x32bbd5d1 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33c75167 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3407e2f7 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x342639c1 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37e2415a il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39c168d7 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b67b1e6 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e819651 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4266659d il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4348c756 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43a49e5b il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43ce7a97 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x441904be il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44f843a4 _il_poll_bit +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 0x4cd12410 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f2aba74 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f43f37a il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50b99871 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55478ef9 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5888111a il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x59911bfd il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e2217ea il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60762bdc il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x614c37ad il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61e35681 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65a5435a il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6766f7f7 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x721e875b il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73053398 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x750af73c il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x752ea840 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75ad36c8 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77d6d6c4 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79bd593f il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8039bdd0 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84150b3b il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x874f83c7 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8829ffdf il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8aeba59d il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ba492b0 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ecb9a6a il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a2f456c il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c6ecb66 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d45211d il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2e5f946 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3f71b82 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa49cec20 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4c30b7e il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5b22285 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabf8c909 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb209803a il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3803fe4 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb690bcb2 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb770a7ae il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9e8a408 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbb1ee6b il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc03f6572 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc660200e il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc75d2064 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8a75b9f il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc9bd8c17 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca261c56 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd453fb66 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5d82044 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd942b96f il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdce070a8 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xddff9f02 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb49e940 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec9855e2 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6a05f13 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbb980b8 il_leds_exit +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 0x07520f71 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x099d37fa orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2abab8da orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x45ea21db orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x489391f8 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x49b6bc45 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4ebd02d4 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6bb66467 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7005e2ca orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9e493155 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb76f1e20 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb7ba97d4 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb9e055a0 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc213c42a alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc85d51f0 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd25d632e orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xdb718917 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x01cf96b1 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x03df5f72 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0445af6c _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0cb950d5 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0f1d0125 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x150f9daf _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1d5ec288 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2fa8599b rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4299f041 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x493650d6 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x49bcbc4b rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ff88ff9 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x565d7c16 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x58ccaa2e rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5c369cbf rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6437c016 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x694ade40 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6dc06c07 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x76464495 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7cfe6d18 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7e7dd781 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f5d7b19 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x82758567 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x83ae0ba3 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8c1f1579 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8d709afe _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x90f8e0d7 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x914a6d94 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92ba38f1 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x980d4d0e rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb3f72ba rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcc22e6b6 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdbc5d3fe rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdd48ea41 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe36c1f2f rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xee48068a rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf042ebdd rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf26f5c1c rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf8830822 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfb8ac4d0 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfe1ad9f1 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x44f060c6 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x46aaee5a rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x70d0878f rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa57e288f rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x0d3b0a2e rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x5349670d rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x7aff73ff rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x933b5641 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1ba1e15a rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1f282c4e rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x202b34b0 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2534d88c rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x281eb25b rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2a0ef503 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2f315ee2 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x373d5584 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3b5c552e rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4e16342d efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x57de8ed8 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6579232b rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6c654014 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x77d5a4c5 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x82454bfa rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x832c7cca efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8732578b rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8fc4d570 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa41440f7 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa6fb5104 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa9290819 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb1131ae1 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb253d114 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb95320d3 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc7640b75 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc8525023 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd3ba97f6 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xea0b4468 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xecb975fd rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ece4c4 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x206beb24 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x25315bfa wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2a3f249e wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x48a96898 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6aa49926 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xcb247a82 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x2685315b nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x5bf37299 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xadda2ac5 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x2606cf18 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x49ab5975 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x03d6c1d3 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2f1aa5e0 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x43c9987b ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x83ca51ab st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xad9697e1 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb061ba02 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb25f316e st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe1ca0d1f st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf3039a01 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x01353731 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0af32935 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x12d30dd2 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x14159007 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x32d9936d st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3370ee6a st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x38a8d549 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4c4bfeac st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x78cee93e st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x97d9fce0 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa1f09544 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaaf0ee0e st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb8a35c77 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc0280c4b st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe0054d7d st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf735c90e st21nfca_hci_remove +EXPORT_SYMBOL drivers/ntb/ntb 0x090e1cbb ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x17decaff ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x4ae694b9 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x6e722b11 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x89ca7b55 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x9d7f6210 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xa55c97e8 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xc69ea0b7 ntb_set_ctx +EXPORT_SYMBOL drivers/parport/parport 0x0cf4968d parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x126ab70f parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x14aa2303 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x1bf39734 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x30d4d458 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x3f728ca5 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x40f3bb87 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x4286d01e parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x49d74834 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x4c0f4aa6 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x538f7eb9 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x66f45337 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x6f907380 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x6f930d97 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x7037b032 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x75c3828e parport_read +EXPORT_SYMBOL drivers/parport/parport 0x84ac3b29 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x8fdfa879 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x9c54c67c parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x9f8f8018 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xa16a08bb parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xa2b7a6e3 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xa3692498 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa38641fd parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xb9ef4205 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xba7165a0 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xc42108d9 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xd1b542a6 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xdca98d5a parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xe249c4ed parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xe59c5c61 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xfd5732a2 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport_pc 0x817f8516 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xaae97f15 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x097baaf2 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1b049115 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3252485f pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3b036f37 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6832d01b pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6ed14012 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x72ae5e99 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7484f5e8 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9b487d78 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9c0ffeeb pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9d958638 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa0e1be7d pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa33c38ff pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa6869a19 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb70714fe pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb9bff4d4 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd31ff3bc pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xee67bd3b pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf5d11c28 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x20028278 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4a80b572 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x666f348c pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6effea64 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x77686679 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb0cb46ea pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbb7728cf pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc3350ec6 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe438c797 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe93931b3 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xed8e9eb9 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x54aef352 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x554c31a7 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x139abd11 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x8d31eaf8 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xb9ee281f pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xd05c9f66 pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x3dc67f1d ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x86275173 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x95eecdc4 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xb141340d ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xf9453f19 ptp_clock_index +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0f05980a rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1214d65d rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x21d56a38 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2929403b rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x441983f8 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7d6e2f5b rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x8b76e668 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbb9690f2 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbc9a598a rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xcbc54958 rproc_boot +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x7b943eec ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x0a85dd7a scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x896ec53b scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x9b9c4424 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xcf6fde3d scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0445870b fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x15f84a38 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5f20d2b0 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x66c25176 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7d4cb63c fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x87357234 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9bc81f2c fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa6e473a0 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc3d8f82f fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc5bfac04 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcbe523e2 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcd94c74e fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06030848 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0e27df94 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x139dd418 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x14234bf8 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x15ae07da fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x15d9326f fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16fe1e50 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1bf25042 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f6e1ec7 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x29760df8 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x29e8c80d fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b4ea9dc fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x31b8a48d fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3b7fd79a fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3dbab610 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e80d3df fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x436f7aba fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x45899c0d fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4d22edfd libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f3a533e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5bc92a04 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5bc9f4b9 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6cba4adf fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6cc3f500 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6cfb1dff fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80d53f90 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b8ab46b fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa055354a fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa43bc355 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xacde9a5d fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaeb289b1 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc26d4870 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca183da2 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc89dc8f fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xde8fb0bf fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe4067845 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6a48fef fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6a84472 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe9ba1e8c fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed6f5134 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf12d3baa fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfc638399 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff437ae7 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a751952 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7d1f3385 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x93df54de sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa949a825 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 0x8964dc5c mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x187702dd osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x22ab6862 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x308a009a osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4ac8231e osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b94c2ea osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4dd7b635 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5507c6a1 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x56ab25d6 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5f53b7ea osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x62877816 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6c1c5506 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6e7ffbdc osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6f152867 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x711a46a6 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x71b24912 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x75057265 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7ee7e681 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7ee84922 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8282fc88 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x838d245c osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8ae404d3 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8b20d33f osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x92075e2c osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa80213e8 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xac43dd4d osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xad428e7e osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb27e80d1 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbdf5e3e2 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc079f321 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc37a3b61 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd1c285cc osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6f84e32 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xedd781f7 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeff22561 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf11b8363 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfc6e0f98 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0af0fa92 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x39a776fa osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x51e73557 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x57dce94d osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfcfe4a32 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfeef276a osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x017ae7fa qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x03041e4f qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x07355939 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x088221d5 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x15b74c79 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1ee6fd43 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5b9353ff qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8bc60eff qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9fa4603e qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb810eda9 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe60df8f6 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xed5cba6a qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x110ca663 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x42373a67 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x77e5d7f2 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8ffe2c9a qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x923c920b 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 0xfa546882 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/raid_class 0x3f71a871 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x843ad770 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x84ff6fab raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0d8892d5 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1e9802cb fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2726b6dd fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2ab82687 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x61851825 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7b50885c fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8a94c216 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x92a23c1c fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9bdbff83 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa657f573 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb8507f13 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbba83019 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe8d330e2 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04e654ae sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0a755c07 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0e468406 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1297d4ea scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17b82772 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1b15f73c sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1d1139bd sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x39368c79 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4024bb19 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4923f06e sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x58b645c3 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75e3103b sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x779723f1 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x78512b3a sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7bc0bb34 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x855871f3 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x87c45122 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x889c9966 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x913fa2c7 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9fcfc117 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc062c513 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9440e3e sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcbd0f9fa sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcf42a51f sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb008124 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdeea2719 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfedb739d sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfffe6d46 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00863bc7 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1960fb4b spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8a9e8e3e spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8aa2e57e spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8df7163f spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x258012b1 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6c780112 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xc473c44a srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xe2a9fae3 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x034271da ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x25a9b93a ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x66d9678a ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x81416882 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd0338545 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd1a1c1dc ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xde0f9578 ufshcd_system_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x002c2d56 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x08de433d ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x0aa8d766 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x0f45168c ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x1b33191d ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x1ff0d68d ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x29069427 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x2ac3c4c2 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x2d779e50 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x3fd0e222 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x4d1f04b9 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x6083cfcd ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x6dcbd1c0 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x7a0cf97d ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x7f1b5476 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x801132e3 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x96545c2d ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xbcecb47c ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd2dab3a5 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe0e4bcfc ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xf6f8e155 ssb_set_devtypedata +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x10554b93 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x17a02de8 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2ec7e70d fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x56fb187b fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6d1b73a5 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6e81291d fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x71e95bb5 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7445da81 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x74760518 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x77e1d83f fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7c686d26 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x84606dcc fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8d45a138 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8e02cf87 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9a4ad371 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa2d025ff fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa4280bac fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb80fd035 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbaeb77dc fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc51d69a3 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcdd8f598 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd3d716d6 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdf946bd4 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf5d927f3 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x12ea8655 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x1b0a95f1 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x4451661a adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x1935718e hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x579919dc hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x82867f7a hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x95d328f6 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x05fb8b02 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x352b29b0 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x00e12719 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0dd5807c lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x13d45c4f lnet_copy_kiov2iov +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 0x25fa2eb0 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2a12adca lnet_net2ni +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 0x2d0e23b4 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x313ad1f5 lnet_connect +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 0x55db5324 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x57c66e81 lnet_register_lnd +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 0x612c23ee lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6442226e lnet_sock_listen +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 0x6e9863a6 lnet_finalize +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 0x7734269c lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7b93d992 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 0x88ba7a49 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9ce55de1 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9f4daeb6 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa3c27c98 lnet_parse +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 0xb69078e1 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 0xc5785af7 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc60f0081 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xce951fd9 lnet_sock_read +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 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf8e81849 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfbb607ad lnet_unregister_lnd +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 0x5dc53f50 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x630bb9a4 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x75c686d9 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x7d90d39b seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xb4272a63 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xb728fb40 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xe2b66f43 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1372da46 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x173b8503 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa7159320 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc9304a1e fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xceff0a91 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf53fca4c fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfde181ca fld_client_fini +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 0x2c28730b cfs_hash_debug_str +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 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 0x7f9a5e14 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 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 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 0xc85d1483 libcfs_kkuc_msg_put +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 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 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 0xe576609a cfs_crypto_hash_update_page +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 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 0xfa3befb9 libcfs_kkuc_group_add +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 0x6c8b4314 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x7bb33874 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x8087676b ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc52b1091 ll_direct_rw_pages +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 0x0c543144 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x29d1df0a lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x39cc3623 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x67e94c14 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +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 0x0027d928 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02fbec39 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x033d9c98 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04750384 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04c1ea8e llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0566a620 cl_io_start +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 0x06219716 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x062ea010 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x074994da lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0799d8d1 llog_init_handle +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 0x08ddddd7 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08f27a6d cl_page_find +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 0x0b5dae88 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b69ea4b class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bf0aa44 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c350e41 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c56f1cb cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0da61aac cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fa41a09 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fb7fec9 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x104a3444 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x107036ec cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10f4ee44 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1124b5bd cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x113bd5e2 cl_page_clip +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 0x125b0e97 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13744538 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x139095f3 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13f9918f cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x142bfdb2 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14595da3 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x146c53ab cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x171ac02d dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1745c1b2 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17a51e6c dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18ec1faa lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19851053 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a63cd34 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b31583b class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b87209a lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c683940 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c8029d5 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc4d199 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cfee497 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f5e64b9 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f68d515 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fcdbe60 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20840712 cl_env_get +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 0x2318f4a7 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23a46501 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23aa4f29 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x240821c1 cl_vmpage_page +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 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25f7c7ed cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26cbca80 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27151f26 lu_site_init +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 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ac1e9e2 cl_page_list_fini +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 0x2bcfb7a8 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cfffd60 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d5ef57e dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2dd23a37 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eb30ed3 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3026a362 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30431468 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x304a1b2a cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3114bd3e cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x313e9bd4 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x329997ec cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x333f49ea cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x335b4995 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x341bac3f cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3501a6a6 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35caeee3 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x362ebb1c cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3657ca17 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36c8125f cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3744d9b7 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3782b4c3 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x386a3f9f class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3921dda6 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a905beb llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a9a40c0 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bd31207 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3be7ae11 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bfdf95c cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c0d81b4 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c25292e ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3cb11847 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e01f901 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e31f8ba cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f7be8f6 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f82ab88 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f9b37cc dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4000b68d cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x410513a3 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4148fc46 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42132167 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43d9a852 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x440e8161 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x453d2ffb obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45e9e87d cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46af3d3f class_unlink_export +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 0x4815862a cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48467082 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4859921f class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48c3a04d cl_lock_get_trust +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 0x4b534dee lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4baed517 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c02c81c llog_cleanup +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 0x4e2cf752 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e7e551b cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e807fca cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ec695c3 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f3e067d lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50521c9e lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x509ebf1e cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50b5b347 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51e806c2 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52d4ab15 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53df1a6a class_conn2export +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 0x54e9d369 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55154c7e llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x552d1f3c class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x556c942a lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55c80388 class_register_type +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 0x57333a22 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x579d48e0 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58b6d5f5 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x597bbda4 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5af4b6e1 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b0cd2ae class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b185fbd cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b19881a lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b3eda49 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bacdf39 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d53cd63 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5da030b6 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dd7a548 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e084eb9 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e8d08d3 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5eb9da46 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x600ff73f cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60f877b0 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6114a76c lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62c9bbe3 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x640b6e61 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x649c80cb dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x650d0e08 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x653780b1 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x659caba2 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66faa636 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67374998 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6838b7d9 obdo_from_iattr +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 0x69b13e1b dt_locate_at +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 0x6b4ee1e1 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bfb6734 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c37044d cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cc6c3fb lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d6165fa cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e0b64f5 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6efba583 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fa998db cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71318f4a cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71921f72 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71d62548 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71f6bd58 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x728febff cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x734bcbbb cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73513280 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73fa9e55 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74089de0 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7464729c cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74650633 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74a88355 cl_lock_is_mutexed +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 0x758081c0 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77040faa lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77e9dbed dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x780341ad cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78a66a4e lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79c71f45 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a712f85 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7acd5d44 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b5e97fb class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bcf550a cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c73b277 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cccee12 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7dfa4963 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1ebd14 capa_lookup +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 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 0x81d29691 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82880e1f class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82d9f9f2 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831982a8 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x836df774 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8399446c cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83f6a9e2 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8413aaf4 cl_page_list_del +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 0x854c380d cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85db5a4b cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86e6959e cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87534c18 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8808dc77 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x884d6586 cl_req_page_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 0x89bc5a8b cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aee2809 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b4c4b43 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b9547a7 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b96b834 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c98d17d lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ca53543 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8cb0baec dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d1168aa cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8de2b4ba cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91172af9 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91d0f67b obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92b87e38 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92cd2ec1 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x936e6e5e lu_object_header_print +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 0x93b92a68 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94c91374 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95110721 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x951ed1b9 lprocfs_exp_cleanup +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 0x96acdfbb cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96e9ddc2 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96ebc7b6 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x974463c0 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97a5ff7d cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97b3e5e2 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98692f32 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99fc8a2d dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a10d970 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b369cbb lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c9a4f25 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cf2eb02 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d7a1ebc cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e48a0f7 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e7f91b9 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f42983a cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f734adf dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa04aa9b9 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1c073b1 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1c7031f llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1d389ed llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa22d712b class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa472938f dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4e88f13 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa53515ed llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa53c98c3 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa56621d3 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5f25790 lu_object_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 0xa82a3dd1 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa84c6abe cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa990ee56 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa37692a obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaac52746 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaae01adb lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab8820e6 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac392b12 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac3d75e4 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad614bcb cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae0e08c0 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf052a8a cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf53ba3f dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf6e14a9 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafbcce3c lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafd94176 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0a763b4 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1fab15d lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb234743a md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2514c56 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb39f3c9c lu_object_find_at +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 0xb589717a lu_context_key_revive_many +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 0xb6d6f16c cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb70615b3 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb71bcedf class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb751cbb3 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb76e7dac cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb787f079 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbab029d2 dt_txn_hook_start +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 0xbd34a6a1 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd923487 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdd93879 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf039da2 cl_lock_print +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 0xc0d6727b lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc109c02f obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b08e97 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc621b95b cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6681145 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc706b433 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7c5044d cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc804f33b cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc88290b6 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcaad1175 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcae83e5f cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb5d10e5 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb627237 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc32f940 llog_setup +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 0xcdcb98ad llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce02cb2c cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcea99dde cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf797dd4 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf9da22c llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd00e087d class_exp2cliimp +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 0xd0e1f203 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd21c4ba2 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3b3597c lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd508b967 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd51b49d7 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5dfcf67 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5fe2671 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6233c87 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd64e9bb9 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd782bc7a lu_object_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 0xd7f33b46 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8185f9d cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8e0f2a5 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8ffe732 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9166ef6 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9540e03 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac21264 lu_stack_fini +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 0xdbdad31f class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbfa9227 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc2c7ebe llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd5b9ee7 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddaf2d0f llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddf25a84 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddfecbae lprocfs_rd_u64 +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 0xdec62016 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe035d463 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0b34541 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0ff593d llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1535497 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1b0a909 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe21f8aac cl_req_completion +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 0xe3cf26ed cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe462f3f9 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe490f667 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe74d5d68 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7b2a662 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe86791ba class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8da8e0c lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe974a046 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9b3ea90 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea1d32b7 capa_cpy +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 0xece19be8 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed826fff cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeea1d4ba class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef0df369 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef20ff44 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef588dd4 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef706d74 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf004a200 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf19cd9b4 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2af50e9 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4156618 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf43f9ed0 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4b77002 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4d1be5c lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5923e72 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5c36b72 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6415eae cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf70f0367 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8694071 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf982a6cf obd_devs +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 0xfc7e4d80 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc8dc808 lu_context_key_degister +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 0xfedd1279 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfedeb222 dt_txn_callback_del +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 0x012cab98 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01399a03 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +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 0x04d731a9 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06900fed sptlrpc_enc_pool_get_pages +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 0x088c8830 ptlrpc_invalidate_import +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 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c6d0e81 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ca7979b ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d4caa7a sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fb012df do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1052c206 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10744b0c ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10c26c30 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x114289c1 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x118044f2 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1193fb4c sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x121a5835 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12d2acb9 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x130d4a36 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13fedf31 __ldlm_handle2lock +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 0x14bf9f87 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15685954 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1597a903 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16502803 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16c6526d ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1712b851 sptlrpc_sec_put +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 0x17b448cc req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1857bce0 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19982c99 ptlrpc_unpack_req_msg +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 0x1ab406e9 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace318c ldlm_blocking_ast_nocheck +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 0x1c25cfa7 ptlrpc_connect_import +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 0x1eb01ad0 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb62597 ldlm_pool_add +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 0x20aeee37 ldlm_flock_completion_ast +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 0x234efd06 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x248bca41 ldlm_lock2desc +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 0x25935c71 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26540d05 ptlrpc_buf_set_swabbed +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 0x27a90e0f sptlrpc_gc_add_ctx +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 0x2b325606 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2be1f413 ldlm_lock_allow_match_locked +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 0x2ce6b963 ldlm_pool_init +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 0x2dbbb2b2 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2deae160 ldlm_pool_setup +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 0x2eb073f5 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd5189 sptlrpc_cli_ctx_get +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 0x2f1dcd80 ptlrpc_prep_bulk_imp +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 0x3095e149 ptlrpc_prep_req +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 0x349be7b8 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3584fdb4 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35870c97 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x360b9607 ldlm_resource_putref +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 0x38f59348 ptlrpc_req_xid +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 0x3a6f1bde ptlrpc_start_threads +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 0x3af3f0dc ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b9b8ff8 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bb0e929 client_obd_setup +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 0x3ce30e6d ptlrpc_request_set_replen +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 0x3f9e3418 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x425c0afb target_print_req +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 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x482b4b02 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x487a84b8 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x489e99c1 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49b26838 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49b7f6e7 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49cc5819 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ae3f7e7 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4bc21cb8 ldlm_lock_fail_match_locked +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 0x4e18988c client_disconnect_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 0x4eb46dc9 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f946c42 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4fb0441e ptl_send_rpc +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 0x5258dc46 ptlrpc_save_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 0x5362aa9e ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x540dcc43 ldlm_pool_get_slv +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 0x57f692d4 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5893446f ptlrpc_lprocfs_unregister_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 0x5abb0f3d ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ac0bb1b ldlm_namespace_foreach +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 0x5b7658e9 ptlrpc_request_bufs_pack +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 0x5e43d00f req_capsule_set_size +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 0x5f782a08 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f914b0e req_capsule_shrink +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 0x5febfd34 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604dd78f ldlm_init_flock_export +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 0x626bcb11 ptlrpc_request_alloc +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 0x640ac00b ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x646052aa lustre_pack_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 0x6697f34e sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66a7bd17 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68266412 ldlm_namespace_put +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 0x692928ed ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69984b2d sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a29be26 lustre_free_reply_state +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 0x6cabf9d5 ptlrpc_unregister_reply +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 0x6d7d50bc ldlm_lock_downgrade +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 0x70416577 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71298a17 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71f690d0 ldlm_resource_foreach +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 0x73c45f12 ldlm_blocking_ast +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 0x7561a518 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a09230 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75fa9822 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76484f8d lprocfs_wr_evict_client +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 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a057dfe sptlrpc_target_sec_part +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 0x7b1c2dff ldlm_cli_update_pool +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 0x7df179ca ptlrpc_recover_import +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 0x81ee3d9c ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81f3e04a sptlrpc_conf_client_adapt +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 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8583a6e0 ldlm_lock_match +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 0x8874d4fe ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8955cd2e lustre_pack_reply_flags +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 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cd31a6f ldlm_namespace_dump +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 0x8dfa719d ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e479598 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ea12ab0 ldlm_namespace_new +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 0x910bc90b req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91a9206a ptlrpc_request_free +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 0x92d8814e ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x945e50f0 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94f3a05e ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x959f2c31 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95f4f0d4 ldlm_pool_fini +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 0x968ec8ff sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97e1fe26 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9929b7df req_capsule_has_field +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 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9be14278 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ce17487 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cf8d66e ldlm_cancel_resource_local +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 0xa16c9dae 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 0xa3491db5 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4144545 ldlm_cli_cancel_unused_resource +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 0xa59f01ca __ptlrpc_free_bulk +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 0xa7ffcf65 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8026035 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8b2445f ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa976709c ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9d86724 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa1b26c9 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaad8fb56 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab43457f target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad96739c ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae7d7237 client_import_add_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 0xb03678a2 client_import_find_conn +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 0xb2cb1554 llog_client_ops +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 0xb547636a ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6404679 __ptlrpc_prep_bulk_page +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 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb934d147 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9c81054 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9e90dcf req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba013b78 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa7640f ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb73f55b lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc7f04b7 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbdea7e6d ptlrpc_send_reply +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 0xc061066c lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc071cfa9 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc09bd7fe ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc118aeda sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc18eeb17 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1ea0cf8 ldlm_resource_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 0xc469dc22 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc50f1424 req_capsule_filled_sizes +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 0xc72a0341 req_capsule_extend +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 0xc8bd1567 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8d27e0a sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc922a552 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc954b11a ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9c95308 ptlrpc_register_bulk +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 0xcc9599c3 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd0417cb ptlrpc_at_set_req_timeout +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 0xd00cc2f1 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0823231 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd192767f req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd240e0a1 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd27cd835 ptlrpc_nrs_policy_register +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 0xd3a8379c _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4971882 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6598f0d sptlrpc_import_sec_ref +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 0xd6ea31bc sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd843e109 ldlm_resource_iterate +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 0xd91e890e client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd92487e1 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9f2f626 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda4d1181 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb2688bf req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb3e6593 lprocfs_wr_ping +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 0xdd716164 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdde305ce ldlm_lock2handle +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 0xe0550180 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1014ef6 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1bbc806 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe27c97eb ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe49d2f58 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe562803e ptlrpc_fail_import +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 0xe6e9e807 ldlm_cli_enqueue_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 0xe7c4d1f1 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7d31934 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe98f5f0a _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea6fc387 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea925810 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeaac7b76 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeab0bef7 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xead440cc ptlrpc_request_pack +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 0xec2c7930 ptlrpc_reply +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 0xed3bf33e sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed8f67e2 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee6fb3ec ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef17c66d ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef6a0814 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf04f056a ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0c76744 llog_initiator_connect +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 0xf30f7a3d ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf34ddad8 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf37314bb ldlm_extent_shift_kms +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 0xf43708fa ptlrpcd_wake +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 0xf733c924 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf78e0cd5 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf79d9d75 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7a92237 sptlrpc_register_policy +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 0xf895630e ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8f467c2 ptlrpc_set_add_new_req +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 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 0xfcecb4a4 req_capsule_fini +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 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 0x597c23c0 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x002b7386 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x03d734b7 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a17c5d1 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1040718c rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14863542 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1495da7d rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14e85781 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1da5b093 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1eb7aa5c rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2bac1077 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3029b8ff rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30dcb8a6 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3c7ca368 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3c7ea9e6 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3cc7866a rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x444b4422 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x460c52f3 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4903649e rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5820611c rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x690bc942 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6936df03 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6ab21b3e rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74a63b52 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7c9970db rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81054280 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81c20847 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8a49c209 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9eaa0583 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa9e95b64 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad8752c0 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb0c4dd9f rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb776881c rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0bb691b dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc1939101 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc892b361 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca3d2c5a rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd242d093 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd464a764 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd77aa325 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd7d3fbb1 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdd0e5cf2 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe07b083c rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe235944e rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe327f983 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe9679fe1 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf87a5ddc rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc361b8a rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc4b9676 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc88be80 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff670645 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00f862b5 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x03467279 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0c10155c IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ea669b9 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17c7bf3f ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x19b2de34 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c8b86a5 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1fcce174 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2250611d ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x237bd82f ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c03ebf6 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c1d6e8b SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c95822e ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f7aefd2 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cca4ea3 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a694fc3 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x529e51a9 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x546e8899 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55ff073a ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x569bff1a ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5befe702 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c8a2d33 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6619be7d ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x665c9e9e ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6e715524 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x784d2855 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x786c9b4e ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x796aa7fc DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b9e2608 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8bbcba9c Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f728fd2 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9237cc79 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9b534f94 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9cbd4c0b Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d3b774f ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa1057c3d ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2203086 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa87a494a notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa9615993 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb26e1478 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb245797 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbce11b36 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbf8fcf38 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbfa3a5a4 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc4aecedf ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9013c03 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9baabf9 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcba9a08f ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3749cad ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdc2a31bb ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xee87a292 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf3c83a18 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa04a7dc ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc21a30d ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1bbff0e9 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x291de8b2 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x39baa1a3 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3aaa01ea iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3eded149 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x46f29e13 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4f354015 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x52941204 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x58103ea8 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5d61dbe0 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x66806471 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x76f93d8f iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7f3c796b iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7fde2dde iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x83934dbd iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x853723f5 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x96b19aee iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa2828043 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa479216c iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa69c6ef9 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xad2c3e9d iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb23a4053 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbbbf01d6 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbd0ac72b iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd38b55e5 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xef443dad iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf12adced iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf4654e9b iscsit_release_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x056d7637 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x07814f83 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x10ab0b55 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x10dca43d sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x10f75ee7 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x117de126 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x11f5f34b core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x15768a7a core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x18680da5 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x22035e5d target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x2379f4c9 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x24f3c464 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a5dd8a6 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x2aab4a59 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f027b9d transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x3098ed7e target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3470aac4 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x38839c62 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x395dc2a9 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a005fb5 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x456df51e transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x467a7856 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x485ccaa6 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x500ad82e spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x50179f11 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x527c8273 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x53202b24 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x56feb7b3 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x57d00add spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x5aca5e4a transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ae98ca4 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5efdb6f2 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x64361d84 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x66d4c499 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x69dcc49c target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x701e36e5 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x789f6529 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d3c4782 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x84a2ae1e spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x87ad1875 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e73e92b target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x90ec2155 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x958287cc target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x9cfc0351 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ebd3e6f sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1050197 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xa7f2a941 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xadd08987 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xaea72462 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xaff7a5d9 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5e7865a target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc9c1731 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc11a4165 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc57a82d6 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc8f182da sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd5e8e8a target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xcef122b1 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xd506ae12 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5ed15b1 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc070a8a core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc9e2151 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8757e5a transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8b8e8e0 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xfdf5a69a core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe3342fb target_depend_item +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x9f29a8a8 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xc9884348 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x40dcb07d sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x18ef659d usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x53f810f0 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x581e0b41 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5f0986f8 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6b7d5d72 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x71648ddf usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7fb2c6b6 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9174ff5a usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb3820795 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc0d04e2c usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf02a631d usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfb1c898c usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x1fdfc6e9 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xe9e83e32 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 0x23cbf7af devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6afb26b3 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x75df19a5 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x7c1f2727 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 0x2e6e1076 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x34eaf7f8 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x47c72ad0 svga_get_tilemax +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 0xa8630547 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xbac68455 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xcf3f7a3c 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 0xe5f3ea35 svga_tilefill +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 0x0ec07d4f sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x2ef38ff0 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x2193801f 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 0xea3128d6 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xe036408b matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xf53e7dd5 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xfe8d959c matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x692d389e matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x9d3d41d0 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf19e4ed2 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xfa69aeb9 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x941c5866 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x99fb6da8 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x2c4b139c matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x87d7ed65 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xe9c1dc2b matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xeba88358 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x5212664f matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xce988f60 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x42539287 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x61c73b64 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb0e766ea matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xbd26937d matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe6e13c62 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x4195ff0d 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 0x2598dd87 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x622c2aca w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x7d65c513 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xb1077328 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xbb4f15c8 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xe7d0940f w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x95982644 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xad2e478e w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x68d9ac2f w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x7d669510 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xc4a04b01 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xf3256a68 w1_remove_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x194302aa config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x41b34b65 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x65fdfb27 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x6bc40e06 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x6f22b639 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x7c90204b config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x866e01ba config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x927e8294 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xa4151a95 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xaf134ba0 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xed23967a config_group_find_item +EXPORT_SYMBOL fs/exofs/libore 0x0898ffdd ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x1c0b2de7 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x439aa81d ore_write +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x7cd522da ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x8876d585 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x9d5c5697 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x9fc2c4ee ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xae975dbf ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xb31f7780 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xb383e2b8 ore_remove +EXPORT_SYMBOL fs/fscache/fscache 0x02d0c48e fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x0b6221b1 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x24ec75bf fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x25dc0e37 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x28dcb3b2 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x2f3871dd __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x320e5429 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x321b50e4 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x33ce7a14 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x34d85f7f fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x3d9da800 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4222f2a4 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x42c738ac __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x483d6c67 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x60d763e4 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x62f10108 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x649bf3b5 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x64c7f1fb fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x672a856c __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x6a5ee899 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x6d4c2549 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x72479c35 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x75d29f1c fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x78d750a1 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x81337dd3 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa57422a5 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xade1190f __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xbe69f7ca fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xc7177da4 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xc72aa69f fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xca853936 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xcd5d39ab fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xce5073bf __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xd69ddedc fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xe4382f11 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf2a56ea9 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xf839c5e5 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xfbe77447 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xfdcfe8fe __fscache_acquire_cookie +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x123928dd qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x36094589 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x6add43c8 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x74c34252 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb5c49df5 qtree_read_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 0x46eabc62 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0x882f7cc1 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 0x3b6f1575 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xffde1a8d lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x22b93594 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xbe3bcbb5 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x42a9f030 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x9a5dd58e destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x152b53ce register_snap_client +EXPORT_SYMBOL net/802/psnap 0xd76e395e unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x03514d6d p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x041aacb5 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x0f630f6f p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x2778d453 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x2a8c350d p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x300c8079 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x306932fe p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x33262c76 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x47bfb6cd p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x4a7a83b3 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x58d84def p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x594db95e p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x5cd7facb p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x605ed032 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x66c19c30 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x6a1c5950 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x6d85dd85 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x6d9cdf5e p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x75b5ada0 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x77eeff6c p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x7bf03ada p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x7e706145 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8438c137 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x90b60cd4 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x92ec72ef p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x9d75bfe0 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x9db0cecf p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9de8db8c p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xa1c56ce2 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xaa8d1fc0 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xb217ac39 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xb3e869bc p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xb96f39dd p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xc52e91dc v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc94b712e p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe67824dd p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xe82e908f p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xeb711a58 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xf1c576bf p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfcd1b035 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfeeaef43 v9fs_unregister_trans +EXPORT_SYMBOL net/appletalk/appletalk 0x892fac5d alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xdaba98ee atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xe22813d6 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xf756dfe4 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x091f59df vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x0f211dad atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x0f3dd836 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x1371fd20 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x2b1fd244 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x34397772 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x56f2742f vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x5d2962af deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x705e0f7e atm_charge +EXPORT_SYMBOL net/atm/atm 0x722dbe0c atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x9a0af126 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa6d954c2 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcebee8fd atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x0dac403c ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x18078b13 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x20c7a580 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x218053f0 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x32e9adf9 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x48d7c4cb ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x781414e0 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xa858b872 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0184890b bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03f8fb53 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0750ddcb hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0b9aab41 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1215112b hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ea2ed0b bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3691a1ef bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3c9786af bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x449c28a9 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d650803 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x79cfc769 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x875df7d9 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x89269f46 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8b8665d1 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 0x91f91e0f hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x92cfc816 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x946f0282 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x95509f8b hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x97329fe1 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9bfd2c61 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ece3f70 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa392c51f hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8b5bdfe l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb7a6394d bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbe12e07 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbfa7ff1 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc6e5fef bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc53d15cb bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc90c03c3 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcbbca683 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd9421f28 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddc054cb bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde02218c hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde8f4879 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe3652288 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xed9bcd6e l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf0f96bb5 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf9c0a708 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfdca2baa hci_mgmt_chan_register +EXPORT_SYMBOL net/bridge/bridge 0x684f6ec5 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x802465d8 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x8839a1fd ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xfe3d9e15 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1ed1c6c9 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x32186764 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 0x3a8fbf7c caif_enroll_dev +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 0xc2b8bf73 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xd7ce499c cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x1d29d873 can_rx_register +EXPORT_SYMBOL net/can/can 0x26a137e4 can_send +EXPORT_SYMBOL net/can/can 0x30d4aa6b can_ioctl +EXPORT_SYMBOL net/can/can 0x5cd73618 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x64f24cee can_proto_unregister +EXPORT_SYMBOL net/can/can 0xacfc498f can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x01d2abc2 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x040e0855 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x04269b31 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x075ef9e6 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0fd5842c ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x101afc4e ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x11622afd ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x1188f619 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x119e9da8 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x12f0bcad osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x1b6d9e00 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1c11654d ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x1fbe2699 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x204b0c4e ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21d95759 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x21fb5cfd ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x22023102 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x22f95304 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x24c7540d ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x260e0542 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2dbfd9c2 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x2fac9c9a ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x33e4700f osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x396d602d ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3c918001 ceph_auth_invalidate_authorizer +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 0x47dcccde ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x4d10aba4 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x552be6dc ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5a4af4b0 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x5e5c5d04 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x5f5b21e3 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x633edc89 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x668442d5 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x683e1ba9 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6b73dced ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x6f48761f ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x73c5c86b ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x75b912a8 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x7971612c ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x7d772e70 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x814da9d6 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x824eea86 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x83a26097 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x853b1350 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x85fb490d ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x878b6487 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x8917707b ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x89eadf9f ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x8b38d680 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x915da997 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9dd04a83 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x9eb14fa5 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0x9f8bbf1d ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa2717a45 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xa8797688 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xac590634 ceph_monc_got_mdsmap +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 0xb1b7b9bf osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xb45a0c4c ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb59983c7 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbbdc2ca3 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xbe83f576 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xc0e69be0 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca1a8455 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbfc3360 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd7f3450b ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xdc85a85a osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe17b7f80 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xe1fffcc9 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe6b47c1e ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe7a98bcc ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xe91da945 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xeac8d9b6 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xec8d1b0e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xeca674fc ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xedbc49f1 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xee0726ed ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf2be3a69 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf535019e ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xfa511a39 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xfc780c7a __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xfd13b056 ceph_auth_create_authorizer +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x58c97610 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x71fc6f5f dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x18cfb65e lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x14150723 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x156a0d73 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x66b09a64 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9c847875 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe27f459c wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe502fd0e wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x38303cf6 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x3ad7b78b 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 0x149be167 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x74908469 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x87531460 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8d6360d0 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xb34146b7 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xea145d58 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xbb9ab71b arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc50ba78b arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc58244c5 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4a24c02c ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x69fc2d4a ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf43db562 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x7e7eeb56 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xc3037e6b xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x5f2fc261 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x27d29adc ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x93da8f7e ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x9727e708 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe5b1f75e ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x386bccb7 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3f4716c4 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xdab9b4c2 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x401de4ae xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x49be7d9c xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x02c2a158 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x31234228 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3924af58 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x54867257 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x96cbc246 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9d3a96bf ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9fe4faae ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xaf3beaaf ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xccc754c5 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe3d35104 ircomm_connect_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x02233641 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x0446fbd7 irlmp_disconnect_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 0x0d80cf8a irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x10155600 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x462432f8 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4c21689d async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x518614ed irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x53146de6 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x5f6438bb irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x622fb96d irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x627cd7b7 irlap_close +EXPORT_SYMBOL net/irda/irda 0x6aef7aa5 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 0x7df8434e iriap_close +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 0x94b6adb9 irlap_open +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa38b11a1 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xa4614895 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb4712b36 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xb86e9c89 async_unwrap_char +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 0xc04c2daa irttp_dup +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xccdf9cc0 iriap_open +EXPORT_SYMBOL net/irda/irda 0xcd6eb241 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xdbe58bbb irttp_connect_response +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 0xe77547dd irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0576e70 irlmp_close_lsap +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 0xf8b44b6a alloc_irdadev +EXPORT_SYMBOL net/l2tp/l2tp_core 0x123bc22d l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x01768511 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x1cdffbd0 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x21ae3ec6 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x2a091597 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x50db63fb lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x5dd2a00b lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x9fcce004 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xcfe43a78 lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0xabaa6bc5 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xd246acdc llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xdb6bacf8 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xde54cb03 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xe2237eed llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xf24db64e llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xf32382fb llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x0040ca40 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x06900aa0 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x0b349ad9 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x15dbe388 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x15e90b08 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x196fb734 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x1b8489a9 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x1bc17191 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x1cfa69fa ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x1e328757 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x3005703e ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x30dc3ce9 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x317f0010 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x32d2f818 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x34a9c50f ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x38bdbbe4 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x393ea518 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3b8faef1 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3fa2ed85 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4087304b ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4165b4be ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x43ad0d2e ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x45384e00 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x46b68423 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x4728539d wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x49a451d1 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x5081bb4b ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x524e4d36 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x55a8b8ff ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x57bd8ac9 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x58053391 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x5a709e3e ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x5b40b4b0 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x5c65e68b ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x5e50a29b rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x6358068b ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x6469e3bb __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x65cda655 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +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 0x7bb1d0d1 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x81c97cd2 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8321eb2c ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x8746004f ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x91b5157e ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x97fad85d ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x98d42d1f ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9a1c4164 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xa02200d4 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xa1854c1c ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xa3703b72 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa52c899f ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xad1f1d79 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xba7add04 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xbb36f18a ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xbb711b19 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xbd25abda ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xc5471763 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xcbbe6991 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xcca9121e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xd00fdf66 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd6ae985e ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd8c4f37d ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdf609ca4 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xeb275067 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xecd7c433 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xef61dc10 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xef840f97 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xf12a3c65 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xf1f65562 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xf1f7e302 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xf26605c1 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xf327e256 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xf4d728d0 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf5667781 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xf5e0550b ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xfb5d1e30 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xfc0c39b0 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xfcf6df16 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xfde0b9e7 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac802154/mac802154 0x119fe22f ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x21a984b0 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x22b230a3 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2c036b2a ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x55d27fcb ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x69a6b8c2 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xcb6b2b36 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xeb7847c9 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xf5af143a ieee802154_rx_irqsafe +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x24451df5 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3b5e7de8 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x44c714f6 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x499600aa ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4ed2e81b unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x67ca3716 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x700ec6fd register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x92f37f7f unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa15d9cc9 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xabca1acd ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcceb1a11 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd41ed3f7 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xed558f44 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xffa44eac ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa3bdd981 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xaec8f5ae __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xb0267f03 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x02adf181 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x0dbacafb __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x0f7cc532 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x206cb247 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x551ab037 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xa08dd0b3 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x065e2398 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x0c2a46b5 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x124f5669 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x30fe9fb0 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x3e954a34 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3f58d4ca xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x9324352e xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x9a8941a3 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb4fd1820 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xea35bff6 xt_find_match +EXPORT_SYMBOL net/nfc/hci/hci 0x09133cf0 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x19402fb5 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x1cd884db nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x1f659ddd nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x303b880f nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x31acf9a5 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x4038dcbc nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x42117159 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x45b0f9f6 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x5ea89878 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x66141b8b nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x72056a4c nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x87824dc8 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xa3500f76 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xad7369e1 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xce7c3066 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xe4676814 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf4d82f54 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf9415b90 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x1437abbc nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x193096ce nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x22a94fe1 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x2eaba05b nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x358627bf nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x395e228d nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x41872b40 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x4b30bcb8 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x578242c7 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x69c9ef71 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x6a23c29c nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x764e9b85 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xa9b12375 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbe52b744 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xc2807f20 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xcd124156 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xdeb82d31 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xe4107ecb nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xf78b394a nci_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x02d6526d nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x0e10cda4 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x1fb9f559 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x3ff45bb3 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x43a4e707 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x4fbca69f nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x5175fb0b nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x5e5576b4 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x5f717bbd nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x61990ab4 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x7539ca19 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x7655e260 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x85970406 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x8bbe2246 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xa867289d nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xa934040c nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xba3f6e2c nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xbf548095 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xca955993 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xd10c4e2e nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xe9f24d93 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xf2dc0b51 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x02fde5a7 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x0be6e9f5 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x11818bb1 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xbd7cf872 nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x038ab4e7 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x57a925d8 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xa6a70d7d pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xbcdeba55 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xc51a81af pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xe8d918bf phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xeacac0c8 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xf3c6d288 phonet_proto_register +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x13b742e3 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x28611acd rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4efb9161 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x61df3dd8 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x682da74d rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x74ba37c8 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8165c745 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x86bb6ca0 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9a6a71a2 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa2de5ff0 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa68d61f7 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc1357ca7 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd1563a3f rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfafe4f14 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfd063e07 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/sctp/sctp 0xb5bdc2b3 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x067a3f7f gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x8da859a6 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa1f0f47d gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x6335cbbc xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x6e1d0034 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x92b443a3 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0xb0103afe wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xe27f0a57 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x00dc0cc3 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x01f90042 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0df558b7 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x133b84e2 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x13d5a27e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x16418287 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x16c838b5 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x177d031d cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1c7e3e66 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x1cc999da freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x1e40423b cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1f5390c2 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x24a31b42 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x2531072d ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x26ee697c cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x29abe676 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x2c4b94f0 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2e2db1cc cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x2e3b6154 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x378a5c8c cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x3bce6e53 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3eabb57e cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3fd2d482 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3ffbdb35 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x48a06b5a cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4caff0bf cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x4f403c88 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x51be11d0 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x567f01f5 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x5dc269ce wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x5dd859d9 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x5f79e6e2 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x609b35c6 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x660389f6 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x699f298d cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x7311f613 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7456c9a3 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x74c77657 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x759cf728 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x7dc1450d cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x810453b9 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x81e93a0d cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x82c0eba4 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85e47945 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x88f250b0 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x8995bc49 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x906f54b4 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x9098372c cfg80211_radar_event +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 0x99277079 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x9b6c5cce wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xa1305f3f 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 0xa9cfea4b cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xab3ae33a regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xaca79c33 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xb35f7475 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xb4de1567 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xba40a361 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xbef4d714 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xc131cc26 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc1f907b9 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc851ec0e cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcb5d6be2 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xcb752ba9 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xcc522f2d cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xccbca2e7 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xccef9949 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd1d62ceb cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xd4d56640 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xd55fadc4 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdda4bb7b ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xe0a75ff3 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xe416dde0 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xe658cf9f wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xe9f05c2f regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf034ff05 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf066025d cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xf0a226e0 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xf3eee6f8 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xf6157b14 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xfc47d497 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfddb9ce3 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x25574f24 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x35bac33a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x5dde17d4 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x63d395ea lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x6df76c51 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xbc032092 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/ac97_bus 0x07e0cb58 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xbf95b1f9 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 0x24c5497b 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 0x5fe7a08c 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 0xb8dbcbc7 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 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xeca32408 snd_seq_kernel_client_enqueue_blocking +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 0x751856c2 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 0xc2f204ea snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x03d415eb snd_card_new +EXPORT_SYMBOL sound/core/snd 0x06ac284e snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x0c654c89 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x0d7e66b9 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x12b5e13d snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x170d3e70 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1c808057 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2d295024 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x2e6e7a61 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x2fc38a71 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x32d714cb snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x343e37d2 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x37cb8adc snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a74083a snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x3c90e3d8 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x466b5c84 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x48c1142e snd_info_register +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b58962b snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x51c36c24 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x5b83da57 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x6713e21d snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x6f07e84c snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x70adbbfb snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x751250b9 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x754fa0c4 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x77f155aa snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x7898b822 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x7c0befef snd_component_add +EXPORT_SYMBOL sound/core/snd 0x819958b2 snd_ctl_boolean_stereo_info +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 0x9b0837cc snd_card_set_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 0xa46ac760 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xa4e338ea snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xac44cb61 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xad2de3a3 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xaef6e32f snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xafb1cb57 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb610e096 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xb8433348 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xba28c530 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xbc3ff3ba snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xc62fa9f8 snd_cards +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xcf88cfde snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xd1157735 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xdc21d185 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xe1f0348b snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xe2f019d9 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xf2c1d7cb snd_info_free_entry +EXPORT_SYMBOL sound/core/snd-hwdep 0xa7be5124 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 0x0acfea80 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x12cb0a04 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x15592191 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x16acb660 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1ddbf9d1 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x20c3752d snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x220ef00e snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x284d9388 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x29ba33cf snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x3387b7e0 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x3460a35c snd_pcm_hw_constraint_integer +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 0x41807afa snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x42bebf9f snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x472a9fb6 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x482e7a82 snd_pcm_new +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 0x5363ef7f snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x53b0c7a0 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x5655bc83 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x5867e80e snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6e7c8815 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x81a1a0ac snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x8472c5ce snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x856fa9be snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x95217c86 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x9800ddd0 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x9d608e8c snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9f93de3 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xacf8848d snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb0906359 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xb53c1258 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xb70fadd8 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb71bf8db snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbfee40a5 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xc225e751 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xc706f921 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xc7b1fd8d snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xcf2ac786 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xd31e4858 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xd64d1c20 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xdbdf34c9 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xde286710 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xdf3215d0 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe49d86bc snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe77c9f38 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xefd327da snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf81f3c52 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-pcm 0xffb6771d snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-rawmidi 0x15fd9d41 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1be1c648 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x347e8a71 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x584353f2 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5b9a173b snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x69cda41f snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7f3b580b snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8edf1ed2 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x90ad7144 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x95f3adae snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9bb7fbd3 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9c5e6539 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaca4ad24 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc6088360 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc73b7355 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc99f4f1b snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd1710c6c snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd339b641 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdf8d3bf4 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x01cc9a80 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x090e450c snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x0a9cc1d2 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x1803792d snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x195e136a snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x4315406b snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x48c0564b snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x4c6b93ff snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x8866edd7 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x93f2a4ab snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xc0ac2cd5 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xc0b0487d snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xea072c6c 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 0xaf9a8472 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 0x0b744f02 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1a020f1f snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3eb138a9 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x86c031a9 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x88da581c snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8e717695 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xaab2f968 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbb9b95be snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd604b103 snd_opl3_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0900ba5b 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 0x4c14a318 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5ffa0ed4 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6a6a9424 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6cf23058 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9efe4a35 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd66f3905 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe4eb476d snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf25af87d snd_vx_dsp_boot +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x068e090f amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x133fc8a3 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x16a58cd4 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x16c04715 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1d5cd091 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2273a234 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x22b1966c fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x23b4a964 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2bf6ae27 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2c79fdca fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x35a8f4df cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3661bbe6 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x48f70e6e amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5c99e283 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63ea32ea amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7b31a22c iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7d55b5ca cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x829fc2f2 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x837c8d86 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa3bf996d iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaf27d100 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xafd5f301 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb65ca275 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbb1cc278 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbe674b60 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc8221915 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe3cb67ca amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe6fdbaab cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xec3aed5f fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf423f79e cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf9c00d6f avc_general_get_plug_info +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x3aad1131 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xc71d838b snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x30298002 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3492d97c snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5d1b6288 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x623dd353 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x74f83138 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x75b06f93 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7a040490 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x818acfe7 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x14f450f8 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x780ae8f0 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9ca1c3a4 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa61ceeca snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xba14ef56 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xe3d05f14 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x955dd563 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x97a9b9a0 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9d87e772 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe4ccfa76 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x30cb1f2a snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x978147a9 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x38cc3eaf snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x50697e0d snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa9302a8f snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe46f8b2b snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xea3a5a97 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf514ce2a snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x61aea1b6 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x967fc60a snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xac77d726 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xcb6d92c1 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdb7a48a8 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfdfb6d67 snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0980d828 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x175a206d snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x20d43970 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4436c28e snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9ca36ea2 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb1a3bf4f snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb1f837c3 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb6f5ffba snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc9dd4649 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcc8ae820 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x01fdf994 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0f4e1496 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x120b169c snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1e36b281 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x775582ab snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7abf840d snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7c176c60 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x86465290 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x90e8dc3d snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9c4050e9 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa1141499 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa29a0998 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd1f818e5 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xedd4b100 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf7995b06 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfb7d2c9b snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfe5a0379 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x21113d01 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x60291437 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6f152d93 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x83f407be snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc3c5d93d snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd2cf5583 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd94a3626 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf7f3adea snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfc25be66 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x25791f6f snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x894c158e snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xc6f70b4f snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x090b88f1 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0d24b2bf oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0f153275 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1475ffb2 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1f0892b5 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1fbb1dc2 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x43ff5e15 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4984904c oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4b86e844 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x64f9e6b1 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x704478e2 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x78c1faa0 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x80465b0c oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9ec707be oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaa8d0ad4 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc54d5397 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcc4cdca8 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdc48c749 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdda2131f oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe0755362 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xecf4b1a9 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x13e00ace snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x14071c68 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x41c1f4ab snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x63789400 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7e0a9d44 snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x57d4e03f tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xbdd47905 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0xccc37bf2 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x0cab1dc5 sound_class +EXPORT_SYMBOL sound/soundcore 0x16c8c4fc register_sound_special +EXPORT_SYMBOL sound/soundcore 0x6885f6a2 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x699ffff5 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xa532b935 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xc811151a 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 0x02825768 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4c5f9d27 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x5d533782 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 0x7dc8e1cf snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb7968cac snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xfa7443e1 snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x37fee4a2 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7e086e8b __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8b4ee34e __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x97a135b9 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc6442874 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc8a8144a snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf862338a snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfabbfbc2 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 0x9ac81fe0 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 0x0016114c blk_run_queue +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x004be702 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x006ec304 freeze_bdev +EXPORT_SYMBOL vmlinux 0x00b06b20 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x00b243e7 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x00d0f699 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01055ffa blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x010cb3d8 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011f73a9 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x01636728 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01a73872 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x01b2dd34 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x01d5875a input_set_capability +EXPORT_SYMBOL vmlinux 0x01eff099 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x020a8ab4 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x02109f32 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x0217557a inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x024bbf0d jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x0259a98c pci_select_bars +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0266a056 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x0267e133 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x02742a91 do_truncate +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0295e71b input_unregister_device +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b8342c vfs_write +EXPORT_SYMBOL vmlinux 0x02d8352d tty_check_change +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f9395d tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x03068063 km_report +EXPORT_SYMBOL vmlinux 0x0312c49b tcf_hash_check +EXPORT_SYMBOL vmlinux 0x0326a3de mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0339e6b3 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03937da6 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x03b406bb input_release_device +EXPORT_SYMBOL vmlinux 0x03ce92d1 tcf_em_register +EXPORT_SYMBOL vmlinux 0x03f1d28e ping_prot +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03ff6fd2 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x040b6aab scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x040d2790 elv_rb_del +EXPORT_SYMBOL vmlinux 0x04120a20 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x0419251e security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x041c88a3 sock_no_bind +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x047bd192 __get_user_pages +EXPORT_SYMBOL vmlinux 0x047c4fb6 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x0487a4f7 sock_create_kern +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x049f654f __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x04ac7ad0 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x04e0f83e swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x04e26844 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x04e93b31 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f1041d lockref_get +EXPORT_SYMBOL vmlinux 0x04fcace9 dquot_initialize +EXPORT_SYMBOL vmlinux 0x04ffc473 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0538815d alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x053b8d07 tty_set_operations +EXPORT_SYMBOL vmlinux 0x054becde mount_subtree +EXPORT_SYMBOL vmlinux 0x054f9601 param_get_bool +EXPORT_SYMBOL vmlinux 0x05752c74 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05ad0668 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x05b15198 copy_from_iter +EXPORT_SYMBOL vmlinux 0x05bb1546 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x05c5a715 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x05d73779 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x05d7d133 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x05f480a7 generic_show_options +EXPORT_SYMBOL vmlinux 0x05fc4101 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06257da5 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0644ed00 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x066f3103 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06b7c998 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x06c88752 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07083dda netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x0713dcfa bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x072524ac __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073989c0 padata_alloc +EXPORT_SYMBOL vmlinux 0x07463258 no_llseek +EXPORT_SYMBOL vmlinux 0x07499b6a vga_client_register +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x076967eb ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x078136b9 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b92bd4 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x07c31641 netlink_unicast +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07efe1ff param_ops_bool +EXPORT_SYMBOL vmlinux 0x07f8688e iget_locked +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x0833c131 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084c366a blk_end_request +EXPORT_SYMBOL vmlinux 0x08699343 generic_write_end +EXPORT_SYMBOL vmlinux 0x08791ab1 tty_write_room +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x089a253d seq_pad +EXPORT_SYMBOL vmlinux 0x08bd15bc make_kuid +EXPORT_SYMBOL vmlinux 0x08bf1c81 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x08d043e2 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x08d68a9a wireless_send_event +EXPORT_SYMBOL vmlinux 0x08ddea53 dm_put_device +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08ed44b1 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x0913b3b0 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x0917fab4 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x09195e8c generic_read_dir +EXPORT_SYMBOL vmlinux 0x0923fd7b dget_parent +EXPORT_SYMBOL vmlinux 0x0928dc5e ps2_end_command +EXPORT_SYMBOL vmlinux 0x092c6292 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095eecbf register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x09613339 of_dev_get +EXPORT_SYMBOL vmlinux 0x098133ef pcim_iomap +EXPORT_SYMBOL vmlinux 0x09882264 get_task_io_context +EXPORT_SYMBOL vmlinux 0x098a2fba __frontswap_store +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098eb161 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x09bbbb91 trace_print_symbols_seq_u64 +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 0x09d7a391 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x09ddd2cc scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x0a03e7ca free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x0a0e859c put_page +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 0x0a44fc4f kill_pgrp +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a5142d8 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x0a6e240e pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x0a7a7ed6 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x0a7cdb3c free_buffer_head +EXPORT_SYMBOL vmlinux 0x0a80851e jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0ab3e3ec find_inode_nowait +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0af18c6d sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x0af5b91c inet6_getname +EXPORT_SYMBOL vmlinux 0x0affabf4 __init_rwsem +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b236772 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x0b2bf641 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4aeec7 pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x0b60ad15 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x0b6f2b24 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x0b6f55dc max8925_reg_write +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8b8d16 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x0ba0fbcd jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x0bac82e5 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x0bb686bf eth_type_trans +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc74a26 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x0bc7c37c xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x0bd17e8b skb_pull +EXPORT_SYMBOL vmlinux 0x0bd8152a bio_chain +EXPORT_SYMBOL vmlinux 0x0be047d2 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x0be2ddc4 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x0be4aca9 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x0be8528e do_splice_to +EXPORT_SYMBOL vmlinux 0x0bfb62a9 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c209bff datagram_poll +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c584866 drop_nlink +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6233c1 of_device_is_available +EXPORT_SYMBOL vmlinux 0x0c8251bf phy_resume +EXPORT_SYMBOL vmlinux 0x0c96c811 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cdf4fb2 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x0d3a11ba blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x0d40ff0e unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d68d85d deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x0d89e00d scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da958b9 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x0daa88ca d_make_root +EXPORT_SYMBOL vmlinux 0x0dbf38b8 mol_trampoline +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dc4c8b1 dev_change_flags +EXPORT_SYMBOL vmlinux 0x0dcefd65 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x0de41e33 md_reload_sb +EXPORT_SYMBOL vmlinux 0x0e03d55f bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e9a80d6 key_alloc +EXPORT_SYMBOL vmlinux 0x0ea00364 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ebfaaae skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0edcb26c skb_copy +EXPORT_SYMBOL vmlinux 0x0ef20db1 kernstart_addr +EXPORT_SYMBOL vmlinux 0x0efa1208 dump_align +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f02c360 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x0f02fa09 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x0f04a7f8 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f429c80 skb_push +EXPORT_SYMBOL vmlinux 0x0f4c652f fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f676d13 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7e01db kthread_stop +EXPORT_SYMBOL vmlinux 0x0f9adc37 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x0fa62432 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x0fa7abdb bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x0fa8fc73 kill_fasync +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fafee83 audit_log_start +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc3cc3a insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x0fd4d017 page_put_link +EXPORT_SYMBOL vmlinux 0x100b310c sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x100f314d splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x1014ee57 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x106bb7c3 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10a529a8 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x10c82dc6 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x10ed56c2 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10ee7a21 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x10ff163d udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11278fca genphy_config_init +EXPORT_SYMBOL vmlinux 0x113e33aa ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x11432918 setup_new_exec +EXPORT_SYMBOL vmlinux 0x114907ec dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x11611e23 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x11629784 scsi_unregister +EXPORT_SYMBOL vmlinux 0x1163a728 file_remove_privs +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11663cec adb_register +EXPORT_SYMBOL vmlinux 0x116a2bd2 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1170f22a genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x118e8b22 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x11901f8e __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11bc0fae mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x11c6978b fb_get_mode +EXPORT_SYMBOL vmlinux 0x11c95d39 inet6_bind +EXPORT_SYMBOL vmlinux 0x11d8618e release_sock +EXPORT_SYMBOL vmlinux 0x11e9ce31 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x11f04f8d iterate_dir +EXPORT_SYMBOL vmlinux 0x11f33601 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12090cf2 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x1226fa08 flush_signals +EXPORT_SYMBOL vmlinux 0x122b7de1 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x1235e946 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x1247b08a jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x128157ea kernel_listen +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12bb7b9e phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x12bd4922 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x12c2ff66 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x12c3d642 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f3236a generic_make_request +EXPORT_SYMBOL vmlinux 0x12fc0e64 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x1303ba31 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x13224c8d tty_lock +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132b0253 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133902b0 d_drop +EXPORT_SYMBOL vmlinux 0x13560ec9 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x13695c31 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x1379d0ec get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x138558c0 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x139577e3 cdev_del +EXPORT_SYMBOL vmlinux 0x13b96462 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x13c90c94 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d14836 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f42e18 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x1402cc5f submit_bh +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x141066e3 __vfs_read +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1425b888 __d_drop +EXPORT_SYMBOL vmlinux 0x145eb210 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x1491a679 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x14cb2a25 sock_no_getname +EXPORT_SYMBOL vmlinux 0x14d1dc93 ether_setup +EXPORT_SYMBOL vmlinux 0x14fe3459 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x15033645 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x15091356 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x1512ae66 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15590d02 ipv4_specific +EXPORT_SYMBOL vmlinux 0x15627363 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x156612b7 elv_add_request +EXPORT_SYMBOL vmlinux 0x156b2345 dm_get_device +EXPORT_SYMBOL vmlinux 0x15859d74 udp_add_offload +EXPORT_SYMBOL vmlinux 0x1599b883 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c7c494 kill_pid +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15de4be8 __get_page_tail +EXPORT_SYMBOL vmlinux 0x1607c70e dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x160d1ac6 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x1615aa9e copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x16230b68 security_mmap_file +EXPORT_SYMBOL vmlinux 0x162d35fe netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x16366533 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x1646eb3a tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x16546a6e of_device_alloc +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16b6fbf7 override_creds +EXPORT_SYMBOL vmlinux 0x16d3190f kthread_bind +EXPORT_SYMBOL vmlinux 0x16df2919 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16eb5b82 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x16edcd08 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x16f3a3ca param_get_charp +EXPORT_SYMBOL vmlinux 0x17032a77 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x1711eb5d tty_port_close +EXPORT_SYMBOL vmlinux 0x1736bf8d get_acl +EXPORT_SYMBOL vmlinux 0x174afb1a __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x1757264c macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x176fa4b1 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x17a7f08a blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17e500f7 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x17f084ee max8925_set_bits +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +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 0x184723b5 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x1891f360 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189a33a1 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x189daf9a blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x18a5d6de ilookup5 +EXPORT_SYMBOL vmlinux 0x18baa066 get_io_context +EXPORT_SYMBOL vmlinux 0x18bda01e scsi_scan_target +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18c75e4d dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x18ed0912 mutex_unlock +EXPORT_SYMBOL vmlinux 0x19010fef dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x190361a3 del_gendisk +EXPORT_SYMBOL vmlinux 0x1907ec8e __getblk_gfp +EXPORT_SYMBOL vmlinux 0x191e6df7 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x191f9a6e machine_id +EXPORT_SYMBOL vmlinux 0x1941267d led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x19664d59 neigh_for_each +EXPORT_SYMBOL vmlinux 0x1968712f __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x197b946b mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x19815eb9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x1981fbcd __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x198ccd18 macio_request_resources +EXPORT_SYMBOL vmlinux 0x198ebf44 dev_trans_start +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b48319 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x19b8d414 skb_split +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19ded6fe neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x19f75edc iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x1a442674 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x1a458ae5 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a6216e2 led_blink_set +EXPORT_SYMBOL vmlinux 0x1a7632c1 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x1a978fae __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x1aa4a47b posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x1ad40403 agp_generic_alloc_page +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 0x1b161d41 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x1b36cdcb blk_complete_request +EXPORT_SYMBOL vmlinux 0x1b3b1303 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x1b5515d0 inet6_protos +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6eef21 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bbfc804 fget_raw +EXPORT_SYMBOL vmlinux 0x1bc2a4bd mount_nodev +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1bdd6291 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x1bef7c56 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x1bfc13ca zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x1bff4215 mount_bdev +EXPORT_SYMBOL vmlinux 0x1bfff6cd sock_wake_async +EXPORT_SYMBOL vmlinux 0x1c0afae6 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x1c267abe kmalloc_caches +EXPORT_SYMBOL vmlinux 0x1c3ddde9 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c6ad2f3 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c893a5e mmc_free_host +EXPORT_SYMBOL vmlinux 0x1c9bcc9a ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x1cac67ff mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x1ce39e18 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x1cf4c71f pci_dev_driver +EXPORT_SYMBOL vmlinux 0x1d0988d9 md_write_end +EXPORT_SYMBOL vmlinux 0x1d43b45b dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d577f2d backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x1d7b7869 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x1d7c8e45 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x1d805f6d blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dbbc526 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc4d646 vme_slave_request +EXPORT_SYMBOL vmlinux 0x1dcc3e85 bdi_init +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddac794 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x1e02faaa textsearch_destroy +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3997e4 blkdev_put +EXPORT_SYMBOL vmlinux 0x1e480fdf dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x1e5de339 from_kprojid +EXPORT_SYMBOL vmlinux 0x1e67085e lease_get_mtime +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e8ee90d agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x1e9dd0b1 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea5ae50 security_path_rename +EXPORT_SYMBOL vmlinux 0x1ea84e4a phy_suspend +EXPORT_SYMBOL vmlinux 0x1ebef266 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x1ec118e2 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x1ec72d73 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x1ec9f51e scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x1ed1c038 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x1edecec1 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x1eec06f3 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x1ef0f561 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x1efc19a1 vme_bus_type +EXPORT_SYMBOL vmlinux 0x1f06e6a0 scsi_init_io +EXPORT_SYMBOL vmlinux 0x1f186ffb abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x1f34f587 dcache_readdir +EXPORT_SYMBOL vmlinux 0x1f366f91 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x1f563269 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x1f5f43fa fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x1f7d0348 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x1f7e3a38 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f87efd8 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x1f93d700 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x1f94cd63 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x1faaeeac bdi_register +EXPORT_SYMBOL vmlinux 0x1fb0bd5d netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x1fb3eed6 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x1fb7f2e7 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc6eb66 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x1fce835e d_delete +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd18e07 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x1fde423e param_ops_ullong +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20030ecd ioremap +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200bbb93 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x201edf1c __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x2021fe15 skb_clone +EXPORT_SYMBOL vmlinux 0x2022c18e dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x2030658c scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x20391e7e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x20544c7f unregister_filesystem +EXPORT_SYMBOL vmlinux 0x205465a0 vm_insert_page +EXPORT_SYMBOL vmlinux 0x2054fdd9 sock_no_poll +EXPORT_SYMBOL vmlinux 0x2058f02a __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x206ee1ac fsync_bdev +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x209a6b29 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x209b1f7a sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a8e32f registered_fb +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d9ed03 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x20f2f97e d_genocide +EXPORT_SYMBOL vmlinux 0x21051758 d_move +EXPORT_SYMBOL vmlinux 0x212c1509 put_filp +EXPORT_SYMBOL vmlinux 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x215f55b1 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x218c5e37 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x2199c7bb blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x219add3f update_region +EXPORT_SYMBOL vmlinux 0x21a0d729 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x21a68a76 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x21ddcc71 flush_tlb_range +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21f208da path_put +EXPORT_SYMBOL vmlinux 0x220165aa arp_tbl +EXPORT_SYMBOL vmlinux 0x220cd20c input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22392638 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x223bbbd3 security_path_chown +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2264363b netdev_err +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x2286d2d3 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x229a9530 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b71906 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x22b99491 elv_rb_add +EXPORT_SYMBOL vmlinux 0x22d1d882 __vfs_write +EXPORT_SYMBOL vmlinux 0x22db57f0 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x230d77f4 sync_inode +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232903f5 module_layout +EXPORT_SYMBOL vmlinux 0x2332378b skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x23404944 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x2348f327 dev_mc_del +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2391dccb param_get_int +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ae4ff9 filp_open +EXPORT_SYMBOL vmlinux 0x23b0e7fa __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x23b90cd4 PDE_DATA +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c923de bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x23d078b6 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x23e333ba dquot_disable +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24052506 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x2405ca6a write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x240cf4d3 seq_read +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2427ea79 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x2431407b jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x243c37e9 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2452a38d __bforget +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2483ec72 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x2485f029 misc_deregister +EXPORT_SYMBOL vmlinux 0x249c846f dqput +EXPORT_SYMBOL vmlinux 0x249dc3a8 __inode_permission +EXPORT_SYMBOL vmlinux 0x24c3aec6 have_submounts +EXPORT_SYMBOL vmlinux 0x24caa29c pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x24d08069 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24fc39a0 give_up_console +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25228b2a dev_err +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2527a087 vme_slave_set +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258daf21 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x2599a36b alloc_file +EXPORT_SYMBOL vmlinux 0x25abed5c inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x25adc0f9 skb_store_bits +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x25f8849d pci_platform_rom +EXPORT_SYMBOL vmlinux 0x260b4e93 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x260dea9b blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x2612bd70 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x26331f92 dev_deactivate +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265c641e pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x266f8c92 serio_open +EXPORT_SYMBOL vmlinux 0x269d1442 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x26a4676a kill_litter_super +EXPORT_SYMBOL vmlinux 0x26b055c5 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x26b205c0 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26b89604 generic_readlink +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26cfc4d6 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x26d586be unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x272c9acd pmu_battery_count +EXPORT_SYMBOL vmlinux 0x272e64c0 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x27450218 scsi_device_put +EXPORT_SYMBOL vmlinux 0x27709ddb ___pskb_trim +EXPORT_SYMBOL vmlinux 0x2771094d ip_check_defrag +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277bede0 mmc_request_done +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27da444f pid_task +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27ec5170 loop_backing_file +EXPORT_SYMBOL vmlinux 0x27eddb01 scsi_host_put +EXPORT_SYMBOL vmlinux 0x27f10f3f dev_crit +EXPORT_SYMBOL vmlinux 0x27f2cdd3 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x280d15d2 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x2810e623 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x28174576 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x2817deb8 __sb_start_write +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2818ed9e netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x28393a6e scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x2852c175 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x287253ac of_find_property +EXPORT_SYMBOL vmlinux 0x28814820 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x289e1dd5 register_framebuffer +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28b362ab i2c_clients_command +EXPORT_SYMBOL vmlinux 0x28df37b4 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x28df5a02 md_error +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x28f8c2e4 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x2925c7c9 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x29420506 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x294a86dc inet_frags_fini +EXPORT_SYMBOL vmlinux 0x294f0f3a eth_header_cache +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295f9ef9 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x29863e1b netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x298ad027 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x29d2bf3a netdev_update_features +EXPORT_SYMBOL vmlinux 0x29d571d3 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x29e42b1d jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x29f59429 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a369b0b scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x2a62a628 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x2a74e548 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x2a77bc2c __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a8997bc fb_set_var +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2aceb6a3 __f_setown +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b261c27 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2fb530 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x2b31833e dcache_dir_close +EXPORT_SYMBOL vmlinux 0x2b47194f pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x2b4b18b7 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x2b5fa4d7 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x2b611b48 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x2b6333c4 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x2b6a3590 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x2b80354b bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x2b85dba8 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba576da register_quota_format +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bac72bc of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x2bd1c73c dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x2c1377c8 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c2375e4 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2bc97c set_page_dirty +EXPORT_SYMBOL vmlinux 0x2c40e232 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x2c5a4890 kern_path +EXPORT_SYMBOL vmlinux 0x2c715f44 make_kgid +EXPORT_SYMBOL vmlinux 0x2c716d05 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c9d5826 __kernel_write +EXPORT_SYMBOL vmlinux 0x2cbb133b of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x2ccfa5d4 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x2cd1d496 inet_frags_init +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d55917f vme_master_request +EXPORT_SYMBOL vmlinux 0x2d5b18cc __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x2d6111a9 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x2d618f48 down_read +EXPORT_SYMBOL vmlinux 0x2d6b2794 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x2d8dd69a neigh_event_ns +EXPORT_SYMBOL vmlinux 0x2da93e4d inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x2db66fa5 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x2ddbc088 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df9ae2e jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x2e115a69 kunmap_high +EXPORT_SYMBOL vmlinux 0x2e14235a vfs_readf +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3bf198 generic_setlease +EXPORT_SYMBOL vmlinux 0x2e498097 sock_init_data +EXPORT_SYMBOL vmlinux 0x2e4f1da1 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x2e534694 genphy_resume +EXPORT_SYMBOL vmlinux 0x2e7aeaa4 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x2e99272e qdisc_reset +EXPORT_SYMBOL vmlinux 0x2ea15131 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x2ea6deac proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x2ea70fa1 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x2eb005f1 ip_options_compile +EXPORT_SYMBOL vmlinux 0x2ebb3a2a vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec781f1 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f15954a of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x2f23485f generic_writepages +EXPORT_SYMBOL vmlinux 0x2f29457b blk_end_request_all +EXPORT_SYMBOL vmlinux 0x2f3b9603 d_instantiate +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5b02e3 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x2f76fcc5 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x2f9c7a77 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc075e7 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x2fc40e63 mach_chrp +EXPORT_SYMBOL vmlinux 0x2fd4134a blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ffd2682 dump_emit +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3035cf5c icmp_send +EXPORT_SYMBOL vmlinux 0x305f05ec of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x3061d3b2 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a3f122 of_get_property +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b2aad9 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30b8e3ef param_get_uint +EXPORT_SYMBOL vmlinux 0x30c14bf1 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x30d1303a skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x30d6dbf3 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x30f29b84 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x30fd35b5 mmc_start_req +EXPORT_SYMBOL vmlinux 0x30fe355b trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3139f1b1 copy_to_iter +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31497726 acl_by_type +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3180a837 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x318ee644 prepare_binprm +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31c63e95 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x31e34ade serio_close +EXPORT_SYMBOL vmlinux 0x31e381a1 key_validate +EXPORT_SYMBOL vmlinux 0x31e8c316 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x31ec0e2d of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31fb3d9b bdget_disk +EXPORT_SYMBOL vmlinux 0x3215c300 blk_start_request +EXPORT_SYMBOL vmlinux 0x321c4f49 neigh_destroy +EXPORT_SYMBOL vmlinux 0x322a52f6 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x323363dd twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x323964b2 __genl_register_family +EXPORT_SYMBOL vmlinux 0x323ea420 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x325db45d do_splice_from +EXPORT_SYMBOL vmlinux 0x326272ba __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x32688b6f lock_sock_fast +EXPORT_SYMBOL vmlinux 0x32701b4b jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32a007b5 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x32ee4fca udplite_prot +EXPORT_SYMBOL vmlinux 0x32fbe132 sg_miter_next +EXPORT_SYMBOL vmlinux 0x3307e7f6 down_write_trylock +EXPORT_SYMBOL vmlinux 0x33105110 napi_disable +EXPORT_SYMBOL vmlinux 0x3316def4 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x332014df stop_tty +EXPORT_SYMBOL vmlinux 0x3330887e vga_tryget +EXPORT_SYMBOL vmlinux 0x334492d6 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x334d43cc pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x334daf9f inet_accept +EXPORT_SYMBOL vmlinux 0x335e2d66 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x3368df0b security_path_truncate +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c478c3 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d26eb1 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34036a59 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x3414221e devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x34361426 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x34488d74 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x345c28c3 vga_get +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347efd3d may_umount +EXPORT_SYMBOL vmlinux 0x349303e0 __napi_complete +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34bbfaa3 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x34c65777 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x34c91bb6 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x34f2b3dd blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35194f77 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x352a02d4 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x3541b5c6 seq_printf +EXPORT_SYMBOL vmlinux 0x3551dda5 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x3562ed99 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3572a7ff udp_del_offload +EXPORT_SYMBOL vmlinux 0x357cc803 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b60e2a read_dev_sector +EXPORT_SYMBOL vmlinux 0x35bee353 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35c66703 of_node_get +EXPORT_SYMBOL vmlinux 0x35f911f2 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x36608963 filemap_fault +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x36860b85 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36f2f4c7 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x36f917e5 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37351e74 flush_old_exec +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x376d1ea5 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x377ce10d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x37871832 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x3789b3bc mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x378cd0f7 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x37940a40 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x37972e9e jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x37a83424 tty_unlock +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c2445c revert_creds +EXPORT_SYMBOL vmlinux 0x37d2a082 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x37dad3a4 dev_set_group +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 0x37f7dcfe cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381f47f8 __devm_request_region +EXPORT_SYMBOL vmlinux 0x38375ba6 phy_device_create +EXPORT_SYMBOL vmlinux 0x3856ca61 inode_set_flags +EXPORT_SYMBOL vmlinux 0x3860b1c1 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x387d6359 may_umount_tree +EXPORT_SYMBOL vmlinux 0x38826a9d nobh_writepage +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 0x38e08f01 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x38ef1f26 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x38fa10eb agp_generic_enable +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x38ff4e25 seq_putc +EXPORT_SYMBOL vmlinux 0x391f9b53 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x39207f23 security_path_chmod +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393eee30 napi_complete_done +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3980941e blkdev_fsync +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399b9997 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39c94300 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39f2fecc macio_release_resource +EXPORT_SYMBOL vmlinux 0x3a1a10cb dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a2d63d6 deactivate_super +EXPORT_SYMBOL vmlinux 0x3a743f9e inode_init_once +EXPORT_SYMBOL vmlinux 0x3a80b705 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x3a8868ff of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9e0163 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x3ace4e02 led_update_brightness +EXPORT_SYMBOL vmlinux 0x3ada9c9a seq_file_path +EXPORT_SYMBOL vmlinux 0x3afc35a5 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x3b0d5d1d input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x3b3d4d1f pcie_set_mps +EXPORT_SYMBOL vmlinux 0x3b403755 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x3b4dc658 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x3b53c03e blk_recount_segments +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b931348 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x3b938305 dst_release +EXPORT_SYMBOL vmlinux 0x3bd1487c vfs_whiteout +EXPORT_SYMBOL vmlinux 0x3bde2f41 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x3beb9bc8 unload_nls +EXPORT_SYMBOL vmlinux 0x3bf340ac inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x3c0c28e6 d_invalidate +EXPORT_SYMBOL vmlinux 0x3c1c880f agp_enable +EXPORT_SYMBOL vmlinux 0x3c1e7e31 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x3c2f9401 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x3c3b21e2 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c4161e3 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c7ece92 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x3c8012d7 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3ca64cd1 tty_port_open +EXPORT_SYMBOL vmlinux 0x3cb153de register_filesystem +EXPORT_SYMBOL vmlinux 0x3cb7d717 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cc5e739 make_bad_inode +EXPORT_SYMBOL vmlinux 0x3cc8cd36 eth_header +EXPORT_SYMBOL vmlinux 0x3ccf942f tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce501d8 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x3ced30bd jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x3d1844b0 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x3d33ebc3 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x3d3a1fe8 complete_request_key +EXPORT_SYMBOL vmlinux 0x3d4be316 set_anon_super +EXPORT_SYMBOL vmlinux 0x3d8552e1 input_open_device +EXPORT_SYMBOL vmlinux 0x3d91b538 __scm_destroy +EXPORT_SYMBOL vmlinux 0x3db68286 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dc6d2e3 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddffa39 iget5_locked +EXPORT_SYMBOL vmlinux 0x3deec8ba bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e122435 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x3e35913b netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x3e36e875 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x3e42377b migrate_page +EXPORT_SYMBOL vmlinux 0x3e837b0b input_set_abs_params +EXPORT_SYMBOL vmlinux 0x3e8dd793 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e9894b8 __sb_end_write +EXPORT_SYMBOL vmlinux 0x3ea4fe37 key_link +EXPORT_SYMBOL vmlinux 0x3eaaf3b1 proc_set_user +EXPORT_SYMBOL vmlinux 0x3eb66702 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x3eb7320b tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x3ec79048 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x3ee73fe2 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x3eef825e sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f060843 sk_common_release +EXPORT_SYMBOL vmlinux 0x3f077559 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x3f19e7f3 dquot_transfer +EXPORT_SYMBOL vmlinux 0x3f21d003 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x3f257d47 set_groups +EXPORT_SYMBOL vmlinux 0x3f29c425 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4a56e0 padata_do_serial +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f82941d fb_show_logo +EXPORT_SYMBOL vmlinux 0x3f84bd2d scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x3f8dfab5 dma_set_mask +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fedfc1f xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x40210de5 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40681020 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x406933ea finish_open +EXPORT_SYMBOL vmlinux 0x406c1b47 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x40709653 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40991a30 init_special_inode +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 0x40beb95b gen_pool_free +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 0x40df0ee8 __quota_error +EXPORT_SYMBOL vmlinux 0x40df2519 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414b6cb2 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x415d62d0 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x4163f6e0 sock_efree +EXPORT_SYMBOL vmlinux 0x417472f3 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x4174b794 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x41908933 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42168a7b ilookup +EXPORT_SYMBOL vmlinux 0x4220d44c devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x427999db pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x4280639a up_read +EXPORT_SYMBOL vmlinux 0x4286b774 kill_block_super +EXPORT_SYMBOL vmlinux 0x42881e3a ps2_handle_response +EXPORT_SYMBOL vmlinux 0x429be6d3 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x429f0ce0 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42fbabd3 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4327f502 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x434b144e pci_find_bus +EXPORT_SYMBOL vmlinux 0x435066c7 pci_pme_active +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43662e96 nobh_write_end +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438c8f6d bio_copy_kern +EXPORT_SYMBOL vmlinux 0x4391a1b0 dquot_destroy +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a64f74 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x43aa56e7 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x43bab344 rtnl_notify +EXPORT_SYMBOL vmlinux 0x43c28c3a agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x43c4dce8 dev_open +EXPORT_SYMBOL vmlinux 0x43c62259 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x43d324d1 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x43d55401 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x43d63698 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x43d88ac7 get_disk +EXPORT_SYMBOL vmlinux 0x43dd4fda tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4402b229 put_disk +EXPORT_SYMBOL vmlinux 0x440dfcda neigh_connected_output +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441916c7 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x442e9d7f param_set_long +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x4440f480 simple_write_end +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44439662 fd_install +EXPORT_SYMBOL vmlinux 0x4462b6e7 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x4469f83a dput +EXPORT_SYMBOL vmlinux 0x446a4a73 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x4472820f tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x449a2bcf jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b4e76b page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ed2f90 pci_dev_put +EXPORT_SYMBOL vmlinux 0x450c265b ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454324bb tcf_hash_search +EXPORT_SYMBOL vmlinux 0x4546012d end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x4563029f task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x4565ca5f rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457b7f9b write_one_page +EXPORT_SYMBOL vmlinux 0x457ec024 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45c3a172 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x45d31b32 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x45f4af96 __napi_schedule +EXPORT_SYMBOL vmlinux 0x45f9f00e jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x4603a556 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461e1910 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462345e1 xmon +EXPORT_SYMBOL vmlinux 0x462a0e2f __blk_end_request +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +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 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46a72b31 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x46c446ef cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x46cb62fa blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x471c6054 netdev_printk +EXPORT_SYMBOL vmlinux 0x473075d4 validate_sp +EXPORT_SYMBOL vmlinux 0x4738b245 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47546ad0 sk_net_capable +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x4776dd16 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a2501a bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x47a28819 tso_count_descs +EXPORT_SYMBOL vmlinux 0x47ad027e param_get_ullong +EXPORT_SYMBOL vmlinux 0x47be5a29 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x47c277ec alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x47d1c6f7 generic_write_checks +EXPORT_SYMBOL vmlinux 0x47dd18a7 netdev_state_change +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x484e2c98 skb_append +EXPORT_SYMBOL vmlinux 0x484eb544 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x485481d3 vfs_rename +EXPORT_SYMBOL vmlinux 0x48552322 __block_write_begin +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x48966964 alloc_disk +EXPORT_SYMBOL vmlinux 0x489ba1cc dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x489ca37d tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c56f74 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x48e2dd24 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x48e93f3d i2c_register_driver +EXPORT_SYMBOL vmlinux 0x48e9c28d cdrom_check_events +EXPORT_SYMBOL vmlinux 0x48ebe992 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490874d1 get_agp_version +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496cfca5 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x4971c244 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x4999f9e4 wake_up_process +EXPORT_SYMBOL vmlinux 0x49a8b965 block_write_full_page +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b259ae bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x49c47d00 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x49e87d6d fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49fe19ea secpath_dup +EXPORT_SYMBOL vmlinux 0x4a0e78fa i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x4a1b5995 tty_do_resize +EXPORT_SYMBOL vmlinux 0x4a2caf5f mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x4a2e52b0 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x4a384a07 mount_pseudo +EXPORT_SYMBOL vmlinux 0x4a487bb8 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x4a8b287c dquot_get_state +EXPORT_SYMBOL vmlinux 0x4a95e8e7 pci_map_rom +EXPORT_SYMBOL vmlinux 0x4a9e803e sock_kmalloc +EXPORT_SYMBOL vmlinux 0x4a9f2349 put_tty_driver +EXPORT_SYMBOL vmlinux 0x4aa11710 bmap +EXPORT_SYMBOL vmlinux 0x4aa22c72 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x4aaeb637 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x4ab9d99a input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abd684d bioset_create +EXPORT_SYMBOL vmlinux 0x4acf3993 set_nlink +EXPORT_SYMBOL vmlinux 0x4ad5cc5d dev_printk +EXPORT_SYMBOL vmlinux 0x4aee462a ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x4af56bd4 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0c8973 arp_create +EXPORT_SYMBOL vmlinux 0x4b14ece9 d_splice_alias +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b24c9a7 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b35c8fd blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x4b39ab95 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x4b3b383a proc_create_data +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6585dc tty_port_close_start +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b94809c udp_prot +EXPORT_SYMBOL vmlinux 0x4b96ff31 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x4ba8e2b2 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x4bae9770 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bb0bc9b param_set_ushort +EXPORT_SYMBOL vmlinux 0x4bb7464f gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x4bbf51a9 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4beca03f serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf51445 __bread_gfp +EXPORT_SYMBOL vmlinux 0x4bfb9454 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x4c022da6 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x4c0ab0ff single_open +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1e0b35 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x4c2928a8 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c3e59cb end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x4ca5ba5a dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x4cac4de6 I_BDEV +EXPORT_SYMBOL vmlinux 0x4cb92cbb tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x4cc113d5 misc_register +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cfeafe5 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x4d2280ed km_state_expired +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d4fb47e i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x4d635891 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d80db17 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x4d83b295 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db50894 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4dcebc35 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x4dd026b5 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x4dd3851c page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dff5ea1 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x4e22a33d dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x4e27fb34 bio_init +EXPORT_SYMBOL vmlinux 0x4e31d2f7 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4b287b block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x4e514944 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x4e520681 __module_get +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6d4a16 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x4e6d4a62 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e737d90 ppp_input +EXPORT_SYMBOL vmlinux 0x4e918540 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eb14995 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x4ec5ed31 vfs_statfs +EXPORT_SYMBOL vmlinux 0x4edc6128 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x4edd9223 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x4ef9fe90 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x4efacd25 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f28d22e phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f40e91c nf_hook_slow +EXPORT_SYMBOL vmlinux 0x4f566cb5 bdevname +EXPORT_SYMBOL vmlinux 0x4f61de83 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x4f675a70 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f7382f6 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x4f77b78e simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x4f8fd88f pagecache_get_page +EXPORT_SYMBOL vmlinux 0x4fc30962 dev_emerg +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4fff8651 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x502a6da2 kill_bdev +EXPORT_SYMBOL vmlinux 0x502b701a filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x5051a800 kobject_init +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x508deb89 mmc_erase +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50bec28b bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x50bf7d76 tcp_prot +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50eb8cdd dentry_path_raw +EXPORT_SYMBOL vmlinux 0x51132d81 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51297d28 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x5131d3a1 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x513272ce ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x513b2e35 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x5147541a __getblk_slow +EXPORT_SYMBOL vmlinux 0x514b169b elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x516e3630 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x5186b5a2 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x51910333 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a926bf mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x51bc7e3b __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x51ccdfd8 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51ef41e0 generic_listxattr +EXPORT_SYMBOL vmlinux 0x51f5b841 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x51fb84a0 lookup_bdev +EXPORT_SYMBOL vmlinux 0x51fc65a2 bdget +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524bcf9e vme_irq_request +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x527f1992 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52b53ecb request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x52d2c217 i2c_transfer +EXPORT_SYMBOL vmlinux 0x52d70106 set_wb_congested +EXPORT_SYMBOL vmlinux 0x52d727c1 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x52e35411 security_path_unlink +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531c6770 pci_match_id +EXPORT_SYMBOL vmlinux 0x531cd2e0 pci_save_state +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x533be488 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x535c2edb dev_warn +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x537f27db scsi_register_interface +EXPORT_SYMBOL vmlinux 0x53836509 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x5393dc90 inet_put_port +EXPORT_SYMBOL vmlinux 0x53c25043 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x53c906c1 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x53cd9b47 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x53d32406 proc_remove +EXPORT_SYMBOL vmlinux 0x53eb3021 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54246416 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x543a2698 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x543c07e2 of_device_register +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5446b0c7 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x544f907b vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x54564050 rt6_lookup +EXPORT_SYMBOL vmlinux 0x54643ea6 nf_register_hook +EXPORT_SYMBOL vmlinux 0x54664f5d tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x54777b77 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x547e53b7 netif_skb_features +EXPORT_SYMBOL vmlinux 0x548cf611 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54adf9ac input_close_device +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54e5c824 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54e92d34 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x54fa7109 param_set_short +EXPORT_SYMBOL vmlinux 0x5507daf6 giveup_fpu +EXPORT_SYMBOL vmlinux 0x551ace4b ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55252e3f of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5545deaa xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x55467ede fsl_upm_find +EXPORT_SYMBOL vmlinux 0x554a5d5a elevator_alloc +EXPORT_SYMBOL vmlinux 0x55591484 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x5562a80b of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5575170f pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55dd787b xfrm_register_type +EXPORT_SYMBOL vmlinux 0x55e5748c reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x55e91630 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x560aa067 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x560fcd33 lro_flush_all +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5637f84c mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x564cd210 would_dump +EXPORT_SYMBOL vmlinux 0x5651a4ef security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x566f4668 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d07cc3 blk_register_region +EXPORT_SYMBOL vmlinux 0x56d7ac14 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x57043247 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57493872 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57540e22 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x5754218b phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x57564684 padata_free +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5774de56 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x577984b0 kobject_add +EXPORT_SYMBOL vmlinux 0x578bc5cf phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x57d55378 uart_register_driver +EXPORT_SYMBOL vmlinux 0x57e7fd97 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x58050251 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582ee701 dev_notice +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5852d9c9 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x58571da1 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58592eb2 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x585ba347 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58a1ec9c account_page_dirtied +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58bb563b pcim_enable_device +EXPORT_SYMBOL vmlinux 0x58bee090 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x58c8557a of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e890b0 dcb_getapp +EXPORT_SYMBOL vmlinux 0x58f1733b input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x5900f3c9 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x590355ff sk_stop_timer +EXPORT_SYMBOL vmlinux 0x590792f6 lock_rename +EXPORT_SYMBOL vmlinux 0x590b043e pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x590e567a i2c_use_client +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x59247ec7 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x593a1356 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x594b1550 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595ac87f gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59d603be scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a1967c6 pci_disable_device +EXPORT_SYMBOL vmlinux 0x5a30a833 skb_insert +EXPORT_SYMBOL vmlinux 0x5a346d99 dst_alloc +EXPORT_SYMBOL vmlinux 0x5a37a4a2 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x5a383040 phy_connect +EXPORT_SYMBOL vmlinux 0x5a437ebd writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x5a464607 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x5a5a6ea0 simple_write_begin +EXPORT_SYMBOL vmlinux 0x5a65f39b generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x5a8eaeb0 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x5ac2ed4c vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x5ac35e02 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x5ac429ac call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x5ad9bed6 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x5ae1e55d generic_permission +EXPORT_SYMBOL vmlinux 0x5ae7a4f3 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x5ae9ec62 param_ops_long +EXPORT_SYMBOL vmlinux 0x5af5980a padata_add_cpu +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5aff6e44 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x5b09dcad vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x5b0abfe1 param_set_bool +EXPORT_SYMBOL vmlinux 0x5b17f523 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1ef480 ps2_init +EXPORT_SYMBOL vmlinux 0x5b3c85ac kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b49437b submit_bio +EXPORT_SYMBOL vmlinux 0x5b504ffc release_pages +EXPORT_SYMBOL vmlinux 0x5b5e9ef6 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9f04f0 sock_no_connect +EXPORT_SYMBOL vmlinux 0x5ba2e413 mdiobus_free +EXPORT_SYMBOL vmlinux 0x5ba309e0 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x5bb00296 clear_user_page +EXPORT_SYMBOL vmlinux 0x5bb4669f netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x5bb9daec __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5bc82995 unregister_netdev +EXPORT_SYMBOL vmlinux 0x5bd40e1b vfs_create +EXPORT_SYMBOL vmlinux 0x5c0b4b3d dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c528238 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x5c71bff7 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x5c823aa0 inet_getname +EXPORT_SYMBOL vmlinux 0x5c856137 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x5c8b7eb4 cdev_alloc +EXPORT_SYMBOL vmlinux 0x5c94b41f ps2_drain +EXPORT_SYMBOL vmlinux 0x5ca47ffa skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x5cba854d kernel_accept +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d1d6f99 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x5d25482c mpage_writepages +EXPORT_SYMBOL vmlinux 0x5d321190 simple_lookup +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d6fff7c __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x5d866485 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x5d8dd7c3 netdev_crit +EXPORT_SYMBOL vmlinux 0x5daec900 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x5daefe83 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x5db534a7 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x5dd696b0 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x5ddeab69 register_netdev +EXPORT_SYMBOL vmlinux 0x5df2a5c3 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x5e04091c max8998_update_reg +EXPORT_SYMBOL vmlinux 0x5e0568af __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x5e061942 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x5e16d84f __mutex_init +EXPORT_SYMBOL vmlinux 0x5e25ef1c blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e28ddd8 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x5e2bf98c skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x5e393a36 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e7bd0a5 vfs_fsync +EXPORT_SYMBOL vmlinux 0x5e7dd429 posix_lock_file +EXPORT_SYMBOL vmlinux 0x5e7fd25c cdev_add +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea5cb69 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb56b83 serio_interrupt +EXPORT_SYMBOL vmlinux 0x5ec50fb1 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x5ec62a9b jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed38a4a sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f14ffb9 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x5f51deaa mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x5f532218 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x5f5d2f39 skb_find_text +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f8ed9d0 blk_free_tags +EXPORT_SYMBOL vmlinux 0x5f95bb1f blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x5fb85bb1 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5fedd1e4 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f4962 init_buffer +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6031a477 fasync_helper +EXPORT_SYMBOL vmlinux 0x603202f3 __kfree_skb +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603692c3 get_tz_trend +EXPORT_SYMBOL vmlinux 0x606c9187 iterate_fd +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x606fd28c pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x6073732c cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609ae1db request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60ae159a phy_print_status +EXPORT_SYMBOL vmlinux 0x60bcecf7 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e36b7f pci_set_master +EXPORT_SYMBOL vmlinux 0x6105a848 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x611648f7 sock_wfree +EXPORT_SYMBOL vmlinux 0x61232abe remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6156ec6e tcp_make_synack +EXPORT_SYMBOL vmlinux 0x615987c1 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x616727d0 of_device_unregister +EXPORT_SYMBOL vmlinux 0x616b825d dql_init +EXPORT_SYMBOL vmlinux 0x616d43e2 dev_driver_string +EXPORT_SYMBOL vmlinux 0x617af3c2 write_inode_now +EXPORT_SYMBOL vmlinux 0x61920f66 seq_release +EXPORT_SYMBOL vmlinux 0x6192df02 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61b80660 textsearch_register +EXPORT_SYMBOL vmlinux 0x61c37d31 param_set_ullong +EXPORT_SYMBOL vmlinux 0x61cbf699 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x61eb8764 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6218416b d_path +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623d36e8 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x623d7182 _chrp_type +EXPORT_SYMBOL vmlinux 0x62400a00 simple_readpage +EXPORT_SYMBOL vmlinux 0x624892ac vme_lm_request +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x626fe875 of_match_device +EXPORT_SYMBOL vmlinux 0x627332bb security_inode_readlink +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +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 0x62b6679a kernel_read +EXPORT_SYMBOL vmlinux 0x62e8d7b5 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6326d0dc tcp_parse_options +EXPORT_SYMBOL vmlinux 0x634dd295 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x636e3a68 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x6381c383 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c1af43 md_update_sb +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63db3245 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f234db iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x63f2fbf0 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x640250f8 save_mount_options +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641080dc sock_i_uid +EXPORT_SYMBOL vmlinux 0x64122e30 skb_put +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641b4503 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x641c418e key_invalidate +EXPORT_SYMBOL vmlinux 0x643db18e put_io_context +EXPORT_SYMBOL vmlinux 0x64565307 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x645ca4ae dentry_unhash +EXPORT_SYMBOL vmlinux 0x645f7d32 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x646a7b34 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649bde98 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x64b26bd6 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x64c2d609 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x64c6f737 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x64cb646e dquot_file_open +EXPORT_SYMBOL vmlinux 0x6503c787 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x6526c076 module_refcount +EXPORT_SYMBOL vmlinux 0x652757ec tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x6535d75b xfrm_register_km +EXPORT_SYMBOL vmlinux 0x653da394 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6540ae36 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x654d96f8 tcp_close +EXPORT_SYMBOL vmlinux 0x65626b4a kmap_high +EXPORT_SYMBOL vmlinux 0x65667eb3 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x658118ad sock_no_accept +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x66333405 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x663b6f58 pci_restore_state +EXPORT_SYMBOL vmlinux 0x6649bea8 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x66565776 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x667a79ea pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x6690ee5c single_open_size +EXPORT_SYMBOL vmlinux 0x66a04c9c netif_napi_del +EXPORT_SYMBOL vmlinux 0x66a26a81 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x66bf9b83 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66df2650 skb_make_writable +EXPORT_SYMBOL vmlinux 0x66f7d32e skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x6715cc3f __dax_fault +EXPORT_SYMBOL vmlinux 0x672fa6af pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x674ccd84 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x6764de88 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x678824cc security_path_link +EXPORT_SYMBOL vmlinux 0x6788fed9 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x67a75029 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67db335a blk_init_tags +EXPORT_SYMBOL vmlinux 0x6802f813 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x681c462c dev_add_pack +EXPORT_SYMBOL vmlinux 0x683a0133 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x68474644 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68a17f29 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x68a499c3 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68df3c83 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x692e3844 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x693081cd param_ops_string +EXPORT_SYMBOL vmlinux 0x693c6247 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x695a3d0b pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x695f590d mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697dbb5f km_is_alive +EXPORT_SYMBOL vmlinux 0x6994cae5 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69ba1683 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69ee57a9 register_qdisc +EXPORT_SYMBOL vmlinux 0x69f654af __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a1da00f cfb_copyarea +EXPORT_SYMBOL vmlinux 0x6a2bc1f0 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x6a2c509b tcf_action_exec +EXPORT_SYMBOL vmlinux 0x6a3d913a skb_queue_head +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a71e395 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x6a729798 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7d4a2b eth_change_mtu +EXPORT_SYMBOL vmlinux 0x6a8b083c phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x6a9b673a udp_seq_open +EXPORT_SYMBOL vmlinux 0x6aa97dbb simple_rename +EXPORT_SYMBOL vmlinux 0x6ac52066 vc_cons +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad8cfdb blk_requeue_request +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af0c18a iunique +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0ca14c bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x6b1186a2 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x6b15b1d3 proc_set_size +EXPORT_SYMBOL vmlinux 0x6b160ee0 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b23bb98 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b31f118 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x6b369382 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b7421f2 vga_con +EXPORT_SYMBOL vmlinux 0x6b80cead devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x6b93c31b scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x6b96f7c9 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x6bab9b81 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x6bacf816 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x6bb59f12 get_super_thawed +EXPORT_SYMBOL vmlinux 0x6bbb5743 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bed91ee sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x6bfa6497 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x6c094534 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0d4f36 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x6c1b9875 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c341cd9 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5d2b6a sock_sendmsg +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6fce9e mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca50199 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cb513b2 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x6cb963ef dquot_free_inode +EXPORT_SYMBOL vmlinux 0x6cd79759 pci_bus_type +EXPORT_SYMBOL vmlinux 0x6cd9cedb simple_statfs +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cdd589f __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x6d0e61cc get_phy_device +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1b78a2 key_unlink +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d4f1f6a filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x6d50d8c0 pci_bus_get +EXPORT_SYMBOL vmlinux 0x6d730b8d of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d8305cc agp_copy_info +EXPORT_SYMBOL vmlinux 0x6d97d7a9 vfs_symlink +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6ddad26e downgrade_write +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e3b819f sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e6b543d udp_disconnect +EXPORT_SYMBOL vmlinux 0x6e7169f8 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7dca92 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x6e7e12b7 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x6e925141 proc_symlink +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6e9f44cd eth_gro_complete +EXPORT_SYMBOL vmlinux 0x6e9fbf13 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ec833ac blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x6edd8f0d phy_find_first +EXPORT_SYMBOL vmlinux 0x6ee6c27f swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x6eee75e6 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x6efaa0e9 mutex_trylock +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f250be0 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fa068e0 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x6fa14c30 da903x_query_status +EXPORT_SYMBOL vmlinux 0x6faaf693 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb6bc1 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd9c693 nf_log_packet +EXPORT_SYMBOL vmlinux 0x6fec4490 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x6ffeb474 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x7000c364 set_disk_ro +EXPORT_SYMBOL vmlinux 0x701dce0c __sk_dst_check +EXPORT_SYMBOL vmlinux 0x70208aa8 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x703eaacd file_update_time +EXPORT_SYMBOL vmlinux 0x70473d71 vfs_read +EXPORT_SYMBOL vmlinux 0x7048bbbd flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x7049ae1a uart_resume_port +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705a9a73 padata_stop +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7093a3a3 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x70c5490c gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x70d49b37 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70daf5de __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7114150f vm_mmap +EXPORT_SYMBOL vmlinux 0x711d541e qdisc_list_add +EXPORT_SYMBOL vmlinux 0x712959ea xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712b848f elv_register_queue +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x714aa066 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x71610bcc dma_direct_ops +EXPORT_SYMBOL vmlinux 0x716c5e73 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x716e4ff2 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x718ea246 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x719e372e key_type_keyring +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71ba0110 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71caf556 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x71ce7f7a get_super +EXPORT_SYMBOL vmlinux 0x71df4404 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x71eb4763 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x71f555fc linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x721ba9f0 bio_map_kern +EXPORT_SYMBOL vmlinux 0x725d1ac4 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x725fc3f9 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x7264dc1b fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x7267162d noop_qdisc +EXPORT_SYMBOL vmlinux 0x72690613 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x726dfdb7 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x7282c1fd phy_driver_register +EXPORT_SYMBOL vmlinux 0x7299bb90 of_phy_attach +EXPORT_SYMBOL vmlinux 0x72a0e6f2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c206dc dev_uc_del +EXPORT_SYMBOL vmlinux 0x72c6c580 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e46eb5 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x73074049 tcp_poll +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7328b361 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x73365781 iput +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73507e12 setattr_copy +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x739bbd7a textsearch_prepare +EXPORT_SYMBOL vmlinux 0x739d07df param_ops_uint +EXPORT_SYMBOL vmlinux 0x73b7410b pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x73e1dc05 mmc_add_host +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73f62f51 keyring_alloc +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7419b1c4 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x741b17d6 of_iomap +EXPORT_SYMBOL vmlinux 0x742de36a inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x743d5565 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x7442b0e2 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x744642eb blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x7459b4ab neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x7462fd3d fb_pan_display +EXPORT_SYMBOL vmlinux 0x74710d20 kernel_connect +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748f8c8e nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x74954584 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d60e78 agp_free_memory +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fb1b62 fb_class +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7513a228 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x751619be of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x751e7ebc request_key +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7549ab96 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x755f290f tty_port_hangup +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x7573e0e9 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x7598d859 __ps2_command +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x759fc869 mntget +EXPORT_SYMBOL vmlinux 0x75b17079 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x75bb8f80 send_sig +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76279cd5 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x762f9487 mach_powermac +EXPORT_SYMBOL vmlinux 0x763113c6 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x764672d7 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x76488c7a cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x7658948c agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x7675712e ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x769fc4e1 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x76a0301a pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x76acd42d param_ops_short +EXPORT_SYMBOL vmlinux 0x76ba834d kern_path_create +EXPORT_SYMBOL vmlinux 0x76cb19e5 page_symlink +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d5b7d7 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76e29b47 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x76e3a692 follow_down_one +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x76fa8fc7 netdev_info +EXPORT_SYMBOL vmlinux 0x7704dcd8 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x770abc36 pci_get_class +EXPORT_SYMBOL vmlinux 0x771a1c7c security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x771dcd96 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x774a3a0d iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x775a130e __sg_free_table +EXPORT_SYMBOL vmlinux 0x7762a205 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x77737dee bio_add_page +EXPORT_SYMBOL vmlinux 0x7779e0b1 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779da92a sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x77b30a0b pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c53ce9 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x77c67933 rtas +EXPORT_SYMBOL vmlinux 0x77c8757c crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x77c8d750 pcie_capability_write_word +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 0x7853d369 register_gifconf +EXPORT_SYMBOL vmlinux 0x78651ca8 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788d011b uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78b5ca65 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x78daade0 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x79206a39 genlmsg_put +EXPORT_SYMBOL vmlinux 0x793086e2 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x793e8590 elevator_init +EXPORT_SYMBOL vmlinux 0x79675a85 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79706b0f __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x79770660 try_to_release_page +EXPORT_SYMBOL vmlinux 0x79840673 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bf30e8 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x79ee53d2 seq_path +EXPORT_SYMBOL vmlinux 0x79f202dd of_get_pci_address +EXPORT_SYMBOL vmlinux 0x7a0830b5 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x7a108001 sg_miter_start +EXPORT_SYMBOL vmlinux 0x7a1a6f18 do_splice_direct +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a34d6b5 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x7a36042b dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x7a37e51f pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a47d55e xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab75e44 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac2432e blk_get_queue +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7adc89f0 __break_lease +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af279ca scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b01e278 read_code +EXPORT_SYMBOL vmlinux 0x7b030add tty_unregister_device +EXPORT_SYMBOL vmlinux 0x7b18ce2e unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b20b80f nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b3ba7f0 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x7b490ef5 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b72669a phy_disconnect +EXPORT_SYMBOL vmlinux 0x7b878b22 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x7b8d3def skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x7ba082e7 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x7ba510c7 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x7bab8fc9 seq_lseek +EXPORT_SYMBOL vmlinux 0x7bad4abd __brelse +EXPORT_SYMBOL vmlinux 0x7bb1e52a seq_escape +EXPORT_SYMBOL vmlinux 0x7bb25dcb phy_init_eee +EXPORT_SYMBOL vmlinux 0x7bb26c73 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x7bc8fa76 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x7bd3438e __scm_send +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7bffc231 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c0bc3c2 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1a82bf dqget +EXPORT_SYMBOL vmlinux 0x7c3b7704 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c588408 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x7c7de818 input_register_handler +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c9494bb blk_put_queue +EXPORT_SYMBOL vmlinux 0x7c94ae21 clear_inode +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca41c4f search_binary_handler +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb5c377 component_match_add +EXPORT_SYMBOL vmlinux 0x7cd93963 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf3005b xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7cfdb314 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0ea679 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d11c67d vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x7d18ab04 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x7d1a380f mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x7d243009 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x7d284602 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x7d2b876f unregister_quota_format +EXPORT_SYMBOL vmlinux 0x7d33dbbe i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x7d3d0969 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x7d5fe5f9 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7694c5 __alloc_skb +EXPORT_SYMBOL vmlinux 0x7d7cc9ef blk_start_queue +EXPORT_SYMBOL vmlinux 0x7d7f1116 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x7d8995b6 simple_fill_super +EXPORT_SYMBOL vmlinux 0x7d925f87 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x7da22bfa flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7de93b20 vfs_writev +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e31ddf8 force_sig +EXPORT_SYMBOL vmlinux 0x7e390d69 mmc_release_host +EXPORT_SYMBOL vmlinux 0x7e473bc8 phy_stop +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e8b0a88 irq_set_chip +EXPORT_SYMBOL vmlinux 0x7e8c6116 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x7e97fc8a __breadahead +EXPORT_SYMBOL vmlinux 0x7ec09c89 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7efbee29 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x7f011e38 sk_free +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f3b3921 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f67a3c9 param_set_uint +EXPORT_SYMBOL vmlinux 0x7f784f20 adb_client_list +EXPORT_SYMBOL vmlinux 0x7f83c01f arp_xmit +EXPORT_SYMBOL vmlinux 0x7fbbdec9 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x7fdbf199 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe2343e xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7ff98805 md_flush_request +EXPORT_SYMBOL vmlinux 0x80168563 account_page_redirty +EXPORT_SYMBOL vmlinux 0x801a7d6e genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x8024c295 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x80318302 free_netdev +EXPORT_SYMBOL vmlinux 0x8036cc22 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x803952a0 user_revoke +EXPORT_SYMBOL vmlinux 0x803f6a3f arp_send +EXPORT_SYMBOL vmlinux 0x8063c5d8 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x8064a343 framebuffer_release +EXPORT_SYMBOL vmlinux 0x8079c60c blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x80a2a19e iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x80b5f8f0 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x80be3f1e sock_release +EXPORT_SYMBOL vmlinux 0x80c68562 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cabcd3 vm_event_states +EXPORT_SYMBOL vmlinux 0x80d57dff kern_unmount +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80dad602 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x80e4a644 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x80e9e33a serio_unregister_port +EXPORT_SYMBOL vmlinux 0x80ea82c7 sock_edemux +EXPORT_SYMBOL vmlinux 0x80ee45a7 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x810c52aa scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x814e8906 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x814fcef7 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x817d6e48 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x81819480 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x8183517a blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81b5846c inode_set_bytes +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81c1a936 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81dc47af mmc_remove_host +EXPORT_SYMBOL vmlinux 0x81f396ba xfrm_init_state +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820fea25 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x82104886 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x823d613b __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x824e0450 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x8260d9bb __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x8260f505 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x8261cb7e md_cluster_ops +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x827e91ad down_read_trylock +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8285979e jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b5e685 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x82c27969 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x82cba5fd vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x82d2cf80 tc_classify +EXPORT_SYMBOL vmlinux 0x82df0dc9 dquot_release +EXPORT_SYMBOL vmlinux 0x82e05170 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x83046c37 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830bf24f blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x8329fad2 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x833d12f8 _dev_info +EXPORT_SYMBOL vmlinux 0x8340ddce scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x8344a23d mpage_readpages +EXPORT_SYMBOL vmlinux 0x8344f896 console_start +EXPORT_SYMBOL vmlinux 0x8348bb3b generic_file_open +EXPORT_SYMBOL vmlinux 0x83561542 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x8362a015 simple_release_fs +EXPORT_SYMBOL vmlinux 0x836ffd66 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83a89407 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b0a0ff __devm_release_region +EXPORT_SYMBOL vmlinux 0x83b0f085 of_get_address +EXPORT_SYMBOL vmlinux 0x83b2c236 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x83b7bcaa tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x83bcc2b6 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83cc1462 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x83df4f77 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x83fbe8fb pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x84027cd7 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x841a5a5b mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x8437b49a rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x84488c84 end_page_writeback +EXPORT_SYMBOL vmlinux 0x845f20e0 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x846ace7f param_get_string +EXPORT_SYMBOL vmlinux 0x8484a13a dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x84a69fdc vme_slave_get +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84d1fd57 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850446c2 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x85127ab9 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x852e1905 tty_devnum +EXPORT_SYMBOL vmlinux 0x8541bccc intercept_table +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +EXPORT_SYMBOL vmlinux 0x854f4ae7 follow_up +EXPORT_SYMBOL vmlinux 0x854f7dde ata_dev_printk +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8569f437 neigh_lookup +EXPORT_SYMBOL vmlinux 0x857a4c75 blk_put_request +EXPORT_SYMBOL vmlinux 0x8583060b dump_skip +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85d3d556 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x85d5c651 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x85ddfc36 dev_addr_del +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x86110521 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x861a06bf phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x863ffa9d km_policy_notify +EXPORT_SYMBOL vmlinux 0x86441c87 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x864e38b3 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8657d003 __sock_create +EXPORT_SYMBOL vmlinux 0x86595402 pipe_unlock +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x867012bb free_page_put_link +EXPORT_SYMBOL vmlinux 0x86742ec1 mdiobus_register +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86a5293f dev_uc_init +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86e2d101 vfs_unlink +EXPORT_SYMBOL vmlinux 0x86ece6aa sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871d7439 sock_no_listen +EXPORT_SYMBOL vmlinux 0x872aaab9 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x873ff65a agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87958c5b tty_throttle +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87a5b8da xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x87d9146e uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x87da6bbe sock_rfree +EXPORT_SYMBOL vmlinux 0x87df6453 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x8814c2bf fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x88336f85 ppp_input_error +EXPORT_SYMBOL vmlinux 0x885716c5 netif_device_attach +EXPORT_SYMBOL vmlinux 0x886460a8 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x88707d54 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x88716938 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88d40079 mntput +EXPORT_SYMBOL vmlinux 0x8905309f swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x89266076 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x893bb5ae sk_mc_loop +EXPORT_SYMBOL vmlinux 0x893d527c inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x8946e118 generic_getxattr +EXPORT_SYMBOL vmlinux 0x894989f5 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x896391ed sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8987fd78 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x89a4b1cb fddi_type_trans +EXPORT_SYMBOL vmlinux 0x89b3107b isa_mem_base +EXPORT_SYMBOL vmlinux 0x89bc250e mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a04de6a of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a282bd9 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a61891b skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x8a7ae520 skb_trim +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a802ad5 __find_get_block +EXPORT_SYMBOL vmlinux 0x8a8b64ae inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x8a8d9fd3 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x8a998e62 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9abc22 pci_get_slot +EXPORT_SYMBOL vmlinux 0x8aa5ae1b xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8abd8925 ps2_command +EXPORT_SYMBOL vmlinux 0x8b11aa76 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x8b384633 input_event +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b4a8ea9 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x8b505065 sync_blockdev +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b629771 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x8b742982 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8c858e tso_build_data +EXPORT_SYMBOL vmlinux 0x8ba94610 kmap_to_page +EXPORT_SYMBOL vmlinux 0x8badb941 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x8bed0c19 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x8bed67e6 read_cache_pages +EXPORT_SYMBOL vmlinux 0x8c136162 __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c282066 put_cmsg +EXPORT_SYMBOL vmlinux 0x8c2df4c8 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x8c3a17d0 param_array_ops +EXPORT_SYMBOL vmlinux 0x8c4ad572 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c8498e6 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x8cadaa16 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ce75d03 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d39d63a param_set_copystring +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d68711d path_is_under +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6bd4dc pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7639a6 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x8d76f156 tty_kref_put +EXPORT_SYMBOL vmlinux 0x8d92520e blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x8d9858ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x8db3fef4 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x8db48b81 mount_ns +EXPORT_SYMBOL vmlinux 0x8dbdb0d5 generic_removexattr +EXPORT_SYMBOL vmlinux 0x8dc857d2 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x8dd0bd15 param_ops_int +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8df5da63 memstart_addr +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e186c34 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x8e58bd99 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x8e831af5 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x8e86e1c6 param_set_int +EXPORT_SYMBOL vmlinux 0x8e90f656 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x8ea28f62 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x8ea3e1f7 neigh_update +EXPORT_SYMBOL vmlinux 0x8eaa1a50 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x8eb1068b invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x8ebfffe9 ip_defrag +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ece92f5 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x8ee28044 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x8ee7a781 blk_init_queue +EXPORT_SYMBOL vmlinux 0x8ee7fc54 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x8eece5c1 set_bh_page +EXPORT_SYMBOL vmlinux 0x8eff906d tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x8f0bd4a9 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x8f0f20ec dquot_drop +EXPORT_SYMBOL vmlinux 0x8f33652b devm_release_resource +EXPORT_SYMBOL vmlinux 0x8f35c8da pci_reenable_device +EXPORT_SYMBOL vmlinux 0x8f3ccd5e pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0x8f50c328 bdput +EXPORT_SYMBOL vmlinux 0x8f6bf9cc tcf_register_action +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f9f1519 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x8fa4b94a page_follow_link_light +EXPORT_SYMBOL vmlinux 0x8fb9cd14 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fd9508e tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x8fded222 md_register_thread +EXPORT_SYMBOL vmlinux 0x8fe58420 seq_open +EXPORT_SYMBOL vmlinux 0x8ff9483c skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9039738c nf_log_unset +EXPORT_SYMBOL vmlinux 0x9070e374 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x908f4952 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x90b0d883 free_task +EXPORT_SYMBOL vmlinux 0x90b64d1e sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90d35bfb follow_down +EXPORT_SYMBOL vmlinux 0x90e05d01 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x910234bb devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x910b1d42 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x910fe876 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x9130e152 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x913756e1 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x913e0ac4 vmap +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9155fbef atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x91681b87 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x916adde6 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x918ac6fb skb_vlan_push +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x919d9c85 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x91b9c29b i2c_verify_client +EXPORT_SYMBOL vmlinux 0x91b9d72d set_binfmt +EXPORT_SYMBOL vmlinux 0x91bec530 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x91d8d43c of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92461d6b powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x9277e73c generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x9279bb34 cdev_init +EXPORT_SYMBOL vmlinux 0x927c6ac9 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x927fafa0 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x928dd22e iov_iter_advance +EXPORT_SYMBOL vmlinux 0x929cadb9 softnet_data +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92aef212 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x92c68729 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x92d04464 filemap_flush +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92e937da mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9309de94 cuda_request +EXPORT_SYMBOL vmlinux 0x930f303f get_user_pages +EXPORT_SYMBOL vmlinux 0x930fa0f4 inode_change_ok +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93483a5e contig_page_data +EXPORT_SYMBOL vmlinux 0x93602398 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x93645d02 flush_hash_entry +EXPORT_SYMBOL vmlinux 0x93736127 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x939a53fe vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93dc374b page_address +EXPORT_SYMBOL vmlinux 0x93f7ae81 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940a1998 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x94320af2 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x9441e10c agp_create_memory +EXPORT_SYMBOL vmlinux 0x9467a056 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b2590f vme_free_consistent +EXPORT_SYMBOL vmlinux 0x94b67fe1 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x94c05c17 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x94cbd061 dql_reset +EXPORT_SYMBOL vmlinux 0x94daefa0 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x94ecba7f dm_io +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94f41a0e tty_port_init +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9517222f rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x951b9d24 proto_unregister +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x952579b8 netdev_features_change +EXPORT_SYMBOL vmlinux 0x9539abb6 vme_slot_num +EXPORT_SYMBOL vmlinux 0x954126b4 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9562d766 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x9562fbfc seq_open_private +EXPORT_SYMBOL vmlinux 0x958918da ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x95924a12 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x95a9b50e dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x95ae62a1 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x95c12d1c km_new_mapping +EXPORT_SYMBOL vmlinux 0x95e2a229 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x95f150df truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x961cd570 dquot_operations +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96770e61 kset_register +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x968ac1dc __register_nls +EXPORT_SYMBOL vmlinux 0x969f6815 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x96abd1f8 dev_add_offload +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d57534 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x96dbcca2 ioremap_prot +EXPORT_SYMBOL vmlinux 0x96dce98c resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x9709dd95 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x973c3dd7 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x973eada9 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974e20e3 vme_register_driver +EXPORT_SYMBOL vmlinux 0x9753bb83 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975650a3 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x9771f80d abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x9787ce32 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a170f4 input_reset_device +EXPORT_SYMBOL vmlinux 0x97a85840 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b58e7c scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x97d6a515 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x97f105b5 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x980a6481 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x981a758a input_flush_device +EXPORT_SYMBOL vmlinux 0x981cf8c9 security_file_permission +EXPORT_SYMBOL vmlinux 0x98205fcd tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x982f52f8 pci_enable_device +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9884cab5 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x9893dd64 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x98d65eb7 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98f4f3dc of_root +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x9904b9a7 netdev_alert +EXPORT_SYMBOL vmlinux 0x99162dcf mmc_put_card +EXPORT_SYMBOL vmlinux 0x991f997f finish_no_open +EXPORT_SYMBOL vmlinux 0x9926c162 empty_aops +EXPORT_SYMBOL vmlinux 0x99351d1b blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9956fc72 find_get_entry +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x995f0154 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x997ffba1 request_firmware +EXPORT_SYMBOL vmlinux 0x998585fb dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x998ac78b bio_split +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x999f2046 param_get_ulong +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99b3eeae input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x99b58921 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99f3e86f __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x99f5cfde inet_frag_find +EXPORT_SYMBOL vmlinux 0x9a0d6e9d seq_vprintf +EXPORT_SYMBOL vmlinux 0x9a144c8c generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x9a1cf4c4 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a222886 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x9a22aab7 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x9a38e027 macio_dev_get +EXPORT_SYMBOL vmlinux 0x9a9b215b scsi_remove_host +EXPORT_SYMBOL vmlinux 0x9ac4a693 led_set_brightness +EXPORT_SYMBOL vmlinux 0x9ad81adb page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x9ae45ae0 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b0ed448 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x9b18e99c iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b771900 passthru_features_check +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bab399d kdb_current_task +EXPORT_SYMBOL vmlinux 0x9bac9557 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x9bacc820 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x9bb5b2ce unregister_console +EXPORT_SYMBOL vmlinux 0x9bbf8fb1 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x9bc0d6db tty_port_destroy +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9be439f8 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9beb900c add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x9c03f8f8 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x9c068ca6 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x9c5dbd83 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x9c72f151 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x9c79caaa elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x9c97b692 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cbd72de mark_page_accessed +EXPORT_SYMBOL vmlinux 0x9cc5e852 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x9cc668f7 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x9ccbff86 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x9cd997d5 default_llseek +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9cfda683 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x9cffc56b audit_log_task_info +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d0f7f4a mfd_add_devices +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3cef6c tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d7ba88d jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d7fa408 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x9d890044 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x9d9ff498 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x9dd6366d generic_update_time +EXPORT_SYMBOL vmlinux 0x9de80a48 security_path_symlink +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1cfc90 ioremap_wc +EXPORT_SYMBOL vmlinux 0x9e230300 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x9e4d7b6e pci_bus_put +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7ad10e input_free_device +EXPORT_SYMBOL vmlinux 0x9e7c9cdc skb_seq_read +EXPORT_SYMBOL vmlinux 0x9e82e95e xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x9e894b1a pci_fixup_device +EXPORT_SYMBOL vmlinux 0x9e95980a sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9ea230cc pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9ea73d5a bio_endio +EXPORT_SYMBOL vmlinux 0x9eb51276 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x9eb66922 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x9ef1e81c tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x9ef47293 pci_iomap +EXPORT_SYMBOL vmlinux 0x9f1e51ee tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x9f2489a4 phy_attach +EXPORT_SYMBOL vmlinux 0x9f2a706d d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x9f41da03 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4900f0 up_write +EXPORT_SYMBOL vmlinux 0x9f58a770 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x9f5d3654 simple_empty +EXPORT_SYMBOL vmlinux 0x9f60b825 generic_setxattr +EXPORT_SYMBOL vmlinux 0x9f697bf0 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x9f8b59c9 done_path_create +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb122ce bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x9fb8f6d1 eth_header_parse +EXPORT_SYMBOL vmlinux 0x9fb9348c bd_set_size +EXPORT_SYMBOL vmlinux 0x9fc4a574 touch_buffer +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa01e47aa tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xa027ba14 sock_register +EXPORT_SYMBOL vmlinux 0xa0357c8d pci_iounmap +EXPORT_SYMBOL vmlinux 0xa03b05d8 genphy_update_link +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 0xa07f30a0 kfree_skb +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa086a9a8 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b26b66 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xa0cc498a netpoll_setup +EXPORT_SYMBOL vmlinux 0xa0cd7b42 set_security_override +EXPORT_SYMBOL vmlinux 0xa0d02bb2 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xa0d24e98 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e6c359 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xa0eb0e8e security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fa060e iov_iter_init +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa119f4a0 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1218a27 macio_request_resource +EXPORT_SYMBOL vmlinux 0xa12ad5ca dev_mc_add +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1556670 get_gendisk +EXPORT_SYMBOL vmlinux 0xa15682c1 install_exec_creds +EXPORT_SYMBOL vmlinux 0xa15d4c4d param_ops_bint +EXPORT_SYMBOL vmlinux 0xa17c99c5 param_get_invbool +EXPORT_SYMBOL vmlinux 0xa1aaf6a7 sync_filesystem +EXPORT_SYMBOL vmlinux 0xa1b2fb11 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1cb9050 param_set_byte +EXPORT_SYMBOL vmlinux 0xa1d86f57 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xa1e35a17 skb_tx_error +EXPORT_SYMBOL vmlinux 0xa1f72e37 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xa1f75b27 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20b45cc xfrm_state_add +EXPORT_SYMBOL vmlinux 0xa2163443 read_cache_page +EXPORT_SYMBOL vmlinux 0xa220f6bd blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xa22c59c2 udp_proc_register +EXPORT_SYMBOL vmlinux 0xa22f72ec pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xa236d8ec keyring_search +EXPORT_SYMBOL vmlinux 0xa2466d5c ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xa26e1b53 dev_activate +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2926afa pci_find_capability +EXPORT_SYMBOL vmlinux 0xa2967e65 replace_mount_options +EXPORT_SYMBOL vmlinux 0xa29f9ddc block_truncate_page +EXPORT_SYMBOL vmlinux 0xa2a281ab md_unregister_thread +EXPORT_SYMBOL vmlinux 0xa2aa077a init_task +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2cb2b5d block_read_full_page +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa3015dd2 security_inode_permission +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa3210a42 md_done_sync +EXPORT_SYMBOL vmlinux 0xa32c58b5 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xa33fe234 ata_print_version +EXPORT_SYMBOL vmlinux 0xa358ce36 lock_fb_info +EXPORT_SYMBOL vmlinux 0xa373a58a seq_dentry +EXPORT_SYMBOL vmlinux 0xa38035a2 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3ae3373 key_put +EXPORT_SYMBOL vmlinux 0xa3c66804 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xa3e51b51 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3f63071 key_task_permission +EXPORT_SYMBOL vmlinux 0xa40402ba netlink_ack +EXPORT_SYMBOL vmlinux 0xa4073942 __register_chrdev +EXPORT_SYMBOL vmlinux 0xa429e66f clone_cred +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa45644aa uart_match_port +EXPORT_SYMBOL vmlinux 0xa463753b xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xa46e4437 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47ed927 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xa483f983 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xa497078e ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4abf065 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c569a1 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xa4c64a5f pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d6aaf5 elevator_change +EXPORT_SYMBOL vmlinux 0xa4f26d15 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xa502e740 mac_find_mode +EXPORT_SYMBOL vmlinux 0xa5227aba d_alloc_name +EXPORT_SYMBOL vmlinux 0xa52a8f1e t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xa5503f4a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55cbc91 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xa56302ad __check_sticky +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa58feda8 param_get_long +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5c740a0 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5f8a1bd scsi_host_get +EXPORT_SYMBOL vmlinux 0xa5fb6503 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xa61a2899 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xa61a6b62 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xa6397ac2 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xa6432d04 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xa644b55a bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa6456ba1 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xa6480d00 udp_set_csum +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa65d5d4f macio_register_driver +EXPORT_SYMBOL vmlinux 0xa669f277 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xa66bde77 backlight_force_update +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68a03e8 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xa6900590 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6b8169c iterate_mounts +EXPORT_SYMBOL vmlinux 0xa6d75417 set_device_ro +EXPORT_SYMBOL vmlinux 0xa6db5827 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xa6ee1213 d_add_ci +EXPORT_SYMBOL vmlinux 0xa6f9c7c5 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xa6fe04e3 revalidate_disk +EXPORT_SYMBOL vmlinux 0xa6ff3aad unregister_nls +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70122b9 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xa70b3c79 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa745efe4 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa75c7393 genphy_read_status +EXPORT_SYMBOL vmlinux 0xa76e9f8a mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xa77c4960 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xa782632d blk_rq_init +EXPORT_SYMBOL vmlinux 0xa78334c7 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa79ce798 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xa7a3386b cdrom_release +EXPORT_SYMBOL vmlinux 0xa7a4745e inetdev_by_index +EXPORT_SYMBOL vmlinux 0xa7eb4074 ihold +EXPORT_SYMBOL vmlinux 0xa7f433dc __secpath_destroy +EXPORT_SYMBOL vmlinux 0xa7fa710a inc_nlink +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82f854d tty_name +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84e36af ppp_dev_name +EXPORT_SYMBOL vmlinux 0xa8571525 mpage_writepage +EXPORT_SYMBOL vmlinux 0xa85c297f elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xa861ab6e __ioremap +EXPORT_SYMBOL vmlinux 0xa868fd3c inet6_release +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa89a89a1 simple_follow_link +EXPORT_SYMBOL vmlinux 0xa8cfaa15 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xa8d908f6 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa91c4081 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xa9230aa4 mdiobus_read +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa931d744 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xa93412b6 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xa93d3684 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa96bfd8c of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa990c28e pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xa9913d9e flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xa994408a input_register_device +EXPORT_SYMBOL vmlinux 0xa9973a7a dquot_commit +EXPORT_SYMBOL vmlinux 0xa99e8a8f md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xa9a602c9 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xa9ac4d00 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xaa042fae keyring_clear +EXPORT_SYMBOL vmlinux 0xaa06ba83 inet_bind +EXPORT_SYMBOL vmlinux 0xaa0d70f6 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xaa122cbd do_SAK +EXPORT_SYMBOL vmlinux 0xaa179986 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xaa2cb6bd devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4df512 pmu_batteries +EXPORT_SYMBOL vmlinux 0xaa66a5c0 udp_push_pending_frames +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 0xaa8ef08b mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xaaa7022f vme_bus_num +EXPORT_SYMBOL vmlinux 0xaaacecbf macio_dev_put +EXPORT_SYMBOL vmlinux 0xaaaff6ed nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xaab3dc71 follow_pfn +EXPORT_SYMBOL vmlinux 0xaabec81f cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xaac02780 pm_vt_switch_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 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab011595 xfrm_input +EXPORT_SYMBOL vmlinux 0xab19c817 pci_choose_state +EXPORT_SYMBOL vmlinux 0xab1cdfb2 path_get +EXPORT_SYMBOL vmlinux 0xab23d0d7 simple_getattr +EXPORT_SYMBOL vmlinux 0xab289d0e freeze_super +EXPORT_SYMBOL vmlinux 0xab3c8696 input_set_keycode +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7a2cda phy_start +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabad48dd single_release +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabc81e53 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabce1611 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xabf8b707 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0c42d2 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac422633 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xac4cc1bc lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xac69dfc2 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xac801ed5 mapping_tagged +EXPORT_SYMBOL vmlinux 0xac85cc71 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb729f0 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xacc0329c kernel_write +EXPORT_SYMBOL vmlinux 0xacc1f851 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xace1edfd pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xaced6cf1 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf6b1d7 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad195374 scmd_printk +EXPORT_SYMBOL vmlinux 0xad292eae inet_del_offload +EXPORT_SYMBOL vmlinux 0xad2a461e pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xad34fe05 netlink_capable +EXPORT_SYMBOL vmlinux 0xad4caf7b agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad564979 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xad59bc76 i2c_master_send +EXPORT_SYMBOL vmlinux 0xad635d05 page_readlink +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xadbf1f44 netlink_set_err +EXPORT_SYMBOL vmlinux 0xadbf2c03 bioset_free +EXPORT_SYMBOL vmlinux 0xadcb5e7d sk_reset_timer +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadf9ab8e netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae07ffda tcp_seq_open +EXPORT_SYMBOL vmlinux 0xae124e2e blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xae1aed1e mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xae2b5666 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +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 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xaea307e9 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xaeaeec1b get_cached_acl +EXPORT_SYMBOL vmlinux 0xaeb568c4 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaede081e get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0b81c2 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xaf29c3b5 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf2f7e19 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf49fa1f freezing_slow_path +EXPORT_SYMBOL vmlinux 0xaf4d6068 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xaf5b8fff dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xaf683257 tty_register_driver +EXPORT_SYMBOL vmlinux 0xaf75cc50 fb_blank +EXPORT_SYMBOL vmlinux 0xaf856fef dquot_alloc +EXPORT_SYMBOL vmlinux 0xaf878632 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf96b0b4 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xaf9b4b74 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xaf9d9a94 km_policy_expired +EXPORT_SYMBOL vmlinux 0xafc84143 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0056a37 noop_llseek +EXPORT_SYMBOL vmlinux 0xb006bc73 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xb0133dea xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xb0248f14 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xb02a4124 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb043f77d skb_queue_purge +EXPORT_SYMBOL vmlinux 0xb048f179 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06a0158 neigh_table_init +EXPORT_SYMBOL vmlinux 0xb092aeff jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xb09e57e7 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0c71a32 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f7267d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xb1093861 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xb11b8e96 touch_atime +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 0xb1661f77 inet_select_addr +EXPORT_SYMBOL vmlinux 0xb18966ef agp_backend_release +EXPORT_SYMBOL vmlinux 0xb1a1a510 make_kprojid +EXPORT_SYMBOL vmlinux 0xb1a57a56 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xb1b620af tty_hangup +EXPORT_SYMBOL vmlinux 0xb1c1f6ac igrab +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c55681 phy_detach +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d42245 sock_create +EXPORT_SYMBOL vmlinux 0xb1dd8761 devm_free_irq +EXPORT_SYMBOL vmlinux 0xb2049392 dev_addr_init +EXPORT_SYMBOL vmlinux 0xb2253ecd dev_get_flags +EXPORT_SYMBOL vmlinux 0xb231a3e0 pipe_lock +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb236661d genphy_suspend +EXPORT_SYMBOL vmlinux 0xb23b93a9 __destroy_inode +EXPORT_SYMBOL vmlinux 0xb23cf78f skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb2522abf kernel_param_lock +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2883012 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xb288ebb1 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xb28e01c9 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xb29076e0 set_create_files_as +EXPORT_SYMBOL vmlinux 0xb2b0275f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xb2b60736 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2bef5d4 __put_cred +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2ecdc1f scsi_add_device +EXPORT_SYMBOL vmlinux 0xb2ef863a udp_ioctl +EXPORT_SYMBOL vmlinux 0xb2fdd250 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xb32c1e64 param_ops_byte +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb3348b01 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb349ce85 of_get_parent +EXPORT_SYMBOL vmlinux 0xb350e53f serio_reconnect +EXPORT_SYMBOL vmlinux 0xb36eaa10 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xb37190e8 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xb3782b70 i2c_release_client +EXPORT_SYMBOL vmlinux 0xb378e66c netif_rx_ni +EXPORT_SYMBOL vmlinux 0xb379f3dc mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xb38750f6 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xb3a43973 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xb3a58850 tcp_req_err +EXPORT_SYMBOL vmlinux 0xb3bb249a dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xb3d20c0f dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e71fd5 inode_init_owner +EXPORT_SYMBOL vmlinux 0xb3f49a0f __dquot_free_space +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42d5a2e param_set_bint +EXPORT_SYMBOL vmlinux 0xb44d5cc8 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb4634a33 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb49b1677 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xb4a04ec3 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xb4aff321 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xb4e139a1 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xb4fc79b9 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xb51123df ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xb52b01bf request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xb5336502 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xb53a4336 kmap_pte +EXPORT_SYMBOL vmlinux 0xb558edb2 md_integrity_register +EXPORT_SYMBOL vmlinux 0xb568ed97 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ab6dce pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xb5b2812f bdev_read_only +EXPORT_SYMBOL vmlinux 0xb5cdb349 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5e11f89 inet_add_offload +EXPORT_SYMBOL vmlinux 0xb5e808ab devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xb5ed0e90 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xb6006816 __frontswap_load +EXPORT_SYMBOL vmlinux 0xb6031987 thaw_bdev +EXPORT_SYMBOL vmlinux 0xb605099a inet_add_protocol +EXPORT_SYMBOL vmlinux 0xb60dee08 release_firmware +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6836246 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6940d65 agp_bridge +EXPORT_SYMBOL vmlinux 0xb69f3ec1 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b7cf9d tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xb6bbc3ba sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xb6bce8af fb_find_mode +EXPORT_SYMBOL vmlinux 0xb6f2b949 pci_release_regions +EXPORT_SYMBOL vmlinux 0xb7147d85 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xb71d9050 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xb72c9342 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74a42b3 module_put +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb76b60a7 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7794bff inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xb793b7ae lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xb795d034 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb79b0d76 param_get_short +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7c0608b jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7c6e9ec pci_domain_nr +EXPORT_SYMBOL vmlinux 0xb7e415de __skb_checksum +EXPORT_SYMBOL vmlinux 0xb8051b38 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xb807d95f of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81c32c2 dup_iter +EXPORT_SYMBOL vmlinux 0xb81e35d7 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xb835d250 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87cb7e0 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xb893cc90 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xb8a78571 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xb8ba4a4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0xb8daa11e sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb909958c get_unmapped_area +EXPORT_SYMBOL vmlinux 0xb914f635 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xb91ffcc5 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xb920aa9d devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xb96106d7 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xb963ddca skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xb96697fc d_alloc +EXPORT_SYMBOL vmlinux 0xb97ffe8a user_path_at_empty +EXPORT_SYMBOL vmlinux 0xb99860e2 sock_create_lite +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f30469 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xba121a9e init_net +EXPORT_SYMBOL vmlinux 0xba1a92bc blkdev_get +EXPORT_SYMBOL vmlinux 0xba1d2c1e __serio_register_driver +EXPORT_SYMBOL vmlinux 0xba3ff486 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba51d2cc xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xba71c57e user_path_create +EXPORT_SYMBOL vmlinux 0xba7369c1 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xba79f9ac blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xba9ac912 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xba9fdd31 __neigh_create +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbae3c23d d_find_alias +EXPORT_SYMBOL vmlinux 0xbaf8b39d unlock_rename +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb1ae756 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xbb2e02bb neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xbb325acc netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb37d0f8 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6c1800 input_register_handle +EXPORT_SYMBOL vmlinux 0xbb7bb6a7 import_iovec +EXPORT_SYMBOL vmlinux 0xbb90d4ad bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xbb920c85 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xbb9677e0 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbaf0234 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xbbc23027 dcb_setapp +EXPORT_SYMBOL vmlinux 0xbbe14517 inet_sendpage +EXPORT_SYMBOL vmlinux 0xbbf79835 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc546129 ip6_xmit +EXPORT_SYMBOL vmlinux 0xbc63f2bd elevator_exit +EXPORT_SYMBOL vmlinux 0xbc93f1e7 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccab4b7 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xbcde2df2 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xbce007b6 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xbcecfdf4 vme_irq_free +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbcf409e5 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xbcf51018 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xbd0ec80f pci_disable_msi +EXPORT_SYMBOL vmlinux 0xbd427128 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xbd445401 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xbd5033d9 dentry_open +EXPORT_SYMBOL vmlinux 0xbd57462c netdev_warn +EXPORT_SYMBOL vmlinux 0xbd594602 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xbd5d5e0f inet_shutdown +EXPORT_SYMBOL vmlinux 0xbd76387b neigh_seq_start +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8d541d flush_hash_pages +EXPORT_SYMBOL vmlinux 0xbd8e5f6b audit_log +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd9e03ec should_remove_suid +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdaaac70 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xbdcc1095 __seq_open_private +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe132f13 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xbe16b6be sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe2357d3 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xbe2981d2 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xbe2ddd09 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xbe4f32a4 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe9a1794 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xbea36d2c __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xbec37e87 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xbec7ec14 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xbecc718d locks_init_lock +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef67496 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xbf059828 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xbf17bdb4 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xbf58152b find_vma +EXPORT_SYMBOL vmlinux 0xbf609640 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xbf690c49 scsi_register +EXPORT_SYMBOL vmlinux 0xbf6d6d97 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf8fe8b2 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa67d27 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc91237 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffa24fa dma_async_device_register +EXPORT_SYMBOL vmlinux 0xbffa5a2f swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xbffc7da0 neigh_xmit +EXPORT_SYMBOL vmlinux 0xc000e15c uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xc03978cf gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xc05119fe sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0828546 from_kgid +EXPORT_SYMBOL vmlinux 0xc0941cc3 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0ba6927 sock_i_ino +EXPORT_SYMBOL vmlinux 0xc0bd8947 inode_permission +EXPORT_SYMBOL vmlinux 0xc0d84ced cuda_poll +EXPORT_SYMBOL vmlinux 0xc0edcf48 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xc0f84c14 truncate_setsize +EXPORT_SYMBOL vmlinux 0xc109c8d1 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xc11a26a5 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc11e773c generic_delete_inode +EXPORT_SYMBOL vmlinux 0xc12e3487 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc136dadd __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xc13885e2 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc15256c8 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xc155f433 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xc16c113c inode_add_bytes +EXPORT_SYMBOL vmlinux 0xc176389f fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xc17b1f6d handle_edge_irq +EXPORT_SYMBOL vmlinux 0xc180f601 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xc18383e1 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xc1977ad9 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xc199b639 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xc19c3174 load_nls +EXPORT_SYMBOL vmlinux 0xc1b23c8b file_open_root +EXPORT_SYMBOL vmlinux 0xc1b53dab devfreq_add_device +EXPORT_SYMBOL vmlinux 0xc1b9d9b3 __lock_buffer +EXPORT_SYMBOL vmlinux 0xc1c53159 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1dd4a7f adb_request +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc2058b3e pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xc20fdfd2 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xc220b3c9 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24bc6fd __page_symlink +EXPORT_SYMBOL vmlinux 0xc24de30d pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xc26a468f xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc281eae3 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xc28b50da is_bad_inode +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2c4c988 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xc2c5d124 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e3d31b register_console +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2faf27b xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xc35986e3 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc383613b locks_free_lock +EXPORT_SYMBOL vmlinux 0xc3b00199 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3f3d713 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc3f90938 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc457da63 input_inject_event +EXPORT_SYMBOL vmlinux 0xc4598d3e devm_request_resource +EXPORT_SYMBOL vmlinux 0xc462da29 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xc46afa91 __dst_free +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc47e7837 vfs_link +EXPORT_SYMBOL vmlinux 0xc48daec0 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xc4980829 blk_make_request +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a6da65 set_user_nice +EXPORT_SYMBOL vmlinux 0xc4c60c4d i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xc4e5fd6e path_nosuid +EXPORT_SYMBOL vmlinux 0xc4f05dac scsi_remove_target +EXPORT_SYMBOL vmlinux 0xc4f3bed2 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xc5064544 simple_setattr +EXPORT_SYMBOL vmlinux 0xc512baf3 input_get_keycode +EXPORT_SYMBOL vmlinux 0xc514c261 ll_rw_block +EXPORT_SYMBOL vmlinux 0xc51a9bb1 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xc521d357 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xc539feaa __pagevec_release +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 0xc5785cd3 netdev_notice +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5bb4c74 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xc5be8f77 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xc5c00349 tty_mutex +EXPORT_SYMBOL vmlinux 0xc5c6a2b2 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5f1def3 irq_to_desc +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc602c771 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xc616dcc9 param_set_invbool +EXPORT_SYMBOL vmlinux 0xc622d3f5 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xc6281725 commit_creds +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64e3e35 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xc65211af get_empty_filp +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6922159 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xc6971b97 kill_anon_super +EXPORT_SYMBOL vmlinux 0xc69d5f31 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b55eda scsi_block_requests +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e3542e mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xc6e433f3 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xc7052b50 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xc7180883 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc721a5c9 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xc734a4e2 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xc7496b6c tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xc74d1ade d_obtain_root +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7774612 __blk_end_request_all +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 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 0xc7c3aea7 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc7ca90f2 inet_listen +EXPORT_SYMBOL vmlinux 0xc7d5a8f0 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xc7e5cc62 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xc7ec00fb mpage_readpage +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc807e65a console_stop +EXPORT_SYMBOL vmlinux 0xc824fc31 pci_bus_add_devices +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 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc85a075f xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xc85dce64 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xc86eea57 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8771a35 con_is_bound +EXPORT_SYMBOL vmlinux 0xc8792f90 fput +EXPORT_SYMBOL vmlinux 0xc8890955 sget +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8ad3d65 scsi_device_get +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b6d51b __netif_schedule +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8e17542 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xc8e64081 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xc8f1c09a netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91c18b6 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xc92537c2 nf_afinfo +EXPORT_SYMBOL vmlinux 0xc925fae0 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xc9328657 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc95b1475 dquot_resume +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc974fc0d neigh_seq_next +EXPORT_SYMBOL vmlinux 0xc9928261 phy_device_register +EXPORT_SYMBOL vmlinux 0xc9971c47 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b10a5b lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9b990d3 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xc9bd3d02 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xc9ce2be0 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xc9ea3c4c nlmsg_notify +EXPORT_SYMBOL vmlinux 0xc9ebe912 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xc9f91548 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xc9fd390e tty_port_close_end +EXPORT_SYMBOL vmlinux 0xca07911c d_rehash +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca387939 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca537c5b sockfd_lookup +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca99204a dev_disable_lro +EXPORT_SYMBOL vmlinux 0xca993bc5 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xca9de6e6 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xcabd21b1 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad08e48 mmu_hash_lock +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0055d6 bdi_destroy +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb3a56d8 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xcb3ca515 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xcb3ccb5a alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xcb508b55 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xcb6c81c9 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xcba032b1 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xcbb4d7ab key_reject_and_link +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc0a504 nf_reinject +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd2d280 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcc041073 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xcc04f203 write_cache_pages +EXPORT_SYMBOL vmlinux 0xcc1035d6 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc1b1866 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xcc248879 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc39f935 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc567b97 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xcc620c99 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xcc811cd3 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xcc9b5d80 try_module_get +EXPORT_SYMBOL vmlinux 0xcca2a971 build_skb +EXPORT_SYMBOL vmlinux 0xccb23715 unlock_page +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcce0395d vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xcce87b34 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xcceb091b inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xccfba566 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd08cd85 open_exec +EXPORT_SYMBOL vmlinux 0xcd0b8c12 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd336c7f dm_kobject_release +EXPORT_SYMBOL vmlinux 0xcd33f518 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xcd355381 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xcd3a0845 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xcd3a52dd km_query +EXPORT_SYMBOL vmlinux 0xcd3b8ed1 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xcd44dc00 switch_mmu_context +EXPORT_SYMBOL vmlinux 0xcd5386a9 ppc_md +EXPORT_SYMBOL vmlinux 0xcd5e761b proc_mkdir +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd81bc72 nonseekable_open +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd9d5515 check_disk_change +EXPORT_SYMBOL vmlinux 0xcd9f52b3 consume_skb +EXPORT_SYMBOL vmlinux 0xcda1d82f tcp_check_req +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc80743 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xcdde6705 notify_change +EXPORT_SYMBOL vmlinux 0xcde4d411 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xce0ecb54 devm_iounmap +EXPORT_SYMBOL vmlinux 0xce0f78f6 inet_ioctl +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce4af4b3 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce615f15 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xce6dd179 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xce747541 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xce76c48a check_disk_size_change +EXPORT_SYMBOL vmlinux 0xce9b3050 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf06ae7a bdgrab +EXPORT_SYMBOL vmlinux 0xcf215303 pci_get_device +EXPORT_SYMBOL vmlinux 0xcf8dce04 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xcfd00cf5 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xd00ed617 security_path_mknod +EXPORT_SYMBOL vmlinux 0xd0294465 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xd034c17e __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xd039c072 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xd0420c65 netif_napi_add +EXPORT_SYMBOL vmlinux 0xd04945b7 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd075e2d8 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xd08a8017 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xd09512d0 load_nls_default +EXPORT_SYMBOL vmlinux 0xd095aaa6 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd09bf8a4 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a45fa5 pmu_enable_irled +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b1c713 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xd0b1ff02 input_allocate_device +EXPORT_SYMBOL vmlinux 0xd0cd6b4b param_set_charp +EXPORT_SYMBOL vmlinux 0xd0d43d83 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f80407 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd10b1833 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd1640927 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xd1714047 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xd174659c scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xd17b3f97 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd19f58bf skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xd1aa4b28 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xd1be2614 dma_find_channel +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1f5f7e4 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xd1f9bfdc __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xd1fcd0d4 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xd1fe7b08 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xd1fea225 block_commit_write +EXPORT_SYMBOL vmlinux 0xd206992d __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22547e7 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +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 0xd25dd150 kernel_bind +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2862b2b of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xd29263b8 simple_open +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b88d3d xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xd2d608f6 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2dbe652 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xd2df7bc9 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xd2f50e93 phy_device_free +EXPORT_SYMBOL vmlinux 0xd2f85892 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd300bb22 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xd30988d0 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xd3187da4 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xd319664c reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd33287f4 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xd346dc2a tc_classify_compat +EXPORT_SYMBOL vmlinux 0xd39fe6cd seq_puts +EXPORT_SYMBOL vmlinux 0xd3a50dd7 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3cc6711 invalidate_partition +EXPORT_SYMBOL vmlinux 0xd3cca480 kfree_put_link +EXPORT_SYMBOL vmlinux 0xd3e26d58 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3eb4155 dma_pool_create +EXPORT_SYMBOL vmlinux 0xd3f17965 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xd3ff6cf2 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd40c6ea9 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd43cd119 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd4513419 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xd46061ac param_set_ulong +EXPORT_SYMBOL vmlinux 0xd46305cb jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xd4674bde rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xd46d96cf memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xd473e99a inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xd478ccc8 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xd49e4c6c simple_dir_operations +EXPORT_SYMBOL vmlinux 0xd4a16ffd padata_start +EXPORT_SYMBOL vmlinux 0xd4bf7be1 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xd4c19496 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd4fcedef register_key_type +EXPORT_SYMBOL vmlinux 0xd500801a xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xd52ae9ed phy_init_hw +EXPORT_SYMBOL vmlinux 0xd536b381 pci_request_regions +EXPORT_SYMBOL vmlinux 0xd54c275d scm_detach_fds +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd556aaa3 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xd5716735 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xd591e329 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xd5a49ebb inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xd5af4e04 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xd5dd80f2 prepare_creds +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5fdfab9 sk_alloc +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd609355d __lock_page +EXPORT_SYMBOL vmlinux 0xd615f664 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd669a80f of_get_next_child +EXPORT_SYMBOL vmlinux 0xd671a6f8 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xd67d8ee1 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6a72440 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xd6b3db43 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xd6c1af7d generic_ro_fops +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd714409d bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xd724f7e8 seq_write +EXPORT_SYMBOL vmlinux 0xd73ff085 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xd74b34c4 nf_log_set +EXPORT_SYMBOL vmlinux 0xd74ca8cd dquot_enable +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 0xd79b58b4 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xd7b6b5a2 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xd7b7930d __elv_add_request +EXPORT_SYMBOL vmlinux 0xd7d6d906 free_user_ns +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f1d625 seq_release_private +EXPORT_SYMBOL vmlinux 0xd81d6b8b icmpv6_send +EXPORT_SYMBOL vmlinux 0xd84c43a6 lockref_put_return +EXPORT_SYMBOL vmlinux 0xd84d759b pci_dev_get +EXPORT_SYMBOL vmlinux 0xd8942908 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ae3156 note_scsi_host +EXPORT_SYMBOL vmlinux 0xd8b26e17 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e68ef4 mount_single +EXPORT_SYMBOL vmlinux 0xd91dbd76 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xd92514ca agp_special_page +EXPORT_SYMBOL vmlinux 0xd9314d29 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xd943fd1a sock_update_memcg +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9acb485 dquot_acquire +EXPORT_SYMBOL vmlinux 0xd9ada974 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d3dfa8 dev_get_stats +EXPORT_SYMBOL vmlinux 0xd9d5be02 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9dec227 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xda0117cf default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xda300293 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xda3105bb call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xda37a7dc bio_unmap_user +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda7486f7 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9a3f6c security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad003e7 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xdad21730 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xdadf3b60 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xdaef14af blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xdaf6b31f security_path_mkdir +EXPORT_SYMBOL vmlinux 0xdaf93286 macio_release_resources +EXPORT_SYMBOL vmlinux 0xdb04362f key_revoke +EXPORT_SYMBOL vmlinux 0xdb24c63b fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xdb35c4c0 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xdb505121 mmc_get_card +EXPORT_SYMBOL vmlinux 0xdb5999bb unregister_binfmt +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb9c73fa tso_start +EXPORT_SYMBOL vmlinux 0xdba19021 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xdba3f82e backlight_device_register +EXPORT_SYMBOL vmlinux 0xdbc9cda8 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xdbcea04b tcp_ioctl +EXPORT_SYMBOL vmlinux 0xdbfd4123 pci_release_region +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc05618e i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xdc13d83e udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc20e3dd vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xdc24eef6 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xdc3dbe0a tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc45663b unregister_key_type +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc767cdc cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdca0ab70 dm_register_target +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdccf30f6 register_md_personality +EXPORT_SYMBOL vmlinux 0xdcd16b55 __serio_register_port +EXPORT_SYMBOL vmlinux 0xdcef49be scsi_print_result +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdcf2286c writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xdd06a3d3 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd19c941 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xdd27ba98 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd343894 md_write_start +EXPORT_SYMBOL vmlinux 0xdd3f1c50 d_lookup +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xddd11b3d fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xdddc65f8 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xde0afc9a d_walk +EXPORT_SYMBOL vmlinux 0xde130d02 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xde41138e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde533534 sg_miter_skip +EXPORT_SYMBOL vmlinux 0xde5bb60a skb_pad +EXPORT_SYMBOL vmlinux 0xde5efa4c jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xde734807 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xde7461cc inode_init_always +EXPORT_SYMBOL vmlinux 0xde76bb2b vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xde8fce79 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xde90a195 bio_advance +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdf167a45 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xdf204ffc __register_binfmt +EXPORT_SYMBOL vmlinux 0xdf243f2c sock_alloc_file +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf860aa8 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xdf87a5b9 fs_bio_set +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfa2f332 dev_close +EXPORT_SYMBOL vmlinux 0xdfacb9f0 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xdfcb683d nf_log_trace +EXPORT_SYMBOL vmlinux 0xdfd65d5b generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xdfe3133d reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xdfe588b6 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xdfeadc7e t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff56e64 adb_poll +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe00618d6 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xe00cfab7 soft_cursor +EXPORT_SYMBOL vmlinux 0xe02f9da8 drop_super +EXPORT_SYMBOL vmlinux 0xe0436998 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05607a4 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe05e0c9d skb_checksum +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 0xe09e818f ip_do_fragment +EXPORT_SYMBOL vmlinux 0xe0a240a5 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0ebe9f0 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xe0f2d848 elv_rb_find +EXPORT_SYMBOL vmlinux 0xe10222eb netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xe103a914 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe14f4459 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xe152bede copy_page_to_iter +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 0xe19dd2d5 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xe1a9a5ce vfs_llseek +EXPORT_SYMBOL vmlinux 0xe1b22f32 simple_unlink +EXPORT_SYMBOL vmlinux 0xe1e132ce mark_info_dirty +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe21ea3d3 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24e3d0a bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xe27e743c of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0xe289fdb8 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xe28a69cc __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xe28fdc1d inet_stream_connect +EXPORT_SYMBOL vmlinux 0xe29db3fe serio_rescan +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 0xe2e141a4 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3812638 register_cdrom +EXPORT_SYMBOL vmlinux 0xe384cdc9 rwsem_wake +EXPORT_SYMBOL vmlinux 0xe3ae90da remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xe3cd33d2 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3f3bc9a tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xe3f620da dev_load +EXPORT_SYMBOL vmlinux 0xe4218012 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xe4270625 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xe43b7955 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xe43dfb41 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xe45ca9a0 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xe4628904 send_sig_info +EXPORT_SYMBOL vmlinux 0xe46f7a71 pci_clear_master +EXPORT_SYMBOL vmlinux 0xe47b35c9 vfs_getattr +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4ce970b sk_wait_data +EXPORT_SYMBOL vmlinux 0xe4d1cd5a nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xe4d28214 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xe4dd27ea vfs_mknod +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5078249 input_grab_device +EXPORT_SYMBOL vmlinux 0xe5235063 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52cf4ba file_ns_capable +EXPORT_SYMBOL vmlinux 0xe52f9aa7 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xe545ba5a tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xe577149f generic_file_llseek +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5b18f11 abort_creds +EXPORT_SYMBOL vmlinux 0xe5b70386 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d7f3a5 inet_addr_type +EXPORT_SYMBOL vmlinux 0xe5eb5dc5 dst_destroy +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5ffd8b7 __invalidate_device +EXPORT_SYMBOL vmlinux 0xe641f280 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xe64be35d generic_perform_write +EXPORT_SYMBOL vmlinux 0xe655816c blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xe672fffa netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xe673e762 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe696cd7b abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xe6976350 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6bd5132 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xe6c9e8b5 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xe6d62c6d tty_register_device +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fe3281 cad_pid +EXPORT_SYMBOL vmlinux 0xe7036448 cont_write_begin +EXPORT_SYMBOL vmlinux 0xe70a9e0d poll_initwait +EXPORT_SYMBOL vmlinux 0xe72fa1a7 kset_unregister +EXPORT_SYMBOL vmlinux 0xe74bc0c0 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xe7507276 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xe7582568 add_disk +EXPORT_SYMBOL vmlinux 0xe75c97eb ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xe78452d5 d_tmpfile +EXPORT_SYMBOL vmlinux 0xe7931f89 tty_free_termios +EXPORT_SYMBOL vmlinux 0xe7a5facb register_netdevice +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b0f8eb devm_ioremap +EXPORT_SYMBOL vmlinux 0xe7b542e5 tcp_connect +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7b68ba8 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xe7be0542 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xe7bf317d fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0xe7c22cf7 __free_pages +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7ffef3e find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8237dde mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe8355e23 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xe8446e3b set_blocksize +EXPORT_SYMBOL vmlinux 0xe8649626 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xe8804639 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xe8856b37 of_phy_connect +EXPORT_SYMBOL vmlinux 0xe88584a8 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c2f846 of_get_next_parent +EXPORT_SYMBOL vmlinux 0xe8da58bc tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe92c5f7b __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe948c037 filp_close +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe963516e t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xe96bbef3 cdrom_open +EXPORT_SYMBOL vmlinux 0xe96dfd3f input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xe9a906c7 thaw_super +EXPORT_SYMBOL vmlinux 0xe9da2054 km_state_notify +EXPORT_SYMBOL vmlinux 0xe9e449db agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xe9f5b9b1 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea09fb37 napi_get_frags +EXPORT_SYMBOL vmlinux 0xea16c7c8 start_tty +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea56eb11 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0xea6d7601 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xea748b4e genl_notify +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea90d30c blk_integrity_register +EXPORT_SYMBOL vmlinux 0xea955d1b ata_link_printk +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9937e6 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xeaa2e199 get_fs_type +EXPORT_SYMBOL vmlinux 0xeaaa6900 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xeabb32e0 clear_nlink +EXPORT_SYMBOL vmlinux 0xeac52e96 md_check_recovery +EXPORT_SYMBOL vmlinux 0xeb013652 vfs_setpos +EXPORT_SYMBOL vmlinux 0xeb081760 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xeb0aeaa2 vc_resize +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb665f07 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xeb7e3138 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xeb8d93b5 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xeba15bc9 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba40873 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xebbf5fe9 netif_device_detach +EXPORT_SYMBOL vmlinux 0xebc815d4 mdiobus_write +EXPORT_SYMBOL vmlinux 0xebd18deb sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xebd28c60 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xebe7f6a7 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xebec56da agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xebf270fa vfs_writef +EXPORT_SYMBOL vmlinux 0xebffb987 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec393437 new_inode +EXPORT_SYMBOL vmlinux 0xec4d23dd dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xec87c079 file_path +EXPORT_SYMBOL vmlinux 0xec96cd60 poll_freewait +EXPORT_SYMBOL vmlinux 0xec970257 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xecb11177 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecc1e306 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xecc49cb9 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xeccec75f iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xecd79f0e skb_unlink +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xece48ff9 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xeceed4ca sk_stream_error +EXPORT_SYMBOL vmlinux 0xed04ef06 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xed35c2db inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed70c978 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xed8c0058 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb2339a tcp_init_sock +EXPORT_SYMBOL vmlinux 0xedb674e6 noop_fsync +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedd0ebd3 vme_dma_request +EXPORT_SYMBOL vmlinux 0xedfd3de5 of_match_node +EXPORT_SYMBOL vmlinux 0xee08a548 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xee0990ef dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee419421 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xee59412f adb_try_handler_change +EXPORT_SYMBOL vmlinux 0xee6ea8e6 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee91efa8 dev_addr_add +EXPORT_SYMBOL vmlinux 0xee920a8d mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xee9965c5 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xee9f1122 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xeea2acf1 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeedd8dc7 block_write_end +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef082247 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xef16ffaa scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xef25adcc netif_rx +EXPORT_SYMBOL vmlinux 0xef536b1a __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xef7dff32 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xef8b2440 current_fs_time +EXPORT_SYMBOL vmlinux 0xef969f26 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xefaee00f bio_reset +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 0xeff4c6a9 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xeffb296f serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf015d2c4 param_get_ushort +EXPORT_SYMBOL vmlinux 0xf0331cb5 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf036dfb8 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xf044a3d5 sk_dst_check +EXPORT_SYMBOL vmlinux 0xf05e7da4 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf061cb6a dump_page +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0806604 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xf0894ced tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a02031 dev_uc_add +EXPORT_SYMBOL vmlinux 0xf0da7d0e of_translate_address +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf103f046 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf120872a dql_completed +EXPORT_SYMBOL vmlinux 0xf13029da skb_dequeue +EXPORT_SYMBOL vmlinux 0xf13536c9 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xf137354e netdev_emerg +EXPORT_SYMBOL vmlinux 0xf1429d2a tcp_child_process +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14af302 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xf17cab19 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xf188e404 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xf1943325 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1b9a10e vfs_readv +EXPORT_SYMBOL vmlinux 0xf1bd85e0 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xf1c96481 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e5c39e sk_capable +EXPORT_SYMBOL vmlinux 0xf1e79dbe brioctl_set +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf203db45 f_setown +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf216dba7 address_space_init_once +EXPORT_SYMBOL vmlinux 0xf21bf990 ns_capable +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2562f50 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xf26cb6c3 bio_put +EXPORT_SYMBOL vmlinux 0xf27563cb irq_stat +EXPORT_SYMBOL vmlinux 0xf28a9813 of_node_put +EXPORT_SYMBOL vmlinux 0xf290eb74 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xf296f0ab tty_port_put +EXPORT_SYMBOL vmlinux 0xf298d406 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2aef6e1 simple_rmdir +EXPORT_SYMBOL vmlinux 0xf2bf56ae security_d_instantiate +EXPORT_SYMBOL vmlinux 0xf2bf9043 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xf2c10d05 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf30533ad always_delete_dentry +EXPORT_SYMBOL vmlinux 0xf3091046 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf335601c pci_scan_bus +EXPORT_SYMBOL vmlinux 0xf3395675 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf349a7a7 kobject_del +EXPORT_SYMBOL vmlinux 0xf34c3e9a dev_mc_init +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3633e6c md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xf36a0d47 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3bea831 from_kuid +EXPORT_SYMBOL vmlinux 0xf3d20b70 simple_dname +EXPORT_SYMBOL vmlinux 0xf3d2dc53 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf401925a of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf418aba9 vm_map_ram +EXPORT_SYMBOL vmlinux 0xf421e559 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xf4342f47 bh_submit_read +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf4529c8f simple_link +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47c564e starget_for_each_device +EXPORT_SYMBOL vmlinux 0xf497df3d mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xf497f72c crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xf49dd18a elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4e4c879 block_write_begin +EXPORT_SYMBOL vmlinux 0xf4e4fc05 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f23504 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xf520f56a __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf5252515 mem_map +EXPORT_SYMBOL vmlinux 0xf5258836 sock_from_file +EXPORT_SYMBOL vmlinux 0xf526274f crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xf52c357b bio_copy_data +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf5656eff phy_drivers_register +EXPORT_SYMBOL vmlinux 0xf594f234 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5adc2ef zero_fill_bio +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c37123 nf_log_register +EXPORT_SYMBOL vmlinux 0xf5d5451c pci_request_region +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5fd3eda of_get_min_tck +EXPORT_SYMBOL vmlinux 0xf6246258 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xf6253775 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64a34e9 redraw_screen +EXPORT_SYMBOL vmlinux 0xf655fed8 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +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 0xf6837620 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xf687eae9 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf6929078 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xf69bf213 inet_offloads +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6e17a44 flow_cache_init +EXPORT_SYMBOL vmlinux 0xf6e8e917 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf7087531 posix_test_lock +EXPORT_SYMBOL vmlinux 0xf71287da sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf7401a7b __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf74fafb5 mutex_lock +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75a40e8 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xf77cc8f4 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xf78ae2a8 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xf7a5600b blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xf7d2e076 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xf7fb52e4 down_write +EXPORT_SYMBOL vmlinux 0xf7fe281c find_lock_entry +EXPORT_SYMBOL vmlinux 0xf81006a5 __inet_hash +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf811f03d scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xf8140ee6 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xf820eba6 vga_put +EXPORT_SYMBOL vmlinux 0xf8251fc7 scsi_print_command +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82a35a3 proto_register +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf841a497 giveup_altivec +EXPORT_SYMBOL vmlinux 0xf85ed4b2 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xf86e6a5f dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xf891bde9 blk_get_request +EXPORT_SYMBOL vmlinux 0xf8ae55c5 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xf8b30159 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xf8c55af6 blk_finish_request +EXPORT_SYMBOL vmlinux 0xf8d6b940 param_get_byte +EXPORT_SYMBOL vmlinux 0xf9108183 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xf915e19c dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9404b61 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xf942fa6e scsi_execute +EXPORT_SYMBOL vmlinux 0xf9470281 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xf94a1bb9 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xf9654674 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xf975463e tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xf979ecc8 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xf99404d8 request_key_async +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ab457e blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xf9ce3668 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xf9d142ab pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ea90e6 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xfa40872c udp_sendmsg +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa8fc90d iget_failed +EXPORT_SYMBOL vmlinux 0xfa9d7206 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xfaa8b3a8 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xfab867a3 blk_peek_request +EXPORT_SYMBOL vmlinux 0xfaba24d0 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacc240d __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xfacc975a kobject_get +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae180d7 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf0fdb1 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xfafe1281 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xfafeb670 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xfb07288c generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xfb1b4d3d genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xfb1d5b19 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xfb26593e of_dev_put +EXPORT_SYMBOL vmlinux 0xfb33b037 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xfb3bf5c0 unlock_buffer +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb700c08 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba501c1 fget +EXPORT_SYMBOL vmlinux 0xfba7ec37 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbbf3f17 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbf5ce01 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xfbfdea13 page_waitqueue +EXPORT_SYMBOL vmlinux 0xfc02b57e jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc097634 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xfc1bf977 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc4cedbe uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xfc519986 sk_filter +EXPORT_SYMBOL vmlinux 0xfc52dc9c lease_modify +EXPORT_SYMBOL vmlinux 0xfc623c7e tcp_conn_request +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc798a92 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xfc9f5ea9 inet6_offloads +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfce78fec flush_dcache_page +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0c5038 adb_unregister +EXPORT_SYMBOL vmlinux 0xfd174b61 set_cached_acl +EXPORT_SYMBOL vmlinux 0xfd24b655 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xfd2a5d2c twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xfd2c06f4 __frontswap_test +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd410099 inet_release +EXPORT_SYMBOL vmlinux 0xfd5fcd1c phy_attach_direct +EXPORT_SYMBOL vmlinux 0xfd66a957 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xfd87df1f input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb09d5e dev_alert +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfde25968 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfca4a8 ata_port_printk +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe59dd4b ip6_frag_init +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7a1981 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7f78dc lookup_one_len +EXPORT_SYMBOL vmlinux 0xfe8608ad wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xfe98ec76 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xfe9a5ee7 udp_poll +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfed30439 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee201a0 generic_fillattr +EXPORT_SYMBOL vmlinux 0xfee6fbda seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xfef833a8 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xff05f1bb i2c_master_recv +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff18e209 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2cddd9 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff51d0f2 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6b48cb netdev_change_features +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff85ffd1 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xff8ff799 update_devfreq +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa39bc0 d_set_d_op +EXPORT_SYMBOL vmlinux 0xffb2440c twl6040_power +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffe3b808 pcix_set_mmrbc +EXPORT_SYMBOL_GPL crypto/af_alg 0x0bfaf78b af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x37b57458 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x455a7a88 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x54b53993 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x67914042 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x75611193 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xd00a13e5 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xea79142b af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xf762323b af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xfeded874 af_alg_make_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 0xa2ca085f pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x02a7336a async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x6d39f402 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x77c53de6 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x8e86a166 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xb60b79bd async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x0a1956ca async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x0b472016 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xab4a0779 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb7a373b1 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x6e7b6c50 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xef6f9b0b async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x27fe1045 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 0x70125fb9 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 0xc8a34600 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 0x0cd518b3 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x178ef09f cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x35562a0f cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4e5ac93c cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x57fc86e1 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x5bfdc5d4 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xab6e8fd9 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xaeacf97e cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xc9796ff7 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xea87aebe cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x3a8f429a 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 0xde12041b lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2290fed0 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6b1924cb shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6eef2d93 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7ba305da mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x81a7dfa9 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xcaef254a mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd4ed1f05 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe5c7b82e 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 0xe3e05bf4 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x1200836b twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x160b49f4 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2451cc73 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x266368ac ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x356d7f94 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x373dd132 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3cceb2f5 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x513d129e ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x54b4f890 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x586812da ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x58f521a8 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6840b247 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x743aa58c ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f215120 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x94a00f83 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbfa27333 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc391d6e0 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc8035e3f ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd08c5c5b ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd21873af ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xda359181 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe6e9d006 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe89b8696 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xed040058 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x00c57ec3 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x06055f14 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2e7e3672 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3f9836fc ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4ed0e4eb ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4f64d645 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5653e940 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x60be9a83 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x772e9f7c ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8eb0b669 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa34d40ab ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb1c9ab14 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xdde0fc85 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x91936bef __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xb79d5774 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 0x298b7f81 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x8df93802 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xdd0d2bbd regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xdf185514 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1a0dcfc0 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1ff0f17d bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x35e82315 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4721aa19 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4856f99e bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x54029ed2 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x56558301 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5dfcd568 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5ff31d47 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7b2f8ef1 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7df4d363 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8004da42 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8ae8f3d7 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8d894587 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9957b52c bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa73826d7 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb237ce1e bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd85a61be bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe0b99c38 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe3b67f59 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfa1826f2 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfa439e39 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfcfeecc5 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xff0a612a bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2a424207 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x4b928a27 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x9a822530 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x9e594461 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xcc0ddd5a btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xcf9c1c16 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1b5e256d btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x82a29ae1 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x44b60656 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6d0b9edc btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6d163915 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x70e6c436 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb0eecaed btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc7a85caa btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xce883cfb btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd2b06708 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd432a9c7 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe024ac74 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf31ff38d btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x234f1e6b btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x24bbed07 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x707b2a11 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x755ac24b dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf4144946 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf94cb83a dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x739eff09 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xb31ce36a hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xfb3533e4 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x06e3edea vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x48e73eb8 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x50308d0a vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x6150e62d vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x00893913 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x01201c55 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0d8483fe edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x19444aee edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1e4b1431 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x20086523 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c932231 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2e7b253b edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x49c90d41 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x61601648 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 0x71e8f373 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x96b9dfaa edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9ad699ef edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xac0faa31 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc64c5a4b edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc7ed766d edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcb2cd160 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcd4180d4 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xce9a7f04 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xec930260 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xed549d51 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfa2f8868 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfd5ff9ce edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x76386d31 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xb9837996 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x0e1e1c52 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xb70fc88d __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x46d0ce5c drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x499a1679 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7cd75fb4 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8e5ca50b of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcc456dfe drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe82c1c3d drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x55934e92 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/gpu/drm/ttm/ttm 0xd6ee5820 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe4dacfcd ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b251e62 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0cffffaa hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0d6623e8 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0daae5c2 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x151cfacd hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19bfc030 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19c5737e __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x24f7f043 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3358ffc2 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x34748ebb hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37827ad4 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4cbb111d hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x57918669 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x582b3678 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5897e44e hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x669db7d8 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x709aa712 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x72ae964a hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8e362a1a hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x96d1caf7 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9f5ce871 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa53f69e hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xab29b881 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaed69f34 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2b93352 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb400f4ad hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbcdbac90 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc302f01d hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc7b8ed81 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca00f88a hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcbd043fd hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd573d65c hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd5bc2538 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd7781880 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe6e46fbd hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf797e393 hidraw_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 0x9cad0291 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x21222878 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x292e2e02 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7dd5ee21 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa03e7270 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf1dc412d roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfd12eb89 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0154db58 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3ae705d1 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x57e2aa88 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x60e272f4 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x66158924 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x71204cc2 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa02249c1 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb469a030 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd83a02da sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x96a8c62d hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1b9a4e8c hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1c2abc54 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x58de5d91 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5969e966 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6a912b7b hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6af082b6 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x867e30ca hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x939f6d8a hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa2c84f31 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa77f1e49 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa80e98f7 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa82045ad hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae55fc43 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbcaeefa3 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xda29e2c5 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf24a99f9 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf2c38ee9 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf64504e1 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x40f6e173 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x682a1461 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x9a827594 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1676c418 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x17e412d9 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1a8a1618 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x28061cb9 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x53c93d6d pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x55aaffd8 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5f4a10a5 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8440acae pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x94a9fe34 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9cbdf727 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9d83e64a pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb675fc30 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb8b43ff2 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd3e12064 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe1c04cbd pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x298f7412 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x36d7b028 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4c3a1c8e 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 0x8a47afe3 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbb302cde i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd1e9ee7f i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd56f89e1 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdf2dd6a8 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe0ff853b i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xd97fbef1 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf12abd08 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x4cdddd33 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x7c16418b i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6791b59f ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x801ee9ee ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x82a769cd ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x97120723 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa2cdf00f ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb8cfb9ed ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc5c23755 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd20bdc2c ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf8980e16 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 0x02d6886f adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2740f241 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x455c7855 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x525bdc70 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8fcb964e adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9ebe6dc5 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xaa424bf5 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd60d5b95 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd7406592 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe6f48adc adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xed20a379 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xeea82709 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x02ae5dcb iio_get_channel_type +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 0x416ab746 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x42f9b0ca iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4575e9ee iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4641886d iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x47ff4ecf iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x486763ad iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4a9ddbcb devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5289cc8f iio_enum_write +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 0x5890f779 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x723e375f iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7b795ec7 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7c9e4321 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x829296a1 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88d7bded iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x90f94ac5 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x919bb424 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x961cb538 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9bac33b0 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa647af6f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xad0d1b01 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbb263aca devm_iio_device_free +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 0xdd6595f2 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4278975 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4cd1e57 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xef54b467 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xefceb16c iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf23080ff iio_buffer_get +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 0x6f0fee3f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x6e3d194c matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x25734aa0 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 0x095d4e82 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x32767d05 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x60a70156 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x0aab9950 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x2e46b96d cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xe4f62919 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x3624e63f cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x589c995c cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x18651dfe wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x537e4665 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x57259be1 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x60a43b8a wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x800414f4 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x86318625 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9b8f9b7f wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa87fc30e wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb45dc8f1 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc70c04d6 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdd3418a1 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xef0ff9f0 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0b1b8e3e ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0ff8dd88 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x12ee410d ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2a5637c0 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x43bc8299 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6a0932a5 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb59e61cc ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb7f71572 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdb21c80c 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 0x0d334348 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x10f2a86f gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x33c8b05d gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x40cb4860 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5a9490b1 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6724b41c gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x70cad827 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x716153c9 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7164c639 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x76319ea6 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x83f3c547 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb9a664ab gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc4a72f4e gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd15d5ec5 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4d17933 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd644caee gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xef4daf2b gigaset_start +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x05f05b21 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0bd53f5c led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x233f4df8 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x867d8f22 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xbe61d7e2 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xecb73c28 led_classdev_flash_unregister +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 0x0da45cc3 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x10b7fbe5 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x365919cd wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8aff3c22 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8bdab340 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x93b53c03 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x985a09ae wf_get_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 0xcca6d08b wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd4e4f792 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xeeb3f54f wf_put_control +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1acc3462 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1b1bc472 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2d5e9d40 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x411292a6 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x760f1973 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8b4617e5 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8c9c882b mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x9f5d056f mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa4fce096 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbd4d9eea mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xdaca8801 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe7b39f84 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9cca8f3 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xfca9fd68 mcb_get_irq +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 0x0b82db77 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0e8f8485 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1f330db4 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2bd4d599 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x48001313 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 0xa3fa0ab1 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 0xdb9b6017 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xea65b8ab dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf75c2a5d dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x180277b7 dm_bufio_client_create +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 0x315b7594 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x4dfc8031 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x85192ba3 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8a118c57 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xba5571f3 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe3bc2afa dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf92df17b dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xbd7a93ad dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xfc01eca8 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 0x2c1b8cc1 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 0x5784c4c3 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5c0987fc 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 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 0xa8c988dc dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb580f72e dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbeaec4ad dm_rh_bio_to_region +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 0x0205b635 dm_block_manager_create +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 0x42d1207a dm_btree_lookup_next +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 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 0x21359d70 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x44454f30 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x73c8ba34 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x825b451b saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa812cc54 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xae3fcf9d saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb2045b43 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xbfd69a26 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc138d10b saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xefc7723d saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2411e929 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x435015a9 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x693b8a49 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xad9d54e7 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb71209bf saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc73cad5b saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf8845b82 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x188d9f82 smscore_onresponse +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 0x45050d2a sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x471517e6 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4f407878 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5311ce90 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x596a4b2c sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5d4d63ff sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x64925ea1 sms_board_event +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 0x85f5f07c smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8d79c6bb smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x91303ef5 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x921d495f sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb7a077c6 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb8da563c smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc6d8d682 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe03ffbe7 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfafe44ca smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x0af9d065 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x53a855a9 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xb79e6189 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x13390aea media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x33bc1216 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x3b213c6b media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x4a76d341 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x590fad8e media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x5a3e8650 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x5a9df8ce media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x6a92e45d media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x72915993 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x791055af media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x7a5bf060 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x8f226c9f media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x900847db media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x9245acf4 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x92cec276 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0xbb131788 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xf4930f86 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0xfaba5696 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x43700965 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x11e5f85d mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1680ec69 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x42db7fde mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4aeada73 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x53e52fe7 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x54dc1bec mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x60507c73 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7581e9d6 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8230c882 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x83510a2a mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x87cfa87c mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa1f974b8 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa914b535 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaaac58cc mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb413246a mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb6a5aa8e mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbd5bfb27 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd93feaac mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xede37088 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x003fdf4c saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0a94943e saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3c9ea33f saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x487e307d saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x519fb1bb saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x65c1e2df saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6ac5aec2 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x73c9483e saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x73d3fdf1 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x748e5f9d saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7f561ed0 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x891b3ac9 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8ebb1750 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x92436eb8 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb04d7e47 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb981c700 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc590a5b9 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xca701712 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe0baed0d saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x23317e1a ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2438b164 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x94d3d311 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x98b58cf2 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf59b5a20 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf6b179ee ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfe3546aa 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 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x404d2f1b xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x4d758097 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xa0a3b094 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb36d5fe2 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbae2fbdc xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbd4bb084 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xfe98d2e0 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x4821473e xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xd03b3bee radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xd7874978 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x199e83d5 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x37ae3673 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3f233430 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5472066b rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x55f29d95 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x69a88318 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x69d39a9d rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6d035966 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x82b209bc rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x99528f9f rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa24e4162 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa650c235 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb67ff13e ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xca3407ed rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcb601252 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfa029802 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x2eb18f2a mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x2bbf4b1f microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x7aafb71f mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x31d321a1 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x298fc0c5 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x305dbb6b tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x8a4e3a36 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xc396a886 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xca39fa0e tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x3c165bf2 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf0ae8f1e tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x19202540 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xdb8089ee tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x55456b8a simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x09101fdf cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1f36b60f cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x21f5ed4f cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x282c230c cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2f09b048 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3748e8a7 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x569eaa36 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x591cce84 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x65c90977 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6b624918 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6fa38594 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x84c54d70 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x87a1e8bd cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x936fc57e cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9844ea1b cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa916f780 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xad3797c4 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb095ab16 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc77bd82c cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfa43a05b is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xb8662721 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xd8eb698c mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x03a78b80 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x13ba1864 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x176b6409 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x18606ff8 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x31010a03 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5b21693d em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5bcca99b em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6113ef58 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x77a304b0 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x785510b8 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7c16903e em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x872af7bf em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9dd830f3 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb03db56e em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc04d59a6 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc290d258 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc96ada18 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfdd175e9 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x1aa92fa4 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x418aca85 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x4abca50b tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x94ce6fab 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 0x03394f3a v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0373fb7b v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0e71564e v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x512fc21d v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x79ed3b80 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 0x8afa58e4 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 0x55b9b01e v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x93e900d3 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x00786b07 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x03b54329 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0bc02bb2 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x111f42e2 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x130d8ffb 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 0x199c2bb0 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2779c940 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5cb0ca9a v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x62565b88 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x64edc975 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x65050f5f v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x70ef541b v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x75049fe3 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8384be99 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x85fe2217 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8781e785 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8c6d9f6f v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9807c8ab v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaa2cb2ec v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xacbea2c7 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc4854f00 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 0xe3b7ec49 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf345cc1a v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf36e1fb2 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfbc4ef91 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfd16900f v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfd752b71 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x00859fb6 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x01599903 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0e52667d videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x14ce4494 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x18a6b0c6 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x32028a27 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x33101a44 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x39d13e53 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x45cc8646 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x59a16b8d videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x69b388ac videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6d2d6ae9 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x705bec64 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7e48794d videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8adecf3d videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa2de5e8f videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbaa531d4 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc82ac3fc videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc8bc12af videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcbf60439 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcf9234c7 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xde642234 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef3d3cbd videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf6195839 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x92b26758 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xac9e38d0 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xed36a8f3 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf33e7ab7 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x900daa55 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x98b05dfa videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xa858b5de videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x071cd431 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0f3b0cdc vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1884dd3d vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a7aa6b7 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1e74f1ba vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2081841a vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2445699a vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2848b6e9 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3b3c103c vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x404778ec vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x422be755 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x44f5776a vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4daa0d7f vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x55237c32 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x55339f3d _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5b33ee2f vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x614fc57e vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x63243fe5 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6a7d36f2 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7096551b vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x721ba560 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7254f792 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7496699f vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7c29d5b8 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7cc33573 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8b310868 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8b929cbe vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8e237519 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x93a4fde0 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9b6e6552 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa205d354 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaf509d5c vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb65d7bb2 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbb01f2a5 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc5773abe vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcd13007d vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd8374676 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdeeca26b vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe9e894cc vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x0562abb3 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3ce3c2b5 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 0x523fc38a vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x8234a537 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 0x3cd9dfb8 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x5759eb54 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x62394373 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x9f6c8fbf vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xc1e2eb97 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x064165ea v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0cab967f v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0cfc6091 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1355a368 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f132be9 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x497bfdd4 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x511817d3 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5e5aaef4 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5edf94c7 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x67d04abf v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7197e6d2 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x761dbc68 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x780768c6 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8683105d v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x93f02467 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x949b5f1f v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa2d0f9a8 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb15de323 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcd76ba29 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdb3e1dc7 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe30c36d5 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe976889f v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeb655b1c v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xef3007b5 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf8494e4b v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfed8150d v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xff67ee85 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x0d6b3339 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x6799ee29 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x8908137c pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x0c991b9d da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x834b230e da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa9a1139f da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb1016022 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb685774d da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x27f4575f kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2a968ad0 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x460b6357 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x573dd48c kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6f4335c8 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x72c12dd4 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa5e172d6 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe264bbc2 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x65a16c03 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x6ca3aa03 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x9bdee586 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x200129bd lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2985d529 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x64f631c0 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x944b2e4a lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x96159979 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa07209db lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xda169ec8 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x1882faf1 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x1e601179 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xf981575d lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x057757f6 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x0ca6fa52 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4c1cb172 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4c7b6fe7 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x5e13441a mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xae384b8b mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1277289a pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x473fc554 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x52f23350 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x54d504de pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x68bb2308 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8e9cef10 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa0761aec pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaaa1920d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbfd6a769 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc48f4209 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe98d53c7 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x7bdb5d44 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xda24fc23 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x7b4bde25 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8437fa21 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa34bcf25 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb9dc3784 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf5c45d57 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 0x0db8e15f rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x22a260f8 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2400ce68 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2783b535 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2c550035 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2d9f1b8d rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2fe863e9 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x432c551b rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x53de0b42 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x58ac465f rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5f2aa2c8 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5ff94682 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6efd73da rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7a5ee63c rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7b7fa1a6 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9d0ceb15 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9f9276a3 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbbf8bde7 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc3dc67ad rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc49a6454 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc6d5748f rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf0c7582a rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf2198275 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf864fbd1 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x10abd5c9 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1da6cb9c rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3b2e1f80 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5634cc15 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6ec952d1 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x91f35c5a rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9c169a2f rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb396a69f rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb95dcc0c rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc7bee8e8 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc8dbe521 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xcbc35817 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd54dac12 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x119bc94d si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x128aabcc si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x13b85a8a si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16964890 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x19378498 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1b9b6e59 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1f76ab83 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x26dac3f2 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x32430f18 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3aae0ddf si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4b86e8f9 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5bed7504 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5e6d5237 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x61c2ee64 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x63d68d09 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6d4c79a3 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6ef1368c si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7635cc25 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x76be145e si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7efd3114 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x81e5baad si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x82ad03e5 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x90bc3ff5 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9832c3bc si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb5a758bd si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc3bce508 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc9585cc0 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xca561262 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcaecce55 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe46a349a si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xef8f14d5 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf3a292d6 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf5a13b69 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfbd740a6 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x22902317 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x423d1a34 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x865fe130 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8b570f3c sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xed9ce4cc sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x09a4c57c am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x3e51b0c9 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x72986b00 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb91b53ee am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x2d29ecc3 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x32253563 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x87abb26f tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x904826ff tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x2d7d2497 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x322188d3 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x5814470c tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xd8dbde6b tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x1bbe9a49 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x00fb4a6f cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x29d9edff cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7ba8b6b3 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xea17de53 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 0x2ea47294 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x433b9fdc enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x73fa6d8d enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x78a7d029 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7b7b4b62 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7eaa7a06 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x98cbb83e enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xdd8a7374 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x22a74d6c lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2adbc77c lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x41b4ae39 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7b44d979 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7d956782 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbbf67f4a lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe7c2be5d lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf3ce8632 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/sdhci 0x28f418b9 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x65e40e7d sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7386fde7 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8e124a51 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9054b684 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9ba6483f sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbb2045ba sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcb9e273c sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd569d619 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd71757d5 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe2431f55 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xee3a6aab sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf0b72f79 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf1219d75 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0288b5d1 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x07473a72 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1a6909cc sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1e5eca0a sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2f2156a7 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3f739b1f sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa2dc7924 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd0665ffc sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfcea16a6 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1a71dc89 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2558f961 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd846dcf7 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x02b1a356 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7ce3e886 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf1486cd0 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xab0b0d12 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x1ca34eae cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x4c92282f cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdc284550 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x039720b1 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x04bf4d2b mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x080a7273 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0cdc1d17 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x180ebe48 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a529fe3 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x26628f02 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x29e57377 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x38c77cc6 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c8fbe71 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3edccece deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x473c6d30 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x589c378d mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5fcf7296 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x67298377 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6ca5a91c mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6e1444a7 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6ec503da mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x79bb0dbf get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8369096f mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8860a356 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b992be0 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8fc595a8 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x945feb6b mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c3e942a register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa3c8f949 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab3f98fc mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaec67223 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb24a0aa5 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbb64c021 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbfaf38f6 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc2106a43 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcc0bf8d4 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcd505343 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd5a559c1 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd6162ac7 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc7f109c put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe3df8527 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe819efd4 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xea68e9c2 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf957707d mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfe829f2b mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x23f4e208 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x390d5345 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x7ebbc659 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x98e752d5 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf741aa44 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xb6d0bd6e nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xbc24c8f5 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x9fe5980f sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xae35ba4c onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xdc9924a9 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xe8a71cfa spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0f933744 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x19b4f156 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1c870cd0 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2c668632 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x36049592 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4b8dd5ba ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4be0818c ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x76ada781 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8c3d03a3 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa23fa459 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe12b2ba8 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf7c72bf8 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xffa78f8a ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xffe0675e ubi_open_volume +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x204d9fbc unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x31f1c5fd register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4912a515 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa4eee264 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xaeeef618 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe467e64b c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x05a3b937 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1f98c6f8 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x21230e51 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x22903f84 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x28742530 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x38bdb727 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x470ff87e can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4d082a33 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5a27ab75 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5d7c513a safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x614bc84e open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x653aa8bc can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8e492838 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb9fa768b can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbe2f5758 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xda0108d5 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdc4169b0 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf040c98a alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x25644fb5 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x29f97741 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7f564e81 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb02d167e free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x160d43e8 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x590aae1e register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9527374d unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xaf9e45d1 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xdefe5d6b arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xe576b4cb arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x024463be mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02631779 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0286bbdd mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02e68b1a mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06250267 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0677f9b0 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09dde792 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ac416b9 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d58159f mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ed61dce mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x130a6b37 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x196b50d8 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a175c62 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20c6ffd5 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21f04ee9 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22f0a533 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24d47fab mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24e53f8a mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x251ec884 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x251eed03 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25f005a7 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2889926b mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2aa6308f mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cd9dc7a mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x307699e2 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3151e67c mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32d1e3a3 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34abb400 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34bdfab0 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36f026e9 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37c118d4 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a5b8647 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d706e9b mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e8cae8a mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f2600d0 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4705f642 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x486c6927 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48a47d1d mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4da65266 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4dea43d0 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fa78d06 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50652f84 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5642947c mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58c11034 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59639160 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x599b7cf4 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59c24e0b mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59f7702b mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ecc7a2b mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60b3755b mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61407bf8 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6566db44 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x677c9146 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67a12f0a mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c73082d mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d283e82 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6db1369b mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x714b0545 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x763052c5 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76a74d46 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x771b0151 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a7b7e43 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b5b8ac4 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bd8c237 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c411f24 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d5d5f76 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fc933b0 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8074f51b mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85fee6ff mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x891434f5 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8af4a404 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dd3ed4f mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8eb1c373 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ff37299 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95c191a6 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a7579c0 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e4c5571 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e869117 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0996cb0 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1633a7b mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2675896 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2c99a71 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa50bfe91 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa54796b9 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa60ab3ca mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7fa7e27 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa80a12d6 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa23fcbf mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab78bc50 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac40dbfa mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad4d3b01 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb222c846 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb2e41182 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb31e4f53 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4a48df2 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb853935c mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8be9bab mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9081df0 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba855f49 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd8bed38 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc51139ae mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc78cdfca mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbac1e41 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdde9b15 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce393364 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6d1f198 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd775b2c9 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda9482ba mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc82bf2b mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf76618c mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4d412d9 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe603e719 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebb52a77 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeca9c4d8 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee85beae mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf21dc82e mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5013aa9 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7672dc0 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf857f8bb mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc43f949 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc443f9e mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd104f9e mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe6d71a1 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0468620a mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09445b21 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c4c5692 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0da48964 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f6a04d7 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14416f03 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d79dfdb mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26c91a5c mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28986b13 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x44e4ffc1 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x454e3b54 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e516fd7 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61329a57 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x714a94b2 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x724a48df mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75f4c772 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c90ac28 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81296a9d mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86d12b69 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d27011f mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ce09f42 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa185adf1 mlx5_db_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 0xb75ee7cf mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2130a4b mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5fcdb66 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc67941b4 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca0277bf mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3f77515 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf7eba3b mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdfc38368 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8d537ff mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf9b58523 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfa1d4e95 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc4f78aa mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfcad0c26 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x1e3da5d6 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x4943daab stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x4c16c4f8 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xc718291f stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x06f3aa69 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x0a35c2f9 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5cd2b13e stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x16cadaf6 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3779895b cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x54e67bdb cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x580e4c31 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x65313d33 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x68e33042 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x94689ea4 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xafd9fac9 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb81c9c9d cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc6f19cd7 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xdc0dbf7d cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe6e5646b cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xef4cdfe7 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf81926a5 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf97fd1a6 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0cb9f3ad macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x44ffd051 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x53521d3a macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd0e3dd28 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x9132d8d2 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xe039150c mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x80d175f4 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xdfd38fc5 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xef48f4a8 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf00c2b38 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2b38ecfb cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2d973ca7 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2f9ac121 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x360f9d4e cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x667963d5 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x914bfd3a cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x997b323d cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfd1c50f9 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfe1f245a cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x09c48c66 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x25cfd406 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3ebf2a17 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8eee5bf3 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc57b6ec7 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc6c47788 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0161eb74 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0e7c9701 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0edfe2df usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1022f021 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1722dd2f usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1911d2c3 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x24a30d0b usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x252c11e1 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x35c9cfdf usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x35ffa1f8 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3629abad usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a05bf12 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3bd23cd3 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3c59fe90 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3f528740 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4b79c324 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5c9d5eab usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x60bf7ecd usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6c648efd usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7414abd8 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7b976e03 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8140649b usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc021f795 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc4fb6fa9 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcccf7253 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd4626864 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe0ba6953 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe65e7464 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe84d7436 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xebb561d0 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xec46dcc3 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf134675b usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x0f6093c4 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x63ffeb00 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xe6f68159 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf953dcf0 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x34833c4b i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x476e5dfe i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x562c208e i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5ed92575 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5f1e8c1d i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6cbe43e8 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x90212747 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9dd456ba i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9de5f230 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa6dc434b i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb082cc08 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb451f368 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xba302305 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc985614f i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf16b3266 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf2a528c5 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x15e73364 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x25344622 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x33fa3616 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x95357ee0 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x915da6b4 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1e8e3897 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x89766dae il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x96c94684 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc96957cd il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xde10b750 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d93105a iwl_parse_eeprom_data +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 0x1e71ff98 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x24107d78 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2b78c105 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x320f23ca iwl_parse_nvm_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 0x42342249 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4a2bf4f8 __iwl_dbg +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 0x5cb5bf21 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5e9140ba __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8140fcd3 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x934ae945 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x953b5fd1 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa3b3915 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xab4deafa __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb3f2e527 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb450aaad iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb5e54f6f iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcd45f707 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe59fe7da iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe7addccc iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf87eeade iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfe697bd3 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x304a22cd lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3f35a655 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4026dfbc lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4d23e185 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x533988b1 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6a18aa3a lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6fc76db9 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x84ee796c lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8a9b1e84 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa931d045 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb29d4e01 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb33713d2 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb4bf4fc2 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc1203de9 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd6849789 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeddd6919 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x370cae2f lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6ba52e19 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7e333517 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8ce20d90 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 0xf15f5222 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf2f2b10f lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf6b95450 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfea6c4ef lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0dd3bd6d mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x10c7d203 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x10ffad03 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1dcc6e44 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2119f6b5 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x27b38007 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2da857c3 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x52a3f811 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7a11092b mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8b0d1f29 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8b9432c6 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9e04f2c6 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa9072955 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcb2252d5 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd2b7e9cc mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfd7a2608 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfec152c2 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x02a19f37 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0378495c p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x07d35fd4 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1dbe7acd p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x458c4102 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x57ce9c02 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x71a02695 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb6cbf386 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xca959138 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x49e51e82 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6a7a6a95 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xba6da783 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xf7017c02 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x037dbf57 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b6712b4 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0fe9b50d rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x11874b58 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x23e23f08 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2610a036 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x341a841d rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x397c9958 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3bfc1ee4 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3fa6b822 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4b0e5d80 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x52e72d3d rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x59e40ca3 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f6ace59 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6653f986 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7da45387 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x82e0cb38 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x872b66e8 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9031add4 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa2e5238b rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xad4129c1 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae196dfb rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaf4e9fcd rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb1e81e19 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb856c04e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbd7616b7 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc0561f26 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcce4a182 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd1e48e0f rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd5b4eb72 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd908e7ae rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdad2db43 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdd27e449 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf0cafcd9 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2ed4e07 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf7d68400 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfd094ef0 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfdf0aefa rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x20476c3a rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3a95fe7a rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3b7b6498 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8bc74b0f rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8ddd2d2a rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb07ce57a rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc9eb1857 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd1ce1721 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe0505a08 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe83d1327 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf0464474 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf1ca2806 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf1f303b1 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x04d76f54 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x09bdf8a4 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0aba8f13 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ba928b9 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0e1e3b1b rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1bde8a66 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c916cd9 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2042c415 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x294741d5 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x29bb09d9 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f857d5d rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bd6c5c0 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bd848aa rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x42073554 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4441491e rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49080d00 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x541b05b8 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5839db03 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5bd3840f rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6187cb9f rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ca13aac rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x72aa6ec3 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x76938754 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x76ce5db0 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x77220484 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x835a7380 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8e28d42e rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a7b83a9 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa8deed3a rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa974769b rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb1a32888 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb7362682 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd3ac6ff5 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd88986ae rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xda649643 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc319669 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdf40da25 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdffac4d7 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe49207bd rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee0ad0ec rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0bc4468 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf2c7f124 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf3b50767 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf67ea8be rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfdb2ac53 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfe14fe72 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x16315c91 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x2633219a rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xb187e036 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe70e1828 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xfaced173 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x5209296e rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9dcbc6cf rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa50b4769 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc28f48bb rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x33c3ad36 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x36008320 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x59e8432a rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x66119b1a rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6d273f13 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8c2ae13b rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8cac089c rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9fb410a0 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa5fc0aac rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa7e1ed1b rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbf0a17e7 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc7e3fefd rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd5444b9f rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd94934c2 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfa35cd59 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xffaa5ca4 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0267cc5b dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e80698a dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x94ce1ae5 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xac038ebf dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x02683e6d rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x03170505 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0e87a8fd rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x10439a1d rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x14f0c4e7 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2181406d rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2338b241 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x26dc430c rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3470d7cf rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x42c8ee8e rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4cd5c9e9 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x517c4020 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5760a928 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x59525fc9 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 0x730ef0a5 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x76a61806 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8258d829 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x88953c31 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa354d9db rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa5053d51 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xac25686e rtl8723_phy_reload_adda_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 0xb1bc7864 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd13f6018 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd1baee1c rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd7fa5049 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdb5671d3 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeef602e5 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0f46e9de rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1e030563 rtl_attribute_group +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 0x326614b6 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x32f4faa9 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x555a1c16 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x560e7c2b rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5be4b915 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7bd2b38f rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8378a49f rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa1001606 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb1afba44 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd2634bc4 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd2d1d07c rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd95aec46 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe4ec54f0 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xeedddd0f rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf3e97b3f rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x94a78d0f wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa1119593 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xfb13ccdb wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08c7b02a wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0b45e9cf wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0b8d14c3 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0b9ac55c wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0d2839dc wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x183b4fe8 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x189d6049 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1b437a73 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d690d00 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1e2f4b81 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x21d9bfb7 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x252ed4ed wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x280c83ee wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x40f2a462 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x462c9c6f wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x46f9726b wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4a19adb5 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4f3f99a7 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6fe666b9 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 0x79f75a41 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x82ac3126 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8c3c5748 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f7ca8ad wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x92e0a854 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x97f0870a wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa1638169 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xab78f38b wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xad3aaeb3 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb26e7e16 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb723a0dd wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb7a924e9 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbd430b3a wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbe4204d9 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca12a149 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce871cfb wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd332eb93 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd522cb3e wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd77dca4b wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xddd0b86e wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5bb09a9 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe8d0640e wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf446707c wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfbf15b7e wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x0d5a984d nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x63621746 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x6d8a6975 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xb58d4d19 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x07bebdde st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x42d04fd3 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4ac74521 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x889c84ae st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd8fb5725 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd8ff2a26 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xee18aa78 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xf94b5e0e st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x019df91a ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x2f7b6ec7 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 0x6ddc8e7e 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/power/pcf50633-charger 0x8f043537 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb1faaff7 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe8910ddb pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x29a1db64 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xa48ea48a mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc4087c62 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd981fcf7 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xeba0168f mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4fbe8115 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x683aedf8 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x882c0105 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x911eadf1 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9703589c wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe85207f3 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xace5e520 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03a0010a cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07288fb4 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0f19a0bd cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x17b54c79 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c3135dc cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1dafe522 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x26b4681c cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2717da0e cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x314582ad cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x39a9e426 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x443c76a7 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x455daa6e cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ed6b6f7 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x515405da cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5302940f cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5f6ce8f9 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6c5a35cd cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6dacebe8 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70436110 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x72afb176 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x77c14ce3 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7ee5caa2 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fa86393 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fb2a6ec cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83bdc647 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8a5d1e90 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9287dabf cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9427ca42 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b6cd88f cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f68466a cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa95afdda cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0685e6d cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb18c334b cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbad27a97 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbee48bef cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc155ccdd cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc6df32ae cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd0d1318b cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd630dfdb cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd6f1ce41 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd9c01929 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde4543bb cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde82fef0 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe011b0df cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe792d48b cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf8929336 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x094e7d96 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x190d3851 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4b3781a8 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4fa68643 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 0xa38a862e scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xbfb0b195 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc20a00f0 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x341aaf70 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3a11a421 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x74bdd324 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x76cd3132 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x77543bb2 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7a512781 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7b0086dd fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7d80184e fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x863915ae __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8fef5733 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc9cd7064 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd703bfb2 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xda486ece fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe816c32a fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xef9fc2a8 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf8fb47ad fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x271037fa iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x28f2b01b iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa044fd56 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xae4b4aac iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb10bdf55 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xba190990 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x047df170 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12cb2e1c iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x153d5b76 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x18325921 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1881a3a9 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a23ef14 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26ea68e3 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2753742d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3d44d676 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x424d99d2 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4420c19c iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4809e363 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x52036ea0 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5bcf26f6 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x65e58f6f iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67c63f59 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6fddc756 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7454e701 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x760f17cb __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x823cf6ac iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8549bf4f iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x85e4b80b iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8b0b7370 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa2c9ce00 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3bb41bc iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa77824f0 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xabcf2eef iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xad301c1c iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1311191 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbbb2fc12 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc01afe0d __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1118538 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc71d839a iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcdfd23e7 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5837a6b iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd7f616f7 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe397cd58 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe5f97445 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeacab06a iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeed24dad __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf28c35fd iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf73e15c6 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0217d0da iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x07cc5296 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0e24c9de iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1c529fde iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2772df7d iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x38791b92 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x52b9cff2 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x557bbc14 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x59c0b34c iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x625539bc iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x63259319 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x63a946ef iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6560a6e6 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa46601e3 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb1b5583a iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbcdef775 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc8c238ec iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x111644af sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x137c3fc9 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1b051a52 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x216f0ddf sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x28172213 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2c9dcae7 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x321f55fb sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3e2c98e5 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x40309e87 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x41c7983d sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64e2cf91 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6b71c030 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6d3dc5da sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6eab1876 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x74bf89b4 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x79878619 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x832890c2 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x91783516 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x92c55a16 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xafc538bb sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcd35db74 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd78ea2d6 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdd935777 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf25f7a81 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04197b14 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ae976f4 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1857a75a iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2eb5f762 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x31ea92eb iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x404e042e iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41c9eaed iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x44a9893e iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52a7db99 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55c75e37 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x56c4bd68 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x570b5ade iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5fa42ced iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x629551de iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x62b7a607 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x63facc5f iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x66f0cbc6 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x673f7177 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x762b1909 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 0x85d15c86 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x85fe184e iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8d450674 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8d513d63 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9473a436 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9ab2b3f6 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa257ea0e iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa91ad6b1 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbb88dd89 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc0eb3d97 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc1d11ba3 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2907ef2 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2b7c5b0 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdeb3c897 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe44c7be6 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xec79d590 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf310cd70 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf6a1d451 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf73a7a67 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfa2b28a0 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfd90a2de iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3d430d6d sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7f1869b3 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x88c14ce0 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8dd0699e 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 0xf768b570 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x127673e8 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x23fa5121 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4d88be76 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5065d7b6 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x575da9a1 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9295ceb8 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x32206d41 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbf9185e1 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xc611d020 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xf52e0a0d ufshcd_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x1d593382 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5b5082ea spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x78e796df spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa7ba3a74 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbf7fdae0 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x18922f00 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x7b4c9505 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc1dfe6c1 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xce8bb5dc dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x07245202 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x09ffc01d spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x109932e5 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x18b1d819 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1935aa57 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x333e2ec8 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6c37a3d6 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x78a1220d spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7e621636 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x82377e5e spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x829890ce spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8f07b119 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x90b6afa8 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x949c5c45 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb783172c spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd202a94c spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd2e36e86 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfae33e3c spmi_controller_add +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x5f2347a9 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0d925f68 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x10b6e2db comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x14b64104 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15bf2de7 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x172f3a8b __comedi_request_region +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 0x310e917d comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x32e5d861 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x362932c2 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3dc75f77 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x45c01e4d comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x503eb250 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5b0b7127 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x680c4074 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x693943e7 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a159b30 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6e2ba5f3 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x79bef4c6 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8c1c1827 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8f02fb45 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9124b3ea comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9387e7b9 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa79323fc comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xad5ac45d comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xae1463ba comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb5cc5bd9 comedi_request_region +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 0xbb7d8ba7 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xceb1ede4 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd55da27c comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd8e62b25 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe6a83cf3 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe7a4751d comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf05d6297 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf1edbdad comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf74188de comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfc9bac33 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1ce8c74f comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x251cb738 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x5f77b4bb comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x6f7d0a66 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x725c753a comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x82d27f3b comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa2ba2c2b comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfc45521f comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x91c19afe comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xab6ccf0a comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xb6c8afc5 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xb6e67077 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd5187689 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xf2cdd90b comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xff91c1d7 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x1130112b comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x89da1ff3 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa16f4d81 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xc2d728dc comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xc728fc49 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd917533a comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xad8e6e4f addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x2464a905 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xc531ea0e amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x161cae47 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x15f80488 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2ab9f8cc comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x302803d8 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4016485d comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x42c0b9d6 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x55ed14f2 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x708b903c comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8290ef75 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9b1b0e12 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9cd78d0b comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb2989cc3 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb39e15ef comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd218ae19 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x3872897b subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x50f3f0fe subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xde7d1c66 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x04c7180a comedi_isadma_alloc +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 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 0x236d565b das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0ecfcad6 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x15328d30 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x20c3625d mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x21c8570f mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x30dc2b9f mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x47ecb71c mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4b587e5c mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x527d1b0a mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5fcc68b5 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x672e12da mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8127c341 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8eb324d6 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaaeefb0c mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbba27845 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc105d235 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc3d7c3fa mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xca93cd5e mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xda46b2c7 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xeaaf5620 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xec30df44 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf2928f44 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x10435595 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xc2319a46 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x01deeabe labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x0bdd9d07 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x190adbc0 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x2a157643 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xead929a5 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2e805557 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x505a2e1e ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x52205388 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x65d8ace9 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7c45edfb ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x91455d6d ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe6c9f785 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf0f75163 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0b8f8ab2 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x59cd2e70 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5a429f70 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x6acf6441 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x755fa626 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xa8271f0b ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0ba14f86 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1743f396 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x57586935 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x882fcec6 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8e1c454d comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x99df8eb5 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xdc4ce141 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xd4a26401 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f1815a4 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a195dd0 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f69ce31 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x680c7222 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x736a28b9 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x02b03ff9 spk_synth_is_alive_restart +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 0x3285a166 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 0x777911f1 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8470902a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9736caad spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa613f9ba spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb42d235c spk_synth_immediate +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 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe9d0e8f1 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf660d5ea synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfb706094 spk_var_show +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x4e84e14a uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x593d4a17 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd066cd48 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x2e494d8c usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xe0a58b71 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x814c0eb1 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x8585deda ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x71ceec3e imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x871def8f imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x961320da imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1d94d4a4 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x2284296e ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x522aa915 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x52f386bd ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x583f64a0 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf1b8ea9f ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0d1009a6 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x22d85404 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x40279000 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5abf0d1d gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6e267049 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x70374071 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x83d2221a gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x93fbb812 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9cb7182e gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9e3d2dd4 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa775bb18 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xadc61650 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdaf3d5d2 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdda4ecf3 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xfcebe4ff 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 0x5562de57 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x9685804e 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 0x3fe3f953 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x43ffa3f0 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x75992629 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 0x0ebb5d1f fsg_store_removable +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 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 0x5837d780 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5c7e0fde fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x67fa89df fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x68839118 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 0x75385f18 fsg_show_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 0x7fb8816e fsg_store_cdrom +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 0x9b665968 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 0xa166d796 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa2469e7e 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 0xc24c7261 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc938ca5e fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd2e58482 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 0xd5a5d67e 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 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xfda09cfc fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1427d41c rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2141d630 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2245393e rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2e95a949 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3a3cebff rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5708098e rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6eb2efbf rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x74d21078 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x838ad6e5 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x861f77ef rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8de2c433 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc01bbd34 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcdf7bb3c rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe0527015 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe4bd128d rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1e331942 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2abc40b1 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x31e70eef usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x357d4a58 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3d8b3a4d usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3daa475d usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x579346fe unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x611103c2 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x63f94d26 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6b92d1e9 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6c02b2f4 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7c710833 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8386c29a usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x860af4d5 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x86532c3a usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8e402442 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8e646373 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x98d80883 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xab6e6942 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc7ccc068 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc8679f08 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcbbe416e usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcf7cb753 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd39d5c66 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd455e4a0 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe3d64f6a usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe893d691 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xebe708e4 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfd731cdd usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3d5682cd usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4a81b150 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4f99344a usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x754f7476 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8fd2c456 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xab90ebd5 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb82aba70 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdb433ccf usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe87c2cb5 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf011c258 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf7df1eb8 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfb3472cc usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x09987158 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x67268d55 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x03f2c29d ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0b72509a usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x58676b1a usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x73ce0cc2 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8687eb39 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa212b1dd usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb21b28ba usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbd94ea41 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd005afd7 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0704fd30 musb_interrupt +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/phy/phy-isp1301 0x5b5909d3 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x5bd0028c usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x02df8b2f usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0611e840 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0b028f38 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0c2087e8 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1f873624 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x23ea1aee usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x355fa10e usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x415ec7a5 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4a609fe4 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4ddcb210 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4fcb3c69 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x68acf116 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6a0fcf58 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6b8a52b6 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6bee3518 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6fc271a1 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x78fbe11a usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7c775ae3 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x89e9d953 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9ad8dfeb usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfae7e1f1 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x17df759b usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x24e3184a usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35d0781d usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x381e205a usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x52c81358 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5946f915 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59f1639a usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x68246f06 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6af9d0d0 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7b3e51aa usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7fb5ea80 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x85a6cc29 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x86816fe0 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8801f87e usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x916f34dc usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9caf1a78 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb1f55e2f usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb5fbb96f usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc6d58437 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xca57c3f0 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xce04ac29 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe11affc2 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed34ccb0 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xeea0bfee usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x127a906a usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x181d6fe7 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x22f2c61f usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2be0b350 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x63974951 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x85723226 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8b0940a3 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x93e69c15 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9b97fb82 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9dd95e2b usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf6624f4a usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf87623f0 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3e154da6 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5ef7f8d1 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x622d9bc6 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7dfdd7fb wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7f6f95eb rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc218ab5c wa_create +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 0xe647001f __wa_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 0x16f37d83 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2177700e wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x234ee6d8 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3af45768 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x447d3e55 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x46c39c27 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x537115dc __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x76720584 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x83e63181 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x85b04319 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb99b125e wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd14cfcfb wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe647b167 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf008dee0 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 0x0328890b i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x1d0fdcb4 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4cc3b1e3 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x011064b0 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0b4a3d64 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0f4fb6cd umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x1b8e46f9 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x62351728 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x91168429 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd11e6b62 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf6b2ad7c umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a4daed0 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0cb8b12a uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x17b8e108 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x258dd6e2 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x264a1178 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2bf3b455 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x31cd6ec3 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x36c1eca6 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x38aa9128 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3e1e0b09 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x462d489d uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x51e8c2f9 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5602761b uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e58948a uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e61c6ce uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6109b993 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d7aaffc uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7cfc51b8 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ddb609b uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x82d66a1d uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8376bf6e uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x86c0fab6 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8b357bcc uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f3c5ff5 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa0f32199 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb3cc6e3a uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb805fff8 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb9adad47 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbe7f39dd uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc209839b uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2519f09 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd4426b84 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0aa7a57 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe419aa57 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe833060d uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf40d4d7a uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfb60c8d8 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x416fb7ad whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x01aed5bd vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x08a48ca7 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x16f4297a vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2ba74990 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2c78d13f vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2e6b2784 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x336f15e6 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x46699fbf vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4739b752 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4e10adf5 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5ea7d94b vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7b684822 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7e1cc889 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9759866e vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9a652b98 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa13ecb91 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb026102a vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb429e2e0 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbc9cb75a vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcbccbe0a vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xce6ae2f9 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd84a9432 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe1558e91 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe236a1fb vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe65853c5 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeca6ccd0 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf6709f52 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf84457f1 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfef7e8aa vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x23ebbb40 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2b271134 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6deae128 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6e6edfb8 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa636f150 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xca18b699 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf11e4be3 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x119941e4 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2554b628 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x44370ed8 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4cee4f43 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5573b223 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x63aa4f31 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x787aa2cc auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x7a35573e auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9e94e944 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe7386d54 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xce158e7a fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x95036dfb fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xf3f51f61 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x09ed9550 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x0a9e1722 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4f238b96 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x55f57afd w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x67c61616 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x74579326 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8a011dbd w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xab31d42e w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xbc6c7264 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xeb34e78b w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xedfe24cc w1_write_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x23c2c648 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7d8fc980 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x8a454455 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 0x1d9c389a nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3d7b50c7 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x61e74c2e nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6e29bdc3 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x89daa0cd lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa36f6b7a nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa3804391 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00483ca2 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01496625 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a241ed6 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fdc91ee nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ff48dca nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x104d23e5 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16118cf3 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x171fdc56 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18dffddb nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1dfc242f nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e882357 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fa9ec0f nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2224163c unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f502eea nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2fa2c080 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x318b8241 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31feda16 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x327204b9 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35b86fae nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x391c06f5 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39316c7f nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ae9d5a8 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b22adc0 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3dd4b118 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e4bdd23 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e63ea36 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40d36a00 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41ec38ef nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45582258 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47224c09 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x489f09ea nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49bc0edc nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d019d5c nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51931f63 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59ddb9f0 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a694e4e nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b740a70 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c5b4f70 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c779ac5 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d190585 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x627c3ec1 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62d03771 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x688cf973 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68d152cf nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ec33250 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70ec409d nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73e0fd8b get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7524c1ab nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x753e2dc5 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76a0c0cf alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77ebd6a3 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x785368ea nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79c1f892 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79dcd78f nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ad890b1 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7cfa24aa nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83d63313 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8737d9c0 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b38bcf0 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c5b95fd nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e9211c2 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90918b20 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90dca593 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91366c9e nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9383d49a nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95cdce24 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96862f1a nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96d6d7c0 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x975f0626 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9787561b nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99a896cd nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ba50cc0 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d6a5261 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f585514 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f78ee73 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fca4145 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fd088af nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1983fae nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1b513e7 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1f064b6 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa412acac nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa723150b nfs_pageio_reset_read_mds +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 0xaac36ac1 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf2a23d0 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf3996db nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb02d2e6e nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb37ab242 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4929ec0 nfs_server_copy_userdata +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 0xbb16136d nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb672cf3 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe446612 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbff10c44 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc25d9e86 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc473ab63 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc48d707b nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4b253a7 nfs_fs_mount_common +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 0xc6bfc1bc nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca99033e nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc56013a nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce958d77 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd168f481 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd21dd3b2 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3de23d6 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd47afa83 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8cdb9f8 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9acd3c2 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda4a53d7 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdde1adff nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde52a86f nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe230680f nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2d7abf4 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe333c3e2 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5c7b76d nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6db72da nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8be107b nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec1fabf8 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xecf787a9 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed6a06c1 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee4944bc put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef725a8d nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf871cf0e nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfab00388 nfs_path +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 0xfd0e7ae1 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff0edb7a nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xb95af161 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x049c1c69 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08dc5cf7 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0bffdae2 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x155d636a nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x17ea16ec nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x18b73dbd pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d27d668 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22bddc4e pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2cb2c5e9 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c882d4e nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ce58556 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3de5ef1b pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ff0d198 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ff8e34b nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x419fe10b nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43b331e6 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x476c1350 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49beb310 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x53b8bdf5 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x541a87e8 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x55f63e53 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x64b116e7 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67dcad6d nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a2848bf pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6abc0972 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b8c60bf pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6c8bd192 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7fdd0744 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91fa159c nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x97ea6091 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a8fd0c4 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa5e5ca1a pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa939cd2d pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab3a11a4 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab6a70ba nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xad3758a8 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbda563e8 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbf00069d pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbfe36c07 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd06a2d4 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2bb6832 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2cdcf3d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd62c6408 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd739036b pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd905bbba pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd914c473 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe17eb950 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe18626d0 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe24806b5 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe2e31e2a nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe54dbead nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe67fe233 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe7d2115a nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf0b2ab21 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4614614 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd46f405 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd7d77ce nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xa173cdcf locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xfae2333c locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5f4823e0 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x7c2bbdec nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x080444cb o2nm_node_put +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 0x2ce94ea4 o2hb_setup_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 0x5ad115f3 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5dcd4a0d o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x61f2df6f o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7ab8ef56 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 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 0xfcafe7c3 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x10ad76ef dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1f7bc228 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5314005c 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 0xa79e0034 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 0xecfbc245 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfe81114e dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0ead5333 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 0x367d8bcc ocfs2_plock +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 0x5e5e62a7 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 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 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 0xaf38aa14 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 0xd22d7687 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xd424e0cf _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 0x6ff95b6a notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xc3d4038b 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 0x48cbcaf2 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x9aeab1ad lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x0dfd3a70 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x14c773da garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x99ff26f6 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xa059b315 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xa1715d4b garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xc76ffee0 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x4c77a830 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x608a918c mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x8238a28d mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xb46dd62d mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xbdd78108 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xe0c9fee8 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x6db64529 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xa3cecc4c stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x8566eb1d p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xf23e0231 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 0xd31ec73c ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x15e78cbd l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x169e273a l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3c1fa6b5 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3e7b611d l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5566835f l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc9941885 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xdd506fdd l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xdd93444c bt_debugfs +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x30a20f7e br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x33a72f3a br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x577767fa br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5c13553d nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x771a4062 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x780598ac br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa0781b7d br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa24887bb br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x396617e4 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xe3585256 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0ccfab1a dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a62d10f dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1aca886a dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2a1e0325 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x31a9fad7 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3306db1d dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x33b4c47f dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x357b8130 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3bfccd6d dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x46991c94 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4d103ed5 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4df3a9e4 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59281d94 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64294c15 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d87af1d dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7125b4d6 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7552a628 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7ad725cf dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7b945a2c dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fa35758 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fdb4444 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ad5ce5c dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e85d054 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97ecf575 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9edd522e dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb8fde859 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbdf9537d dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0c56102 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdc67b61e dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe0b448b0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe312d4e3 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe64e9b6f dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfea081d3 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x06885af1 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2f53dd59 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x35ad4a39 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb904c3c9 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd7f1b9ba dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd9365075 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x2a6c100b ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x37b788ac ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x7b796cf1 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xcf46a977 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x9c1b9a69 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xb981aeee geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xc3d46527 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x16438b33 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x7f221d61 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa862be77 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcc1356a7 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe00610b4 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2a7c766c inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x37285b80 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa9c2290a inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xbf42bd19 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcd82375e inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf6337d7a inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x070c3507 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x248ba378 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2929c51e ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2c5a1806 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3f271174 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x45bd5d34 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x90b3b35a ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x95d98165 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbf9228bf ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xeb7b16ad ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xece2e598 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf66f959c ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf7c8447b ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfee02cf9 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x14bc5966 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x02af5e43 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 0x3f9a9c21 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x5bfaa18d nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xbb2ef1a1 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xef743e64 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xf30edeba 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 0x97770d6b 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 0x09d9cb10 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x1cccab75 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x8090b74c nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x8b36632e nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x933d14d5 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xcf9e2c77 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0393bb44 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x31bf5c30 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x403b4834 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x89b03fa4 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x91766d14 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x0f377584 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x6aeb7455 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x725b7422 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4ad619df ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x59575439 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8eb64578 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd9c2a934 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xfd027cbb ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x1afdb58b udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x89314862 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x4054cf3a 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 0x3968879b nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x6ef0ef94 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa08504b5 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xd799ef14 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf55b7f45 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 0x645d34a8 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0e5c4710 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x22d6894f nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x9bee3b13 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xda30f40d nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xdf5c93fd nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xfbc93a47 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0ba2361d l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0ea042bf l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x14096c60 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1a098e26 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1e18d0ae l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x22fcf27c l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2e70a3dc l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3043174b l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4846d7a6 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x50e6fd62 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5a80f1b9 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x67524664 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x72390efc l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb6031d9e l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd16459cd l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe0e45740 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x1d61a41e l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x02889d2d ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0946d0c2 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x15c246ad ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x218d6453 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2a689790 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x42773b87 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x55b12fec ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x68392deb ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x94c261f2 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x96b23a35 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9cf79380 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa6ec7e11 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb814590c ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb8e4e743 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd009ab69 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdb928a23 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x017e15a3 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0abc4f3b ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x34d1283e ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3691de90 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x420f7496 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x451852e2 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4b21aa19 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6823d19d ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2a034a7 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xabefabf7 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xce4413c5 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe4984b0e ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe9695cda ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf36dc3d9 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfb88fe08 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfea7ac63 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8aab0718 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa7db2015 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xcacfd0cd register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfd3723c2 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0436e285 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0617fd1f nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06a42d19 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0730827c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ba88bb1 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bdfb671 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1167fa59 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x117c6f2e nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14d54813 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x152008f3 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1609294d nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x169c4f8e nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18e4b795 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b6000fd nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1db15f88 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e0b0c8a nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e7d1bdb nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fa53437 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2047816b nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x21780bf3 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2521f549 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30f63b1b nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30fc6b33 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32457bde nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x399ee933 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39b8dca4 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d186d20 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4962b5c5 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e1f1461 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6220f7db nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x628bec79 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x681a5854 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68e5c76a nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a97e9aa nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6afd7a9c nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6cfbaf1e nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7349577f nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b54d747 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x891d8d7f nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8be5abee nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ca7bc6c nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f2904ba nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fe1eb8a nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90294b3a nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90aca9f1 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93d96958 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95019292 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a85793a nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c3a120c nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c8447e4 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa14b32a9 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa8e163a9 nf_ct_l4proto_pernet_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 0xb4bc554f nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb956b322 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba2aa066 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc737940 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd1f42b6 nf_ct_timeout_put_hook +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 0xc57092d4 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce7c9f9b nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf3fd399 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd22b8350 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5569fe0 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd94eceb0 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe434d4b2 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe435f8a2 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea2ee787 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb3aabf7 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedee6a17 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeeddb2c0 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf03f4981 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf06cb900 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4d685d9 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfafd3f4e __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc885490 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfddd7908 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe8bbfc3 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xc516a741 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x6eb43965 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x2edc0c1c nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x158d2538 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1ac77839 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x276b3a31 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x29b4b062 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x600bc33a set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x78fc7929 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x813e3750 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x926a16df set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9eb396e8 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc707a9d8 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x9af606b7 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x39aca00f nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3b9c15c8 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x80fb6a2f nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xada19ed9 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x17a4df2e nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xc717c76d nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x04295a73 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x07020ec0 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5973cc0a nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7115ae38 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x82d4dd20 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9b8126b5 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd6db0b20 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x59b76459 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xbd703df7 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x06cd7d96 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x44a20914 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x680ea4c4 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf9357d51 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 0x16f68839 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6df8a7f6 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7afd1245 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x878ca3b0 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9d67eaaf nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xce20f142 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xcf6eb87d nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdfba6901 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe5753e00 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x18e429a0 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x1ed6a636 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 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8fc33d8c synproxy_parse_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 0xb5787250 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 0x21eab083 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x23988f97 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4b649b5f nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4ce4569d nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x650db3b2 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6bc6a517 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7303fe61 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb55ea10f nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb6cd24d2 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb8262971 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbdd897cf nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbfe135b3 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xca0dcda0 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcc8a7cef nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xce415c37 nft_unregister_chain_type +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/nf_tables 0xf59402db nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfc4c9946 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3bd75f21 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x40a248ef nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x52de036d nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7f99869f nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9e403881 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa72a2f66 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf76169fd nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x9832671a nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xc7167bd5 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x0ced21a8 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x2b72d11d nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x944c0601 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xf8d6c65a nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x0f46414a nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x442bc0ed nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x6e70fa79 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb8538ead nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xdb6288fb nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xfcf4f22b nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x6bdf3025 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x7e20a1d9 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x8e34be4b nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x77f70f27 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xc46f8bd6 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 0x323f0591 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x511ccd9c xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x629d8138 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x785fafc2 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7b8e765a xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x83181ac3 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8bb855fc xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x974cb73c xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x98d73cd6 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa1405dbd xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xba62a4d4 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc71bc2fb xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdacd4879 xt_replace_table +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 0x0bd1ce80 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x46dccf0f nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xc1bc4450 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x69f3cb98 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xa43e3613 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xf16ffb42 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4237a9eb ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x50715fbf ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5ebd1a06 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x675e1fa7 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x724abef7 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x750aafc0 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb96ca6cd 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 0x11cc3d86 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x14dcfa22 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x1c43cc77 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x288d1fe1 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 0x417a43ca rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x459e8354 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4f4277df rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x52403dec rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x572d07fe rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x5f53e76b rds_recv_incoming +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 0x762422fe rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x7c112696 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9a38479d rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x9e4482ce rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xa91526bb rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xbfc70522 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc3b1f07f rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xd5c8cfa2 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xd9d1ac3d rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xda05a720 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xdecea1cc rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xf881d6d8 rds_inc_put +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x882e85b7 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xb6ac8432 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 0x0d08df07 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 0x9d0aa16e gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xaab56d6e 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 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x013f602c auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02678c74 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0350f650 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04675660 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04ebe20c rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04f1c09f svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0586186e rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06380365 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06c601eb sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0914a799 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b377a08 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c568803 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0eb01cba xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1485b802 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1683a44c rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1699785a rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17694a7f xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177f19b0 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18dbd3e3 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a4c621a rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aabf314 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b389c9d xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b4018c6 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b8c3f7a rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22fb8177 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2517ebba rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x260b8b63 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26c11f9a svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26c2bbe9 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27ddffca xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27ef6384 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2855f244 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29562ff5 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a98f613 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ccceaf8 rpc_clnt_swap_activate +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 0x31352dde svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x319e93ac svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x343260ea csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x348093ee rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34923977 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3506e5f3 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37ea50e1 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3877976a svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38e37204 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ae71e63 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ba1ac2d rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3daab849 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fae5d74 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40acf66b svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x412db780 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x433d9383 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x439a3689 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x447c90f2 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x477a37f7 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4833c87a xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x487b2822 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x492941c1 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a29ee02 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a80b126 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4babcdc9 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c116197 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d5695b6 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d6052ba rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5017b985 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51cd228d cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x533b05a8 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558fb5bc rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5613476b sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57129fb7 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57ddb99f write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5908b24f svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bd71dd1 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f5c39fb sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f909f1f svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ff6b3a3 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60662004 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60665f50 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6080e973 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60cc925b rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6282f500 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65a7a23f xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65aa6958 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a492506 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cab05cb gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d3978fd svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d579603 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72b3ebfe xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74c62e39 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7505013a xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x786ea264 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x793842ec auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79a15dd3 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ab8d566 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c2a7160 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f197e96 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f2f4ea5 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81053b14 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81880770 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84284701 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x860c0df6 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88e478db cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cdfad47 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ef28f7d xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f9991d5 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fbb36ce svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x905175d5 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x905708c6 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93512932 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94914d30 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96f48ebe rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x976dd84c rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b4baab1 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b65dbb8 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c175544 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ce421d2 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa04af1c4 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa059bfee xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa09ac747 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa12d834b rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa36a1166 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3c46868 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6841386 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa746e282 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7ad4a53 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab37254e rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacd79760 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2f37b99 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4627816 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb61008fd svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6a5576b rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6ceb209 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7c982ae xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8751722 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba1b6f4a xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba6792e2 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb543326 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb669e69 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc646bd5 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc91faa0 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcb25827 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbda86b75 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbea5382c svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf1485b1 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc008890a svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc106edc4 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1881121 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc34fb8ca unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3efa77f svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4802a60 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc568d65e rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6c1c7fb put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7518e17 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9f2e84b rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcaf0bc86 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb18f659 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc1a8eaa xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce388aa2 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xceafdafb rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd343b6e5 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4cdb07e svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4ef82d2 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd613b6f5 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd923f124 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd88ebb8 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdef95b3c rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf216a26 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0170f1a svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1cf92df xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe317d51b rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3b6bf57 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe66d06dc rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9201235 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9e93459 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb468305 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee98619a cache_destroy_net +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 0xf0d9364d svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3e7b07b xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf64f7870 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6e2bfdb xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7286b76 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf83c11dd cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfad1e9cd rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb532e40 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbadc730 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc598a5d xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc8fffbf rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffd6eca9 svc_print_addr +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 0x359d9572 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x48953a96 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6351fa09 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6797f7b7 vsock_insert_connected +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 0x75a1a949 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9b25a324 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9f0d9fc8 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb581afd5 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb6443db3 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb8cb3647 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbe1f466a vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xde7ae02c __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe24ae61c vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x112ba740 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x14408dbb wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1c8bd01f wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x264e2be2 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x65e19df8 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7ea20dd9 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x89c2d9da wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8f9647ea wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xaee0a545 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd63cdc21 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe000153d wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xede9b856 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfcc30769 wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x04cb3c90 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0e35d980 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x230fbeeb cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2874e363 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2a9a1fdf cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3064f4dd cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x43a1578c cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc1e1f638 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcf0f2dcd cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd03a3346 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd2022b73 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd9c1ebe3 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdccd12e9 cfg80211_wext_giwrange +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 0x10cada2b ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x2dee76d0 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8aebf6a7 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xefc4ab03 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x335f8398 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x34ea77b2 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x3b5d1df0 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x5c549463 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x6a9fa8de aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xa042eb02 aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xa279a9a4 aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xa500cb02 pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc8360551 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xe0272f1b ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x0bd45fd6 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x3be31610 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x786e6561 soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x85c67549 soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xc5ed3ba3 soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xd4bb63a5 soundbus_register_driver +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x5ee839a4 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xf217abef __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x03bc2446 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x0661139e snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x3fc65c36 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x6a9ba53a snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xb1fdfd69 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xb2cb0736 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xed01f4b2 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x327f7545 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x443e6287 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xc510d8bb 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 0x16763aae snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1a43b66f snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x34e6f281 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6fe27440 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x72238ae4 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x734433d7 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x89060282 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa5592549 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xca8f6cb7 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1ae41250 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3201410d snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x35bfd70c snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3c942092 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x471a975f snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x89473181 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9cfa7a23 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa2899ab0 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb39fa8da snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbc94b0cd snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xdd6765c8 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0076c29c snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0160e8c1 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08ed000c snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x10b2ee17 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x14d8e436 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x15070319 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e724091 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f1d42bf snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x22e708ab snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x38af4f81 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4290c9df snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x47fc95a0 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x492b19a2 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4a06bbfc snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b08909f snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b6f322d snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b8d9a88 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c24008e snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4e055c80 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4e200217 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4f1ce26a snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x545d13d4 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x56f12388 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5a4c9847 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b035e3e snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6252b882 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x628f683c snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6b25681b snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6c684bbf snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x727bec37 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x740d0dd6 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x74c9b064 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76f1ca2f snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x793d14f7 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7e4cdc12 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x873b4e34 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x893177cf snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8d908346 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8dff25cc snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x90457f32 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x915098e2 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x929fe13e snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9b7ffa46 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d344cf6 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa941864b snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb0f9454e snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb2ce6695 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb9005023 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbae55642 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbff54beb snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc58747d3 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd3b00608 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd5314f8d snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd6300688 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd8497c96 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd878d718 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd93a172b snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe0193780 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe062d490 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe196762d snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe8761c35 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf232f2e0 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf8c2bebd snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf9a664fd snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x270e78c6 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x5c2b9218 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x684f5540 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xabfa0791 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xee3d7b94 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf6054007 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00466520 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00c97805 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0123aba9 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05942bf4 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x066f18bc snd_hda_codec_new +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 0x06a8f109 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07580ca4 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ae57d51 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b73b57f snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d8a7aac azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0de6a33f snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f0c286e snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13e7268f azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15750a4e snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15b55ac6 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16ab3b5f snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16ed05fa snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17797d96 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f292aa4 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22f74b61 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25d70601 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x284bc492 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x294d89c1 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29fa8763 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c38958f snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e21a9da snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30f6a83a snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3121f13f snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37724d25 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x384177ef snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3af887d2 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ca3042d hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d3f877d snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e7c3d83 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x405d79b6 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46b89f14 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46f1d737 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4747e8e8 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49028970 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c9c30d5 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d8970e9 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f565fc4 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50fad2ae snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52b5a5b2 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54e2d42a snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56a0d43f snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5923f842 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ba70802 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c6107a7 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d493939 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fe7b194 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x612f094b snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61670368 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6469937d snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6494357b snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6cda3c21 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6daf58f1 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e428f37 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f07f64f snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f4de567 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70accdfb __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70b5e3ae snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72d3d309 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7537b04c snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dff141 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77e662c6 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78da59d4 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b31da7c azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8141a075 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x872a803a snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b1be3fe azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b1c8616 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ce9e8f9 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ea5e63b snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8eb4df83 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f67620f snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9264fd89 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x944ca181 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9adca8f9 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b3df724 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e44ec05 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e6f0494 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e725346 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa04df099 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0c5c642 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa183bc33 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7949d65 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa897b547 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9bedcff snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac0035c9 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf5d7776 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafa85d8d __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1274863 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1d80d0d snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb41e9238 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbaf2968a _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc8b545e snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc14b9afc snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc219063d snd_hda_codec_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 0xc8fb7237 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca20aff4 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb1ecc43 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd67f57d snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce7f2d4e snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd37c6c43 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4df1a26 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd75d0192 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd94be16e snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd98974ea snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdcfea393 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe232109e snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe464e85c snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe475e8b6 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe47e4a8f snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4e905ca snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe58ccc46 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe648a5c3 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef2ae098 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef6fc692 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3ed9603 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4d98651 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf65c6a16 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9a6c04b snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdacd06d snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe832efc snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x08a6ab27 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0eb966e1 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x20a15757 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x272b9079 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x28c609a3 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x38962710 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3dbda62e snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4dc68de4 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x535e2f60 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x55fc6c4d snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5632854f snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x61f0dd9a snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x63f4e9cd snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7c5f57b1 snd_hda_gen_stream_pm +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 0x90d4825c snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa33cb437 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa958d66f snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcb2ac427 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcd9e4eae snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd3571bdf snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfb6684a0 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x71b3651e cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xc129fde9 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 0x53903fc1 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x5c7e3306 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x753e164f cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x8fe6dbd3 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xe50b1e7c cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x115abcfb es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xf193bdf0 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xa13585cf pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xa6c1b558 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb97d1c8b pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf6f79ec4 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x356e7555 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x37d835dd sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x38558d62 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x72a17e2b sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xbd17558e sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x480854f1 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x46486284 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x8d3b4055 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x16ebbfd9 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x418e991a tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x2010b557 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x295e0cb5 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x5b1ad147 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xb52c65e4 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc98d7f49 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x77899128 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x06ca476f wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x22c794eb fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xa98d39dc 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 0x01a3a894 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x024a2ef5 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x033b1cda snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04259f01 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x048fa26a snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04b46814 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x058781ed snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x060fa38d dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06a19e91 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09f0d9d2 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a3295cb snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a854d54 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0aaf134f snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ac678d1 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d2e621e snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e2f9df7 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ed3b032 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0eff94d2 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10ac2d23 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13e23993 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1472a964 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17bc997c snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a24b9c5 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c5a0b37 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2418e9d3 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26c42e22 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a3032f2 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a871035 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c45c9bb snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e23d5ce snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e51b4b1 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32af88e0 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x351ba505 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37a1fd4b snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3905e027 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a942d38 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b8b4d4a snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3cff3ac1 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3da167ff snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x402802bf snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45ccb150 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47cd25fa snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b11517a snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e9831f8 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f601f73 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f7a5b83 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5070910e snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54163fb4 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54a51c9d snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55bc8bbe snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5868e621 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59934871 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a0a65e2 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e2c693d snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e504974 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x601d74ba snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x608a1429 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61356008 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63a2ec1e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x653c368a devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6547df24 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x661f48c8 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69a61a5c snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c8e945b soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ce4f887 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f3f9511 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x708cb6f2 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7152bd5c snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72ac9ac5 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x741e6e92 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77e0b9ca snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7990b430 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ad14706 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b0e45e6 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 0x7f659dfb snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81a5e339 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x820ed57a snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x820f4da2 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x825577d7 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x838bb164 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x884731bb snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8866e330 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8aca9af8 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b644bbf snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c1deb7e snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c7683e5 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8eb79f94 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92b0a55d snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92f627d5 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x931263f4 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93432d48 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x936adfad snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9693e9aa snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96c37bbd snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97c2a86e snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e0d25af snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ff71c0d snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa28f0786 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa429a54a snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6a65aaa snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa87fcff3 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8f6d09f snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac6ab185 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb18d4d89 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb52f3f37 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5c4f56f snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6d57b1b snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb80d4013 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb891704d snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9dc3934 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbacff317 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbce9d261 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbda1222c snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbed70edb snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc03e9286 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0ba8925 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc32599e2 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc50cd516 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc844b4d3 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc91f9368 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb26e563 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb798477 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccf6708b snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce2cef71 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd96cdfbd snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd9b37fd8 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb4276ae snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe1ac4188 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2accfec snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe35c7a83 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe41df03b snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe537cee8 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe58cc4bf snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefd39ad2 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf19c3c43 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4548e3a snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf52b109b snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5ef115a snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6a60d8c snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa2770b3 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa932e7d snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfcc6273f snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd78664b devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdc127b1 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe5910e1 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff8bca5e snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x08da7b57 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2e861c36 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x37a4735c line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3cd37820 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x55e560b7 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 0x9290f72d line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9338f65e line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xad917123 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbdf7aa0a line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdb057a2a line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe296ffa7 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xebb0a184 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf00c1307 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf440a8b0 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfbfe4242 line6_version_request_async +EXPORT_SYMBOL_GPL vmlinux 0x001889b9 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x00326e94 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x003e5d1b scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0066498a virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x007915a6 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00af24fa pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x00b7a9b6 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x00bb5255 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x00bded35 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x00c44828 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x00ca61c3 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f6b3a4 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01042819 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0157ba61 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x0158e63f regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x01657500 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x0176cb92 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x018f567e devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x01918e93 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01a5dba6 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x01b9eb36 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x01d6b6eb gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e408c4 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x01e42e1e sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x01ea56b2 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x021e356b phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x022181a4 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x02c3b63d blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x02c3c4c4 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x02cfc10a virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0300d6f8 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x03193d75 kernfs_put +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 0x0346a1b4 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x03470e36 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x036fbe03 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x0383a728 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x0392c1f5 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03fa4e89 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x04154e4f of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x04205055 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x0421f911 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x043e9d70 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x043f2e2e pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0x04576196 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046a1a03 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x0472e39a __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0494488e posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x04a6d200 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x04b1b0f4 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x04b4bfa0 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04efccd8 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x04ffa116 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x051a45fe queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x051ff4c0 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x0530d6b5 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x053be340 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x0544bf5c devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056f743e sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x05771889 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05995f42 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x05a7bad2 device_add +EXPORT_SYMBOL_GPL vmlinux 0x05b400ea ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x05c401d3 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x05ccdcb7 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x05d1dd1e apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x05e90931 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x060107e6 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x060efe03 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x061be25e raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062dadcd rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06b1b300 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x06b42045 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x06fd6b20 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x0713eb93 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0765f8ab bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x07822587 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x0797efc2 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x079a87ae pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x07a2144f platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07cba6dc dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x07cca2ad ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x07dbbf4f pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x07f34abf inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x07f576ec tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x0811f078 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x0812ed56 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08164327 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x081f0572 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x0825d39c sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x08342a04 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x083838de rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x08484f19 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x0855894b check_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x085641ee class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x085a584e crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x08710156 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x08ad664d ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x08eabab2 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x08f565d5 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x0902ea6c udp4_hwcsum +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 0x0944a775 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0979f93f unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x097f08c7 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x09e28609 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x09fb652c dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x0a121462 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x0a3a518b ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a8dfbe2 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a923fd9 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x0ac19de5 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x0ad8270a blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x0adfcb17 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x0af90913 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b01c973 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b294f03 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b6a74dc bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x0b730106 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x0b91f3a2 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x0bcd280c sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c08b063 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c24d388 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c5cd1d2 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x0c61513b crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0c62e05c __put_net +EXPORT_SYMBOL_GPL vmlinux 0x0c7beeb5 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x0c7e1791 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x0c961cb7 pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x0cb2896b tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x0cbcee98 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc2381d vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x0cd18c20 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x0cd98acd blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d59208f devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x0d62d92b ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d9dcf87 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x0da2e317 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x0da3adcf tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df14865 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x0e5bde26 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x0e603598 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e639b4b usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0e65d70b dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x0e95b731 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x0eba3afe pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x0eba411a crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x0ee68c2f driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x0f11c7b3 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x0f222670 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f353532 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0f6471e9 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x0f74dc7b spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8a0e25 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x0fa6fe54 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fd16821 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x0fd44787 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0fe54058 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x100d81ea trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102890ed unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x1037a965 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x104b637f rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x109526e4 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x10a2fbf6 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x10ad6bd6 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x10d2b963 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110c46b5 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11242885 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x112773ae regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x115660d9 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11bde7a5 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11c3d9af platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x11d000fc da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x11d3e880 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x11d61330 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11e05fe0 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x11e2db70 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x11e86d92 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x11ff38be ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1231c0f1 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x12369b70 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x124c532b led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12628e6a raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1272fecd __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x127a4c39 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12f95b7d pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131ad963 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x133d5a58 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x134e5d5c inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a39d5 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13836c60 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x13972a75 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x13a9e081 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x13bd5637 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x13d45084 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x13d5c7f6 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x140c5459 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x14476f14 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1447d9ab transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x145e02f0 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x147919c3 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x1479ba4d dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x14863744 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x14fa1167 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x14fef340 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x151cc189 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x153220f6 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x1545f729 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x155294f8 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0x156b5d78 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x15761264 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1595a925 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x15b56f8f tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15d23934 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x15dde85b pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f759d3 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1626571e perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x163c3f34 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x1648ff70 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x164f5ef1 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1670fab4 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x16885b19 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x16a55ce1 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x16a8c866 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x16ac0675 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x16ac39f6 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x16b174d3 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x16d0e750 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16e031e5 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x16f524c3 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x16fb6713 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x170b000c devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x171f5d62 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17db0bbc usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x18087cea usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x181b3836 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x181be71d gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x18299a09 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x1845c4bd bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x185e1bf0 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1891da7c gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x18b83690 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x18c1466d da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x18d01285 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x18d87c05 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x1902dfa7 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x191cb791 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19564b00 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x198aa53e security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b3c74b sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x19c2cf7f trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x19f5ec92 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x1a040127 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a2605d6 pmac_backlight +EXPORT_SYMBOL_GPL vmlinux 0x1a5720f4 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x1a75ed6e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a8de74a ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a9dfac6 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x1a9e5fa0 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1b09fa29 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x1b0bc9c9 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1b1d390b dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x1b2f28a4 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b542282 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x1b5556c6 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x1b825882 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x1b84b91f dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x1b90bd4b pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bce6ed7 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x1c035a70 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x1c205da4 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1c3b1fbc ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x1c3f4ad5 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c566469 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x1c596c22 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c6efc90 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c9fbb32 pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1ca20eb0 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1caf31e3 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x1cd06728 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x1ce37d22 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x1cf6d262 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d188eda crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x1d2d0135 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d96949e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x1dac2b85 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1dad7f86 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1db5698b pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x1dc1a418 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x1dd41a7c virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x1de006a7 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x1de2849e blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x1de709cc rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x1df28e10 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e496771 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x1e4d5f30 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x1e51df6f watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e9578c6 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x1ea7d5b1 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1eee98e9 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x1f1759e6 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x1f317b2e gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x1f54a2ff rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f943a4c irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x1f9a67a1 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x1fa0f9ad ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x1fc92529 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x1fcb30a1 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x1fdf9957 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x20428d65 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x2049bab8 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x204d5791 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x2082efd4 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x20a33c2e devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x20aa4630 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20adc43f devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x20b58c4a pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x20ca1ee1 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x20d9af27 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x20fc2837 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x2105ce3c pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x210b6fb0 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x210ef3a9 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x2119c897 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x2172793a ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x218a3781 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x219c7ffd dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x2206c6cf __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x221c73fa usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x2225caea register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x225bb5c4 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x2267c4a5 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x22693cc1 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x226b439c sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x22745832 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x2278fa87 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x227a8955 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229dfe96 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x22f21333 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x23549e58 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a710ad ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x23a98cd0 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x23b8c37c bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x23bd4e35 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x23cc2786 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x23cfa2a4 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x23df6e03 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x23eeeb44 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x23fe4c3d ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x2406dae3 pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0x2411816f wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x2431b85c extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x24488e5b unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x24659168 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248aa28f page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x24937daa wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24e71b95 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x2519be21 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x25203d33 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x2562dcb0 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2565a8e0 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x25734918 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x258b5bf0 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x2590a904 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x25b499b1 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x25be3706 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x25c03819 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263d72a6 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x26419fa9 ata_do_set_mode +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 0x2697f02b gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x26aa905a devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26dc6c6a ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x270223b3 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2713a1a9 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x2730294c rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x2737fc5c crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x275cfb95 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x276891be ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x2777816e crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x2781da72 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x278f7c66 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x27adc28b dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x281b7c17 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x285ec0f9 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x286057a3 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x2867cb26 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x286d7bd8 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x287a5ba7 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x28923531 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x289e06a9 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x28a31bbc pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x28a4d3d6 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x28a86ae8 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x28ca20b1 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x28daff8d tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x28ea6b34 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x28eba578 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x28f33f6b blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x28ff2b8d platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x290452a7 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x29174f9b tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x293a9dda serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x296aa525 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x29b40558 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x29cd0c34 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x29ce735b pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x29d00ecb device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x29ed0e75 pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a06cc7e ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x2a2dc781 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x2a3a7328 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2a471b5d debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x2a56a7f6 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x2a56acd7 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a9f070e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2aabae7e wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x2acf4ea0 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2b10572a ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2b1077db pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x2b4f836d register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x2b590b28 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b8f4b25 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x2ba6fd15 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x2bda09d1 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3aad4b rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x2c4ca002 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x2c59eb10 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x2c650658 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x2c6c3c34 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c83e150 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca25a10 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2cb37cb2 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x2cc32ef8 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2cce5341 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cf04157 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x2d0e2d85 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x2d0f67f9 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3e6bcd ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d7d06fb spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x2da22c23 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dc86557 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3466f7 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x2e4d46fc pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x2e684659 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ecbe966 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x2ed09d17 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2ef9d01d ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1f20b1 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x2f3c84c4 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f6fc552 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x2f91bbb4 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x2fae46ce spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fe13422 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x2ff7f5a9 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x3000dad0 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x3018e7ac tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x30222b1b adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3036fb2f tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x305ccc76 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x307fb4e8 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x30842501 lock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30c1e8bc init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x30c32c81 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30ea5e2d __class_create +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311b029b usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3128c664 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x31305a11 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x313ee665 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x31617ac7 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x31941aa6 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x31bb2a45 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x31be4b2f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d1ab66 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x31e03769 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x3206b307 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x322e8697 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x32429fe8 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x32559900 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x325d1a30 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x325f90d2 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3274a28a fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x32779b8a fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x327afa8f xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x327f9478 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x32837bf9 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x3292ca59 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x32a24918 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c56790 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x32f9543d mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x3313fe5e devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x3316f066 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x33348c0c ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x336a39ae ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x3377b810 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x339650f0 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x33a6c4eb bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x33cec12a fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x33d0e736 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x33ec5bb9 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x340d5346 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x340d57a6 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x3452b1e6 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x345545b4 kobject_uevent_env +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 0x348b46ca gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x34a70ae1 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b4c870 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x34bd3df2 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x34d5acae md_stop +EXPORT_SYMBOL_GPL vmlinux 0x34ea9bff ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x3519499c component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x351e9ec0 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x353e7030 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3542742d ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x354bd511 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3587b27b tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a432b1 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x35c0afd8 pmac_backlight_mutex +EXPORT_SYMBOL_GPL vmlinux 0x35c36a59 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x35cf2499 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x35d7f246 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x3606f75d fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36299049 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x36584580 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x36783d58 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x3685865c __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b7e264 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36dba195 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x37011259 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x370a33be device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x3712cd60 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x372d3bc9 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x3756b806 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x37674688 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x37684826 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x377b52e8 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x37aec002 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x37c1b89a fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x37c79f72 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x3800474b ping_err +EXPORT_SYMBOL_GPL vmlinux 0x3805a15e regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x3850adae crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3857eac3 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x386194d1 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3899490a system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b029ea regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x38b8c1b6 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x38ba9328 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x38bf13f8 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x390bf88a device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x3913be87 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x391c21c5 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x391dcd9e regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x3928bd70 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x393eeeee get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x39465f48 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x394eced8 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x396c4567 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x397af851 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x397e1e65 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x399a0414 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x39b736f3 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x39c3b721 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39cc8cd9 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x39d781eb tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x39db1b2f __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x39e17367 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a0214e0 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a3c29dd netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x3a42f738 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a767689 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x3a7fa47e hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x3a8ce467 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x3a8debf1 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x3a987cf1 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab77bea kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3aec4aad rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x3af89e37 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x3aff30f4 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x3b03a63c do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b354d81 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3b3b88fe inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x3b4a3d12 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x3b52cc55 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x3b61f699 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x3b6b0bb1 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x3b754f98 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x3baac555 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3bbe4c77 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x3bce0b60 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x3bceab1a arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x3bdfbaad skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x3bf053aa evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x3bf648bd sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x3bfa8dbe device_create +EXPORT_SYMBOL_GPL vmlinux 0x3c0ea074 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x3c2748d0 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x3c39a0a1 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x3c499301 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x3c7cbd64 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93db91 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x3ca1468a devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3ca5b69a rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3caa025f devres_get +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cbe7165 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x3cbe9efd power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x3cbf086d of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3cc4cf3f phy_init +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd0f774 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd77e8b arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x3d1223b4 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d4fb09d crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x3d59e5c8 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d861eda crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x3da81db2 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4cd72 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de5619d pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3def64fe sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x3e07a69a regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x3e13bf9a regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x3e13d8a3 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3e300b04 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e3c17ec usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3e42acb4 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x3e544330 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x3e5a1e43 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ea70661 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3ec1d76b pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x3ecc3016 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f07bb9d percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x3f0ac495 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x3f1cb321 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x3f359f0f iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x3f53f91f crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x3f544aa0 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x3f7dd81a of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x3feaea8c fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x40128566 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x403c132d alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x403d3127 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4050051f usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406b33a9 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x406f7481 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x409d3a4f driver_find +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b09b1b blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x40bd01ff ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410eb301 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x41187383 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x412ea24b usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x4147c228 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x4170212d pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x4171aef2 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x417dced0 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418ca6e3 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x41a9a1ea irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x41b2b9d1 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4217ee71 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x421d9810 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x422b428f blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x42341b72 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42354898 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x424d0039 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x425a1734 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x425d6a4e xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x426aec51 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x427a066b trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4283061b tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x42aef5b7 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x43078f62 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4313f6a0 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x4323b585 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x43244c56 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x438b104b rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x438b1a9f devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x43a1df38 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b10bc4 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x43cbbb2a blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x43ed1274 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f9faa0 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x441b6687 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x442dd3ae get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x44431709 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x444b2a2e trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x444f2ab8 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4454d17c crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x445e39da da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4496e3e5 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44d89e1f key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x44dedb8c wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x44eff47d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x45368d3e bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458bfd46 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x45ac5f5e fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x45ad9eed clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c4be9a devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x45e58f1f of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4616a348 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4618a6f5 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x4623b0b9 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x4624cd66 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46647034 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x46661bda trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x466b6c1c bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +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 0x46addbd1 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x46b1fd57 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x46be679e get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x46be840f usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x46ced026 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x46debe7b irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x470b3fbf sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47232431 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x474c2231 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47728513 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x4783f4b3 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x478576f0 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x479f49aa regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47c38b97 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x47dd16a6 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x47dd8542 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x481f666f ping_close +EXPORT_SYMBOL_GPL vmlinux 0x4848bb88 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x485493cd hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x48553a33 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x4863dd41 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4881d184 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4883473b blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x48b55100 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x48e4a418 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x48f85bb2 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x490fc89f debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x492bce88 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x493dc72b sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x4943a338 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x49574da1 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x496123ce crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x496babd0 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x497315b4 pci_restore_msi_state +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 0x49afddfe crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x49b2d25e regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x49c973e4 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49ed2446 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x4a2547c2 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a2b9f73 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x4a3af7fc mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x4a4eff5c request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x4a6a7c8b __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4a776f1c irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x4a8aa7e3 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ae666c9 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4b2c4553 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4b761997 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4b82e4bd posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x4b84b470 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x4b905baf ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x4bd259de regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4bd87cfd max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4bf933be dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x4bfaa44a vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x4c0956dd mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4c15578a spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4c22acf2 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4c266ab1 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c625bef wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4c6a61b1 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c8efcd0 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x4c9b6acf task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x4c9c74df of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x4cc75fb8 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4cc9d110 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x4cca5037 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x4ccecce6 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x4cd270e2 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x4cf0c5d4 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x4cf89447 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x4cfcffe7 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d28e012 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x4d45b73d dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x4d783107 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x4d993102 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x4d9ac31f handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x4daba52e crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de953ce lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4df1da50 dev_pm_qos_add_notifier +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 0x4e618f9f of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x4e6838d8 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x4e8a349f device_del +EXPORT_SYMBOL_GPL vmlinux 0x4e9525b0 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x4e9ffec5 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x4ea2a20a crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x4eb02cf7 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x4eb6397e ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x4ee890ec ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x4ef46897 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efb4500 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f03539f __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x4f2f9886 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f2fe173 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6a9059 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x4fabf8dd ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x4fbebb62 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x4fc7e089 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x4fd06aa3 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fde265f of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe3605e rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4fe73ab6 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x4ff8deb3 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x5069dc74 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x507209a4 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x507596d8 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5093f747 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x50954257 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x50989828 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x509b6e06 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x50b64d07 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50cfc7c6 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x50e449a7 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f3ea1f class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x50f91740 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5102a233 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x511d84be irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x5120d578 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x51362060 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x51467922 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x5159b28c __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x516be00d phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x517e572b bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x51805b6d do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51b8854c ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x51c659a3 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5212cc45 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x52232a56 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x52291a4c fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x522f0a85 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x524e9733 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x5260eb1e devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x528faf5b devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x5297ca9d device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x52c0d5d8 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x52ce55d5 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x52f9a20c ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x531ad28e __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x53271987 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x53544894 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53aab167 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x53bcad1f usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x53d06fc8 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x53f01412 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x53fb5e19 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x5401a25f subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54435b30 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x544761ea device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x545a310e i2c_for_each_dev +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 0x5476c827 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x547d4f2f usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x5492a182 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549d2874 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54db1aee ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x54fc44fd pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x552e5789 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55557eaf bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x556fe8b7 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x5573dcd0 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55811c29 of_css +EXPORT_SYMBOL_GPL vmlinux 0x558df6a0 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x559755bb pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x55aae54f relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x55d3f1ac save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x55db6f20 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x55eb77c6 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f51ef3 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5666234b ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x568e3dfa kick_process +EXPORT_SYMBOL_GPL vmlinux 0x56b3c539 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56b79811 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x56c5470d regulator_disable_regmap +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 0x56f67dd1 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x57046430 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x573cc6af pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x574f8a9e __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x5754601c wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x578359f5 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x578c0604 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x5799260a sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a1a59e fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d7089e fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x57eff0e5 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x57f09697 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x587b1975 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5893bab1 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a9e9ee usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x58b282ce __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x58c52705 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x58e68242 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x58fcfa6a dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5918b76b wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x591de819 device_register +EXPORT_SYMBOL_GPL vmlinux 0x59267173 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x593b0a50 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x59438d83 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x595fc6f6 user_update +EXPORT_SYMBOL_GPL vmlinux 0x596dbc48 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x59842b84 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x59915101 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x59a7f10c pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x59b51735 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a0c6b3e input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x5a5d7fe2 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x5a671595 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x5a741fcf __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x5a77c408 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9ccc7c devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x5ac8efc5 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x5ad4bd5e unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x5ae342a2 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x5aeb560f irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b15227a rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x5b1a1f3f unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5b2936fa crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x5b6d2b9f usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x5bbbff1e devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd2ab10 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5c1360e9 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x5c1a05bc inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c1deb9a regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x5c4d3b96 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5fb5ac generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x5c72d6d2 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x5c85ed7b __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb0954a kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x5cb34f93 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc97a4f cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x5cce08c1 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x5d02257b usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d382f72 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d70baa9 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x5d79340c split_page +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dd04981 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e0b378d ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x5e0f0520 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x5e303d91 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e68aed0 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x5e7310db tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5e749998 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x5e9ed0ad splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x5eae0417 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x5ebdeaab led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ef87b5e of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x5f351cb5 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x5fac8a04 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x5fbdf4b3 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x5fe403ac inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5fe8c467 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x6000d535 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x6004784c replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x601a11d8 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6064ee05 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x606e0250 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x607373fe ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6094a8e6 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60c1a546 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60c37fc5 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x60ec5163 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x61024303 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x611f5af4 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x6127f4eb percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x61538178 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x615ec0ec power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x61880944 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x6195ee97 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x619b595e devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x61a10f6c invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61d4d7bf inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x61dbfeac cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x61f13303 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x61f41adb ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x61fb92d4 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x62024a1c device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x6210299e scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x6216bd73 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x62187f41 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x622407df usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62588b3d virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x626e3c16 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x6276d927 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x627f2d04 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x627feb63 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x62a93ee9 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x62b88430 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x62d59c9e trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x62e2e44e of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x62e9d57a devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x62ee6bc1 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x62f14179 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x62f6935a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x63100eb4 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x631b6923 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x63402c3d wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6353246a bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x636760be pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0x63852c3d i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6392f6ac extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x63aadc79 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63e911b9 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x63f54153 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6443a2ff dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x6453f77c pmac_has_backlight_type +EXPORT_SYMBOL_GPL vmlinux 0x64544d82 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x64904721 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x64bb6d7e of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x64ff9490 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x6509e743 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x6541ff84 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x654a58aa da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x6553417c extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65746fb3 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x659161e7 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x65a3487f regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x65ac16b5 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x65ac6a08 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x65b6dd3f inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x65baeb71 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d73d5f sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662e4691 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x66307980 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x664d900c ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x6672a429 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x667d393e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +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 0x66e32bea inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x66ea95cc screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x66ed25c1 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x66f03bd3 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x66ff09ab sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x6707ad22 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x67349ac2 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x673ac9f2 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6788a284 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679ef18a blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x67a18018 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x67f738e8 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x683c4798 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x68414961 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x684e653f arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x68612293 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6870f753 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x687db071 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68a83ff5 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x68b71a05 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x68bfd433 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x68c09067 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x68d18b2e param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x68f54a3c usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x68fc0637 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x68fe3d89 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69369437 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x6952039e pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x698047da spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698d3250 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x6994216b sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x6994930f __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x69ab121d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x69afe422 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x69b06229 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x6a0c2208 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x6a23882d gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5794f5 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x6a583111 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6a5853e3 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a85a4fd ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6ab3781f trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x6ac145a2 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x6aca9d61 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x6ad965ef irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x6af68024 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x6af9c5ce xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x6b0a2e2a power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x6b0d311e regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6b1566f0 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b1fd714 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b359f28 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x6b387fca __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x6b4d71f9 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x6b5de2d5 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b654b12 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x6b71b88e ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b939e3d crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6bb0a865 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x6bb67a42 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x6be67317 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c2490c0 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x6c42170a fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x6c45f541 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c7821be wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x6ca23ff3 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb7cf64 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x6cc09e21 input_class +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cda0919 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x6cdab4c3 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x6ce59494 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cf1e640 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x6cfbe10d rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x6d037b93 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d37f688 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x6d667db2 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x6d9bbab1 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x6da55fb9 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x6daa3d08 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x6dbfac3c __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x6dce486d pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x6df56488 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e18db69 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x6e2d184c bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e5db672 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6e65b8d3 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x6e85bc6d wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e9f383b adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x6ea60e0b device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x6ea6d263 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6ec7d3ce ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x6ecefc54 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x6f08ee8f crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2316a0 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x6f4afb66 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6f4da99d xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x6f51ca7d pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x6f63851a bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x6f945c8c __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x6fafeaa5 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x6fc4446d power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x6fd4807e gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6fdf0142 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffdee16 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x703903d5 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x70429c5b xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x7047cbba usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x705eb938 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x7072bbde ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +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 0x70d615d4 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x70dc66d3 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x71069f74 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x713a6b16 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x713b07c1 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x715ff152 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71d75ee1 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7250d88a crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72579736 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x725b6972 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x7267b223 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727c1f90 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x727d59bb ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x7281feb2 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x728dfeb7 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x72b0d71e rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x72f7bb00 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72f80cb8 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x73313422 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7356d151 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x737b8424 yield_to +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 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73c9ac93 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73dcbabe sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x73e81500 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x74265236 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7452ec09 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746c6e1e pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x746eaa03 ata_host_detach +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 0x74f5e58f simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x7511f0da tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752401a7 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x7555d182 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x755a5058 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x7566fe1c crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7569ba94 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7581809d gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759a3a0d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x75c06ded pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c9d8c3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7609bb52 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x760daac5 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7615ae59 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x761b795c pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x761ed6ec hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x762d7383 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x7633c0b0 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x7633f324 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7635dd55 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x763d9f35 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x76416387 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x76673cbb gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x76761e05 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768833fd ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x76b67ca6 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x76bc5168 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x76cbf92a xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x76ebe0c6 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x76f40d78 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x770408a8 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x770e5928 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x77190b2a register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772af116 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x773c3d88 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x773fef74 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x774c905f tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7754b438 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x776e8499 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x777c2955 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x777e7c93 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x77895573 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x77a702aa sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x77d47c8c stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x77f0a594 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x7801fbd4 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x78066073 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x78073d11 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x78352755 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x786aa2a1 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78bb9e66 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78c4ca5c sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x78d64523 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x78fd36bb fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x78ff574a ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x790955f4 dev_pm_get_subsys_data +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 0x796526f1 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7965ae67 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796fa60f crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x7974e47b mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x79798d36 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x797d5475 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x798122f4 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x79825864 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x79a3c076 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x79a5acf5 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x79f828a7 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7a043c3a ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7a09aea6 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x7a29e5f0 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a373787 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x7a3925fb spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7a399e49 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7a8ff7bf wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac97366 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x7ae4c11b devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b3d3a15 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x7b8774d2 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bb02d5a tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x7bced648 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7be23327 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7bf6df52 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x7c1190e3 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x7c301185 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c440bb7 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x7c660ab8 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7c7b181e extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x7c807c4c gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x7cb2b0ce regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce8ba58 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf61ebc ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x7d0040f1 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x7d1ac4d5 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x7d2944a3 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d60396b ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x7d79640c usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x7d84e886 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x7d99bea3 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dae4aa9 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x7dc1e388 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7dcfb501 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e1e63cc skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x7e2f7b3f inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x7e498b63 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x7e5354bd driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e67717c subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x7e9b1f4f tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x7eba8f4d security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7ebabde3 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x7ed63b59 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x7edebeff hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x7ef100af subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ef17f95 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f0c126d crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x7f1ea100 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x7f23c487 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x7f46f2f2 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x7f75af4b rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f7fb23c ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x7fc5ea40 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x7fcb64ca driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x801de13b usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x8041cf11 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80cfdac9 cpufreq_cpu_get +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 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81294c8f usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81611191 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x81a0a0c6 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x81c67a6d disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x81f5206c perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x8212c9a2 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x821c1508 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x821fd9b8 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8224c5ac pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8238ad47 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x825f3b89 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x8278ea86 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x827917e8 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x8294df30 component_del +EXPORT_SYMBOL_GPL vmlinux 0x82a0bbc5 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82bdf02c usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e32b42 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x830b52f3 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838e4a16 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x8390b5f8 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83c02c1a mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x83d30f5c inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x841fd132 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x843c391f tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x843e7a39 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x844b3cb6 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x847a6908 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x84861af5 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x84d73f7c crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x84d932f2 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x84e7da6a crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x84f85df5 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x84fcc087 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x8502e608 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85106e96 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85229ccc sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x852720bd tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x85380faa phy_create +EXPORT_SYMBOL_GPL vmlinux 0x854c31a2 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85898a81 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x859f6d5e pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x85bf4c24 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x85bf5549 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x85c3caff component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x85c3e559 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x85c61152 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85e6471d power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x85fc7cf6 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x8600cf4a vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x8606e786 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x86267646 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x8629f164 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x866a9429 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868619b1 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86af9c2a cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x86eaca3b rio_mport_send_doorbell +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 0x86f9afcc usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x87286549 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x872d5835 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x8738e277 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87412c87 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x87447e1e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x875d3193 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x875f74b7 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87a2b5d3 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x87c56411 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x87d6a058 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x87db2354 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x87dca382 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8818cda0 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x882f1582 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x8860aaa2 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x8878c73d ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x888ac5a7 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x8892b843 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88d32f7c inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x88e56955 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x88f0fc9a blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x88f293c6 macio_find +EXPORT_SYMBOL_GPL vmlinux 0x890ef3ed blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892ccc03 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x8951c600 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x8958ae13 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x897821af led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x89791c34 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x897d2b9e rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x89a439e5 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x89b86e28 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a2cd69d fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x8a487055 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x8a51ab62 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a7d1b18 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x8a8aecc7 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x8a8c61eb gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8aa14f54 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x8aa2ec97 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8b24b9f0 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x8b3095c2 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x8b3d9428 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x8b48c125 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x8b5a73f2 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b7164bf dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x8b72725c ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x8bb7fcc7 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x8be4ecb9 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0ffe31 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x8c2ac247 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c6dc4e7 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7d319a swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8c922449 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x8c9797a3 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x8cac36c9 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8cb0799f __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x8cbb3b39 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x8cf4f92e usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8d043a80 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x8d4fe5a8 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x8d5a5e39 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d5b5e6e mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8d6171c9 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x8d6cf1bb usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x8d7b917b pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8db80742 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x8dc68d4c relay_open +EXPORT_SYMBOL_GPL vmlinux 0x8dc93c1a blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x8dc9b09d fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x8dce99fc rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x8dd979b4 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x8de6c602 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x8df64b4e vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e13ed25 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x8e27e1da register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e5e3d5c rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x8e603c37 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e7335fa da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x8e792398 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x8e852718 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x8e895430 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8e8c0a94 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x8e9a3471 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x8e9c093b devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x8ead75b3 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x8ef05b48 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f171bac pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8f57d204 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f97b8f4 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x8fafa5f3 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x8fc27b2e task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8fced602 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x8ff13509 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x8ff8d78f thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x9032babf pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x90399e55 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x904da32f usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906af7fc cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x907658ca tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x908a39f4 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x90955468 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90cce675 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x90da9a91 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x90e670b0 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x90e97758 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x90eabc0c pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x910add02 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x910bc789 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x910dc7c5 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x913d2406 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x913f23d3 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x9157b4b2 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x9160bf5d dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x9169c825 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x917424f6 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x91842c01 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c25e79 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x9226e573 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x923639bb mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x925c4b19 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x9266a551 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x927af2d3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x927c49e7 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x928a5b21 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92b6c497 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f2090a serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92fb1c1b proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x92ff92a7 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x936254c5 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x937a9c77 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x9382be2e usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x9383b8e6 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x93947054 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93cfe059 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x93d1ed9c device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943a94f8 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x945932fa led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x946ce6ac regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x94a4652c rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94e546d5 usb_hcd_pci_pm_ops +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 0x952aada4 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x952cfc49 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955884f6 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9566fcae dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x957015a7 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x95844491 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x9587e90f posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95970ffa input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95f251d5 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x960bd082 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x964586c3 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x964e5f9b genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x968f5745 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x96cca012 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x96d2ea90 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x96f9ebf4 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97032b76 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x9728003f regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97613850 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x97723d70 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x9772bd2c irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x97758e14 component_add +EXPORT_SYMBOL_GPL vmlinux 0x978deb60 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x979a9e07 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x97ab57b0 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x97ad1b7a gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x97ba0d57 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97ee8fde led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x9801b8b6 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x9801da9c ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x981982e6 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x98251a5b need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985c36cf register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x988c8b89 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x989065ab ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x98987ce3 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x98b1148f devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x98d3f85c rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x991400b5 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x9921fa4f power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99492994 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x994b6612 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x9957a674 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9958223a fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x995c6f09 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99a5d06b free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99e7c3b5 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x99fda1b8 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x9a029741 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1c5f45 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x9a240317 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x9a33e259 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a5582d0 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x9a643025 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x9a795853 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9e6a5d wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ae73cc1 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aed91b4 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x9b1e7d43 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x9b21adba inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9b272cd7 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x9b59cc6f pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9b7e1654 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x9b7f1626 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9ba2397d elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9bb42a7a raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x9beb43b0 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9beeccf1 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x9c23ca96 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x9c351aea pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x9c448367 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x9c599306 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x9c817e27 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x9cb0f6cd fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cda2e45 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x9ceb8746 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d4777a5 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x9d6d0136 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d9025f7 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dcbd619 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x9dcd4cb1 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x9dda41dd crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x9df6f081 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e211d23 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x9e25cbda tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x9e37bd63 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x9e410a6d usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e5fba9a nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x9e6aa4ee rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x9e749ea6 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x9e75310b regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x9e7bf00b powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x9ea4aac1 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9ea53947 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x9ebec0e3 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x9ebf5483 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed8521e scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x9ee85231 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x9eeafeca dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x9ef0685e crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f0bb40d rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x9f24bc92 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9f6122c4 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9f6add52 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x9f7e8af8 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x9f9ec786 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x9f9f0f87 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x9fb4038f of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x9fc1ca82 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff36fff class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0014e53 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0015a8e virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xa007df44 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xa02466e2 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xa02ce706 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xa03f2d5f of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0xa04a6282 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xa05c49bc ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xa086b5eb da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xa0885782 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xa090e49a usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa0910c8d da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a6ecda ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0a808ac phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xa0b52d0e cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xa112de8e sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xa132c857 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xa16bfe87 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1971b02 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1d0e65e ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xa1e49ed1 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa20c5c6d regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa29d1b1d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xa2aa679f tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2bee0c9 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xa2e5f97d tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xa2e8f8d5 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xa2eee126 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xa2fcdf6e usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xa3039996 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xa3116293 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xa312b241 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xa3281992 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xa334446d sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xa350b238 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xa35ec66d fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xa35f3993 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa3739f68 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xa3779485 virtio_device_freeze +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 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f2ddea dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xa40e4666 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xa43386f1 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa47b59a5 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa4802903 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa493922a __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xa4987597 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xa5000c2d fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa51de95f sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xa53e82ae ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa549be33 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xa56b2e69 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xa56c0284 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xa570e2d6 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xa582fb94 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xa591124f mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +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 0xa6224793 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa633feb2 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xa639da8b skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xa64e12df devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xa667228d pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xa6790cab regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa68fd961 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b86aab tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa6bff662 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fc39e3 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xa70ace54 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xa71183cb pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xa7226864 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa72be12f pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa757f2b9 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa77a216a pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xa78e2f9b pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xa7d8640c ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xa7ea4084 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xa7f7853d each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xa83d7b0b smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa854332d tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xa870da72 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xa888fc6d inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xa89050b5 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xa8aa7ea9 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8c9a969 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xa8d49d46 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xa90773a4 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa91603b1 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa9249ca5 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa94d820f smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa94e96cb regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xa96817c2 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xa973df33 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xa97968af of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa98f03e5 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa999a8dc uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9b163b3 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xa9c70f13 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xa9d0cee4 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xa9dc8b22 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9edb367 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xa9f7bcd8 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa9fe181a blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xaa00e8c3 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa02a806 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xaa231f46 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa78e005 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xaa904fcb pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xaa9a3ccc pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xaaa124dd pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6ada0a device_store_int +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 0xabafd7cb ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xac0b99a4 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xac175f8b ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xac31e0c1 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xac340279 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac638f13 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xac65ae07 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xac698dd4 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xac6d0788 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xac7287e3 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xac835850 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xac8484ea mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xac94b42a gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xacd05fb6 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xacd739fb trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace2ba65 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfee855 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xad062f41 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xad4a9ab2 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xad540dc0 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xad56afe5 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xad7c3f12 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xadbce009 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd29f84 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae03869c tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xae101813 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xae1cf9d7 sock_diag_unregister_inet_compat +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 0xae9acac7 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xaea313cb pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xaec41df9 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xaf207ff0 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xaf6d4a2a devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xaf8b0138 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xaf9088c4 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xaf9fa805 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xafd6259b platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xafe601a6 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xafeaf07c crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xafede92d __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xb005b334 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb01fd014 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb0272ad6 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xb037dd5b thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xb03b0d4e bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04bd25b of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0xb05150b5 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb069217c spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xb06e4c5c pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb09ad42d hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xb0a5708e regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c042c9 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xb0cda330 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xb0f73b47 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xb1062c09 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xb120954b virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xb135d7b1 crypto_givcipher_type +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 0xb143f0dc get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xb17591f1 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19514b5 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b07928 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb1b1b7f6 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c478a1 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xb1de028c devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb202c324 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xb20e8b96 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb283c315 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb2b9283a fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xb2b9db00 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f2a421 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb3370940 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xb343ad4b input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xb3585b84 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xb374fb66 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb3837085 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xb387d9ea __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xb3a17b8e xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xb3e74416 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xb3f5126d trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xb40bc3a0 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xb41656f4 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xb424af20 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb42bbd6e arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xb433f0e2 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xb439f50f i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb4410a81 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb441300c ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb48eacf0 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xb48f581a ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb4af2f82 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xb4b6c99b virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c3d191 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xb4d07296 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4fe9df5 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xb51da915 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52a6a2c ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xb532c497 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54a90c9 user_read +EXPORT_SYMBOL_GPL vmlinux 0xb580f6e1 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xb5896722 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5901602 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a829ed device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5ebd506 crypto_unregister_rng +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 0xb63a84a7 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xb6646aa0 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb6655f3b posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xb66a14c4 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb691037f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0xb6a3832f __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b01276 pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xb6b68ae3 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xb6bff2fa dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xb6d6d3af cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xb6fb8eff crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb70f8b84 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xb72bd669 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xb72eb39c pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xb7354c6c ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb748f92d add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xb749f76d iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7b4d669 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xb7bb4070 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xb7c13d11 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xb7cb75aa usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xb7d6a465 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fbc3a0 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb80c3337 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xb840bd7b pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xb8537694 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xb85875be get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xb883206b hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb89401f7 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xb8c0ceae crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8d4f22e ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xb90392b5 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb934a1c6 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xb93adb68 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xb9427e3d debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xb9749352 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xb9981aac rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb99f9bac mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb9b10ba6 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xb9b9da93 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c6db0b br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xba14a830 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2e4dba rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xba68d38f blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xba767ade usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xba79199e crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xba85a36f ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xba86c3de bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba91ed2b phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabfec8c devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbac4ded8 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xbb02c5f2 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0a9bcd posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb4a2493 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xbb63d1ae irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xbb65451c vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbc153934 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xbc1fa8b0 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xbc44b0b7 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xbc98df1b pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xbc9cf3b0 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcc74319 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xbcd6ac08 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xbd018765 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd45dadc securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd62c63b __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xbd6525bc spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xbd874ecc ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xbda3aa12 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd4c2bb rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xbdd60788 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xbde8dc00 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2712bc percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbe321af1 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xbe44e062 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xbe4b0aec sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xbe55282e __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe88169d ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xbe961f9a crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9ac41b uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbec7337d devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbed5e415 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf080a6d debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xbf0ac79a ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf64ca21 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbf7e7d5f extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf941fab i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xbfb8b00e dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd8e876 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff9649e mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xc000bbdb of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc0202a74 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc026cfc0 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0401ff7 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc053bb8a set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc0684147 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0c4c697 rio_unregister_scan +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 0xc0e96985 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xc0f840c6 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xc1155123 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xc131d343 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc13b2ad9 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xc13b8b47 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xc155e80e sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc177b427 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xc17f1549 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc19bbd8a agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xc19e0649 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xc1c315ac fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xc1c55a1f platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xc1d6e754 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23c0baf usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xc2515f17 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xc274a5dd regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc27f9368 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc28aa36c ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xc2969651 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xc2c1b5d0 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2d4e9d1 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc2d66014 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2fce7e6 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc32466db dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xc334d3f7 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357160d regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xc36285cc gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc39178f2 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xc39af80e __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xc3e07dea sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc3ead33e get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc424512c irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xc424e274 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4346e2f __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xc44023dd inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc458b859 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xc462eda9 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xc4650955 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xc466ad12 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc475b662 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xc47b2958 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xc48a78e5 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4cdb4f1 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xc4d018eb devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xc4e462ce wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc4f03ac4 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xc4f4b0f2 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc5124b54 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xc522db64 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5471df1 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xc555fb5e __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc556b6ca pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc581bc53 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xc58a1687 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b7e9e1 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xc5c1a547 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xc5faac37 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60c7b05 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc625ba08 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xc627431a alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc62858f2 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc63e578b of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xc65ac4d0 crypto_shash_finup +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 0xc6ae5cfd blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xc7037d57 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xc70a546e pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xc722aeca pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xc72cf521 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc754db8e sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xc770adc9 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xc77c7a69 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xc790f961 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc79507fe __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a4d9ec device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc7c09ee9 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xc7c38aac ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc809bd08 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc814599a pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xc81d012a nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xc84fbada devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xc858a6a4 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xc86345f7 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xc871f6d9 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc888eaee ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc9006e3f sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xc905fa57 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc939181a gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xc9492a4c pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0xc9494a3d find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xc94f5752 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc96bfdc4 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc9743c70 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97d5739 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9cb649e irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc9de6368 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xc9e91e48 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca02ccb2 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xca51c96d led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xca624ff0 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xca68389f tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca7ca102 blkdev_write_iter +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 0xca99b669 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xcaa1244f sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xcaa4735e skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcae1e3c7 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xcaf01cb6 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb194c65 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcb2f2237 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xcb39506e pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb477e5f pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xcb4b16f2 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xcb56c700 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xcb5ee621 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xcb7b51d6 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xcb841024 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbff5fcc __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xcc01035c ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xcc0c6ed3 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc21594b ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc3bf1d1 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xcc3c1d55 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xcc47b35a da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xcc601c69 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xcc79cc92 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xcc7c22bc sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc911875 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xcc9cfb74 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xcca17480 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xcca95179 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce402d4 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xcce7b0d0 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xccf3c671 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcd005628 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xcd1645c2 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xcd1e8be7 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcd321871 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xcd6492ab trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xcd6d3ef8 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xcd6df7c4 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xcd8fdb69 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9f232e ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xcda51047 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xcdb5265e clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbba134 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd1cbab unlock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xcdf53eb3 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xce117c5c exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xce25536c bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xce2fb018 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xce37892a fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xce407f5d inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xce4f16c1 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce721f11 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xce879ea2 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xce987879 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xcea17311 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xcebefd25 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee99f97 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xcf3857ef subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xcf3e9642 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xcf5354f8 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xcf54912a __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +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 0xcfd2f827 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xd010c63c cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd0197f7a usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd02ae194 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd054f4f7 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xd05f5f8b transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xd0609b4a 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 0xd06aca06 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xd084a48b attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xd08759bc wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd0a669a2 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xd0b97b7d rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xd0bb9de5 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd1141448 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xd139c4db sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xd158a90e devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1860b8f cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xd188a413 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd1c9cd61 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1fa2e27 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd21654c5 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd23a2e22 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xd253434e unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd25938db cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd25e26a4 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xd272423a sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd280d90a of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xd2a439c1 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2ac17da regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd2ac8f03 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd2acccf0 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd3066f6f usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xd316d4e7 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xd324a588 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xd32eee6a rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xd33d45e8 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xd348a100 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xd360c808 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd38bf096 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xd38c32f5 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xd3903c62 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xd392ed6f tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xd3b0d800 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xd3bd8c44 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xd3d14da9 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xd3d6860f dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd3d96265 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xd3df0201 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3dfc3b8 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xd3f1049c of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4041360 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xd4191a66 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xd4192f4b ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd42c55dd uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xd4350448 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4803d25 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xd4a569fa crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xd4b50f90 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd50b09a3 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xd512c74a tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xd51720b7 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xd52f0eb7 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd52fe54d adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd5526145 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd56a9d3b devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xd57bf4b4 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xd59398cc irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xd597469b pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xd5a7f107 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd5b2c5f0 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d4d295 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0xd5fcaa96 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61d8107 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd61f9ee0 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xd63aeb6b power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xd65509f7 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xd661f14e rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67705f5 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xd678588c ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd6b0a2d9 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6fae2a6 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd700d61b tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd7080996 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xd70f5b85 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xd73b9f9f ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd782652c uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xd7a945de crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xd7b7ac8a reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xd7b8653a napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xd7ceb68c tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f5151b rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xd7fc3e98 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd81fedb2 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd830851c regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xd83517c6 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xd8403c2a single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xd85ed625 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd878fb26 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89628a1 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xd8be8124 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xd8bee952 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd8cc756f usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xd8d89648 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xd8e3c0fd usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xd8e883d7 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xd8ead109 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xd92dc31e ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xd931ca27 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd93f9046 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd94f7241 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xd955cb90 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xd9661dc3 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd97a2385 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xd9c66b5e regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9ee2450 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda3155f4 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xda57849c fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xda58d312 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xda5ae709 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xda7fc82c devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xdabd40c3 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xdad00ac5 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xdae5ba82 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdae9d323 irq_of_parse_and_map +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 0xdb2585e8 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xdb375f43 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xdb409b52 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xdb41e099 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb929cdd device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xdbbd3f07 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xdbda9545 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xdbf51bb6 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc16d9f0 device_move +EXPORT_SYMBOL_GPL vmlinux 0xdc1abfe0 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc29d960 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xdc327f30 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc818169 bitmap_load +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 0xdcb8aa94 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xdcc07e80 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xdcc3e839 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdcf92c0b of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xdd03c83a rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1c8682 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xdd1e28c9 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xdd1fe380 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4a66e3 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xdd4bc5b1 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xdd4e0fa6 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xdd644865 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd8f6e13 find_module +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddbf0c88 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xddc7b38f ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde21fe6f gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xde4307c8 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xde4af1fc driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xde743a1c stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xde8263c2 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xdeae4041 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xdecb1709 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf7b9a18 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xdfb8cbe7 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xdfd76399 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe0575270 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe0691f68 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xe06c86ab debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe07ebc72 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0ac0aea fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe0d95303 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe0f009a7 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe1188870 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe15eb155 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe19c7f86 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1efdebd fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xe212639e put_device +EXPORT_SYMBOL_GPL vmlinux 0xe2141b9e pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xe23b6342 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe241410e sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe296ebf8 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xe2bf71a2 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xe2c94559 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xe2cc9dbe task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xe2d7f5f9 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe2ddff4c inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xe2eb29d2 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xe2f2a927 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe303b915 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe36ef0ad extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe396ed26 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe39d505f usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xe3c82083 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xe3cec185 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe4019b3b pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43a92fb wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xe46862cd pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46a1fc1 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe479318f __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49aafea pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xe4b217b8 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c5ccc2 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xe4ce9f0b rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xe4ed9597 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xe5136539 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xe53e4f3e rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe54a02dd regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xe567fbcd dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xe568f839 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xe56c5f07 md_run +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5ca0608 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xe5da6a30 mmput +EXPORT_SYMBOL_GPL vmlinux 0xe60bf073 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xe61fe629 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xe6369f75 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe63ba11d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe63c66d7 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65a36aa pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xe6629c61 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe67a9858 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe6ab1311 blk_end_request_err +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 0xe707be97 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe70f09a7 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe71ddbb1 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xe720cf52 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe7383941 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xe7538c19 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe754a8ef thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7702326 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xe77498c7 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xe7769493 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7881073 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe7b68cd9 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xe7b763bc driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe7ddb3d7 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f4bb26 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8399b96 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xe849c00a regmap_field_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 0xe869fe49 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xe8863ae8 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xe888097b usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xe88d497d device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xe890ab3f security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xe8a47e8d nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xe8aaaecd pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xe8acf9c9 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe8ca9b79 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xe8e331c4 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xe90281f7 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xe911134a usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe9217b93 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xe9375dd7 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94b7f80 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xe94fb590 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xe98b5c7f generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xe9a4a43f __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xe9b86d46 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xe9cc4e6f blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d4a812 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xe9e1b894 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5a131f wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xea68a0ee shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xeac36049 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xeac9795a class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xeb1cfa89 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xeb257bc0 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeb4d8330 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xeb51f8cf devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xeb529145 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb7eeccd hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb8c68ec ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebdb31d4 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xebde9d8f crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebfc09ce ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xec0422c5 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xec156f21 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2b9f99 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xec44e09c crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xec6f08f2 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xec80364d pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xec930673 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xecbc1b3d ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xed012cfc blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xed0bb423 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xed0bd3f2 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xed1ed4e5 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xed350f5a scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xed3c37aa shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xed453520 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xed4acbb3 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xed50ae41 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xed542682 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xed69b202 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xede31ce0 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xee0f14e3 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xee1028ee xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xee2d855c arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xee4ff596 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xee586b3a lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xee58ba3d usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xee638410 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee77918d crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xee9c411c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xeea1db50 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xeec52207 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeee45852 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xeef1567e of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xef0d5773 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef20d0d6 platform_device_del +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 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa66558 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xf007a44f pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xf01d3f08 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0534d0e regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xf063f2b4 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf06ae99d vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07e0573 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xf08d075f thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xf0acaa1d raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xf0c20e47 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0fcff94 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf103ac90 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf16cbcac usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf17f7ee9 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18ce917 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xf190ca4a devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf1918a84 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c54d30 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf1dfe737 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf1f56d5d attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xf1fec8a8 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xf20b0958 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xf2133455 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf234dbf6 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xf23fcaa5 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf2520dd0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xf25accf1 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xf26c4277 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf28376bb dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xf291510f pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0xf297172a cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xf298ef3a dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xf2c0a14a gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xf2cee257 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f54ee3 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xf2fb9bf3 shmem_read_mapping_page_gfp +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 0xf31d37c9 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34f54ad regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xf36447d9 pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0xf36801b5 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3871c6e inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3df26eb crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xf3e20b1e power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3fdb7be relay_close +EXPORT_SYMBOL_GPL vmlinux 0xf3fe31ad devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf4115d3e cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xf428897b regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xf4291e53 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xf441498c regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xf448e1d8 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf457107c wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xf465ae93 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf496d087 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a72e08 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xf4b13331 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf4b333d1 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5220790 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5893e0b regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf58f31bc desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xf5a04841 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b8b325 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5c77cc7 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xf5d7385d irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf61ccd3b skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xf6232487 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xf64244f0 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xf64fdac2 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf66e5678 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf67a9b26 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xf6876638 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xf69214f5 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6d303d2 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xf6e16c6b max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ffa9aa attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xf700a3c9 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xf770fd20 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xf7b14eb8 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xf7d8737e tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xf7d8d065 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xf7f47ce0 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xf8175267 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf835884e powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf879c72a pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88619a4 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xf8d15628 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf8dd3408 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf8dfaed2 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8e93879 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f7663f rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf92e8ab3 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9339c9f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf962907a blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xf9712db2 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c351d1 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cdd0ad ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xf9e2fcda tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfa0051f7 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f59fc pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xfa3ac7c0 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfa55f862 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xfa5d4d3b rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xfa69ba49 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xfa771e20 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xfa8831fc usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xfa8a2f6b da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xfa93655d of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xfa9f7f9d thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfaaa0a86 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xfaabd1d2 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfad41ee3 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xfb08f76c pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xfb15569c regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xfb2b0d7f __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb4e1af3 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb561b93 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xfb65f31d phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7a3986 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xfb94c3b5 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xfb976161 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xfba5bd3a sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xfbb62f9b usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc2be21 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xfbcddc3a adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbd170ea of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xfbf18aa1 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0b92ce spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfc45a913 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xfc4ecf64 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xfc5425f4 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xfc98becb inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xfcc73401 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce77763 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xfcf47fc0 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd2ac5ec relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xfd3e334e ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xfd62cfa8 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xfd76c34e palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7bd0c5 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfd8923ab tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xfd8bf5c9 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xfdab6a76 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xfdb3eb9f event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xfdcd77b2 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe29d5c3 ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0xfe33424c page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xfe813e57 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xfe822b53 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfec00565 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff04383d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff18edac __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xff29b1b9 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xff527e9c devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff619672 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff7213fe blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xff9f5ff2 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xffaaff94 get_device +EXPORT_SYMBOL_GPL vmlinux 0xffc63e57 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xffddcf02 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xffdfa0e6 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xffed2fc6 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xfff9cc97 crypto_enqueue_request --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/powerpc/powerpc-smp.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/powerpc/powerpc-smp.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/powerpc/powerpc64-emb +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/powerpc/powerpc64-emb @@ -0,0 +1,18050 @@ +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 0xa783bb6b suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0xa727273f bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xb00b019d 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 0x122715dd pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x1e6adcd0 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x3a71b99f paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x3eba5e46 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x5dba421b pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x8c4ed1f5 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb26d9fbf pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xba94090a paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xbed294e1 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xd6639b54 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xf662f515 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xfe1f7c1a pi_read_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xc6d9833b 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 0x496585aa ipmi_get_smi_info +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 0x7db486b2 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x83f7fb1f 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 0x9e2fbc42 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc96be95f 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/tpm/st33zp24/tpm_st33zp24 0xa2208a26 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xb83c0233 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x170a8e9c xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x354b3b64 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x54c18611 xillybus_init_endpoint +EXPORT_SYMBOL drivers/crypto/caam/caam 0x1c758e97 caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x267c801c split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x5a480e29 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xae0f7d07 caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xc317b2ef caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xe4103066 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xee90e1df caam_jr_free +EXPORT_SYMBOL drivers/crypto/talitos 0xdf86882e talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x14e7d68e dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x811c2348 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x94d97f8e dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa904ffe1 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xced20295 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd41ca4f5 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x16d63e68 edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x304677c8 mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x06415fc2 fw_card_initialize +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 0x1e54d931 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x23b78203 fw_core_remove_card +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 0x46499ed4 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4cc7ea9a fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5414f1ee fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6405e12f fw_core_remove_address_handler +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 0x6d8fce72 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7868b953 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7d8d7b8d fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x83c2ad6e fw_run_transaction +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 0x91b0ef04 fw_core_handle_bus_reset +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 0xae7f7098 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb49f38e4 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbacaf578 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbb38fcdb fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc057e970 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc245d2aa fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcb601a9c fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcc63b18f fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf5322838 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb4fbb63 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfe1e2865 fw_core_add_address_handler +EXPORT_SYMBOL drivers/fmc/fmc 0x04460e75 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x272b6328 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x2de53787 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x671c5bac fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x8c5a09e4 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x8d28ef5d fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xb542ead9 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xc4a3dbf0 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xd87d2066 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xdd5f6325 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xf49f1dd8 fmc_driver_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0029afce drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x010dc64c drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x020bdb04 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03d58650 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04080926 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05f31558 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x069f26ec drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x088c0c1d drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x091fcb29 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a7f17cc drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aa6ac1d drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cc41099 drm_get_edid +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 0x10d5064a drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x129b1036 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13408cac drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14156a43 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14bbf765 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x153e0860 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x178a6c1a drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17958f45 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17ce4cf6 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18a8a782 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18f2cc16 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194daa8e of_drm_find_bridge +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 0x1a17b0b0 drm_vblank_off +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 0x1a92c8cd drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1defd56c drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f495e6f drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f5c5556 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f945319 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20a4456b drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21e94958 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22fb05dc drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2337d72d drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x234382fe drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2462c4d7 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26cd2eee drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29970548 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29cb8e41 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ac33e48 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ace996e drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b6c6b8e drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cb2e58a drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e6d619b drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e9ff3ed drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x300d63d3 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x304da639 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b7e32d drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31ff710f drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3331372e drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x336c2404 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x349cdfce drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35363440 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x354633db drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x354fbaa0 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3550d5b2 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x382a318a drm_edid_to_eld +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 0x3b2c29e4 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba52213 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c9bb7bb drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e62f43c drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f451aa0 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fac93fc drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x417b5bd2 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x423741e2 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42ce1852 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a9e8ad drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44bf2eb4 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44f5b1b5 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44fa0132 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x459ee1d4 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45d2f91d drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47ae6aa5 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4811343c drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4837fd64 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48525871 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49e79197 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bc2375d drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c37a2c9 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea6199e drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4eefd33f of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f5c168e drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x509c35ac drm_connector_register +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 0x52585f41 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x555475f2 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55efb2b1 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56825c25 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c386fb drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5732c834 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58e2b03a drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58fcd768 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c3233e1 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fe21636 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6011dbd5 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6125c517 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x613795c3 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6160a8a0 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61ba3ff6 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x628074ad drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62f1b20c drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x647f8046 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6506529b drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x663f8a24 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6701e3b9 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67bf4601 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67c8bdd5 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67e90f67 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x680867bb drm_vblank_on +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 0x690816ec drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69f6640a drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c646156 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc35072 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d642b06 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dafdc31 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e452881 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71f12249 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74ed73b3 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75856461 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75ae41b6 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7693a3ce drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x777b3568 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7834184e drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x790a4bf6 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79dfbedb drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4c2c23 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b3482eb drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cebae73 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fffc177 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8079eae1 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80cbe091 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80d8273d drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82209f2c drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82e306df drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82ed719e drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83685a1c drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x838a9515 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85ef0daa drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x862e0abf drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86fc1b19 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88104621 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x887c770b drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x895869a2 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a1adc44 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a79541a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a85585f drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ab0b86a drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b4ce010 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c180987 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c8ce97d drm_connector_cleanup +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 0x8f172fca drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f1b01fb drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x905c2bcb drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91318674 drm_av_sync_delay +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 0x9353fb12 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9590e87b drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9591dc01 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97c7ba6c drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9809876e drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98c5677f drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x994b4f4a drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a7c09ad drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a9e7d19 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b02a3c2 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b73d23d drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d24dae8 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e158acf drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ec868fb drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f3668c4 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fc8924c drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa19fa16c drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2462621 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3486def drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3ce3a09 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa51fa500 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5371666 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa55dc26d drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5801b5f drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7ef44d9 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8f0c074 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacd67ec3 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae0bbee8 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaee6529f drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd808a8 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb143d8b3 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb42a98b8 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4ac8dc9 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5209230 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb57807c9 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5862146 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7396aa9 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb85b56b9 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9059011 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb934893c drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb946491c drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb985a864 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9ebec60 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba3e62fd drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb27e73c drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbcde281 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc653bf7 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd998fbd drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdcaca4f drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbea5c46b drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf3d4f06 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf8503bf drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfb5ea67 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfb928a6 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc17ca20f drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2ffd5c6 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4d7ee25 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7d7a893 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc96c27e1 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9bd0665 drm_gem_dmabuf_release +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 0xcc05082b drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0bc857 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd356865 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1bb041f drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd35ca254 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd60445c9 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd694e971 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd724e224 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd824afc7 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd89da4c2 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9dc20bc drm_crtc_init_with_planes +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 0xdea808c7 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfca0b15 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfe0b6d3 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe09eeef5 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1d03ca9 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe22d33ef drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe26fe297 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2df2dfe drm_legacy_addbufs_pci +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 0xe6d141df drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7525f48 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe84478b6 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe855f6ab drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe929b76d drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe976844b drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9def011 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaaa5283 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebbbd4f6 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec1ad017 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec4a0452 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec53343e drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec8dcf26 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedf97191 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefc75c36 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf007d6fa drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf07adf75 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0fd1433 drm_select_eld +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 0xf1b1141a drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1df6e28 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf24fb982 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf30908ea drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5e83093 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf639acc3 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf841671d drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8642f4c drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa29a098 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa3a3aa0 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa4da4e9 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa50ea83 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa5d1735 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa96efff drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaa555d7 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb684ddf drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbbe26b7 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbef5d45 drm_mode_validate_size +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 0xfd28d9dd drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd65a76f drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd81dc0b drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00649bdc drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0224a09d drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05b4a2cb drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06de0026 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09e360b1 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b4b0bef drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0cd0cff0 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10016186 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1201ae72 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12052b28 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15510146 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15fcb779 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x171c5ed8 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1764d112 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x181185e9 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x187f7d6f drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c9c3fc0 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e441b37 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x216603fa drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24e8f4c0 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2615392f drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29a53a40 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2aaed43d drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b8e4d57 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32ca5054 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35ed075a drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x362a61cc drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38ad7846 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38e0b63a drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c11e806 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c148275 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d308208 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f92e8a1 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f990ff8 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40db9694 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4207cd16 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4604c5e2 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x462efdfe drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46fb906f drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47539621 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e8f17a1 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f58abfe __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51b89cc1 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x532432b1 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5548488c drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5aa313bb drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fa33b45 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60498824 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x606758b4 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x616cd388 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6205e84b drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62f38745 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x669353e6 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x698e154c drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5fbf3b drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e1472ad __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6fe3e5d7 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7245d6c2 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72cfd65a drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7544adf9 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a0160df __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d822206 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d9dffdd drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fa92a9d drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x88d1b8cf drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91f0101d drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9daa65a0 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9dd03b63 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f3f6c9b drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0017868 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3904098 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa43ce078 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 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7bb86b2 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8698a9f 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 0xb1377deb drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1992ed3 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb208357a __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2c08751 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8d16f30 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbab1611e drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbea00be drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd0f9e88 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf40a236 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc304f9cd drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7d3e81f drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc91ce549 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca5837e0 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcbe01f40 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcbfd945f drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2d0168b drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd465f06d drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6174c46 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd72ab2aa drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9885db6 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdab632bb drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde30c267 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe00b5af8 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1f49e6d drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe35a87a4 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe362d86b drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb1bc5c4 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1561697 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5495850 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6326b0a drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf71132b0 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf95dd7f7 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfba8cd5d drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfca718f9 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd4f5af2 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x08064803 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c6912f6 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18f55f0a ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e0064b4 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e4b705e ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x254aa6fe ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2bfe26f3 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c3adc93 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2e0b2b48 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2e86d303 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x36257cbe ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ad4c2da ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4118f4b8 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x486a652c ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x48e23d5c ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4a45f283 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x53b41821 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x56a2454e ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x577dac11 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5862c5f3 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d143b3f ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5dd177ab ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5fba4584 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62127484 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x68c13a2e ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x694dab40 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x69f22322 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70be411a ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x79ca74b6 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a581e78 ttm_prime_object_init +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 0x83dbbeb1 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85dae833 ttm_tt_set_placement_caching +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 0x9154383c ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x924164bf ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94ef809d ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9bc22a87 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa19044d1 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa19c9763 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa1b2476c ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa24e6e4c ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4f0acd9 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb0c2dc2b ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb8683dad ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb8b4cb48 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc253f188 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9769a16 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcca72b00 ttm_bo_manager_func +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 0xd2d68240 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd80f7e07 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9d13d0d ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc1218c1 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4869708 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4b2aabc ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7c043e7 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfaa5569e ttm_mem_global_free +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 0x36902f28 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x62d67faa i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xc1a184c1 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xb68e8ad4 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xd9e85587 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xa73f5203 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x035ef8d5 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1bd15be2 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1c5973eb mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2d40a888 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x36a5b5df mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3fe95c96 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x40aab326 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5217203d mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x52df740e mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5a5a8c97 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7c6e8030 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x95e123b0 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb5476648 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb92ac5ce mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd69f0494 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdc069cc6 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x0164cff3 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x957ec1ef st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x31b7d138 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x37de68d2 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x47babf02 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x804d7177 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8e947b9f hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc4c25798 hid_sensor_read_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-trigger 0x2749d3a2 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x2dd0b017 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x377ebcba hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xd13c569c hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x1ddbd9e9 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x4b0928d3 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x73796c0c ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xbd4e106f ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xe4db64db ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x10ddb1e8 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x4d201ab7 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x5d98ecae ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x04f9772b st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x23f7103c st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x39329bae st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3d3388b6 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x762fb859 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7abd9d7a st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8e0b59c8 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9a105c25 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9f7c9928 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa01561ac st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xad8b91e3 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc77e5f20 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xca1382e3 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd501623f st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe204f628 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x3353b8e5 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x56d21de3 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xd24ccd9d st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x03c295dc st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xe30ef11c st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x2bf836d3 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xbc2f6b65 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x0cb262ab iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x19f01bc0 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2f01117b iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5852a9f9 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x71e59a58 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x75af2581 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x81ff7dfe iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x9c9988c4 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xa06fb22f iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa0dec6a5 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xbc5af519 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xcd7bb337 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xd774ceef iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xd7e5cbc0 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe3da7790 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xf16aa251 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xf9e266cd iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x99c0937e iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xf924935c iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x283787d9 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x455f3ceb devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x82169b53 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xd36d7106 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x6afd5b73 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xa50e70ab st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x03094b08 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x06f31e6d st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x6f6b46eb 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 0x570068c2 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 0x077b7822 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1c510bc0 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x21e22366 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x27ce37c7 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3dc30c59 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4fd8b3b3 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6b614ca9 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7d41ab92 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8397c853 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x83a340fc ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xacbea0e4 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb838f9f3 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc6eff4fa ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xde5101b8 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe71c0235 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe98627d9 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfbda61b1 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11c31ca4 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x123190b7 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13075e8d ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1481055d ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16431848 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18af4ee5 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c103fc7 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c1c9db8 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d2e708a ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20ba6163 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22d3597b ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24aa4c74 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a05f8eb ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b8c8b15 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33b1e384 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34cd45bf ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36c74105 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x371d2192 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a398c6d ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ad7d5c7 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x413d8fe0 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42d20d3d ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43530d56 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x460fc5a7 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b850c81 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4bbd5b4a ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x512c3f03 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5663beba ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b2cd53f rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ca2ec3b ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63f11744 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69dfe4e3 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b0a0057 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71003a17 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75abbb37 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7746e4ca ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x816bcb15 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82c8c0c0 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8373002f ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83d4135d ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x851c763f ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89ede13e ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b7e6a86 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d011796 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e8a9025 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ebec707 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fa8e181 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9025b971 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92ac9d10 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94701ba6 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94a18adc ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fd7f698 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1bd430d ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1ca8446 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2eb8500 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa46604a7 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5d0ef8f ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8ccd95a ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8edc034 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9a27633 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaaea25d8 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabb011e3 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad4e25e0 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae09d0ef ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0f475a5 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba4f42b1 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbddc2f88 ib_query_ah +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 0xc762c04c ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc88c6af1 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd53a3a9c ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb101a52 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf18c112 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdfd94bb8 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe358b3b6 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4195a29 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe84b80b3 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8c6e998 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8f45cfa ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea58a9f2 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1667a48 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2c1a3fd ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4980a10 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8763991 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfba80128 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x058fceb4 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x05bdd547 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x15c079e5 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x17732f58 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x36502f5f ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x48b34f53 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6ae5b3b9 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 0x92f29712 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbe71acd8 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc27dae2d ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc9162054 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xca124df2 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd63e313f ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x11321ce4 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2f8ad091 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x314de013 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x47092c30 ib_sa_service_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 0x89893d64 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9addd910 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc5872a90 ib_sa_path_rec_get +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 0x0ad4d093 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1a83b2df iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x28b50369 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x671f65f0 iwpm_mapping_error_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 0x83f8e66b iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8ad2b3c9 iw_cm_reject +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 0x93a3bbb6 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x97154ab9 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa805a926 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbc71e084 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc2556706 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc39784db iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd5b95a1d iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdfa4165e iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfc5b264b iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0810a056 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x18a380a5 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1d3c4e66 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x22c8041d rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x256dbe0a rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3d158cf2 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4344cb44 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x47a3c143 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x68784566 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6920e1a4 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8139ce00 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8740e2fb rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x96df0cde rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9a01af30 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb866e5a9 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbe64bd90 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc28df18d rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd09f7d69 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdccdcf6b rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe0951daf rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe4ea9d9c rdma_resolve_route +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1beac1dd gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x37e8e15e gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x40350657 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7164219a gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x80c54a71 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb7318b21 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd3d784a0 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd579baf3 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe890a434 gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x21eeea42 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x906d7974 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x92b9f96f input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x97031e28 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa2035109 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x6f873ff4 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1eb413c3 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x28fb9235 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x29b45985 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xcc16c12b ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xfd7e2fab cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x296f87fc sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x4fed604f sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x67113441 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9670a768 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa4410506 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xda616df5 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x315ecc3e ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x5992ac01 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 0x17c7fbe1 capi_ctr_handle_message +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 0x3126c14c capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x37199d29 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3c34f805 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4d419fe6 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x571ec309 detach_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 0x70c84a7a 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 0x8f699913 capilib_release +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 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb73ba2dc capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xba1c0e96 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe1619fe3 capi20_put_message +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 0x0364e25a b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x11de10f2 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x189a775b avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2fc7168c b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x39282056 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3ed5352b b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x44fc9a52 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x716abc5a b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8244e57e b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x91944847 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa6504d92 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xadd33af4 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc3339f74 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf933a791 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf97d5235 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2c03569e b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa26a812c t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb6b42494 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc1fe0fa2 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc29fcb70 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc2ec2140 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc8f8e481 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd9d0630f b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xde9e1031 b1dma_send_message +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 0x3275823a mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x70c78362 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7c7fdc81 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x832b7c0e mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xcd9958fe mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xdf0961e8 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 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xbb2d4e85 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 0x05d83995 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x661bea5c isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x842efc78 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8fc78f20 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xddab2c07 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x47d1d96b isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x9751f9cc register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xbf7ad446 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 0x001f9567 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12d0a8c4 mISDN_freedchannel +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 0x32fcbfa0 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x35df1a6a recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3d047a67 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x56fea219 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x73c5b7cf get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x76418afe queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7c794ac8 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7f372fe5 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x85be95a2 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8cb3ebd1 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96a9760f mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa8fac7cc mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xad5163dc bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbbafdd05 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc50ac376 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc8f26ff9 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 0xd59d6e98 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe1f0ec99 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f8e234 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfaab8059 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfac9be5e mISDN_initdchannel +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 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 0x6c8c5e89 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 0x897be6a7 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xba45308d 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 0xd70b8a52 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 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 0x0d630102 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x36bbb51c dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x9b22c82f dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xbd523e81 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5bc48d88 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x64a52b9d dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdc53bfb0 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdd9234d0 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe95db98c dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf345c6b6 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x117dbd44 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x25188e1d flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6316e882 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x788e62f1 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x79b411e7 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7afe46c8 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7bbc5b63 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7c696186 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8767cdfc flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x96d82da1 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x98850606 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa669ae91 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbd901066 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe697fd0e flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2a0c7b0b cx2341x_handler_setup +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 0x51214a6a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xba1b491f cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc92b1dbf 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 0xfc1ce8c7 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x3711e9f2 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x9d789dae tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0ca11dfb dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0edd4613 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2acd10c3 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b961b8c dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3bdce853 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x50749451 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x537a079f dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +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 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e8bdd28 dvb_ca_en50221_init +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 0x85f21d01 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9563639d dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x97edcfd2 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c1ff779 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9d2d70b1 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac229327 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb6d307b1 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb74ef3cd dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb9d2386c dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd001397 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbe506a48 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3bf4b03 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc84d8aa0 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcb043112 dvb_net_release +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 0xdd7cc2d6 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdf61df1b dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf08f8537 dvb_dmx_swfilter_204 +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 0xfb3ed40e dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfbaa7e01 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfda48859 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfe9a53c3 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xe86398ac a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xafaf6b5b af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xd8722c08 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0d16c6bd au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x103656e0 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x175e7d37 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4da136e5 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5e2841dd au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbc72dc92 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbde1056d au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xea3c85a2 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xed435b6c au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xd884836e au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x56be6e44 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x1d8d4db9 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xca3d813b cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xd2148165 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x28c2fd74 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xc5f7dc85 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x8fa4b20e cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x1c566b9a cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x08a96123 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xf0203f69 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xa6bbe95c cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3d0a27bb dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x4c24dd50 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7c8be6c6 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xcdf62abb dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xf2330874 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x08641dc8 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2a2b9e62 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2aa3cc89 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x596c45bc dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7ee2def0 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x900a3d72 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9d09ca98 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb5b35ded dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc13ff39c dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc3c5e4c1 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdede3ad6 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe3f810c5 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xeade0c20 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xedcfe120 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfe966d09 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xdd5b022e dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3b3d10fa dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4f040b53 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x58b8d2cb dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x71a0c28e dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb6bed2e8 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc36859bf dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa4ee64d2 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb9865ebc dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdd820231 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xe773bbc5 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe3e690f5 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x4a4fe1df dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x1057e7a7 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa33b5896 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc4a63c9f dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc4bd3358 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xcd6fa243 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xb7aac9ae drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xf99c00d1 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xd1a72569 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x1423e755 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xc0ca36f6 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xbba3f443 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xb189c072 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xac47fad8 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x6c590a80 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xf7c481a3 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x497b3ac2 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x339a5ac0 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x71f2eb14 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x1acd730c lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x2b514fcd lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x91f7864c lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xa9e87ace lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x4075297f lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf5b65df8 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x213574cc lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x2e7d8704 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x45351d6c m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xf03f906f m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x56dcb538 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xd6b304b2 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x6abfc4ba mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x5a4a1700 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xf729199c nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xa01edd00 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x4cf7e9a9 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x29e6dfef or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x17c32549 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x40cdf063 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x13ea918f s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x9888b40e s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xc6f4d40d s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x6072b1c3 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x756ae3e4 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x1ef251b8 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x4d479379 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xf2fbdb42 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x6806432e stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x7571f620 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xa29f3efe stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xf048ebd9 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x45e2da60 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x35366d9a stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x366f5580 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xfe7a9248 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xe671f8ce stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x1107711b stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x23246871 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x59227d0b tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xda5fb7e8 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xc4c2de1f tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x0f2cfe01 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x3b395669 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xd49eb5ab tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xc79b5051 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x281b55e3 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x70374de5 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xa131b96a tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x53970d3a tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xd25c712a ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xa3ccdeef tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x11730f4b ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xd74ac445 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xc5a51da9 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xf061527f zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x1461a707 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x299cff37 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x46222813 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4b0ecbe4 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x81a9ef39 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x84f0eecd flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9809bc41 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbf1d9b09 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1c9e0fd0 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5d1ed04a bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xaef9b43b bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xc88ac679 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 0x2f4db843 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/bttv 0xced8c180 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xd0e6cfd3 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0a18cb20 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x45fda08a dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4dd82e1a dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x53dbef3c dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5622a53c write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbee9b310 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe7185072 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xeb847fcb dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xfebadbbd dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x693b84eb dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2da407ce cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x5231d08b cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x754a967b cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7cd1d3d9 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa54f8339 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x070f606f 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 0x3c0d5dda cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x43d797a5 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6dfeea63 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb6bae3e8 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb85acb31 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe759efe9 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xfd6d2a83 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x2ed0ac5d vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x4e20390e vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0a7ace3f cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x226ae228 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x26c98d53 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xd8fbcdae cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x3492eb1b cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4e5f6398 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x5a4dc839 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7ff51ae6 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x85f5efdb cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9acf6d85 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb1141bd4 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x134573b5 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1825395b cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1d529029 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x21b60f0a cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x289920c2 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x314e1dae cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3eee811b cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x47662b0e cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7392583f cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x77439b2d cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7e57ecb7 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa134c06e cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb147fa40 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb69fd89b cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbc869afc cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd0662cc5 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd41c48f9 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd6a35eea cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe09a56b0 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xea8e1c09 cx88_reset +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x09fb3d5c ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x107ab243 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1c19690f ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1f53a9c7 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3542808d ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6ac079ec ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x86dce938 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8852ff2a ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9557ecdb ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9a71e359 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa1a4d972 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbfc2a30e ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc1446f65 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd9c7cd5c ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdc03c510 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdc5f573a ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe97b1549 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x05021f92 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x257cd025 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3ea9b837 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x53a15a22 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x58353ebb saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x59d5e8cb saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6b60f243 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x74dd7409 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb7c6cdda saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcbf28ceb saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xeb23459b saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfd4cb9bc saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x58d10e77 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 0x039c3755 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x04231dfd soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x33442e11 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x56e1ffe4 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb8b71080 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbbb4ff19 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf4c0fc14 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 0x16b43c7b snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x1b0351d8 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9681bb90 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc9e9984b snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd599a1c6 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xeb805615 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf8af2aa2 snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x27fdbb06 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3b113a7c lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6f799739 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7b9bc20b lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9397a9f4 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xab201fae lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb33ef17a lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe75af226 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/rc-core 0x1815ac46 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3938ff97 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x1f309666 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xc48b8779 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x3c47332d fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x79c0ca8b fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf6b9640e fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0x1ce0dbf8 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x6ba32ec9 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xbdb77451 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x85ffc374 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x035db1bc mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xe25a9cc1 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x7af2b296 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x80226982 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 0xa0b4ff51 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x7c77ae4d xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x306e6ed7 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x6e2a6e43 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x7796c9b6 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0b7fbd04 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1fbf806a dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3f737391 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x43053a6a dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x444fc47a dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x515bad0d dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x61b54bda dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x89d80d98 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa1d16f93 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2790d788 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x29c5c953 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2e34829f dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x600be5ee dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa5d43910 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb519452f dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe07fc1f2 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 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xf0e10e14 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0efc1214 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x11101272 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2bde11a2 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa3fde358 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xad658d1a dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb197e3ae 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 0xbb206c0b dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbf14c3ae dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc05056f3 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd28d462e dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf799d524 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xa8ea4dcf em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xcf2c525e em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x07b241ae go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x095e0857 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x509379bb go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7c16baf1 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8a44cb09 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x932fa645 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa4563869 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xeb159794 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf997f979 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0ba52dcf gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1b817662 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2ac196a8 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x603cca24 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x620e73f0 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x86a06a54 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8ed86a95 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xcc8b61a3 gspca_resume +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x194be842 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x3cb861db tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xca68b45f tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xc0fbf6c7 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xeb3cf70d ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2c0128d3 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 0x5ccf094b v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x8d78e428 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x00e3f323 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0105449d videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x13742c0b videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1bb5382c videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6aa6d4f5 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x98c8d844 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xea1cd09e vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x014f6e1c vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x068a5c3f vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4e9b28c8 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x66cc37ce vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xb99331d1 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe76b0121 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x019f796c video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x045ae06f __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x04fd775d v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x087bc522 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0a7de018 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12517aba v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x19bccbdc v4l2_clk_put +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 0x272393d3 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2abe2193 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3205824a v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x34997e7e v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x35802d4e v4l2_ctrl_cluster +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 0x3bfac7d0 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3d2806c4 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e2c7eb6 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x400408c0 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40d829a0 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x431da8fa v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43bea58b v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47593f11 v4l2_ctrl_g_ctrl_int64 +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 0x4caa6f9b v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d9b793b __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4db36937 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f105c1f v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x53b16332 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5487a429 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x551e3628 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5918bf91 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d107182 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x622d5499 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x67bd26c2 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71df7982 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x748f5f45 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7872fbd5 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x787ec423 v4l2_ctrl_poll +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 0x815afe38 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83490ee7 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8449b9ff v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8769a6ff __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88031919 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88be3ad2 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e92aa3f v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9033b860 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x94e1efda v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x96b901fe v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9cbe2448 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa04523d1 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa117fcd2 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa524ee83 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6ba3f06 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa98e1ffa video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab40f819 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb17a690a v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb35f19c2 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb386d94f v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9058f9f v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc586cba v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe217a2e v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc80ef5e9 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xce1a56e3 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1cced16 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6f7dec6 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd747e9a8 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd9046207 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdb122bc4 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd0da204 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3c17caa v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4209fdd video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe54f4afc v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe8cfc6b5 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeff02460 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf9b30e49 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfae09c9d v4l2_clk_disable +EXPORT_SYMBOL drivers/memstick/core/memstick 0x06ee4903 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x199162b7 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x645b6b46 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6e269875 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8621a935 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa9b7f370 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb1c06ff5 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbc29e1a4 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xca1f3c2c memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd79127a7 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe3977531 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf2cce343 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0cdab3d8 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0cef757d mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x19685706 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1c643685 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x25316c06 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x293889a1 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2bc790da mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2e1dc05f mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2e7c6a8a mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32a4e0fe mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3509fd3a mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3baf69dd mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x48238eb3 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x49d7f441 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x655ddb61 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c704423 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x84d31f4c mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9bf2ff45 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa02ad7aa mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0bd433f mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa86684f8 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb699f00f mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb94fddf4 mpt_clear_taskmgmt_in_progress_flag +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 0xdb3382b9 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe0c3ae58 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe2b3c8a7 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe41a53ee mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf68a50fa mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf9dc85b1 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1b965f11 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x294cd046 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2ed8e73e mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x37c46797 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x45bb8641 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4d48839a mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4f12f6d0 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5971e421 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x65a6b028 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7265d717 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x82b18218 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8f1922ed mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x96c961e4 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9ae23762 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9b9302e0 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa624e147 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xac8584c3 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc022587f mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc1e323fc mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd1f33b83 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd539ccb9 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd8898bbe mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd905ab6a mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe0f81fba mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe41fd463 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xecd74cbf mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf57dba74 mptscsih_dev_reset +EXPORT_SYMBOL drivers/mfd/cros_ec 0x8e00c5fe cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe9de28e8 cros_ec_register +EXPORT_SYMBOL drivers/mfd/dln2 0x59f9a6f7 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xbd3e0394 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xdb44799d dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x0258ba7b pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x5827c5ef pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x126d3cc2 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2fa3b851 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x98eead61 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc7e41fc4 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc8a91214 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd0bd5e5f mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdb83ddcc mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe6b343b2 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf22cade7 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf4670bc5 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf4ed85a2 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x390d43b5 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa46d4231 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xaa99e0db 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 0x8597edba wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xc834b057 wm8994_irq_exit +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 0x48cec000 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x895c5b35 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xfefe536e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0xd12d7daa c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xf01d6b56 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x5496a6c0 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xe0a7164c ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x1910b9f3 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x63e2ba5c tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x7813be76 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x89adc831 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x8a2f5227 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x98ab823e tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xb424952b tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xc3df2a8b tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xca51d6a5 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xd5103c4d tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfce2aeb0 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfef20bb3 tifm_free_device +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xf1e745c7 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x93f1ea0d mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xe3411bc1 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x14a0ae92 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x61223d58 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8079e5de cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x91edb9d9 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xac3e2fbf cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc8a50e9d cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe274ab24 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1b8183cb map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x630e338d register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xecc53c58 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xf46ec82f do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xb24b15e0 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xfb83c647 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x9f27a4fb simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x4a85b099 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x575a2f63 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xccbbf1de denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xe749d464 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x6ee3603d nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xaf545214 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc5894c82 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd84f6243 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xfdc949c2 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xff0f9017 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x12e695d7 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3146bbb9 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xf3e9c394 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x05321791 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 0xf1981597 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 0x1ee4dd9c flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x666be992 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb3e46213 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xbe202a23 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1fda023a arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2cb07197 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x34a4ad8b arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x64ef3695 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x70574bd2 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xaced0e0d arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbc5f3fdd arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd08f0436 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xec90fbf9 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf31578fb alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x01efe894 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x432e395d com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x496a697a com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x01e291e6 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x245b15d4 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x28835fa9 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x379cddea ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x75c32d2a ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa13359f7 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xabef702e ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcb172189 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xda421a1c ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe82f9d52 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xc36ff2db bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x71b3a06d 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 0x02204792 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x043c0330 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0d2efbfc cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1c2deb35 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3f87edb6 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x54bb49d3 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7535fa46 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8c0e00f1 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x90627b57 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9dfc3c45 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa081b9a5 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc9a3782f cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd3b767ce cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe31f5bdf cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe5170f48 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe5d761b4 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x07f81366 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1a0839c3 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f358e54 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x30ce329e cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3cd2f1ae cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3df47026 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x434b9989 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b4a46df cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4bb9e32c cxgb4_read_sge_timestamp +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 0x5b8a8bb6 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x63a66a9f cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2f6ec6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x70f5a44b cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x751188ff cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb2084fac t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb7e7f5bd cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb9f4587c 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 0xc99ac6cc cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcb4ea5a3 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xccc5e231 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcce6ee91 cxgb4_ofld_send +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 0xda3696bf cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdd704ebc cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdf8d2482 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdfda01bb cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe4a707d0 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeb20602b cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec652d01 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf031cefa cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf1c161d6 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf55dff29 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfccf7e28 cxgb4_dcb_enabled +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 0x62cfed57 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9fab094c enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xbf2fdb35 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4577b07a 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 0xcddd975f be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0361a4ce mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bdf0f1b mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13779e2b mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27d552ba mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e103a8d mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ddd6ab0 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40648532 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4169268c mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54736783 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58a1f348 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65cdb7b7 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74137a93 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x741f226d mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b6d2b73 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91f9e90c mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c4d2c48 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa013e175 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa04341ad mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4d6ab17 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaafced13 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae45cfd1 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae49f342 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5a63e64 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc90677ff mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd247702 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2285a48 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2419c48 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3a2c931 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf9b0629 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe20abe22 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe98e95d5 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9c0382f mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec3f61e2 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfaf806fa mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb921363 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc21a142 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0097bc68 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07e0d0ed mlx5_unmap_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 0x08b88187 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0954430e mlx5_create_flow_table +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 0x0fb15c66 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14c95693 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17b12090 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1bcc2708 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c0648a4 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2447171d mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24d5139c mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a1dc75c mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f4ce875 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f716199 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x47123b88 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4846e694 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x553d6728 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x600f9ed3 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d1bdf6b mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72bb72b8 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95b7f59e mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c1d4282 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d7fc267 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0a5fb2a mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa2b00b54 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb22b97cb mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb52c6cb5 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf964db9 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4e6f42f mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd817f2f3 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd9787157 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe433337e 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 0xe80fdea5 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xede01f8e mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf48ddab7 mlx5_get_protocol_dev +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 0xfca5a8e7 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfea815c0 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x356d6d23 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x834731c9 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x85ad799c hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xbfac6981 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc4179b68 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x074d4395 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x128fda90 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x70fd0f92 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa4219798 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xab9dcf9a sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaddf0bd9 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb7b2d9ef sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc684e1fd irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xde6f7560 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe72abcf3 sirdev_raw_read +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 0x08d824ee mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x2d8d190f mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x324d1ae1 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x77fad3cb mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x78b8e401 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x814ffd47 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x91228e03 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xed0cd9c0 mii_check_media +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x3c04b1c3 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xc3368580 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xf0f593af vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x57035e28 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xd0d59c29 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xeb8bd95b register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x5b127fb1 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x15efa9c6 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x1dd38c73 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x6240bfda team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x8d2fd742 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xc0b92ae2 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xc38cb1b5 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xd60cb614 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xdcdefb47 team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x6c5b68ad usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xafcf1e70 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xd70e89c8 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4da2acca unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x55db30e4 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6f05e4e6 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x75d4e97d attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x959bc890 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb08880fe hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb282100e alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd14af21f detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe9f220b7 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf05ddff3 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf742d0ed hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xd0fdfdbc i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x04c438f2 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xb8027688 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xc58ba9d9 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3a249e3b ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4ad6d6f1 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7278fff7 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x73522c7e ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7fb721d7 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9dce151b ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa7a30ebe ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc07209d9 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd99332de dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe0db06ff ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe3e0d788 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xed7369cc ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0555ee45 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x069e9d71 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x181034e3 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x19bdecdd ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x57c99764 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x58011fc4 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5c1b980c ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x97ad3f18 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaecc2d64 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbd07291d ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc73b9983 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3687e099 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3d29382a ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4b9d2813 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x60557609 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6474bca9 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7ab3e768 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 0x7c42a5d5 ath6kl_core_init +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 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb073cfef ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd41fbab0 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfe60c963 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x042ec1c0 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0e7e031b ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x15276111 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1b4553f7 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1cbd7640 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2b8605f6 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x43944a5a ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x45a534ee ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4ad0f290 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6698900c ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6919fb11 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6f1cf38c ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x77183b83 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7b9577f4 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x830b14ed ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8f240a59 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x984080fa ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa6751759 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa71241f4 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb1c74bac ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb394a424 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbd4e9c15 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd171f5f8 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_hw 0x04f74c12 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05c504c9 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06901664 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06ea4b00 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e24bdd8 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13499da2 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13b4de01 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x143fd190 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x145aaeda ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16eb2aaa ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bfa324e ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c568e25 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x223902d9 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26d0324a ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29275a6f ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c650b4c ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x330ecf1e ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33e84066 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x349a5fbb ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x361faa11 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b68ae18 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40b22a65 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x434472da ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44a96982 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a6c557e ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a9e45bc ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ec641e4 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56d1b390 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a1206a6 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5cfa8ad4 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61443efa ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63a0e4c9 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x640a0090 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65b2bf77 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69c5b6ec ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69cdf00c ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c51c2da ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d22065f ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d5750f8 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70624298 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7245fa96 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72fb4e28 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76e18a6b ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77e7d1c0 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7995e63a ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c40647e ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e74ebab ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7eba192b ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8107bc1f ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86fe825f ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88b7a572 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8aca89a4 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ad3c71e ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8cbbb83a ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x904b7b61 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x917ebbb8 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93169ad9 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9dbbdf00 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa07bbb1c ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa207c7a1 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4164956 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa52a829c ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8a8fc44 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa940e13a ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad015b52 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad8bc43c ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae917ffe ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf2c3ea2 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb041e0a8 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3bb5026 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5ef913c ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb63e47de ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba2dcd8a ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfe1088a ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0449618 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0f87872 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc791018a ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc82839c8 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9042035 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5e26d37 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6adcdf4 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbc0d178 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc2cab7a ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc2f8777 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc6a7bee ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd8f9068 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf894e56 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1759bb4 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3b459f6 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5e7ee78 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe96bb88a ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9876bad ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea811578 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeaccfebb ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb9aa523 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecdfa728 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeecc2c10 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef2ce66b ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1bc5cf4 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3363138 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf428373a ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8fe3d0a ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfae694f4 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd8ab780 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x80c78e83 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x89b69b35 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa511fba3 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x137d279c brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3e5058a1 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x458b1f2d brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x63127bae brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6ed437db brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7f948d19 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8d8c03f5 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa9d4f203 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbd373974 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd7eee03f brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf039f067 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf79291b0 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfc74ae50 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x005a96a1 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00dca089 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x17f1ec57 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1ad6eb11 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x24bfa663 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x25b6fc4a hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2b98dc04 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2e2af796 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x35830a1c hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x502e6e3f hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x592525b1 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6a89089a prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6ffd9f03 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x705a1927 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7467e841 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x981c267f hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x98b7e472 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xacb35272 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 0xc15d0008 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd38e0ec5 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdb9e160e hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7abedb5 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeb3050a4 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf34dd27d hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf579a9ae hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1701223b libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1bcea00c libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1d080896 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1f8d7c22 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5a091cef libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6e50ce95 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x702bad55 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x77a6d418 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7dc574cf libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7e592411 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x92dcb1e7 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9608d3b0 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa9d8b53e libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaa93726f libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb6d68cc7 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbd8d14ae libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc8229fce libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe01a0178 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe1511fcc libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe9f885c2 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf48bc048 free_libipw +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x001815a2 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0621e016 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09679740 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c8845ff il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0cd39883 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10b17de0 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11aa7c92 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x137e460a il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18a74f4b il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19837c28 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x199cdd51 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b3ccebe il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e0e8718 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f13250a il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x201fbffc il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26e3829e il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27bb90e1 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x286af706 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2901327f il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x369e4fb2 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c17105c il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c282bae il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e4e29ab il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x450ac251 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x472bc1ce il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x47c7867a il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x485596d2 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f3f797f il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51be6bfb il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5671fb87 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5abcc5a0 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60e407a6 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66729551 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x672ba3c3 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6fcca984 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73d71ecd il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x751aff5b il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79bfeeb3 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d3c4ca7 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ed367af il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f31da3e il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f83a5bf il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x83778590 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8500fc24 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x85c49bf6 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89ad351a il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f479659 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ffa3538 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x91f0aed2 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9368f191 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95a59164 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c2949b9 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f09bec3 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa0484562 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3deda9d il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5522ec3 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa573060d il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8bda230 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9aeac5a il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaa19e446 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xadef4723 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4fdd961 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7fbef47 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba07fcca il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba6471c3 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb76974d il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe68c3b2 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0131c9b il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1e859eb il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6e8819f il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8936155 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbabdf34 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc8f9f33 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce075ef3 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf6478ab il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfe1e13e il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcff32ffa il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd25bb228 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd26c94a9 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6bcd873 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd76d1ec9 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb315c26 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb40fe6f _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdcdc1b1f il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd6e4c7a il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf056373 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1dcb563 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9f830c8 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecea1c1e il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeceb3a73 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee1184c5 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee7fe767 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefb0b458 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1333ae4 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7345a51 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9874e3b il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfffd0581 il_apm_init +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 0x0124f1db free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x15b36485 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x28192fc3 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x33aeddd8 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x72035115 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x81ef525e orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8589e946 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x88a180bc orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8afacc81 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x98c2a3f2 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9c12f151 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa5af525c orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa86079af orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc34077d2 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc94398fc __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd5f94723 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xa59a6f82 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0596da52 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0af7d68a rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1006d2fd _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x15cd3b6e rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x166984a4 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x207fff24 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x23817140 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2454de79 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x29641a3f rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2e06e1a1 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f5c36c8 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3dbeff5c rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4415ce74 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x45c5a943 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x487d6dd6 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4c1e4af4 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x54747ee0 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x59e71844 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x608c14cf rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x634226b7 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x73d51e3c rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x74966cea rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7ecb5e8d rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x866b9058 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x87145bd0 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8cc32676 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8d3dafed _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x916866c8 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x93157273 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9dc1a3dd rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa381abe2 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb1767915 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 0xbb745d63 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc5425e78 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcf010e13 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd0c9da98 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd91a2538 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe4855d85 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xeff8ba79 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf3a7213a rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfccc462b rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x01cacccc rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x4b9e6b0b rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x7f21b015 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xa4da0cd9 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xb8a22c8f rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xf486ce52 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x012e053e efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x039ed730 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x08141fbb rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x12aa3b1d rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x31dd0b0a rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x389a0189 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x403f9c27 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x41f0e7f7 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x427bdfdd rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x50bb9f55 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x598a8d51 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x59bbe041 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6748991c rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x69811443 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6eb620cc rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x868a85fa rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8d83411c rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x994e6fc9 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9dbe26cb rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb5aa43dc rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc23eb449 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc458832c rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc56ea598 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc8458667 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcb60b96f efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xceffc025 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd5616199 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe0090991 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe2685846 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf6219ebd rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x4db8d0e6 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x518a5b80 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7f248ebb wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x96ca01b2 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6e2946cb microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xc5dab159 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x5a514e24 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc1fd3c1c nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xe762c364 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x6bb04fdb pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xe3d3a25f pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0218cd16 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1c643581 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x57301aaa ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5736d437 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x99472437 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb1ce87c4 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc260e6d6 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd4b9a78c ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf98ac14e ndlc_open +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1ca9d75c st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2e456c54 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4e2bbd70 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x636b1cc7 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x65d03cb2 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7cc452f5 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7da12e29 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8b43377b st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9929fcf2 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9cbc0f73 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb7398294 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbaf5f254 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd19bcd6e st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe77b89b6 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe821452b st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xea1b51bc st21nfca_hci_remove +EXPORT_SYMBOL drivers/ntb/ntb 0x29c0468e ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x3b053800 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x4fab8f35 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xa3915e65 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xbd1ed18e ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xd99c3d23 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xe56a41b6 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xe9f233cb ntb_db_event +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x6a26f4c5 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xb20c2afd nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x087008ed parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x0df72d78 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x186f601e parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x1adb979d parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x20887403 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x25742c57 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x28c11b5f parport_write +EXPORT_SYMBOL drivers/parport/parport 0x2b3f18c1 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x2f594c4e parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x4109b96e parport_release +EXPORT_SYMBOL drivers/parport/parport 0x48828a1a parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x552ea7d4 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6612665c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x7ca8d27b parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x83f7341d parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x89fc0249 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x8ec8c968 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x995dae78 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xaa3187da parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xab488683 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xad587f23 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb213e0f3 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xbff3e053 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd0cde6a9 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xd7e52637 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xd85bda3c parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xd874990b parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xdb62be26 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xe078a309 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xe7b305c1 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xf22ddd5b parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xfdd6fe72 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport_pc 0x5d67ee75 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xfe9fa7fe parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x04327f41 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x244a896f pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2866e7cc pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2fa48e96 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x311803a6 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x39337120 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x450ae23a pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4b2f7fc1 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x52c27e92 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x70615d97 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x737c398c pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7667f6d9 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7c23f0a1 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x957d68d4 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x99ba5880 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9fa9c19d pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa2824fb5 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd3e5032f __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe399e15f pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2fd5f929 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3470eb70 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x51a27a4b pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6bf258f1 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x91fe22a7 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa21cf135 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaf49488b pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb7feb166 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb92e1903 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xeb8e969b pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xfc69b668 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xc84dea21 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xe38a3cd9 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x1461f28b pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x306d07a2 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x9f76f921 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xeca9c9c0 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x53a2ea4b ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x81a9e777 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x8c6621a9 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xa7aa7e51 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xe42c9651 ptp_find_pin +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0777dad2 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2dda137a rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x451d92c9 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4532eafe rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4c6e6032 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa32beeeb rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd6804b06 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xda41e2b8 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe586bcb9 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe9eb403e rproc_add +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x9edaeaaf ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x1ad03a21 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x2ce0b46e scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x71160d51 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x7854f043 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x10cbc64d fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x188a0695 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2070bfdb fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x23b7da30 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x353776a2 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3ff0991c fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x81d162b2 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x851c46fa fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x90f3f5a1 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd0625df6 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd894450d fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xea583352 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0292ff89 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07ef4194 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08dd6f59 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ec59a7e fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x136d03ed fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x17ce6330 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1da7015d fc_lport_init +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 0x31b7c9d8 fc_linkdown +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 0x42788921 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x428a2ea4 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5dd0c2cf fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x640f8723 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6457591e fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66eb81fb fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6977f9c6 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e699a06 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72521eeb fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d0a353b fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7eec37b2 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82558f90 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x86a8c89e fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x88a95c42 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8d231103 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8df54a62 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x90ded47a fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa24d72c9 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad2e3171 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ad2a66 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbbeb62e2 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc2954a4d fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb12ca66 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xccdf7692 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfdb91d0 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1533579 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7378539 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb8be602 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf176debc fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf3255f98 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf4331532 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf4eb0479 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfaba9b47 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd64bc1e fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfdf97fa6 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x05b2a467 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x2ac7955f sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7d39c8a2 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb4366109 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x360f3d6a mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x06fa6dcd osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0fd1197e osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x166a56dd osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x184e7a4e osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x26f823eb osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x27372966 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x308dbbe3 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x35d96366 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3986273c osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4af14088 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4cc8ec8e osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x50e1e9a2 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5bc0cd0e osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x68d7bac7 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x697a72cf osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7767aad6 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9230ce61 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x93a106c8 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa132f858 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa556b401 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa6469da4 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaa847495 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xac3743f9 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaf5d09c9 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9ac78bd osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbfd6fb52 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc2045afd osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc412329e osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc9555ce4 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0ced961 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd889b6e5 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe1661a10 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3d4b7bc osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe7854f6d osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe8e646b8 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfc480b47 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/osd 0x088f2719 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x66474d89 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x844ace37 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc944a8de osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xea7ffe30 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf8c2afee osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0892540d qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x174b9eac qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3d3c5021 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x56c11d4b qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5be7e69d qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8f055c5a qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9a068833 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa27fce45 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc4d6fcfe qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xddc3fefc qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe7c4f541 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xeb30fd24 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x330b3370 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x495c8138 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9ce6ad14 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9ef29de7 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc3d5256a qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xcca719c7 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 0x340f06ac raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x494db4a2 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x49a80f60 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4006bae6 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x48e4f8c4 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x493c904b fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5fe4b291 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x74adfdec fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8e0c0dd1 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8f417eff scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x925c1020 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa7d96d0b scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc562328e fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd49ac46f fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe4d1a953 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xeaf1338b fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0640bbd6 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x175150de sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17750bea scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1b7c949f sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1c55249f sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x21d55a51 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x25440ac7 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x378f1755 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x40c37b7a scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4196ec00 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x47cb2110 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x59844376 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6ca2b092 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6e2270b3 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7248b6c3 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x855dd166 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x964e2a84 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x96b0e5fe sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x96bd87ea sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaf71ae68 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc88a58c4 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3cebe5f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd6e6a9e7 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd7ed8c81 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea8f094c sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xeefacae7 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf7f114ea sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfb96c9c8 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0733cbb1 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5bc53893 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6c5b7ece spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe2dd6e8b spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe6aa5db2 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3acac335 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6c7e4edf srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8851992f srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8d53393c srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x13265281 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x1ba9a5bb ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x23a8ada3 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2cc52c36 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x67ee5c52 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x72c95910 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd81ad563 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x0a0c1946 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x1d7c3db0 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2e5036c7 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x34053125 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x371ebe0a ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x4a32ce79 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x536f7e41 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x5754e273 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x6499f5ea ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xa47a9034 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xa5964e5b __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xac690987 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc25b3da9 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xc3883005 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xca0dedae ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xcef6784b ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xd1e4d87c ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd62cde7d ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xeba9f29d ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xee684f83 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xfe7b9a6b ssb_device_disable +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x02fa205f fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x08152e97 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0f54dcf1 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2dc2cf90 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2fb857ee fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x48b58287 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4efe1f72 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x58d48ba2 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x592b4b04 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x66eead47 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6f44a1ca fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x71c74ed5 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x956699aa fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9676a037 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaa30674a fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc162b61c fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc210b1d2 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc6ced404 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd3f59bff fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd41dbbfe fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe032f38f fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe8bd277c fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf5dc8190 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xff3376dd fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x3843941f fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xef9a5a06 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x7270b5cf adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x492e7a70 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x6a8dba7b hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe4da369b hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xfacb8f5c hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x3b211bfc ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xb02389f6 ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x01b87668 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0693ee9d lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1904c09d lnet_net2ni +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 0x39d88a06 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3a28cbbf lnet_sock_listen +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 0x3f7584b2 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x47e834b4 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4d53f8c4 lnet_copy_iov2kiov +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 0x6bd8062b lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x71a6011e lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x75c25908 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x774049db the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7fa5c1ae lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7fd26939 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7fdeb04b lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8cdd0784 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x925ae84c lnet_copy_kiov2iov +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 0xa762e4b4 lnet_create_reply_msg +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 0xc1aff74d lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe3669c47 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xea821ad6 lnet_unregister_lnd +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 0xfea479a6 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfef39742 lnet_sock_getaddr +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 0x5f0eba32 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x82e0750b seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x99798df1 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc3d60155 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd32cf6ee seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdd22b959 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xff7b2ab0 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x314299bf fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x75c786f1 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7b097fe7 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x8da27eda fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa27f6d25 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb0d0040d fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb561b312 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 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 0x0cc93537 libcfs_kkuc_group_add +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 0x63184c35 cfs_crypto_hash_update_page +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 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 0x6f6dcf90 cfs_hash_debug_header +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 0x9064d67a cfs_hash_debug_str +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 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 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 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/libcfs/libcfs 0xff2de9d0 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x0de3575f ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x4b2510e4 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x58b8b4ba ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x8accd75c 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 0x15ff29b1 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x5b2d7fe7 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x9af9621d lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa42d6137 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 0x000db8d1 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01376c4a cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x013d1053 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0146916a llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x019d5fcb lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01e14552 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x020086d8 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0267aae6 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x037af8df cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b37a9c lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05547aa7 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05899600 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05ff2e3d cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x064e974c capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x065d4399 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x072b9fd1 llog_cat_declare_add_rec +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 0x07dffa7b cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x086b3169 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a5aecdc llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0af253e9 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c3311c8 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c48ab64 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d208f95 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d30f3ab dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dae8698 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0de81803 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e3e05bc llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117b2c97 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12574964 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12bfedf4 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13245e9e class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1477f847 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14b35a9b llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x161b1651 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x171af810 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x171f1aef lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1846a0f1 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1888cd9a lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x194a3ac9 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a630abe llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae0e891 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b13bb29 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b741326 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d70874c lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ddfaece lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f33c232 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fb97ebf lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fd8759d cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x215e3a7c lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x217268b2 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2209c4e2 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22ed64a3 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2318eb28 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23201462 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23bf4b46 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24a82f24 cl_env_peek +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 0x262283b8 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x262e26bc cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26460748 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x264d402d cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26679732 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x267e53b4 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2733445f lu_site_print +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 0x291bf709 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x292f036a lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29b9bb36 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29bdc65d lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a700216 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cef1d79 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2de0d2bf lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2df4a5ae cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x304b7765 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31292dcc obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3184b231 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3216a8f6 cl_page_header_print +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 0x333aa9fd cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x344de2cb class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37591cb9 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37fe9dc6 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x384d9592 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38aedf78 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x396407e8 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x398542fc cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39a6e661 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39e19b2f cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b05333b cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bb803a5 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3becae35 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d5d92d7 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dc5f8b9 dt_lookup_dir +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 0x40543857 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40699065 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40b9bd42 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41053128 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42faefac llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43c7fb54 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43ecc86d dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44196bbe cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44673e2e llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44dfb7c2 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47155906 cl_2queue_discard +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 0x47c821d6 cl_env_put +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 0x49a12667 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49b28b40 lu_device_fini +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 0x4ab3a57d llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bff57ae cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c2410c0 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c6aba39 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c8d77b1 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cebb89d cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d4b4319 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e38e6fb cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ec5545a ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4effef9f obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52ba0832 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52c54a4f cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52c74f4c dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52cd4601 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52e7507b cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54776122 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54a1e971 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54a673b1 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54ed44e0 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55761b70 cl_io_lock +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 0x56ac3e09 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56c4bb6f iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x575b4688 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x584a566d dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5894cbd9 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58be87c2 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58bf308a cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58bffc0a cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5903718e ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x598dea3c dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a62cb31 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5be748e0 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c4e21c6 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d2f899e lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d813e27 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d898ab4 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d98f0f0 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5da46850 lu_cdebug_printer +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 0x60ad1928 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60eb1874 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x612a6246 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61320368 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61c6a083 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61fb5d49 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62104e79 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6222c9f7 cl_lock_closure_build +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 0x63583e8f cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63dbe561 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64616a99 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6562f1eb lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66592032 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66cbe4a9 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66fae918 cl_io_slice_add +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 0x67fc6a60 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x680165ec lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x687615c2 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68a5e4c9 llog_copy_handler +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 0x69dfc2b1 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69f3a4c2 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a1b2774 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aae7e37 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6acabbe1 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ad15aab cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6adc12fc cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6af3a2fd lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ca42c5b cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ce3a7b3 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dade393 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f551d2b class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x700e9325 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x704316db llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x704c31e5 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7108e643 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71906d67 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x747bac94 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74b929c1 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74e58b5a dt_device_fini +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 0x75afe331 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75d7b763 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7657c98d __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76949411 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76a645df cl_page_get +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 0x798401c6 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79a6dd87 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79be00ac dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79be86ba dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79c812f8 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79ec4125 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a329ddd cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7adcc174 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b057b33 lprocfs_rd_state +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 0x7c3c812d class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c6138e5 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c85c2ec class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e5ff683 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ed75aa7 class_disconnect +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 0x7fa95819 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x801ffa5f ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80372b48 cl_io_commit_write +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 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81dc1eed lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83102078 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x835c3bb2 cl_io_prepare_write +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 0x8494cd74 cl_lock_user_add +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 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x858f07ce class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85c3cb06 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x865d010d cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8668b0cf class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88ae3dfc cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b87068 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88d8287f cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x891054f1 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x899eaa12 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ac62200 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b03d448 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b058e72 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b8ef47c class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8baf1473 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8cdd706c cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8cfc33d8 llog_declare_write_rec +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 0x8e541a62 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fd92751 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x908d76f2 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c3209f lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92817fec cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92aad3c9 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92c3ae3b llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92f8460c dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x930b5854 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9347cfc7 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93553250 cl_locks_prune +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 0x94ea0f9f cl_object_kill +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 0x9561a41a lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9590468a cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95c42d4f cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96b7258d cl_page_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 0x981e4943 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99934d3c cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a39ea1b class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a8474f0 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a854dac class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b68002f lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c97b0d3 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e1fb60c cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e9cc5d8 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ea33039 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9efc51d8 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f22622d cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0b8244d dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa233e1a4 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2e0fffd cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4b84d4d cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5923218 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5c039a9 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa65eaae3 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa76f2769 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7fa8517 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa82a3dd1 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8311e1a cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa85e5d1d lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8efe5e8 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa970b9c0 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa5049df dt_txn_callback_add +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 0xac059a34 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac94d31c cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xacae1cf9 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xacbeedbc cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaddede82 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae76ee08 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1320d87 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1349ae0 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b225c7 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb235d668 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb30bbf46 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb347a8b8 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb38d68ea dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4a003a7 cl_lock_error +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 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb76987f3 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7c05d60 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb808fdbc class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb85b2b82 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb87134a3 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb982db45 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9c4f4d6 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba154481 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba2a4432 lprocfs_rd_u64 +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 0xbc1a31aa lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbedf2217 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfd0da64 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc04b4ef2 cl_site_fini +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 0xc1334842 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc220499f dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc25f55df cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2759e0b cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2a5024e cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc31d240a llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4373783 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4538299 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc56c04a0 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc60ffbfe cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc72f561d cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8153e03 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8d9c86f cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc3e0754 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcebd22a8 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf4d76f0 lu_object_put +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 0xd23bc918 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2466ce2 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2d23e8f cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd30ef465 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3d230fa lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4dc3bac cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd758b0e0 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7894e81 cl_lock_discard_pages +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 0xd7ee0038 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd809cd18 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8841ec1 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda206eb7 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda2c9c2b 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 0xdacf20f4 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb2e3639 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb3b4283 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc8675de dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd22cf73 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd32f6f0 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddc7795e lu_context_key_register +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 0xdecca4b0 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf227803 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0f14942 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1148945 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1325233 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1a6d54f class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe21deaaf cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe256a28e cl_2queue_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 0xe3ead798 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe46888a2 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe51c980c ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe52d13bd class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5359b54 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe579c123 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7c2e16c lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe81343f5 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe91d5035 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeab1c535 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeabb2cf8 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebb0c370 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebe43346 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecb0fa57 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed6962bc lu_object_add +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 0xef9954f1 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf07b33af lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0c9ac2d class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3785f5d lustre_process_log +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 0xf4aa8db4 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5c23e40 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6c5c24f cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6f52a76 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf73fd6e0 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7961ca3 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa09b0f0 obdo_to_inode +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 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd86ec66 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdc51ca5 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe7adbfd cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff052430 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffe8c313 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0087342b ldlm_lock_allow_match +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 0x0209ec2c ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02c7a9bf ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0353a696 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0396efed ptlrpc_mark_interrupted +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 0x0566f56a req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0692ca23 ldlm_cancel_resource_local +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 0x088ed0aa __ldlm_handle2lock +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 0x099c3f47 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09dcdf52 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a0e4f6e ptlrpc_req_xid +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 0x0b7cd6e3 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ba2ceca req_capsule_server_dump +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 0x0ee1331b ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f184c19 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f87cadb ldlm_pool_add +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 0x11effbac ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13632941 lustre_free_reply_state +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 0x14fe8b2c ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x161d981c req_capsule_client_dump +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 0x18fd6951 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x192d0f2a req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x194d38b1 ldlm_cli_cancel_req +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 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1caf6884 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d2548dc ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d76fb3e ldlm_pool_get_slv +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 0x1e611943 ldlm_namespace_dump +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 0x219a17ae lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21bc5c92 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2269b141 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23665d7f ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2368bb42 ldlm_resource_iterate +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 0x255d8078 ldlm_cli_cancel_unused_resource +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 0x258b2e2a ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26c8a81d ldlm_blocking_ast +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 0x2941cac7 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e63daf ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2bc950ac __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2bd80a6f sptlrpc_conf_client_adapt +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 0x2d2de83c ptlrpc_send_reply +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 0x30d1f80a ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31650128 ptlrpc_error +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 0x32c890a7 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +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 0x3870d68e target_send_reply +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 0x3982fc31 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39dd9636 ldlm_lock_convert +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 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 0x3cb8b681 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d1028c6 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d68440d client_connect_import +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 0x3fb7eb45 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4106e564 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x417158d5 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42986d94 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x431faf4c sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x437dc9cb sptlrpc_req_replace_dead_ctx +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 0x44d9d4bb ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44f8f42b lustre_pack_reply_v2 +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 0x464816d5 req_capsule_set_size +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 0x49aeca3f ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ad441b3 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4be0107f do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4bece550 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c5d8372 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ddbe0f5 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dfd1ab2 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e4c50f9 lustre_pack_request +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 0x51769c3d ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5253d1b2 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5328faa4 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53446d1c ptlrpc_pinger_sending_on_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 0x54e6ac3d ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555c0fcc ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55922a2f ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5595b822 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55a12d8b req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x565b2b6d ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5764b2c4 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58c55c69 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5925c577 ptlrpc_pinger_del_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 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b410e0b req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c4f0779 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 0x5c6cfb94 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c813ade client_obd_setup +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 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fb6afa6 ptlrpc_invalidate_import +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 0x60ff9b43 client_disconnect_export +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 0x625f29e2 ldlm_cli_update_pool +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 0x64ad6d20 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64c59920 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65594367 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66420e64 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x672ef8a1 _ldlm_lock_debug +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 0x690269ed ldlm_lock_downgrade +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 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 0x6dca5835 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e0b0c10 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6eb68636 ptlrpc_set_add_new_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 0x6f63ca25 ldlm_get_enq_timeout +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 0x715d4fad client_import_find_conn +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 0x725e5981 ldlm_glimpse_ast +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 0x759b9d70 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x759e1c6b ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75f4c3df ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7671a3fc ptlrpc_schedule_difficult_reply +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 0x784cdf23 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78573f2e ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a0acc20 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7aa31949 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b26437e ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b7f7fc3 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b857292 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c244c4d ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cbbbcb5 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d28b254 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7da75c24 req_capsule_has_field +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 0x8093f846 lprocfs_wr_evict_client +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 0x81677fb1 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d961d ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81fa947c ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82e62a82 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8354b080 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83aca919 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83d30ca1 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84fada3b ldlm_cli_cancel_unused +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 0x85deaa19 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863ac929 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86a26d3d ldlm_pool_fini +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 0x8933cc33 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89dfccb7 ldlm_lock_match +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 0x8a8edcb1 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b649c66 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8bd4af9e sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cbddbe4 sptlrpc_svc_ctx_invalidate +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 0x8fc58bfc ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x913bf0cb ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x914d445c ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x916c9b45 ptlrpc_pinger_add_import +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 0x92c6d7e5 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92d274e7 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x933ffb0a ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94c47229 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94d0e8e0 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 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9835305b ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x992492f1 ptlrpc_activate_import +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 0x9a782205 sptlrpc_enc_pool_get_pages +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 0x9c71bd54 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c91f404 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 0x9d7eb803 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fcd34a2 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa04877ec ldlm_lock_cancel +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 0xa21b32cb ptlrpc_request_committed +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 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a93912 ldlm_blocking_ast_nocheck +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 0xa5d4c4a2 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa66888dd ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6b23f8e ptlrpc_deactivate_import +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 0xa83efec3 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa98e8171 client_import_del_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 0xaa1cb499 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabb9cc34 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacc8aa1d __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacdbfeb6 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadec651f ptlrpc_reply +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 0xb00580ac ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb049a36e ldlm_lock_fail_match +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 0xb1f0b405 ldlm_lock_get +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 0xb2e8dd73 ldlm_cli_enqueue_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 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 0xb73640e4 sptlrpc_register_policy +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 0xb98f6af0 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa22486 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb395b93 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc03a631 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd15ab13 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd303227 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbde3f2a5 ptlrpc_request_set_replen +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 0xbfa7fc6e sptlrpc_lprocfs_cliobd_attach +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 0xc0fa0dc2 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1d2f5e8 ldlm_resource_unlink_lock +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 0xc351763d ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3a714c7 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4a05efb req_capsule_other_get +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 0xc61677a7 ptlrpc_nrs_policy_register +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 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca168f6c unlock_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 0xcb302c61 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd05fd70 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcda5af3b ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce26d9d2 sptlrpc_gc_add_sec +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 0xcee950e3 req_capsule_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 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 0xd493f7bc ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5a833b1 req_capsule_server_sized_get +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 0xd9c4afca ldlm_init_flock_export +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 0xde53d485 ldlm_lock_fail_match_locked +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 0xe071d961 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0a7dab3 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0c45d36 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe167cdf4 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe16e4264 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1ea4680 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2650ecb req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe41ae2bd ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe462ff3e ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4983459 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe541d8c3 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe591cd9c sptlrpc_target_update_exp_flavor +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 0xe684c60a ldlm_pool_get_lvf +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 0xe71fef90 req_capsule_field_present +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 0xe98b8c79 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb942eb0 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb9df7cf lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebccf655 ptlrpc_cleanup_client +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 0xedfaaa7a sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee4fe45e ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefed3c16 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf01ac2f5 ptlrpc_stop_all_threads +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 0xf1679889 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1c6ebca ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27bcb09 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2fc4d9b client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf333a306 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf36aee52 sptlrpc_cli_wrap_bulk +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 0xf4fee734 target_pack_pool_reply +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 0xf5ad2133 ptlrpc_save_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 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf816509c ldlm_reprocess_all_ns +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 0xf8e86d4e client_destroy_import +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 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 0xfc423284 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfedb32e7 ptlrpc_buf_need_swab +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 0xff39ff8c ldlm_pool_set_limit +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 0xab4753a4 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x023ee085 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0382b6df rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x047c79e8 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x067d469a rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x08456bbe rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0adcdd41 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0eae29a7 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x141ba789 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x20e92811 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x226b49d9 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x234e525d rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b034a00 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37192065 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42594c39 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x43c71d83 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ff322dc rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x55da2ffd rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57d2ec74 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5fc37f37 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6b07601c rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6e42e215 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f765ea3 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f83b9b1 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x72930ced rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7ced6bb3 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8bbe3fed rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8e5f9840 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93fa22f8 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a3b8ab7 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9e4ab408 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa00658de rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa5a3c2c5 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa78087d9 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa9b0a84b rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb34a00ce HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb365a692 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb661ef54 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbecfc877 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc518b7b9 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8e1c1c0 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca4b7967 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd0433296 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd64d0f7b RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd9df8091 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde5ac9d3 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf5c566a rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe456844f rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xef445e1b rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf29b7f57 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc134e58 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x03872393 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x05b5c946 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0693f3ef IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0c2c021b ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0d4b1192 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0eb26e54 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12c23e8e ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1834fbb3 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2cbb1b53 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2dab569d HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ef618df ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44f492a2 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4775ab86 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4adc4a08 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4c7fe1a6 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50374007 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67305d49 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6cc37b2e ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6dc490ea ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6dddea22 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6ea5fb62 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x726946fd ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x78046f62 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x80896c4b ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x812434e2 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x819ffde0 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x823ecd76 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x992b8781 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9c8adb49 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9eda0bf0 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4078986 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab912a6e ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaecef6fa ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xafc783ed ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb55cc621 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb6119cb8 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb61cd76b ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9bec298 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe77f829 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc0495492 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc7afa089 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc7f9da2f ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcd1df271 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd35a5e09 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf4daef3 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe03a9d8f ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe3d0bcf3 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xea706790 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeeb044e4 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2e53754 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf3788ff2 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf55e08b7 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf8ea77bf ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff4cd6da ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x041775da iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0fbe8119 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x147826d7 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x198f457b iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2c1af631 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x37c90838 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x394b0e6d iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x46093622 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x52932cce iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x55d4126c iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5792b9e4 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x64d3d16d iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x678021bc iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x68ccea0e iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6aa88c6c iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x78da1b89 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7db52f67 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x86b6f920 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8822a40f iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa04347fe iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa3b592c3 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb58215ab iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd25dcc74 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd3f777f0 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd561bcab iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xefcd00c8 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf32ed88a iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf4212295 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02ca9675 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x09696f19 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x09f04c84 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c8cbdc4 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x1341a10b transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x180ef55a transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x2156bded target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x226baf9c spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x2896f9db target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2fc97eaf transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x33799b69 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x39186052 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x3db95522 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f393ccf target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x435994f2 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x4542dc1e target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x4649951e sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x46e85e2d core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x47ec26d3 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x496f1165 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x4ae65eb4 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x5353e579 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ec758f3 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x6726f0d0 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x67de7b14 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x688c56df target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e34e701 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x74bccb84 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x76506ada passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x76ba817b transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x7803b9f1 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7955a7ee target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d688a12 transport_deregister_session_configfs +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 0x89455cac target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d90ac68 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f496796 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x9130cd29 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x95d3bf42 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c1eb2f2 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1b3c522 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1e063c4 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa250178d target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xa36e5cea sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xa39d30d7 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa671c240 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6bbc453 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xa7b4624a transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xab950e0e target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xadc790d3 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xafea4daa core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xb7ac259d transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd2dda49 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0adcd02 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xced841e7 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xd260e0aa transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd555ad32 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xda3bd9d5 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1dd03a7 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe404031f transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe62eea0c __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe761c093 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xe9eb5edc target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xeba0a793 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf09b5485 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9c975b1 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x73f509c0 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x5335764d usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xe639bb27 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3deffa0b usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x45ac2d6a usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x80534a29 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x84ce5bcc usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x96259750 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x98372fa8 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb73052fa usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbd241ef6 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xddd3a1ea usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdfa4305c usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf19a2b85 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf6569169 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x53affa7d usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xff5fa852 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 0x011fe3c8 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x22ed2170 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x52c896db devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x61ddb863 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 0x309fd548 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 0x80b0bd10 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8976f561 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8bc182e8 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa0769a0f svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa758f37f 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 0xe4b5f106 svga_settile +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 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xc8724c00 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x4b0b2ca4 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xb76359f1 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xd90ab60b matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x36f80e2f DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x69772f9c matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xcb841f43 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xdfb3eac1 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x25f9bf79 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x353bad29 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0a7770e1 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x1df64d63 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x56349960 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x6dc7b777 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x3c5fe386 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x873876de matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x040bc513 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x3bc1f1f6 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x493e50ff matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x681dc2c2 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xfe5afe7e matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x916a345e 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 0x4ac3a3fb w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x5b7de525 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9c6622da w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xba5291fd w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x09559214 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xca3544fc w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x3ece27d6 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xaba22cc9 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x36ca6778 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x776c9445 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x7a687b47 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xa5b0015c w1_remove_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x045b79cf configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x0dc958b5 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x466a6594 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x4e5206f7 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x5933eb2a config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x8b5393e7 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x97fcc775 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xac653bbe config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xb39072dd config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xd5fa4aa6 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf34ec7b7 configfs_depend_item +EXPORT_SYMBOL fs/exofs/libore 0x0924c655 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x0af3c692 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3f2fb234 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x4000805f ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x5d7ed424 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x849f0337 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xdb8abf02 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xece23a97 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xfa78f8bc ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xfdc3b1a1 extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x001ee825 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x0191c2e4 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x05c80670 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x1563ec9f fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x165eea7d __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x1c1ac294 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1f507585 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x25c1c5c8 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3760a418 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3794285d __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x50c4af78 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x55496c5d fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x5592c04f fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x5d5f8852 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x5fa3d6fc fscache_object_retrying_stale +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 0x7a6cf31a __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x7dfc18f3 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x85f461be fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x886a4be9 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x8fc93eeb __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9c441703 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x9d52de7a fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa5b3eda9 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa634c528 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xa9c4872d fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xb50fc828 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xbe32e4c6 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xbe5f261d fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xbe600518 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xc1089cab __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xc8cb082c __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xd2c0e42b fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xd9867467 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xdc429b3a fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xe2c47dd0 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xebc07b67 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf6419a0a fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xfc28b7bc __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xff48201e __fscache_register_netfs +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x11764176 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3d91af6e qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5fe650df qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x80a4fb8c qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xb3419f91 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 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 0x59adcc58 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x7552129e lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/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 0x69450f38 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x835dcafc lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x4424eac6 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x933bb1c7 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x8067a350 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xa6d4d59f destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x527dfadf unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xcc04fd7d register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x004e5a53 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x0d7830d9 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x10a4df24 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x18015bd0 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1b156285 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x1c068ff0 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x2c1a85e4 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37352df3 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x40cbd5cc p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x43271d79 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4be620bc p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x4df80e52 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x4f5850d6 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x56264634 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x660cde5c p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x701b6924 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x716b55ee p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x7816584f p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x8edd7940 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x93af2452 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x97c5cfdb v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x98894bc9 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x9cd79d16 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xa0fd3b08 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xb009b903 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb6ef8a2f p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xb9450fcb v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xbc3b91db p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xbf59f96b p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc9c2a995 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xd076f11f p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd274d8cf p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xd8a83f43 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd91770b6 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xdcbc584c p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe6eb14ad p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xe783016f p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe7f488be p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf506ef6f p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x00b8fea8 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x0e546d3f aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x17028115 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x7ce5947f atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x085db736 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x09b18ebb atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x15354cd7 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3d15cbc7 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x5791775e register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x5e21b5dc atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x816dc678 atm_charge +EXPORT_SYMBOL net/atm/atm 0x820ca171 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x93b7f268 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 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcbd11e39 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xd9b32d3e atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xde67c351 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf3a65bea atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x36aa4028 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x3dfd3448 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x7ef2e388 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x841edb73 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x937a8620 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xa7c02006 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcc521585 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xd2425868 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02309634 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x036c39ef hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03afc941 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0d7f7db4 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0fe0cbba hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x23e2a2ac bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3cb242c2 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ba6c8aa hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5e773f50 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6059e792 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x627204b8 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6d2d3cd7 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6eb38216 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x72c568cf hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x793beb75 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7a74f06a hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7ee3522a hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7f18f114 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8143d71c 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 0x97b2881a hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b3dc358 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa5bf1834 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaabfe03a __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb19ce594 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb380465f bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbb4c6a49 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc8cdbea hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe441a42 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbf5b0bc2 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcca296e5 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd716ab7a bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd86837c1 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc72b34d hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe1dfb03b bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe3e9d699 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe9dc4bbb l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xecc2c393 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf132eb94 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf678fb91 l2cap_conn_get +EXPORT_SYMBOL net/bridge/bridge 0x62b3e4d1 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x020e42d6 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2b037db4 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xaddbc770 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 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 0xa0e8e3ae get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xa7947671 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xb8e0795d caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xc144e451 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xfece2ee8 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x3d40cea1 can_ioctl +EXPORT_SYMBOL net/can/can 0x82e3ba38 can_rx_register +EXPORT_SYMBOL net/can/can 0xbfaf478f can_send +EXPORT_SYMBOL net/can/can 0xc3ef4343 can_proto_register +EXPORT_SYMBOL net/can/can 0xd8d2d6f4 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xe64129b6 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x01ce410e ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x029ba7e0 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0b4a1352 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x0d63940c ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x0d873c20 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x0ec4dd37 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x11e439f4 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x22cc8502 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x22f03dfe ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x28d6328c ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x2c1d632b ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x306e9c07 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x307bd3e4 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x3669033b osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x389b48ba ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x3941f9b7 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3bcdeedd ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x3f46e5fb osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x41073cf6 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x41e738ef ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x425ce948 osd_req_op_watch_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 0x472123ea ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x4780ea5f ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x47bf625d ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x49ed116c ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x4a0fb641 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4ab6f595 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4eea4037 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x4f757216 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x55a051a0 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x585b127c osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x5862af60 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x5f45d166 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6240d4d6 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x64c85637 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x655362ce ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x65e4db9e osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x69aeaf32 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x72525565 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x72b30804 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x73c7a612 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x75c96ab2 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x7ec38e98 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x82bd1091 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x84b0ae66 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x86317371 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x8b8d5418 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x8df2726d ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x918bbb5e ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x91c14189 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9e0e47f6 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x9e85c467 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa6898348 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xa9ef4b4a ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xab733617 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xac8d5028 ceph_osdc_alloc_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 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb7725b71 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xb79e4255 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xb80f449f ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xb839af22 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xba3382d0 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xbc06f953 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xc20fe06a ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc258b329 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xc3d984c2 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9894af7 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcddc4176 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd40d01b6 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd8ae496a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xdf2aa160 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe6713b2a ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe6aca82d ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xea0626ee ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xeb84f8ed ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xec6b519e ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xeea3da2a ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf4e64fae ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf65e06fe ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xf814f6b8 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xfb178ae4 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xfb1c8235 ceph_monc_validate_auth +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x176787f8 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xd53649ad dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xed817f5f lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0c6cbbcd wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1e2a914b wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x23e2f99b wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x47328c0e wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x47d50984 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfb371f8c wpan_phy_new +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x53ee526c gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x5c7861db fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x20584998 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x3737c3f1 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x9145fa57 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xda32a4b2 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xdbc5def7 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xfe1ef657 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x360e1fe3 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xe811f969 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xeb7e7fe1 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1b57824d ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe8102a94 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xfeb2d562 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x2e12ae5a xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x552a3b04 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xff7b3b6a udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x32aea538 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6640b3f4 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x9a16a639 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf201d2cd ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa225d2ff ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa794b476 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb693a520 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xb1313081 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xf76899c6 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x8186dd14 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x89008869 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x229c7277 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x40cf19aa ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x469663dd ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4d272d6b ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x82f86101 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc24bf941 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd8316dac ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdb35b4b4 ircomm_control_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x01158181 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x05a1cdb6 irlmp_connect_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 0x0d130ba6 irlap_close +EXPORT_SYMBOL net/irda/irda 0x101401c5 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x318e4961 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x31beb98d irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3bbcc41a async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x3e52c1f6 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +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 0x4a92d0f9 iriap_open +EXPORT_SYMBOL net/irda/irda 0x59cf14d4 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x5cd62209 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x617d45c6 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 0x6e8b3574 irttp_udata_request +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 0x8c0a32ff irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x92992411 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x99287734 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x9e1dc100 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xa00cbdd0 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb0518788 irlap_open +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbabc375d irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbfe95c0a irttp_dup +EXPORT_SYMBOL net/irda/irda 0xc2404579 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc6f8711c iriap_close +EXPORT_SYMBOL net/irda/irda 0xcd0c03b5 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xcf75ac85 irlmp_connect_response +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 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 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/l2tp/l2tp_core 0x1a5dfec5 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x060508c1 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x06ceeb19 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x51411602 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x5b87d769 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x775bc8d3 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x861484ec lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xc400163b lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xe83d2309 lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x7c66d5da llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x8e0881cb llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xa22e1437 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xb65e085c llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xc24aac75 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xc5ce6a74 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xd9a8aecd llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x04597b98 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0c7db044 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x0d7003ab rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x12280a04 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x13918f29 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x1ad0fc9d ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1c8613b2 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x1f65811a ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x20269f39 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x248051d0 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x28d22dc7 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x2987033f ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x29f2ce2f ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x34cef656 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x36f5fedd ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x39035633 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x3de322f8 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x4634537c ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x479da8ea ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x49edf097 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4f7a4610 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x51027a51 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x548e10ff ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5769cfcb __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x620e3812 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x628aba20 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x6302f141 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x647b3d1c ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x681f4a34 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x6d790c59 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x6f34bbcd ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x7452d0d0 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x78e150fd ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x805e875b ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x80e07823 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x81f7eeb4 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x8897fa96 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8f00411c ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x90e6f554 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x920b67ac ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x944dde0f ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x95be038c ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x99c96c6d ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x9ba97c6c ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x9cdc1cad ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9ce816c4 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa3c37bb5 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa44ca2fb __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xab8e4cd4 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xad71741f ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xaeb50331 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xaeeee8d0 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xb0039125 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb2374c40 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb51ede15 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb61cbac9 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb790c7cc ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xc0f18108 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xc1ef9db0 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xc349501f ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xc9d829ec ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xceec2c97 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xcf03e85c ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xd5c38cd0 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd8d7d623 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xd8f47a4b ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xdca7ae9e ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xddda6061 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xdde138af __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xdeb4c782 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xe6bb653f ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xe996f8a6 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xed46c828 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf5ca9853 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xf5ced55e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xfbc06fec ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xfd522f59 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xff67690d ieee80211_radar_detected +EXPORT_SYMBOL net/mac802154/mac802154 0x4d40c271 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x88a4daee ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x88c2441d ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x9dfdf74c ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa6c27484 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xcbf9b498 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xdbee72d0 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xf658fd62 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xf891f12c ieee802154_unregister_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0943d9af ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0b0824a9 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1390870b unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x280bcce1 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x32d01d3b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3b3525ce unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x41813167 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x49136614 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6606f9b4 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x919ff5f3 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9754ca11 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa07d28af register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe1a0ed3d ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe5aa6f27 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x9a26f3e3 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xab304689 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xbfddc0c6 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x35b91142 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x480eec22 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x853bdd3e nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xa49c8f11 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xd6d2c0a7 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xfefb886d nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x023fe9e0 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x2349e47b xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x38cc8346 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x680a07a5 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x78c1cb01 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa07a1a12 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xbb251dbf xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xc8869dae xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xf85751b7 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf9836983 xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x0312749e nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x09ac4c00 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x129211ad nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x367c2d8e nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x45140d80 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x490d6b53 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x49caf85e nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x4d1e7db4 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x55b8d86b nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x56f11bc6 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x832b49de nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x85e6bd18 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x95721b0b nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x98eeef3d nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa0615088 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xa23918bf nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xa247ba5c nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xa3fa23c5 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xdb8e043f nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x061cf753 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x15dda3b4 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x224e8f34 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x246970f5 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x264199c9 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x268df46d nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x309b111f nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6023d0cd nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x67bc231f nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x6ddee8d4 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x6ec8ceae nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x91dc575d nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xa475cc9a nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb8327f43 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc95b48b1 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xdbf70302 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xf088a56c nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xf1b42cab nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xf45cec2e nci_hci_set_param +EXPORT_SYMBOL net/nfc/nfc 0x18160e20 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x1d75b28f nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x2229e878 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x23fcecad nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x3178e51d nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x45c94461 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x4a2379fc nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x65a3318c nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x71089e4a nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x7428442f nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x89849455 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x9168d101 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x9aca83d6 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa157db91 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xb05b1e34 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xd7ec3e93 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xdb280b5b nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xdfb69e86 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xec4a25f3 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xee32c458 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xf4e05a68 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xfef446d0 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc_digital 0x110eb94e nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x39139e12 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x761aff71 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xdb7b32e9 nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x06f44641 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x0a8ace6a phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x0db577f0 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x373b7aff phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x68ea782a pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x7d872e8b phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x997e0b54 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xdaf853aa pn_sock_unhash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x14497ce6 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x31228ac1 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x435831ef rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x73f44462 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x78f42d30 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f24d550 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9425e1a8 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x99201aa0 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbeb38d15 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcd1182d2 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd635c941 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe2164354 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf4b20974 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf998e707 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfac90ed4 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/sctp/sctp 0x84aea4a4 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x14b0b489 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x3be2a807 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb6d54d23 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3cdbed98 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x5f7c9f0b xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x7de9f21e svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x4453e7c4 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x69bfb8e0 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x007ef2d8 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x0223d966 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x05129636 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x0666c500 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x06f4853e cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x082b61f7 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x082ccf0a __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x08905975 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x09e8e375 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x129e5382 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x169901f6 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19128d33 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1d1caa90 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x20b5eeb5 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2195fb5c cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x232af74f wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x248c7bb3 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x2575c239 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2bfdffd6 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2f15d1b4 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x3399422a cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x38a152c7 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x38f361df cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3c1fe4d2 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x3cd8bb9b cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e0963e3 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x406471e7 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x433a5640 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x484fcbd9 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x49380df6 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4d5e2be6 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x590c3249 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x5e3ba314 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x602d66fe cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x62c647f9 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x678bcb08 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x68adbdb7 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x694316c4 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 0x71210d57 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x746bfdf0 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x78406722 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x787cb967 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x79ba317b cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7d007798 cfg80211_rx_unexpected_4addr_frame +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 0x88491cd8 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x89df644c cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8a81b79b cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x8d1dc55e cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x92ddeca0 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x9629ccc3 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9b2cb0a9 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x9e13ebdc wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x9e552c74 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa0ab04c3 regulatory_set_wiphy_regd_sync_rtnl +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 0xa4a60a5f wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xa5d47088 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xa653b689 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xb73bd648 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xba66bcb3 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbc39d9e9 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xbe905b95 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbf0eac79 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xc0456197 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xc1e09b43 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xc41a4468 cfg80211_ch_switch_notify +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 0xcab4515f ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xcdfdd47b ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xd18ebcea cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe4ded584 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe9f51ed9 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xec28144a cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xecb3ffe5 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xeee2c1c4 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xef155056 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xefa4ad69 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf26d0499 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xf3041348 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf3deb2e0 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xf54769dd cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf9538f41 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xfee69f77 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/lib80211 0x0ae229f4 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x104642d7 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x5f8ac691 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x73b61293 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x85f83eb7 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xf63fc32c lib80211_register_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x2f4f1c01 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x83aa8757 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 0x5710b256 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x5ff8f351 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 0xbba78529 snd_seq_create_kernel_client +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 0xf28c655e 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 0x8bd5adba 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 0x2a6d95fc snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x002c0dd7 snd_info_create_module_entry +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 0x1c3069af snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x21de9e3d snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x2456e6f6 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2977d9d1 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2bfd8737 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x2f758136 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x35367e32 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x3861661c snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a7e6cf5 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x3e6b9c79 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x407d2f3f snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x4730e0d7 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4c731e8c snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x4e1aae6d snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x4f5bca43 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x5a590993 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x63640c31 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x689d93d6 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x6fdf18fc snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x720f151e snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x730dcf01 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x744fdc08 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x76ef2a5b snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x78680a53 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x7bb96d6b snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x7c6308ee snd_device_register +EXPORT_SYMBOL sound/core/snd 0x804b0c61 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x81889028 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x84c75085 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x8a1b1f53 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9073f586 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x93af31a3 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x9b5801d0 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x9dd106d2 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 0xa84649c5 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xb0b9c643 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xb10c9760 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb2ef2573 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xb3bdedc8 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xb4c9d5d4 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xc2608060 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xcfb55318 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xd87e454b snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xea86edea snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xf077cc5b snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xf543d891 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xfb002b48 snd_cards +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x616c4d7c 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 0x06fa7048 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x135b0408 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1e12b540 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2401566d snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x256ec202 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x3139f3e1 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x33afca96 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x35efc9fe snd_pcm_new +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 0x3d163836 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x4662b935 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x4851bbbb snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9d955d snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x4e763298 snd_pcm_lib_get_vmalloc_page +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 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5a741731 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5c32b47f snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x6503a15d snd_pcm_hw_constraint_pow2 +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 0x68bb9464 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x69769c0a snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6a7ce5c7 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x795425d9 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x7b761f7e snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x7dc8cfac snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x7dd220e3 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8a0c3cfa snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x8b1afb05 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x93ffa140 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x997bd102 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xa4881998 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa6f23f74 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa8d58d6a snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xab923875 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xb066659a snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xb2fa5e0a snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xb433d613 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xb625972a snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xb6383317 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbe26a264 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xcf34867b snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xd08669c9 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xd180d45b snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xd792d52a snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xd7f6e007 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xede5764b snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xfa9a4d38 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xfc177745 snd_pcm_lib_preallocate_pages +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 0x026c2db1 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x050e4826 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x098c6da5 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x237fc76d snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x25168482 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2e2301f5 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3d56d64f snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x483e8a2f snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x83858498 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x948b36ae snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9896bc58 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaff8d412 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbed823e8 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc33507df snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdbb50012 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdc32009e snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdd6f6416 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe5698a8d __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa3989fb snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-timer 0x145f95f0 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x2cf75cc7 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x66fd219f snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x803fa7a0 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x865781b3 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x9751630e snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x9ab8f95f snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xa548b143 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xb93d07c2 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xc4b1df2c snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xcb161e95 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xd0726f5c snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xdd8f7d70 snd_timer_global_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x8b58381a 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 0x107ffcaf snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1b5972c4 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2ab4db1e snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3b93af6f snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb32c3a9b snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xba673439 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xccde369e snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdcba16b1 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf2132989 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0842bf7e 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 0x23ec844e snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x549d6ca0 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x70dfb239 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x89bd643b snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbe512d80 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc1ed231a snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf2a40605 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf5af297f snd_vx_setup_firmware +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x00811797 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0143eea2 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x06dec48a amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0839b260 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x11200b2b cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c2dbc9a cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1d60e5d7 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1f431926 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x202d33cf amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x258f4b06 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2baffb8e fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x344005d7 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3c487cc5 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3cad5693 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4ded9d57 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5885c587 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6865ed09 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6e6184ae snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x72e2b997 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x733d17f6 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7884faec amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9ff3c672 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb19bf1a9 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbe2b24f1 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc44914d8 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc6f99b97 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcabdd5ee amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd6c9263c fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe3d1d128 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef70e2b4 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf6bcc750 cmp_connection_update +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x877e6f54 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xec002d02 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x04180db9 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x294d0762 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x560458eb snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6d5d8790 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x777049e6 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x82b4a1b3 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdbf1933b snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdf042b7f snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x41551922 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6b5ebdc8 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x70cb1293 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x89d0d5af snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbf628f9c snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xee1c256e snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x4814ceb2 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x4edd4e6a snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6694d007 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xcab200a8 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x61b06525 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc33c94e0 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2cae74e5 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x56881b9e snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa79bf978 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa829008e snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xbeef7af9 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfe74def8 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x2fd03f5c snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4ce2526b snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x842e8474 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa2544fc6 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbbb2d0bf snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xee33f02a snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x05a33db5 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0e3bdcb0 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1604c10e snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4dcf8c11 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6ebf14ae snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9b5b61eb snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa4701139 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc5ccbd2d snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xec54d89d snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf3c9eeba snd_sbmixer_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0d0ade77 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x280279f4 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x49e0f204 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4ebfffef snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6cd1987b snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7f071876 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8b33d1ae snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa7f9df2a snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb14a2caf snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc4f1af81 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcd2d15a2 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd1c0442f snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd521fad8 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xeaa79ae7 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf10f41f8 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf6ded47e snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfd7374af snd_ac97_mixer +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4a8c8e87 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6c91c83d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6db067df snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe134a418 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf4690f2d snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf63e96ab snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf94e6163 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfa90e170 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfd479bbd snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x471cc8c4 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb7f126df snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd2d4baff snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0513db61 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0d00766b oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2ce6da16 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2fdbee3c oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x52389db4 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5c2c647d oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5cb518d5 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x78141acb oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x82523846 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x84538761 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9f7a6ef7 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa1fd8567 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa2635896 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb05a1e5b oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc3c66e07 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcea0db7b oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd3d30a9f oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdf3de138 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe151be4f oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf5ab49dd oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x106d3558 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x28dcfd40 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x433c7873 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5942c8d2 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa288e2bd snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x510e2373 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xecb8b3d7 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/snd-soc-core 0xd56d93f5 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x2fb9c597 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x33ccaa46 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x49dec740 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x4ca1c314 register_sound_special +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 0xf19d5b28 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xf68f7ced sound_class +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0138df90 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x319ed333 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 0x8394a9b0 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb9f25c3b snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe104656c snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xfb73b00f snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x29036e8a snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3e9c8542 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x63767fcc snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x70d3d9db snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x73473e9d __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x883fb5b4 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9dd3cc52 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa7ac74fb snd_util_memhdr_new +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x59fd0385 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 0x001c9dd4 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x00229e7b scsi_ioctl +EXPORT_SYMBOL vmlinux 0x0039818c compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x0056bd77 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x0059e800 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00823456 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x00a51c44 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x00a98251 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x00aaabd4 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x00cf5c9f locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e4b95b pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0106c88c nf_register_hooks +EXPORT_SYMBOL vmlinux 0x010753b7 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x0110323d md_finish_reshape +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01292e7e cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x012a5625 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x012bde6f update_devfreq +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x017b21e4 input_flush_device +EXPORT_SYMBOL vmlinux 0x018f274e flush_tlb_range +EXPORT_SYMBOL vmlinux 0x019bd94b __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x01ddc2b7 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x020fe68d mount_bdev +EXPORT_SYMBOL vmlinux 0x021939f0 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x021ec686 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x023e59b6 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026ef690 put_disk +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x029e4dc0 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ab2a42 sk_capable +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02eee53b blk_start_queue +EXPORT_SYMBOL vmlinux 0x02f21ba4 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x02f254a7 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x03129934 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x032830bc tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0342f563 kill_litter_super +EXPORT_SYMBOL vmlinux 0x03466533 module_put +EXPORT_SYMBOL vmlinux 0x03493d01 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x03516d1d skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035dcf9a scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x0360cbd5 file_update_time +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x039f2df6 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x03a605ee of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x03bf7fe6 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f546de __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04058351 udp_poll +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04262632 put_cmsg +EXPORT_SYMBOL vmlinux 0x04409c2b tcp_poll +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044bdd54 __vfs_read +EXPORT_SYMBOL vmlinux 0x0453ac4b i2c_master_send +EXPORT_SYMBOL vmlinux 0x046dc4be find_lock_entry +EXPORT_SYMBOL vmlinux 0x046fe9db unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04954e09 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x049c26b6 ping_prot +EXPORT_SYMBOL vmlinux 0x04bc1d6f devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x04d1d73e xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x04e7aa95 padata_do_serial +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f37dd9 kdb_current_task +EXPORT_SYMBOL vmlinux 0x0501cecd kfree_put_link +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x0574efc3 mpage_writepage +EXPORT_SYMBOL vmlinux 0x05a1ea41 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x05a3c060 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05bd88fe __inode_permission +EXPORT_SYMBOL vmlinux 0x05c4ea48 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x05d02f7e mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05fabf7b nf_register_hook +EXPORT_SYMBOL vmlinux 0x05fcd148 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x0602c4ab __frontswap_test +EXPORT_SYMBOL vmlinux 0x0613f264 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06175311 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x061dc41d generic_write_end +EXPORT_SYMBOL vmlinux 0x0629665b pci_enable_device +EXPORT_SYMBOL vmlinux 0x062d0fbb build_skb +EXPORT_SYMBOL vmlinux 0x062d5e63 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064302a8 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068f78a3 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x06a55e05 sock_wfree +EXPORT_SYMBOL vmlinux 0x06c395c4 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x06eede69 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070351ad scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x070ddf5b max8998_update_reg +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072828c7 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x072b8cc5 d_move +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07397137 dcache_readdir +EXPORT_SYMBOL vmlinux 0x0739fe21 dquot_destroy +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x0791245c __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x07951cc9 write_inode_now +EXPORT_SYMBOL vmlinux 0x07a11a00 sk_stream_error +EXPORT_SYMBOL vmlinux 0x07a38e60 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07af0af7 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x08023b2b do_truncate +EXPORT_SYMBOL vmlinux 0x0823bf4e vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x08275a95 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083c5415 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08418ff8 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x086d8cdd irq_stat +EXPORT_SYMBOL vmlinux 0x086fa85a mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x0893fc72 clone_cred +EXPORT_SYMBOL vmlinux 0x089eb7fe __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x08d2dc3a tty_register_driver +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08fe2e52 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x0923e057 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x092e5a94 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x09341e99 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x0949ac40 padata_start +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096daf44 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x09758dd2 of_device_register +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098b91e0 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x098cf4e6 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x0993c7da blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x099d3667 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x09bb8b55 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x09c35daa kill_pid +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cc0770 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09fb1238 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x0a03f992 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a52c9a2 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a583f7d inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x0a64ced8 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x0a7ae011 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x0a8d4f41 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0abbbe7a elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae299e3 phy_device_create +EXPORT_SYMBOL vmlinux 0x0af799c7 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x0afd9ad7 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b280669 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x0b2d7e54 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x0b3894ae inode_change_ok +EXPORT_SYMBOL vmlinux 0x0b61f2da __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b85d458 up_read +EXPORT_SYMBOL vmlinux 0x0b9227cf mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x0b98dae1 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x0bacd233 napi_complete_done +EXPORT_SYMBOL vmlinux 0x0bb8f3f2 flush_signals +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd6d4b7 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x0bf27117 __d_drop +EXPORT_SYMBOL vmlinux 0x0bf983e4 dump_align +EXPORT_SYMBOL vmlinux 0x0c02ace9 simple_follow_link +EXPORT_SYMBOL vmlinux 0x0c116058 truncate_setsize +EXPORT_SYMBOL vmlinux 0x0c1e4707 skb_tx_error +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c24d300 ppp_input_error +EXPORT_SYMBOL vmlinux 0x0c333462 of_get_next_child +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6a045b dqput +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c6dd63e vfs_link +EXPORT_SYMBOL vmlinux 0x0c8328ae fifo_set_limit +EXPORT_SYMBOL vmlinux 0x0c9fd5f2 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb650a2 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x0cdc1dc9 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x0d0be1e6 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x0d0c17cc of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x0d267615 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d75e5c2 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x0d81b273 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x0d911387 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x0d9eb86d scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0daa6ad5 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x0db9aa60 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc387a8 d_alloc +EXPORT_SYMBOL vmlinux 0x0de4ff04 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x0e07e14f vfs_writef +EXPORT_SYMBOL vmlinux 0x0e180ae3 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x0e490edd pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x0e56f7f4 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x0e622c5e of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e87a939 kern_path +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e9214cb dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x0e94eb1c blk_recount_segments +EXPORT_SYMBOL vmlinux 0x0e9d6884 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x0ea35b32 dquot_disable +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed1d18c giveup_altivec +EXPORT_SYMBOL vmlinux 0x0ed2ae02 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x0efbcd04 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f096d10 put_filp +EXPORT_SYMBOL vmlinux 0x0f0aa6c2 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x0f1313a7 proc_set_size +EXPORT_SYMBOL vmlinux 0x0f1f1d45 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x0f2ad2e6 filemap_page_mkwrite +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 0x0fa5088a netdev_state_change +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb718c0 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x0fbfe11e fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x0fc1b49d dm_unregister_target +EXPORT_SYMBOL vmlinux 0x0fd42ab9 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x0fd9d9bb get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x0fefe941 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x0ff9fd59 sock_no_bind +EXPORT_SYMBOL vmlinux 0x0ffd32f0 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x1013df6c cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x106a4121 seq_putc +EXPORT_SYMBOL vmlinux 0x106ffda6 dquot_release +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x108f2cf9 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x109bea58 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x10c6f409 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x10c6fe7e devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x10e10c6e sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x10ed2f8c dev_load +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10ee8533 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1128ce5d input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x113e94ae compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x1161b55e of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1167e921 pci_release_region +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1176f418 kthread_stop +EXPORT_SYMBOL vmlinux 0x117a0d55 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x1190272f agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x11914be7 netlink_set_err +EXPORT_SYMBOL vmlinux 0x11975e77 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x1197b58a vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x1198d003 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x119e3946 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b96752 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x11bee223 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x11befd99 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x11c53d77 vfs_statfs +EXPORT_SYMBOL vmlinux 0x11c59a3f udp_add_offload +EXPORT_SYMBOL vmlinux 0x11cf7227 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x11d5725b pci_bus_put +EXPORT_SYMBOL vmlinux 0x11ee557b writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x11eef34f scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12123de5 netif_napi_add +EXPORT_SYMBOL vmlinux 0x121f0537 dev_notice +EXPORT_SYMBOL vmlinux 0x12355f1d set_bh_page +EXPORT_SYMBOL vmlinux 0x1237e9aa swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x126b5c6c mfd_add_devices +EXPORT_SYMBOL vmlinux 0x12771e49 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x12965249 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x129f6688 account_page_redirty +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a8dea0 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x12af161c copy_from_iter +EXPORT_SYMBOL vmlinux 0x12b0c819 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x12bf80c5 file_path +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x13215eac mem_section +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1350bb2e tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x135568c1 free_page_put_link +EXPORT_SYMBOL vmlinux 0x13762ea5 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x138e4cad bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x13a539f9 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13db49d3 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x14005662 vm_map_ram +EXPORT_SYMBOL vmlinux 0x1408ac36 set_blocksize +EXPORT_SYMBOL vmlinux 0x14416a55 elevator_alloc +EXPORT_SYMBOL vmlinux 0x1453f6d6 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x14944269 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x1495c9db input_get_keycode +EXPORT_SYMBOL vmlinux 0x14cfc211 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x14e23ee3 acl_by_type +EXPORT_SYMBOL vmlinux 0x14f19a61 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x15061349 ata_link_printk +EXPORT_SYMBOL vmlinux 0x151ff016 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x153adfc7 __breadahead +EXPORT_SYMBOL vmlinux 0x154476d0 tty_mutex +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1558d261 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x155ad009 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x15735f0a truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15cc1f2e nobh_write_begin +EXPORT_SYMBOL vmlinux 0x15cfccf6 get_disk +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15db2d37 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x160b338b vme_irq_handler +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x161896fd tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x1654680b tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x16573665 noop_fsync +EXPORT_SYMBOL vmlinux 0x1661f310 register_key_type +EXPORT_SYMBOL vmlinux 0x16787e15 md_write_end +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x1694690b param_get_bool +EXPORT_SYMBOL vmlinux 0x1697d9ee dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x16a71216 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x16b8a622 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x16c320ee of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x16c62e26 dquot_drop +EXPORT_SYMBOL vmlinux 0x16d4e261 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x16da35f6 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x16dc23d2 read_code +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x17041a07 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x172bc181 lease_modify +EXPORT_SYMBOL vmlinux 0x1730af2b pci_bus_type +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1792bbdb loop_register_transfer +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17d316e7 key_type_keyring +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17ed8e84 dev_alert +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17fc4b14 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x18197f29 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x182056f8 sync_blockdev +EXPORT_SYMBOL vmlinux 0x1822f263 tcp_connect +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x1830c7bb dev_mc_sync +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184fb854 __scm_destroy +EXPORT_SYMBOL vmlinux 0x1851ddb8 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x1861357c simple_fill_super +EXPORT_SYMBOL vmlinux 0x1863aaf6 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x18683d95 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x1877662e udp_ioctl +EXPORT_SYMBOL vmlinux 0x18860f5e blk_put_request +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188a3e1f compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189fc3ea sk_free +EXPORT_SYMBOL vmlinux 0x18b87bcc pci_pme_active +EXPORT_SYMBOL vmlinux 0x18bbf871 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0x18f4f558 dquot_enable +EXPORT_SYMBOL vmlinux 0x19234033 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x195174d2 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x195dea0a input_free_device +EXPORT_SYMBOL vmlinux 0x198f091b eth_gro_receive +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19acb654 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19be1b37 dquot_transfer +EXPORT_SYMBOL vmlinux 0x19ccac1d xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x19dadd5f netpoll_setup +EXPORT_SYMBOL vmlinux 0x1a107d3c cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x1a11a7b6 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x1a2ee640 unload_nls +EXPORT_SYMBOL vmlinux 0x1a31e73e __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x1a3e5919 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x1a4fe05f submit_bio_wait +EXPORT_SYMBOL vmlinux 0x1a53a3ba inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x1a5a31c9 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x1a5cb64b bio_phys_segments +EXPORT_SYMBOL vmlinux 0x1a7edefe __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x1a9aeaaa netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x1aae576f md_error +EXPORT_SYMBOL vmlinux 0x1aaec9ad tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x1ab7f975 d_set_d_op +EXPORT_SYMBOL vmlinux 0x1aba95d8 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ac677c4 vme_master_request +EXPORT_SYMBOL vmlinux 0x1ad8634c __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x1ae8f3af neigh_xmit +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b08f329 iterate_fd +EXPORT_SYMBOL vmlinux 0x1b10fe75 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b332325 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x1b34d045 inet_listen +EXPORT_SYMBOL vmlinux 0x1b48de97 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x1b53ae2e open_exec +EXPORT_SYMBOL vmlinux 0x1b5cb565 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x1b5f72a7 pci_choose_state +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6ea219 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x1b6f2c90 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x1b81d76d uart_suspend_port +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8a2bca simple_dir_operations +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1ba4a34a tso_build_hdr +EXPORT_SYMBOL vmlinux 0x1bb27193 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb87e5a __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1bd5c0a6 fasync_helper +EXPORT_SYMBOL vmlinux 0x1be95821 bdget +EXPORT_SYMBOL vmlinux 0x1bf5c79a blk_execute_rq +EXPORT_SYMBOL vmlinux 0x1bf61a5a xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x1bf6fc1d block_write_begin +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c01883e skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x1c035485 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x1c1c408c block_write_full_page +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c485220 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x1c4d0918 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x1c6302c2 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c86455b sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x1ccaecfb blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x1cd8dcbc phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x1d014018 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d13d708 kobject_del +EXPORT_SYMBOL vmlinux 0x1d1e69b7 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x1d37ceb6 set_groups +EXPORT_SYMBOL vmlinux 0x1d5d42d5 sys_copyarea +EXPORT_SYMBOL vmlinux 0x1d73c8b5 registered_fb +EXPORT_SYMBOL vmlinux 0x1d8591d9 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x1d8eb9ee tty_port_close +EXPORT_SYMBOL vmlinux 0x1da6a850 ip6_xmit +EXPORT_SYMBOL vmlinux 0x1db3f1bf blk_peek_request +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc08d3a pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de55bc9 request_firmware +EXPORT_SYMBOL vmlinux 0x1de7cbc4 key_alloc +EXPORT_SYMBOL vmlinux 0x1e16d0f6 write_cache_pages +EXPORT_SYMBOL vmlinux 0x1e18f8dd dentry_unhash +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e41ef4e iput +EXPORT_SYMBOL vmlinux 0x1e471d2e tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x1e47f3a0 dget_parent +EXPORT_SYMBOL vmlinux 0x1e517e03 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x1e64dcf0 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7c4bc0 mpage_readpages +EXPORT_SYMBOL vmlinux 0x1e83eef0 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ef3677f blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x1f1560a2 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x1f206f1f follow_down +EXPORT_SYMBOL vmlinux 0x1f27da7f serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f7eb00e put_page +EXPORT_SYMBOL vmlinux 0x1fa120fb jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x1fb584b5 simple_open +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcba61f nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd459c0 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x1fe531a6 param_set_int +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff0f5fb bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20021b6e compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201aee8b uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x201fbd97 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205410fa __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x20551e03 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x2058dd41 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x20615ee0 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2079edb8 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x2089b9ae xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x2099e4a1 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x20a58670 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20b30b37 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x20c3f06e proc_remove +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cb3a70 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x20d1ab11 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e0ad71 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x212cfe45 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x2147baf8 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x21837ddf mntput +EXPORT_SYMBOL vmlinux 0x21cb7a84 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x21dbc912 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x21dd751d mmc_remove_host +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21ee879e unregister_nls +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21fc48cc agp_enable +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22421607 scmd_printk +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x227fe48f pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x22945b6a of_get_property +EXPORT_SYMBOL vmlinux 0x22a97699 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x2303187c __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x2319af10 vme_register_driver +EXPORT_SYMBOL vmlinux 0x231ac9c8 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2366f897 blk_free_tags +EXPORT_SYMBOL vmlinux 0x2371e6da bdi_register_dev +EXPORT_SYMBOL vmlinux 0x23866cf4 __page_symlink +EXPORT_SYMBOL vmlinux 0x23931892 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x23a41a44 d_lookup +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23affc0c scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x23b09c9f km_report +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23ba083b insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23e89597 scsi_device_get +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2423c3a9 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x24395784 dev_add_pack +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245ce4aa __i2c_transfer +EXPORT_SYMBOL vmlinux 0x24658ca4 bio_put +EXPORT_SYMBOL vmlinux 0x246c6647 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24910270 is_bad_inode +EXPORT_SYMBOL vmlinux 0x24b1648f skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x24bcc92b get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x24bed20e dev_get_flags +EXPORT_SYMBOL vmlinux 0x24c3ad3c sk_dst_check +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f9e640 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x2502ea29 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x2506cd3f napi_gro_receive +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252de004 phy_detach +EXPORT_SYMBOL vmlinux 0x25365782 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x2543ee47 __block_write_begin +EXPORT_SYMBOL vmlinux 0x25539cb2 pci_release_regions +EXPORT_SYMBOL vmlinux 0x25609f1c __devm_request_region +EXPORT_SYMBOL vmlinux 0x2560bb16 request_key +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x259f7ca6 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x25a177fc block_truncate_page +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25b80acf inet_register_protosw +EXPORT_SYMBOL vmlinux 0x25d3d250 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x25d3edd6 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25eb5f38 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x25efbd69 bd_set_size +EXPORT_SYMBOL vmlinux 0x25f57b00 dquot_initialize +EXPORT_SYMBOL vmlinux 0x25f9e957 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x2602a7d4 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x2605af07 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x264e9b47 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2656a531 dev_get_stats +EXPORT_SYMBOL vmlinux 0x265d57da xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x268dfb5a kernel_read +EXPORT_SYMBOL vmlinux 0x26aa5de6 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x26ab9e33 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x26aeddda pcie_get_mps +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26b8e25f __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x26c974f2 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x26d62168 netdev_notice +EXPORT_SYMBOL vmlinux 0x26dfa855 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x271b5f65 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x27423a53 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x2743dd32 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277a5a94 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x277af347 dev_activate +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27928000 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c768a9 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x27d00ec0 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e896bc __free_pages +EXPORT_SYMBOL vmlinux 0x280e4162 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x281450f2 tcp_prot +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281ce5eb pcie_set_mps +EXPORT_SYMBOL vmlinux 0x28213cbe blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x2830f277 bio_map_kern +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2837a3f5 seq_lseek +EXPORT_SYMBOL vmlinux 0x284b385e would_dump +EXPORT_SYMBOL vmlinux 0x286e2bae param_get_ullong +EXPORT_SYMBOL vmlinux 0x28899bdd __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x288effe7 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x2893a716 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a0ae15 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a5c1aa starget_for_each_device +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28b2aee3 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x28b8c290 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x28baae9c unregister_binfmt +EXPORT_SYMBOL vmlinux 0x28c15d97 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x28cafa3e xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x28e05d0e kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x28e3d953 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x28f23937 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x2916d997 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x291a01f2 __register_chrdev +EXPORT_SYMBOL vmlinux 0x2929a79f inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295b1ea6 search_binary_handler +EXPORT_SYMBOL vmlinux 0x29668ab5 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x2987b873 param_set_byte +EXPORT_SYMBOL vmlinux 0x29a3c3f8 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x29b1eca1 submit_bh +EXPORT_SYMBOL vmlinux 0x29bd8b84 register_filesystem +EXPORT_SYMBOL vmlinux 0x29be97a3 genphy_update_link +EXPORT_SYMBOL vmlinux 0x29d07e05 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x29dc68ea compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x29ddda19 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x29e67f22 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x29fe72da dev_uc_flush +EXPORT_SYMBOL vmlinux 0x2a1e4002 __bforget +EXPORT_SYMBOL vmlinux 0x2a227d1b jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a354516 nf_log_trace +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3a7000 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x2a48f8d2 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x2a5cd500 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x2a904710 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae5b1df __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b1dea25 get_super_thawed +EXPORT_SYMBOL vmlinux 0x2b25042f agp_generic_enable +EXPORT_SYMBOL vmlinux 0x2b277ce7 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2f6327 skb_find_text +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b4c0f8a serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2ba909e8 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x2baa5e85 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x2bb3efa0 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x2bc28811 tty_register_device +EXPORT_SYMBOL vmlinux 0x2bdcefcc led_set_brightness +EXPORT_SYMBOL vmlinux 0x2bdd56c7 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2bf0b760 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x2bf118fe ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x2bfb490a vfs_getattr +EXPORT_SYMBOL vmlinux 0x2c0b70dd vfs_fsync +EXPORT_SYMBOL vmlinux 0x2c11ca52 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x2c14ee27 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x2c18871c phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3fe433 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x2c4013f9 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x2c4aec46 mac_find_mode +EXPORT_SYMBOL vmlinux 0x2c54fa24 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x2c5f3675 add_disk +EXPORT_SYMBOL vmlinux 0x2c695458 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x2c71a11f of_platform_device_create +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c9f2da2 param_get_ushort +EXPORT_SYMBOL vmlinux 0x2cc49a30 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x2cd78a98 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2fb622 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d6b1664 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x2d7c9777 __module_get +EXPORT_SYMBOL vmlinux 0x2d851307 set_security_override +EXPORT_SYMBOL vmlinux 0x2d8ae423 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x2d8fb8e9 posix_lock_file +EXPORT_SYMBOL vmlinux 0x2d9e1ecc deactivate_super +EXPORT_SYMBOL vmlinux 0x2db4f9ca vme_dma_request +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e098cb3 netdev_err +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e235a58 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x2e29c579 mount_pseudo +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3077f2 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x2e3f2d0a input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x2e468511 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x2e6b6553 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x2e75cce5 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x2e86ba51 skb_queue_head +EXPORT_SYMBOL vmlinux 0x2e8fc2ac simple_setattr +EXPORT_SYMBOL vmlinux 0x2e9c9026 dev_addr_add +EXPORT_SYMBOL vmlinux 0x2ead2b38 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x2eb5417a blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x2ee70eeb input_mt_report_slot_state +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 0x2f06d3c9 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x2f13f758 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x2f1edb4a scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x2f229189 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f3e8d60 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4b61cc sk_mc_loop +EXPORT_SYMBOL vmlinux 0x2f4f1505 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x2f54329a of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x2f57ff34 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f779b0c netif_napi_del +EXPORT_SYMBOL vmlinux 0x2f81214e mpage_readpage +EXPORT_SYMBOL vmlinux 0x2f8d676a pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x2fa530d4 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x2fa58a03 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x2faa9e91 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fb994c4 dump_emit +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fea111d __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x2fec94f9 param_ops_short +EXPORT_SYMBOL vmlinux 0x2fefe105 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x2ffe642c simple_lookup +EXPORT_SYMBOL vmlinux 0x300413f9 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x30063725 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x30071af5 tso_start +EXPORT_SYMBOL vmlinux 0x3009bd28 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x300e8308 devm_clk_get +EXPORT_SYMBOL vmlinux 0x301376b3 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x301988bb elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30514d2a blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30859727 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x308c7c8b remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x30918e8c pcim_iounmap +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a59b8c __pci_register_driver +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30cac46f sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x30d39394 file_ns_capable +EXPORT_SYMBOL vmlinux 0x30d39676 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x30dc9c5f __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x30f1b8c8 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x30f9a5e0 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x311c2d88 notify_change +EXPORT_SYMBOL vmlinux 0x3133945f of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31590784 param_get_short +EXPORT_SYMBOL vmlinux 0x31671794 kernel_write +EXPORT_SYMBOL vmlinux 0x317192b2 dquot_resume +EXPORT_SYMBOL vmlinux 0x31720cee input_set_abs_params +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31a4fe8b blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x31b4c48a xfrm_input +EXPORT_SYMBOL vmlinux 0x31ba810f mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x31c20ec9 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x31da41ad __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x31ed7a42 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x32006aec is_nd_btt +EXPORT_SYMBOL vmlinux 0x32063cfe qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x32130fb5 dev_set_group +EXPORT_SYMBOL vmlinux 0x322a8f62 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x324a51e8 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x3252038d start_tty +EXPORT_SYMBOL vmlinux 0x325a4c8c __napi_complete +EXPORT_SYMBOL vmlinux 0x326f259b gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x3278c494 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x328f2baf pid_task +EXPORT_SYMBOL vmlinux 0x32a125e2 kern_path_create +EXPORT_SYMBOL vmlinux 0x32b4ecfc of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x32bb16d3 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x32cbeb8f ip_options_compile +EXPORT_SYMBOL vmlinux 0x32eac79a inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x32fc7640 inet6_release +EXPORT_SYMBOL vmlinux 0x332cd10e simple_nosetlease +EXPORT_SYMBOL vmlinux 0x333243ba blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x335543c5 da903x_query_status +EXPORT_SYMBOL vmlinux 0x3394e3e3 brioctl_set +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33bcd978 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33cadc9c blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x33d47289 mount_ns +EXPORT_SYMBOL vmlinux 0x33df7ccb netif_device_attach +EXPORT_SYMBOL vmlinux 0x33e27e69 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x33efb4be icmp_send +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34111600 seq_puts +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341b0392 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x342dd126 kobject_add +EXPORT_SYMBOL vmlinux 0x343b80fe release_sock +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x345a961e of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x346de510 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34862ec5 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34adcd29 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x34d24c3b devm_request_resource +EXPORT_SYMBOL vmlinux 0x34df06b3 pci_save_state +EXPORT_SYMBOL vmlinux 0x34e17853 sync_inode +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3512d41b have_submounts +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x352ce354 generic_removexattr +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3566ebd2 generic_read_dir +EXPORT_SYMBOL vmlinux 0x3568ac35 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x356d5bb3 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x357189e6 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x3571fd72 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x35a0ccb5 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b8e363 fd_install +EXPORT_SYMBOL vmlinux 0x35ba13fa i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35fb94c4 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x361eec8b scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x362c76c3 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x363035c8 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x3649ae6d ll_rw_block +EXPORT_SYMBOL vmlinux 0x365d446d nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x367a9aa3 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x369c8605 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a0a527 genphy_resume +EXPORT_SYMBOL vmlinux 0x36abd14e jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x36aed018 inode_set_flags +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36d8ce12 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x36eab038 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x36f7f924 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372dcca3 bdput +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37861150 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x379ca2da ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b42111 filemap_flush +EXPORT_SYMBOL vmlinux 0x37badc40 simple_getattr +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c1b2d2 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x37cc22ae __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37fc17cf input_unregister_handler +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ac1e3 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x38206127 check_disk_change +EXPORT_SYMBOL vmlinux 0x382d97c8 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x3836b4ca twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x383fe66a uart_update_timeout +EXPORT_SYMBOL vmlinux 0x3855876b register_framebuffer +EXPORT_SYMBOL vmlinux 0x385b8066 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x386fd01f empty_aops +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388e783b devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x388f9afa __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x38915997 xfrm_state_alloc +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 0x38e21481 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x38eb9178 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x38f14853 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39436897 skb_clone +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39691a2a freeze_super +EXPORT_SYMBOL vmlinux 0x39732482 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x397c6297 input_grab_device +EXPORT_SYMBOL vmlinux 0x398af29c netlink_net_capable +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 0x39b8be08 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d3ff8b netdev_change_features +EXPORT_SYMBOL vmlinux 0x39e0123e mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x39e15868 __kernel_write +EXPORT_SYMBOL vmlinux 0x39f737e4 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x3a094188 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x3a28b2a7 arp_send +EXPORT_SYMBOL vmlinux 0x3a293502 bdgrab +EXPORT_SYMBOL vmlinux 0x3a3c784b blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x3a84fff6 commit_creds +EXPORT_SYMBOL vmlinux 0x3a9a713d touch_atime +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3b15257f bio_advance +EXPORT_SYMBOL vmlinux 0x3b184bd9 bdi_register +EXPORT_SYMBOL vmlinux 0x3b268a7d poll_initwait +EXPORT_SYMBOL vmlinux 0x3b466713 alloc_file +EXPORT_SYMBOL vmlinux 0x3b52a350 nf_log_set +EXPORT_SYMBOL vmlinux 0x3b56bcfa generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x3b5cfc4c get_unmapped_area +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b691ad5 kernel_listen +EXPORT_SYMBOL vmlinux 0x3b79688f mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x3b7cd57b sock_init_data +EXPORT_SYMBOL vmlinux 0x3b8b4577 __frontswap_store +EXPORT_SYMBOL vmlinux 0x3bc2188d ip_defrag +EXPORT_SYMBOL vmlinux 0x3bfaffce nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x3c0d1fe2 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x3c38cfed blkdev_get +EXPORT_SYMBOL vmlinux 0x3c3ac65e bmap +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c41aaa5 __elv_add_request +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c5871a3 dev_uc_del +EXPORT_SYMBOL vmlinux 0x3c600f01 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c80d90b bio_endio +EXPORT_SYMBOL vmlinux 0x3cb108bc pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cd0068d __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x3cd634f0 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce8ce86 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x3cf757fc jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x3cf9ecda generic_readlink +EXPORT_SYMBOL vmlinux 0x3cfd464c fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x3d24bc20 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x3d53d9f4 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x3d57c348 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x3d603736 md_update_sb +EXPORT_SYMBOL vmlinux 0x3d8ba09b tty_port_init +EXPORT_SYMBOL vmlinux 0x3daf1cd0 cdrom_release +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dc5d8ea try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x3dc98d13 skb_trim +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddda531 path_get +EXPORT_SYMBOL vmlinux 0x3de807c9 dev_trans_start +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e234753 proc_symlink +EXPORT_SYMBOL vmlinux 0x3e51767a __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x3e75fa9c alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x3e868f8e proc_set_user +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8aab31 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x3e90d237 down_write +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e92e87e make_kgid +EXPORT_SYMBOL vmlinux 0x3e93a2c3 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3eb4e029 dquot_commit +EXPORT_SYMBOL vmlinux 0x3ec1849e tty_devnum +EXPORT_SYMBOL vmlinux 0x3f01004e __lock_page +EXPORT_SYMBOL vmlinux 0x3f033886 kern_unmount +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f1d592c call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4fad1f dentry_open +EXPORT_SYMBOL vmlinux 0x3f52cc72 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x3f54c6cc local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x3fa14ef8 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x3fb87196 proto_unregister +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 0x404c50ad jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x4051dd18 param_ops_byte +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x407821b4 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad28bf nd_device_register +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 0x40d6f354 d_instantiate +EXPORT_SYMBOL vmlinux 0x40fbb41c dev_change_flags +EXPORT_SYMBOL vmlinux 0x4100df24 tty_write_room +EXPORT_SYMBOL vmlinux 0x41063f3b make_bad_inode +EXPORT_SYMBOL vmlinux 0x410fa8ab scsi_device_put +EXPORT_SYMBOL vmlinux 0x41198dd0 param_set_copystring +EXPORT_SYMBOL vmlinux 0x412b27ea skb_insert +EXPORT_SYMBOL vmlinux 0x413b5443 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4155b90b tty_do_resize +EXPORT_SYMBOL vmlinux 0x415883b4 __destroy_inode +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x415c7e75 netlink_unicast +EXPORT_SYMBOL vmlinux 0x41636aec dcb_getapp +EXPORT_SYMBOL vmlinux 0x41660bf9 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x416c238e simple_empty +EXPORT_SYMBOL vmlinux 0x416c38d6 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x4177a0fe pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41919861 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x419a84c8 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x41d1af95 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x41d287aa iget_locked +EXPORT_SYMBOL vmlinux 0x41e8f61c pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x41fc6117 mach_corenet_generic +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x421ff668 input_event +EXPORT_SYMBOL vmlinux 0x42334ffc __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x42369950 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x4241bfe0 read_cache_pages +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x424ff498 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x4258e4df may_umount +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4269cab1 dev_driver_string +EXPORT_SYMBOL vmlinux 0x4269dc4f of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ac4b7d prepare_binprm +EXPORT_SYMBOL vmlinux 0x42b24931 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x42c09f5a scsi_unregister +EXPORT_SYMBOL vmlinux 0x42e88953 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x42fe6dda neigh_table_clear +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430c5711 datagram_poll +EXPORT_SYMBOL vmlinux 0x431f3bc8 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x4325af64 elevator_change +EXPORT_SYMBOL vmlinux 0x43287c60 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x432fc52f ilookup +EXPORT_SYMBOL vmlinux 0x434c579e invalidate_bdev +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4357365c pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x4373e3ed netif_rx +EXPORT_SYMBOL vmlinux 0x437c4bf4 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43894ce3 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x438b4b63 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43bc752b inet_frags_fini +EXPORT_SYMBOL vmlinux 0x43d33116 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441ddf30 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x4440161d fb_get_mode +EXPORT_SYMBOL vmlinux 0x4474bb1f blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44c61a8e kernel_getsockname +EXPORT_SYMBOL vmlinux 0x44d43e02 phy_attach +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44eef5ec get_acl +EXPORT_SYMBOL vmlinux 0x44fdc50c scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x4504e8cd km_new_mapping +EXPORT_SYMBOL vmlinux 0x450e70af sk_common_release +EXPORT_SYMBOL vmlinux 0x45147c02 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454e6f18 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x456da5fb dquot_operations +EXPORT_SYMBOL vmlinux 0x4575f1dd netdev_alert +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x459d61fd tcp_release_cb +EXPORT_SYMBOL vmlinux 0x45a27794 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a67ee9 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45ff64c8 input_open_device +EXPORT_SYMBOL vmlinux 0x4603cca9 max8925_bulk_read +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 0x462a3a99 block_write_end +EXPORT_SYMBOL vmlinux 0x46379e55 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x465aee67 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466584a2 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467c2b82 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x467e3dd3 input_register_handler +EXPORT_SYMBOL vmlinux 0x46810896 __alloc_skb +EXPORT_SYMBOL vmlinux 0x46bc41ad skb_checksum +EXPORT_SYMBOL vmlinux 0x46c2b871 serio_rescan +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46d49684 pci_bus_get +EXPORT_SYMBOL vmlinux 0x46e32986 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x46e60ffb seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47152144 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x47341cc7 blk_init_tags +EXPORT_SYMBOL vmlinux 0x4739b5d8 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x477f191d tty_hangup +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47bc6edd agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x47dae92c simple_transaction_read +EXPORT_SYMBOL vmlinux 0x47e12995 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x47e1724c follow_up +EXPORT_SYMBOL vmlinux 0x47f16c58 vme_irq_request +EXPORT_SYMBOL vmlinux 0x47f93a12 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x4801eddb inet_ioctl +EXPORT_SYMBOL vmlinux 0x480c1c45 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x4817672d dm_put_device +EXPORT_SYMBOL vmlinux 0x48197301 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x481d2725 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x481d3ab0 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x4839adcf blk_requeue_request +EXPORT_SYMBOL vmlinux 0x483fb424 md_done_sync +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4846864c pci_domain_nr +EXPORT_SYMBOL vmlinux 0x484bc007 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x485528a4 mutex_lock +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486107a1 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x4876931b param_get_invbool +EXPORT_SYMBOL vmlinux 0x4878eef4 tty_free_termios +EXPORT_SYMBOL vmlinux 0x487ed8d6 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x48842ab4 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x489b5930 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x489ff7b4 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x48a3c38b tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48ab2da5 __register_binfmt +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bd23de __sb_end_write +EXPORT_SYMBOL vmlinux 0x48e725c2 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x48ef1ff6 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490e4111 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x4914bceb pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x491733de inet_shutdown +EXPORT_SYMBOL vmlinux 0x495031ab vga_get +EXPORT_SYMBOL vmlinux 0x4958c82d remove_arg_zero +EXPORT_SYMBOL vmlinux 0x495a60ab seq_vprintf +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49628907 param_ops_int +EXPORT_SYMBOL vmlinux 0x496970dd inode_needs_sync +EXPORT_SYMBOL vmlinux 0x497ba1ef elv_register_queue +EXPORT_SYMBOL vmlinux 0x498610db inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x49870190 do_splice_to +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49ba500e xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x49c25ffd tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x49d65dcc udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x49d9e6b0 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a1b600a xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x4a1dbca2 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x4a2bf404 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x4a5e3710 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x4a6f2783 skb_make_writable +EXPORT_SYMBOL vmlinux 0x4a6fa679 vc_resize +EXPORT_SYMBOL vmlinux 0x4a7b029b pci_iounmap +EXPORT_SYMBOL vmlinux 0x4a9ae057 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x4a9bf260 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x4aaa07c3 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x4ab7ecbb cdev_del +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abd7bbc param_set_uint +EXPORT_SYMBOL vmlinux 0x4ac0cd19 I_BDEV +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b15e40c fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x4b1685c7 bio_split +EXPORT_SYMBOL vmlinux 0x4b314918 finish_no_open +EXPORT_SYMBOL vmlinux 0x4b391677 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x4b5c1b68 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6e18a2 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b8a5bf1 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x4b8bec94 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x4b91ff32 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x4b95e68e bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x4ba2699d unregister_quota_format +EXPORT_SYMBOL vmlinux 0x4ba74a1f inode_add_bytes +EXPORT_SYMBOL vmlinux 0x4ba8951b inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4c01b0ae sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c3e922f tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x4c452a55 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x4c555fea tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x4c865c1a filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x4c9b8472 tty_kref_put +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cad200f tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cc063f1 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x4cd2db98 send_sig_info +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf296be __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x4cf2e1fc mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x4cf6b28c pci_clear_master +EXPORT_SYMBOL vmlinux 0x4d2ae5d5 qdisc_reset +EXPORT_SYMBOL vmlinux 0x4d32e44b nlmsg_notify +EXPORT_SYMBOL vmlinux 0x4d6141e1 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x4d68f613 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d7961ce arp_xmit +EXPORT_SYMBOL vmlinux 0x4d953112 fsync_bdev +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dbb7893 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x4dc2a2b1 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x4dd89275 seq_printf +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df632d2 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x4e09815a tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x4e0b51b8 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x4e155837 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x4e21be11 security_path_truncate +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e429139 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e83ad80 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eb4c698 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x4ec0d268 get_user_pages +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ef0a5eb sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x4efe5e4e mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x4f13f995 fput +EXPORT_SYMBOL vmlinux 0x4f1cbf26 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f204655 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2bb402 of_clk_get +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3d0a8e phy_device_register +EXPORT_SYMBOL vmlinux 0x4f51638a __neigh_create +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6d9e19 page_readlink +EXPORT_SYMBOL vmlinux 0x4f8ebe48 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x4fd13725 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x4fd157bb vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x4fd45142 bdi_destroy +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4ffcfbb5 kset_register +EXPORT_SYMBOL vmlinux 0x500084aa framebuffer_release +EXPORT_SYMBOL vmlinux 0x50060265 simple_release_fs +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5011e6a9 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x50207037 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5063dfb0 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x506bd2db scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x507264ee xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x508e6604 generic_perform_write +EXPORT_SYMBOL vmlinux 0x509fc58a rwsem_wake +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50d4ca6c of_device_is_available +EXPORT_SYMBOL vmlinux 0x50d8122c tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50f9a5f4 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511d485b blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x51449a93 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x5157b11a dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x515f0e42 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x5161dbe2 clk_add_alias +EXPORT_SYMBOL vmlinux 0x516b4d90 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a4999a pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x51a6c818 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x51b3e03d udp_proc_register +EXPORT_SYMBOL vmlinux 0x51d47baf scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5209c165 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52208f31 param_ops_bint +EXPORT_SYMBOL vmlinux 0x5225d554 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524b0700 __skb_checksum +EXPORT_SYMBOL vmlinux 0x526964cf end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x5274f085 inode_init_always +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52d616a7 param_set_ullong +EXPORT_SYMBOL vmlinux 0x531a388a input_register_device +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534589cf netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x535c0883 blk_end_request +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x535d1de4 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538ebc29 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x539359ca of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53aac02d padata_do_parallel +EXPORT_SYMBOL vmlinux 0x53ba77e7 mdiobus_read +EXPORT_SYMBOL vmlinux 0x53d8e5f7 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f87e64 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412b698 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x5420e7d7 of_iomap +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x5430584a vme_lm_request +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x545f3ed3 of_node_get +EXPORT_SYMBOL vmlinux 0x5465b509 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x5473d42f serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x547538c5 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x54a2d9b8 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x54a3267d sock_wmalloc +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b72930 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c3b4d1 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x54cb70cf fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x550760ed mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x550fec30 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551c1b81 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55562f03 elv_rb_del +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5572b22a __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x55782b77 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x557f7662 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x55a60342 sync_filesystem +EXPORT_SYMBOL vmlinux 0x55cff6a1 key_validate +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55dd74f8 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x55dda3ee tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x55e1a581 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x55f2d1a7 napi_disable +EXPORT_SYMBOL vmlinux 0x55f3d93c scsi_print_command +EXPORT_SYMBOL vmlinux 0x55f78391 param_set_invbool +EXPORT_SYMBOL vmlinux 0x55f8fd38 register_netdev +EXPORT_SYMBOL vmlinux 0x5605a27c iov_iter_zero +EXPORT_SYMBOL vmlinux 0x56154281 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x561ff281 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5636e1b2 iget_failed +EXPORT_SYMBOL vmlinux 0x56388595 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x563bf560 skb_append +EXPORT_SYMBOL vmlinux 0x56491b98 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x564ef7b1 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x567b5b88 fb_class +EXPORT_SYMBOL vmlinux 0x56932960 param_get_int +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56a62e2c sk_net_capable +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x56ffdda5 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x57013847 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x5701851a eth_mac_addr +EXPORT_SYMBOL vmlinux 0x57033c22 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x5709cc98 pci_request_regions +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57329b27 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x57467059 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x578a8276 unlock_page +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x5794ec7b mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57a3095f tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x57b68075 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x57ba33c0 noop_qdisc +EXPORT_SYMBOL vmlinux 0x57f7e986 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582898e3 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5846234e of_node_put +EXPORT_SYMBOL vmlinux 0x5855d295 fb_find_mode +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58668fab twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x589e93ac default_llseek +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x591074bc sock_wake_async +EXPORT_SYMBOL vmlinux 0x5922e59e netif_device_detach +EXPORT_SYMBOL vmlinux 0x59483b55 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594ca2cb replace_mount_options +EXPORT_SYMBOL vmlinux 0x594fb2ca tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x595589cf bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x595bf004 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x595c0011 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5966a4d7 d_drop +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x5995f99d scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b31a9a __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59ccb4e3 uart_get_baud_rate +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 0x5a0ce8a0 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x5a167cbc cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x5a2cda3e trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5a4d60d2 register_quota_format +EXPORT_SYMBOL vmlinux 0x5a57724c nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x5a5d54ec netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x5a5fd25a max8998_write_reg +EXPORT_SYMBOL vmlinux 0x5a848e40 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a98efdd memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aa72ceb kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x5abbbc20 __get_page_tail +EXPORT_SYMBOL vmlinux 0x5abbc4fd dev_mc_del +EXPORT_SYMBOL vmlinux 0x5ac40d90 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x5ac74029 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x5adc21c9 i2c_release_client +EXPORT_SYMBOL vmlinux 0x5afa8a39 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x5afdd241 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b052dd1 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x5b05a3c9 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x5b24fcd9 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x5b318ae9 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x5b3788f3 dev_crit +EXPORT_SYMBOL vmlinux 0x5b45c2b9 udplite_prot +EXPORT_SYMBOL vmlinux 0x5b47be58 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x5b522629 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bae5a3c single_open_size +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bd875f1 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x5bea20df pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x5c0acb66 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x5c0d8a34 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x5c21789a address_space_init_once +EXPORT_SYMBOL vmlinux 0x5c335872 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c627038 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x5c76202e input_register_handle +EXPORT_SYMBOL vmlinux 0x5c9bb635 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x5ca02a7e rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x5ca46f3b simple_link +EXPORT_SYMBOL vmlinux 0x5cbaa15d generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5cea526e vlan_vid_add +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0e2b57 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x5d4a1982 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d5c3d46 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x5d631587 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x5d6e217a __blk_run_queue +EXPORT_SYMBOL vmlinux 0x5d7d5902 sock_no_connect +EXPORT_SYMBOL vmlinux 0x5d82c827 netif_skb_features +EXPORT_SYMBOL vmlinux 0x5db9fa7d vga_con +EXPORT_SYMBOL vmlinux 0x5de7866d kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x5df7d13c security_path_mknod +EXPORT_SYMBOL vmlinux 0x5e1146a4 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x5e15425b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x5e25cb15 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x5e33d897 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e658cf4 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea11448 dev_printk +EXPORT_SYMBOL vmlinux 0x5ea6de72 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec4ba9c free_buffer_head +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed12200 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x5ed6efaa phy_init_eee +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5eed23f0 console_start +EXPORT_SYMBOL vmlinux 0x5eefeb75 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x5ef509cd devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f128df6 vme_slot_num +EXPORT_SYMBOL vmlinux 0x5f2c69ed release_firmware +EXPORT_SYMBOL vmlinux 0x5f3ac1a1 d_walk +EXPORT_SYMBOL vmlinux 0x5f4f342a ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x5f61edaa inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x5f6c75b5 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x5f76a0fe vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5fa1aa57 kernel_connect +EXPORT_SYMBOL vmlinux 0x5faf8e11 phy_resume +EXPORT_SYMBOL vmlinux 0x5fcc5341 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5ffbaa96 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6029649a from_kuid +EXPORT_SYMBOL vmlinux 0x6034db08 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6047843c of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x604ca567 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x6069ceec netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x608ecf36 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x608ff1ed __netif_schedule +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60c63387 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x60ccda53 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612b36b4 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x612b5f9a cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x613705de flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x613f0d17 devm_ioremap +EXPORT_SYMBOL vmlinux 0x6143b90f agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6157f3ae phy_attach_direct +EXPORT_SYMBOL vmlinux 0x6192d563 genl_notify +EXPORT_SYMBOL vmlinux 0x61969e33 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619faa00 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c1148d simple_dname +EXPORT_SYMBOL vmlinux 0x61c444d0 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x61dcf24a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61f94712 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x62109a16 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6218f226 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x621c9501 serio_interrupt +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622fd067 pci_get_slot +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x626f0508 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627af3ed md_write_start +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6294c6f8 pci_disable_device +EXPORT_SYMBOL vmlinux 0x62972d54 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x62a1e3b5 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x62b0a280 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x62c9b4eb dm_put_table_device +EXPORT_SYMBOL vmlinux 0x62cebcbd nd_device_unregister +EXPORT_SYMBOL vmlinux 0x62d9ebad request_key_async +EXPORT_SYMBOL vmlinux 0x630ae262 phy_stop +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6338b903 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x633d1b1e dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x636b24a7 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x637f43c9 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x6387d51a __init_rwsem +EXPORT_SYMBOL vmlinux 0x63a6420d elv_rb_add +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63ae4260 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x63bd7fc9 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x63c4aed1 mdiobus_free +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x64006f67 md_reload_sb +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64176ed6 of_match_node +EXPORT_SYMBOL vmlinux 0x643754e1 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x64382dec blk_stop_queue +EXPORT_SYMBOL vmlinux 0x64401592 inet_frag_find +EXPORT_SYMBOL vmlinux 0x645135c2 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x646846f9 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x647453a9 revert_creds +EXPORT_SYMBOL vmlinux 0x6476ffb1 may_umount_tree +EXPORT_SYMBOL vmlinux 0x647bde7d scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x64860cc5 posix_test_lock +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c3c293 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x64cdf72f scsi_host_put +EXPORT_SYMBOL vmlinux 0x64d1d348 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x64de7bd4 vfs_write +EXPORT_SYMBOL vmlinux 0x64f5390e pcim_iomap +EXPORT_SYMBOL vmlinux 0x65048f58 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x650ac9bf free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x650f3078 __scsi_device_lookup +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 0x6546384a nf_setsockopt +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x656cf7dc iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x6588186c unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x65927581 sock_efree +EXPORT_SYMBOL vmlinux 0x6592c74c inet_select_addr +EXPORT_SYMBOL vmlinux 0x65a9aefe __genl_register_family +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d0e709 mb_cache_shrink +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 0x65f45a39 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x660b39c0 __pagevec_release +EXPORT_SYMBOL vmlinux 0x660d5007 security_file_permission +EXPORT_SYMBOL vmlinux 0x665201d0 icmpv6_send +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x665c5b2c blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x6690541b xfrm_register_type +EXPORT_SYMBOL vmlinux 0x669563d5 give_up_console +EXPORT_SYMBOL vmlinux 0x66ac3c70 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x66dc6507 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x66e5bd03 f_setown +EXPORT_SYMBOL vmlinux 0x66f1cebd skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x67005142 module_layout +EXPORT_SYMBOL vmlinux 0x67363b32 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x673be878 nf_log_register +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6760b46c skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x67643a01 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x678df753 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67ef4174 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x6810dd3c pci_dev_get +EXPORT_SYMBOL vmlinux 0x68154415 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x68208e22 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x684b4b8a unregister_console +EXPORT_SYMBOL vmlinux 0x6855136b __blk_end_request +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x686b7a57 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688d80ea update_region +EXPORT_SYMBOL vmlinux 0x68b326c2 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68d8a86f scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x68e99bf0 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x69204c2e skb_unlink +EXPORT_SYMBOL vmlinux 0x692fcc2d blkdev_fsync +EXPORT_SYMBOL vmlinux 0x694fee18 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x6968deb2 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697517d7 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x6985cb7d pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a8f3b0 pci_restore_state +EXPORT_SYMBOL vmlinux 0x69aaf884 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69e06998 neigh_table_init +EXPORT_SYMBOL vmlinux 0x69fd7f94 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a378f88 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x6a3c86b7 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60f626 km_state_notify +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 0x6a7f4886 __seq_open_private +EXPORT_SYMBOL vmlinux 0x6a92e72e skb_free_datagram +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ada8d58 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x6ae95ce8 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b134f29 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x6b163d5d inet_recvmsg +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b21b596 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x6b240fac netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b4c6985 file_open_root +EXPORT_SYMBOL vmlinux 0x6b5c2489 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b6d56c8 filp_open +EXPORT_SYMBOL vmlinux 0x6b80037a simple_readpage +EXPORT_SYMBOL vmlinux 0x6bb8f9a1 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x6bbc996a locks_init_lock +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc4d5a5 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x6bcfa9c2 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c4a63d0 kmem_cache_shrink +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 0x6c7b024a lock_sock_fast +EXPORT_SYMBOL vmlinux 0x6c9fe284 input_reset_device +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6ccbbc53 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x6cda0a93 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x6d0cad98 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d14b660 param_get_string +EXPORT_SYMBOL vmlinux 0x6d2694b4 __dst_free +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d473bc6 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x6d6bba7c vfs_iter_write +EXPORT_SYMBOL vmlinux 0x6d6bdf9f inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d8fa38f dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x6d9ce7af d_add_ci +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dab34f5 skb_split +EXPORT_SYMBOL vmlinux 0x6dcdac9e single_release +EXPORT_SYMBOL vmlinux 0x6dd01f34 mmc_start_req +EXPORT_SYMBOL vmlinux 0x6dd1ead6 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x6dee40ec scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e144d91 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x6e148b4b neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x6e16e101 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x6e17288e dmam_pool_create +EXPORT_SYMBOL vmlinux 0x6e2f7334 pipe_unlock +EXPORT_SYMBOL vmlinux 0x6e326936 d_invalidate +EXPORT_SYMBOL vmlinux 0x6e38b3f6 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x6e57c1db devm_gpio_request +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e837fee register_netdevice +EXPORT_SYMBOL vmlinux 0x6e97538d vga_client_register +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea361ca vme_bus_type +EXPORT_SYMBOL vmlinux 0x6ecbf33b __getblk_gfp +EXPORT_SYMBOL vmlinux 0x6ee05cc3 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x6ee12b45 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x6ee3baab passthru_features_check +EXPORT_SYMBOL vmlinux 0x6ee49ee3 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x6ef47a54 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x6f0a1c9b swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x6f0b9b6a ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f293325 filp_close +EXPORT_SYMBOL vmlinux 0x6f3e6a79 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x6f453396 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x6f50fe46 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x6f618cab __ip_dev_find +EXPORT_SYMBOL vmlinux 0x6f836f73 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fb55446 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc254f3 init_task +EXPORT_SYMBOL vmlinux 0x6fc8e242 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcf46dd of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x70022ff1 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x70090e2f ata_dev_printk +EXPORT_SYMBOL vmlinux 0x7009758e mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x7031bffd devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x70413255 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7063f054 pci_dev_put +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70773afb __napi_schedule +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7087828c inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x709d5170 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x70af989f tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x70b0e27d vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x70b7a110 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x70d92e44 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x70ea6210 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7102a025 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x711ea86d scsi_remove_device +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71330bcd skb_store_bits +EXPORT_SYMBOL vmlinux 0x71535050 dcb_setapp +EXPORT_SYMBOL vmlinux 0x7154bc45 pci_get_class +EXPORT_SYMBOL vmlinux 0x7165763f netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x718ecad0 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b8d531 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x71be2e4a stop_tty +EXPORT_SYMBOL vmlinux 0x71ca0f75 arp_create +EXPORT_SYMBOL vmlinux 0x71d48723 to_nd_btt +EXPORT_SYMBOL vmlinux 0x71dd813c __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x71ee2527 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x71fe8dff generic_setxattr +EXPORT_SYMBOL vmlinux 0x722a22f7 skb_put +EXPORT_SYMBOL vmlinux 0x722e62b3 pci_find_bus +EXPORT_SYMBOL vmlinux 0x7232bbdc seq_pad +EXPORT_SYMBOL vmlinux 0x7239d0d0 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x723bc192 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x723dce8e udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b4d782 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72da268c backlight_device_register +EXPORT_SYMBOL vmlinux 0x72deeaf5 audit_log +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x73185563 vme_bus_num +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7340b294 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x73466635 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x737b61f8 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x7398ecbe blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x739ea45c end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x73ad4a57 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x73adc181 of_get_parent +EXPORT_SYMBOL vmlinux 0x73c6f8ff xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x73c7165a security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x73c8bbe4 param_set_long +EXPORT_SYMBOL vmlinux 0x73e40590 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x73fbc344 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x74030cde netlink_capable +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x743a72d6 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x744af1e9 udp_prot +EXPORT_SYMBOL vmlinux 0x744ee7bc md_flush_request +EXPORT_SYMBOL vmlinux 0x7467fc0a jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x746fa06d blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x746fdf1a pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x747d0d7c ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749f6d13 sg_miter_start +EXPORT_SYMBOL vmlinux 0x74b07cdc of_parse_phandle +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c49464 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x74ca8ba4 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x74db907d input_inject_event +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f86319 eth_header_cache +EXPORT_SYMBOL vmlinux 0x7514cb0e sys_imageblit +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753ad343 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x7548e4c2 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x755915bf ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x756f778b tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x7581b505 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x758f7112 kobject_put +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x759a9bd2 tty_lock +EXPORT_SYMBOL vmlinux 0x75b2aa61 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75ce08cb bio_unmap_user +EXPORT_SYMBOL vmlinux 0x75ea1de7 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x75fa1528 pci_get_device +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x761c300d fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x7620cae8 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x762570ea neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7656e1e5 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76658dcd nobh_write_end +EXPORT_SYMBOL vmlinux 0x76678285 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76d28f73 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d4443c netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76f0fff1 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x770525b2 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x7712070b get_agp_version +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7729076d neigh_seq_next +EXPORT_SYMBOL vmlinux 0x772d3dc2 napi_get_frags +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x774407ed set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x77448052 dma_find_channel +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x77641659 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x777fc7bd mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x77919b5e tcf_hash_check +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77acc339 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x77b0cb53 km_policy_expired +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x7815251b nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x78421a1d mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x7859dd91 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x786c49d1 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7886afb0 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x789546a3 unlock_buffer +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e6caa2 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x78e96649 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x78fb453a vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x7925fa0e tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x793a8ffc generic_file_llseek +EXPORT_SYMBOL vmlinux 0x795ab7d9 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x795f1544 genphy_suspend +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 0x798ed46c blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x798f5146 security_path_chmod +EXPORT_SYMBOL vmlinux 0x7996d8cc migrate_page +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79a5dc77 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b6750f clear_nlink +EXPORT_SYMBOL vmlinux 0x79fac79d security_path_rename +EXPORT_SYMBOL vmlinux 0x7a0156b3 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x7a1e0cec tty_port_open +EXPORT_SYMBOL vmlinux 0x7a2046cd find_inode_nowait +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2cc988 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x7a357dca cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4ce1a1 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9e3d58 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab2c2b4 fget_raw +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac05f30 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad552f6 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af93e68 inet6_getname +EXPORT_SYMBOL vmlinux 0x7b12f377 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b1dd20a vfs_mkdir +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b333dd4 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x7b414117 of_device_alloc +EXPORT_SYMBOL vmlinux 0x7b58fffb dev_set_mtu +EXPORT_SYMBOL vmlinux 0x7b76a323 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x7ba61f41 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bbdd279 register_console +EXPORT_SYMBOL vmlinux 0x7bd1d250 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x7bd95b95 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x7bda11c8 mdiobus_register +EXPORT_SYMBOL vmlinux 0x7bfb2302 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c0b6007 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x7c0fa6ad dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1e8730 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c44de53 neigh_lookup +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c46abeb netdev_crit +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c67893d fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c7ef767 mb_cache_entry_alloc +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 0x7cba97d1 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x7cc3b425 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x7ce0464d blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfbb376 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d343870 vfs_readv +EXPORT_SYMBOL vmlinux 0x7d5a3f1d seq_open_private +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7ef646 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x7db6fed7 simple_unlink +EXPORT_SYMBOL vmlinux 0x7db74937 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x7dceda3c of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e15a1c9 misc_register +EXPORT_SYMBOL vmlinux 0x7e1ab106 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x7e220530 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x7e424ca9 of_dev_get +EXPORT_SYMBOL vmlinux 0x7e4535cc mmc_can_erase +EXPORT_SYMBOL vmlinux 0x7e46f23a jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x7e55160d ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x7e79a33e inet_put_port +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e9b4af3 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x7eb2cd6e netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x7eb2fe30 dst_release +EXPORT_SYMBOL vmlinux 0x7eca3300 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed8be2b tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7eea569d dm_register_target +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f145113 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x7f216ef8 sock_create_lite +EXPORT_SYMBOL vmlinux 0x7f218a7a dev_add_offload +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f5394a7 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x7f59198b posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f844518 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x7f8a43c4 scsi_add_device +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fbeee4c drop_nlink +EXPORT_SYMBOL vmlinux 0x7fd50107 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ff4d737 giveup_fpu +EXPORT_SYMBOL vmlinux 0x7ff815c1 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x8017e944 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x803c9bc9 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x8079b4bf mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x8079bdce shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x807e8f27 ps2_command +EXPORT_SYMBOL vmlinux 0x8092ef6f pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x8098cdea dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80da3744 __bread_gfp +EXPORT_SYMBOL vmlinux 0x80e0c4a3 param_ops_uint +EXPORT_SYMBOL vmlinux 0x80e4941b __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x80e61751 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x80f0e8cd keyring_search +EXPORT_SYMBOL vmlinux 0x80fd4c98 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x81080a8b i2c_register_driver +EXPORT_SYMBOL vmlinux 0x811e45dd pci_map_rom +EXPORT_SYMBOL vmlinux 0x811e9e20 vfs_mknod +EXPORT_SYMBOL vmlinux 0x8144e1fc sk_stream_kill_queues +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 0x81700781 eth_type_trans +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81c5ef80 unregister_key_type +EXPORT_SYMBOL vmlinux 0x81c5eff5 proc_mkdir +EXPORT_SYMBOL vmlinux 0x81daf0c7 dev_addr_del +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e0f021 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x81e98169 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x81fe7091 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x823fd8e5 complete_request_key +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x824e0153 mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x827e96be audit_log_start +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x8299a030 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x829d7ec9 copy_to_iter +EXPORT_SYMBOL vmlinux 0x82a0b2d2 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x82a7abe9 tcp_close +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c1a7fb mmc_can_trim +EXPORT_SYMBOL vmlinux 0x82c5293c security_path_symlink +EXPORT_SYMBOL vmlinux 0x82e1e13a kill_block_super +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82ebbc6c dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x831e2e16 dev_addr_init +EXPORT_SYMBOL vmlinux 0x833ef644 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x8360e86c __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x83745940 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x838d2bd2 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x83a452f4 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c1b43c skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83ced1aa prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x83e42c64 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x83fe227e try_module_get +EXPORT_SYMBOL vmlinux 0x84008060 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x840444ef iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x84269855 simple_rename +EXPORT_SYMBOL vmlinux 0x84399591 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x845ff2c7 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x847cf8b0 vm_mmap +EXPORT_SYMBOL vmlinux 0x84867b47 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x84900154 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x8490e72b redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84ff6c7e security_path_link +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850e3f16 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x851fcc04 inet_del_offload +EXPORT_SYMBOL vmlinux 0x854afbde pci_disable_msi +EXPORT_SYMBOL vmlinux 0x85596b51 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8571c640 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x858c4820 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x859dfead path_is_under +EXPORT_SYMBOL vmlinux 0x85ae6052 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x85b3f32e pagevec_lookup +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b969ed i2c_use_client +EXPORT_SYMBOL vmlinux 0x85ced0fd twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e0f4f4 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x85eacaff generic_write_checks +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8601253e __frontswap_load +EXPORT_SYMBOL vmlinux 0x861d30c3 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x862c6111 seq_path +EXPORT_SYMBOL vmlinux 0x864d9109 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86c6a697 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x86d60e97 netdev_info +EXPORT_SYMBOL vmlinux 0x86d6211a vlan_vid_del +EXPORT_SYMBOL vmlinux 0x86e39c00 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x86e87474 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86fdc244 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x8700f92a inet6_offloads +EXPORT_SYMBOL vmlinux 0x87089824 ps2_end_command +EXPORT_SYMBOL vmlinux 0x8708a25f dev_disable_lro +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872d1a01 rt6_lookup +EXPORT_SYMBOL vmlinux 0x8739cf9a from_kprojid +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x87447fea udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87a551f5 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x87a57e75 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x87b10756 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x87b341e0 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x87b9065e mmc_put_card +EXPORT_SYMBOL vmlinux 0x87e84ccb scm_fp_dup +EXPORT_SYMBOL vmlinux 0x8809db59 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x8852687f blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x885ebf9b tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x8874d078 d_splice_alias +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88903096 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x8892e194 inet_accept +EXPORT_SYMBOL vmlinux 0x889a66b9 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x88d9d4c8 page_waitqueue +EXPORT_SYMBOL vmlinux 0x88ef0d06 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x8916983f md_integrity_register +EXPORT_SYMBOL vmlinux 0x891a9ab3 udp_seq_open +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x892deede jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x896e0135 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8984673a dcache_dir_close +EXPORT_SYMBOL vmlinux 0x898e8d27 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89c16956 of_device_unregister +EXPORT_SYMBOL vmlinux 0x89c3fbca locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x89d3146d pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d9df6e tty_name +EXPORT_SYMBOL vmlinux 0x89e59cad tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x89ff3733 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x8a09a2c0 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x8a12d5cd __scm_send +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a3cdaa1 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a593e34 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x8a5b6374 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x8a617685 dup_iter +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a71bbce nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x8a7a1c41 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ac64473 unlock_rename +EXPORT_SYMBOL vmlinux 0x8acfc94b skb_pull +EXPORT_SYMBOL vmlinux 0x8ad1b761 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x8af1ad6a abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b4de096 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x8b570bb7 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b780a92 cdrom_open +EXPORT_SYMBOL vmlinux 0x8b7fe325 down_write_trylock +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8ba33a8b devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x8baf3116 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8be2c16f blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x8be9f759 read_cache_page +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bfd0912 drop_super +EXPORT_SYMBOL vmlinux 0x8c02eb91 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x8c089697 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c365282 user_revoke +EXPORT_SYMBOL vmlinux 0x8c48d968 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c704570 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x8cbcea0b secpath_dup +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccadd29 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x8cfbc7a3 fb_blank +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d087c7b security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x8d0c3cb6 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x8d0e26b3 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x8d28a476 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x8d2afc5a __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x8d473fe4 setup_new_exec +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6a9105 mdiobus_write +EXPORT_SYMBOL vmlinux 0x8d6f7054 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d73a048 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x8d8259b0 skb_copy +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8da5a290 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x8da99dc7 key_revoke +EXPORT_SYMBOL vmlinux 0x8db4c868 bdevname +EXPORT_SYMBOL vmlinux 0x8db5b76e netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x8dc2e93b page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x8dc4a011 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de53356 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x8de61855 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8df98075 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x8e018e13 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x8e065fbb vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x8e1b9abf pci_fixup_device +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e4d2191 agp_bridge +EXPORT_SYMBOL vmlinux 0x8e85e482 lock_rename +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8e991278 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x8e9b2767 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ee039e5 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x8eeaf5bb pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x8ef068f6 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x8eff1ad4 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f0e4d3a dev_mc_add +EXPORT_SYMBOL vmlinux 0x8f232b3f padata_alloc +EXPORT_SYMBOL vmlinux 0x8f64568b filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x8f8003cc irq_set_chip +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fdb0698 dquot_file_open +EXPORT_SYMBOL vmlinux 0x8fde3f21 __lock_buffer +EXPORT_SYMBOL vmlinux 0x8fef9c22 path_nosuid +EXPORT_SYMBOL vmlinux 0x90125f82 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x90145937 prepare_creds +EXPORT_SYMBOL vmlinux 0x901a2ecb scsi_remove_target +EXPORT_SYMBOL vmlinux 0x901a4885 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x9029724a kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x90332947 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x9053894f scsi_init_io +EXPORT_SYMBOL vmlinux 0x90694fe6 filemap_fault +EXPORT_SYMBOL vmlinux 0x90af0b8a fget +EXPORT_SYMBOL vmlinux 0x90ca23ff neigh_for_each +EXPORT_SYMBOL vmlinux 0x90ddad60 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x90e40573 lookup_bdev +EXPORT_SYMBOL vmlinux 0x9102143f jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x9106227d generic_permission +EXPORT_SYMBOL vmlinux 0x91092fbc __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x910ddd67 kset_unregister +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914b0b3f inet_frag_kill +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x915fd094 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x918858c0 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x9195fe3a textsearch_destroy +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91a83b69 init_special_inode +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91adfe97 get_tz_trend +EXPORT_SYMBOL vmlinux 0x91d1b829 sock_rfree +EXPORT_SYMBOL vmlinux 0x91df302e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x9214caca xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x921e265b tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x922c515c load_nls +EXPORT_SYMBOL vmlinux 0x9238660e iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x925b7fa2 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x9299c610 neigh_destroy +EXPORT_SYMBOL vmlinux 0x92a7f8ef lro_flush_all +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b9c076 key_unlink +EXPORT_SYMBOL vmlinux 0x92c048ee input_close_device +EXPORT_SYMBOL vmlinux 0x92c12585 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9307f96c fs_bio_set +EXPORT_SYMBOL vmlinux 0x9316d2f1 flush_old_exec +EXPORT_SYMBOL vmlinux 0x9316e74f down_read_trylock +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9385512b phy_driver_register +EXPORT_SYMBOL vmlinux 0x9387fa62 param_set_ushort +EXPORT_SYMBOL vmlinux 0x93a8e1d1 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bed3fc ilookup5 +EXPORT_SYMBOL vmlinux 0x93e6d63e scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x93f0fb00 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940e897a phy_device_free +EXPORT_SYMBOL vmlinux 0x94292cda fb_set_var +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x948a4404 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94ed30b7 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x94fa037d sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951dae5f inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9542a243 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x95433b30 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x9543422e mntget +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954fcf86 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x95659b90 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x95a15e83 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x95ac2117 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x95b221d8 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x95ca03ff pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x960812ba dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x961ac23d dquot_get_state +EXPORT_SYMBOL vmlinux 0x963b5293 kernel_bind +EXPORT_SYMBOL vmlinux 0x965e703e kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x9685eaf9 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x968e0a5f __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x96951d1a scsi_scan_host +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96ba4f7e import_iovec +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e5ee1a seq_release_private +EXPORT_SYMBOL vmlinux 0x96f51c49 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x96fe9c9a scsi_register +EXPORT_SYMBOL vmlinux 0x9700c6bd dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9714a40c fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x972bf177 vfs_create +EXPORT_SYMBOL vmlinux 0x97369cd4 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9757868a pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x97842eb2 of_dev_put +EXPORT_SYMBOL vmlinux 0x9785dc4c simple_transaction_get +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x978c51d1 blkdev_put +EXPORT_SYMBOL vmlinux 0x978cf59a led_update_brightness +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a148da xfrm_init_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97ce0639 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x97dccf4c twl6040_power +EXPORT_SYMBOL vmlinux 0x97dd0759 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x97e532f2 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x97f12cbe __brelse +EXPORT_SYMBOL vmlinux 0x980823a9 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982a46f8 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x98ba3443 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x98be91dd blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x99113d0e jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x991174af skb_push +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x99397110 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9962d0ad dev_get_by_name +EXPORT_SYMBOL vmlinux 0x996b9e30 blk_run_queue +EXPORT_SYMBOL vmlinux 0x996c4597 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99caafab serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99d87e71 clk_get +EXPORT_SYMBOL vmlinux 0x99d9c35a blk_finish_request +EXPORT_SYMBOL vmlinux 0x9a070f72 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x9a0ddf54 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x9a14f3aa __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x9a1d52aa dev_mc_init +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3319b1 __ps2_command +EXPORT_SYMBOL vmlinux 0x9a3ad74c bio_chain +EXPORT_SYMBOL vmlinux 0x9a54a9a6 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9aab0966 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x9aadca2b __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x9ab7a5f1 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b11efa5 free_task +EXPORT_SYMBOL vmlinux 0x9b1c3500 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x9b262a6f unregister_cdrom +EXPORT_SYMBOL vmlinux 0x9b303bf8 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b34275b t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b403f33 simple_statfs +EXPORT_SYMBOL vmlinux 0x9b6bb814 of_find_property +EXPORT_SYMBOL vmlinux 0x9b834a9a max8925_reg_write +EXPORT_SYMBOL vmlinux 0x9b8520eb pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x9b85a4cc vc_cons +EXPORT_SYMBOL vmlinux 0x9b8cf6cd agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x9b959b8e PDE_DATA +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba16a41 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba9a511 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x9bb31f15 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x9bca61d8 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x9be0e2f1 inet_release +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9bfff2db xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x9c3d1525 eth_header +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c6622bc clear_user_page +EXPORT_SYMBOL vmlinux 0x9c719f3d udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x9c75c802 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x9c87a450 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x9c9ffb92 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x9ca49806 loop_backing_file +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb7fe7e blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x9cda1d41 register_md_personality +EXPORT_SYMBOL vmlinux 0x9ce3a5f9 paca +EXPORT_SYMBOL vmlinux 0x9ce419d3 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x9ce55042 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x9cebbea1 tcp_req_err +EXPORT_SYMBOL vmlinux 0x9cf4fbb8 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d0e2783 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d1dce17 mount_nodev +EXPORT_SYMBOL vmlinux 0x9d1f1957 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +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 0x9d885e5f cap_mmap_file +EXPORT_SYMBOL vmlinux 0x9d8bcaec mapping_tagged +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9da0b1f3 override_creds +EXPORT_SYMBOL vmlinux 0x9da12d7b blk_init_queue +EXPORT_SYMBOL vmlinux 0x9da462ee phy_find_first +EXPORT_SYMBOL vmlinux 0x9dc46f39 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x9dc5d047 do_splice_from +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0dc391 register_gifconf +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e3914b3 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e623bf6 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x9e629942 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x9e7395b8 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e76354a write_one_page +EXPORT_SYMBOL vmlinux 0x9e78eef7 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x9e7b9d16 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x9ea494c6 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec3d174 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x9ece4d37 generic_listxattr +EXPORT_SYMBOL vmlinux 0x9f1a6cb8 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x9f3bcc28 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x9f43f327 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4f46a6 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x9f5c2ebe tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x9f5fe3c6 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9faa4681 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x9fb55959 security_path_chown +EXPORT_SYMBOL vmlinux 0x9fcfc506 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa001b59e iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xa004700d jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xa00bdffb iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04809ce from_kgid +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa057491e devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa0614b90 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xa0709b1a padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b2c2af generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e43d0f blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xa0e52fc5 pci_request_region +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f964f9 file_remove_privs +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff6afe arp_tbl +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 0xa148e7c2 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xa14abb7a mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa173c816 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xa17a983e __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xa1813c0d block_read_full_page +EXPORT_SYMBOL vmlinux 0xa18f4779 tcf_em_register +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1b975b4 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1e36e39 dev_emerg +EXPORT_SYMBOL vmlinux 0xa1f2debe inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa202615b padata_free +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20719db try_to_release_page +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2167253 cad_pid +EXPORT_SYMBOL vmlinux 0xa2235bd2 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa223e100 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xa2256a87 ipv4_specific +EXPORT_SYMBOL vmlinux 0xa231f281 seq_read +EXPORT_SYMBOL vmlinux 0xa23a90cb kill_bdev +EXPORT_SYMBOL vmlinux 0xa23ee927 sk_filter +EXPORT_SYMBOL vmlinux 0xa25aef02 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xa275e9d2 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xa27c1f8f nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28b00ef rtnl_create_link +EXPORT_SYMBOL vmlinux 0xa2a1e018 security_mmap_file +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2d136ce xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xa2d7e593 sock_release +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 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa33af295 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3985a36 mmc_request_done +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3c3bc27 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xa3d11478 blk_get_request +EXPORT_SYMBOL vmlinux 0xa3d518bb cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xa3deff6d of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3efe520 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xa3f3ad63 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xa3fb2bf7 devm_iounmap +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa4042fe3 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xa41f3974 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xa42b0f38 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xa432bb20 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xa43fde35 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xa44184e0 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa465ad00 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xa46d96cf inet6_protos +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47ce397 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xa487a720 input_unregister_device +EXPORT_SYMBOL vmlinux 0xa48d4006 revalidate_disk +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b410d3 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xa4b7f190 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c6e14b i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xa4cbe3c0 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4ee1c86 __put_cred +EXPORT_SYMBOL vmlinux 0xa4ee7753 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xa4f7ae86 vfs_whiteout +EXPORT_SYMBOL vmlinux 0xa5017d4e unregister_filesystem +EXPORT_SYMBOL vmlinux 0xa50d80a3 backlight_force_update +EXPORT_SYMBOL vmlinux 0xa523bee0 vme_irq_free +EXPORT_SYMBOL vmlinux 0xa52925cf pci_scan_bus +EXPORT_SYMBOL vmlinux 0xa52a44f2 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa572656e ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xa57fe4c0 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xa584f2b3 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5ee20a3 ppp_input +EXPORT_SYMBOL vmlinux 0xa61e1ea3 sock_i_ino +EXPORT_SYMBOL vmlinux 0xa628bd52 neigh_update +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa6556f33 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa66da282 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68d4185 __vfs_write +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70bbbec seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xa7191b6e of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa7555fb3 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xa756e57a key_invalidate +EXPORT_SYMBOL vmlinux 0xa7680688 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xa781175d fb_show_logo +EXPORT_SYMBOL vmlinux 0xa782e03a elv_rb_find +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7a19211 bio_reset +EXPORT_SYMBOL vmlinux 0xa7a32e3d find_vma +EXPORT_SYMBOL vmlinux 0xa7a911f7 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xa7b449fe sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xa7b82f5b lro_receive_skb +EXPORT_SYMBOL vmlinux 0xa7db7c3c tcp_read_sock +EXPORT_SYMBOL vmlinux 0xa7f844fc setattr_copy +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84ca774 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xa855434b tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87e9ead phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xa8858ff7 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xa8892455 param_ops_charp +EXPORT_SYMBOL vmlinux 0xa89a2efa scsi_remove_host +EXPORT_SYMBOL vmlinux 0xa8a7248e xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xa8acba00 dma_set_mask +EXPORT_SYMBOL vmlinux 0xa8b87517 sock_no_getname +EXPORT_SYMBOL vmlinux 0xa8da0cce get_gendisk +EXPORT_SYMBOL vmlinux 0xa8ec0adf mutex_trylock +EXPORT_SYMBOL vmlinux 0xa8edca08 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90ea643 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa929fbf6 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa9619113 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9798f90 seq_dentry +EXPORT_SYMBOL vmlinux 0xa98c8713 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xa9942f1e param_ops_long +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9a37a91 down_read +EXPORT_SYMBOL vmlinux 0xa9b5cbef scsi_target_resume +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9c8b1b8 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xa9cbf56a dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xa9df6828 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xa9e8086e neigh_parms_release +EXPORT_SYMBOL vmlinux 0xa9eec51e bio_add_page +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa0386f6 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xaa18f0b3 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xaa1eaa69 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xaa20334b abort_creds +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa53f634 blk_get_queue +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa84f0b5 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaab9a0e9 blk_make_request +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadc7e32 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xaae94d9b mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xaaf0f441 noop_llseek +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1b922a pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xab3a0bd8 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xab69b342 ppc_md +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab82529d serio_close +EXPORT_SYMBOL vmlinux 0xab910eb7 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xaba76c81 km_is_alive +EXPORT_SYMBOL vmlinux 0xabae5423 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xabc2b919 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xabc44506 __check_sticky +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabca723e pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xac00c3a3 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac17ed6c genlmsg_put +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1f02f9 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac314f09 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xac4f0afd mount_subtree +EXPORT_SYMBOL vmlinux 0xac5c9687 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xac6bbd5d tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xac70b0fa vm_stat +EXPORT_SYMBOL vmlinux 0xac8566bd kobject_set_name +EXPORT_SYMBOL vmlinux 0xac86e1fc vme_register_bridge +EXPORT_SYMBOL vmlinux 0xac91d8d7 iunique +EXPORT_SYMBOL vmlinux 0xaca3abfb posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb1779e pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xacb8a08a scsi_register_driver +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccecc3e skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdcef40 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xacf18ea6 dev_err +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0ccae7 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xad0dfb41 __mutex_init +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad3d24b5 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xad417985 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xad486e28 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xad4e8d87 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xad5b1b6c n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xad662fa5 scsi_print_result +EXPORT_SYMBOL vmlinux 0xad751535 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xad755436 __invalidate_device +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad87cce6 d_find_alias +EXPORT_SYMBOL vmlinux 0xad8dd11f con_is_bound +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xad9f5c8e generic_delete_inode +EXPORT_SYMBOL vmlinux 0xada42c9a uart_match_port +EXPORT_SYMBOL vmlinux 0xada7d35a sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xadc0b0c6 current_fs_time +EXPORT_SYMBOL vmlinux 0xade1ffa4 dev_deactivate +EXPORT_SYMBOL vmlinux 0xade9d77e jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xadebd33d inc_nlink +EXPORT_SYMBOL vmlinux 0xadf87ff5 dm_io +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae25a525 flow_cache_fini +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae417ada inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xae42a9c7 inet_getname +EXPORT_SYMBOL vmlinux 0xae4a1aa1 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xae52737d jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae652c4b key_task_permission +EXPORT_SYMBOL vmlinux 0xae65d47a skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae781d1e qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xaebfb600 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xaef22722 sock_no_poll +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf08c8f3 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xaf133cdc kmem_cache_size +EXPORT_SYMBOL vmlinux 0xaf201435 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3c41e2 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf836b4a swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xaf8ab5ed vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafdbcbdc skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb007a57a agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xb0099db5 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xb00d27d0 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xb01286e3 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xb01735dd make_kuid +EXPORT_SYMBOL vmlinux 0xb02e66cb n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xb0386681 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb04ba4b6 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xb05209f4 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xb0548dbb ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb063ff29 register_qdisc +EXPORT_SYMBOL vmlinux 0xb0982798 module_refcount +EXPORT_SYMBOL vmlinux 0xb09e4ad5 km_query +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0b880a4 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xb0c8e1d5 d_rehash +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f9307c netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xb0ff8ac6 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12dcf7e get_empty_filp +EXPORT_SYMBOL vmlinux 0xb135a2a0 of_get_address +EXPORT_SYMBOL vmlinux 0xb1592a22 generic_writepages +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 0xb16849fc component_match_add +EXPORT_SYMBOL vmlinux 0xb170fb38 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xb1a0f549 skb_coalesce_rx_frag +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 0xb205906d of_phy_attach +EXPORT_SYMBOL vmlinux 0xb25e076d do_SAK +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb29cff04 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xb2a4660a udp6_set_csum +EXPORT_SYMBOL vmlinux 0xb2b2e64e tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xb2b54e5e netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c114c9 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xb2f7b5ab d_delete +EXPORT_SYMBOL vmlinux 0xb3042b0e ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xb3099a65 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb3504b9c vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xb36bde73 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xb395f98e __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xb3a68d7c dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xb3ac4595 free_user_ns +EXPORT_SYMBOL vmlinux 0xb3b7f59b zero_fill_bio +EXPORT_SYMBOL vmlinux 0xb3cb1660 find_get_entry +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d96457 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42e96a4 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xb43fc768 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xb454d562 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xb45b940f hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xb45cb18a mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xb460c39e xfrm6_rcv_spi +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 0xb474af1c netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xb47f88bc genl_unregister_family +EXPORT_SYMBOL vmlinux 0xb4a9ea6b poll_freewait +EXPORT_SYMBOL vmlinux 0xb4bda71a compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xb4be024e swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xb4c5f2b6 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xb4d49349 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xb4ea8d4d fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xb50dd213 redraw_screen +EXPORT_SYMBOL vmlinux 0xb521c0af generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xb5428ef0 follow_pfn +EXPORT_SYMBOL vmlinux 0xb54936c6 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xb572ab3c seq_open +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57a9a3b i2c_transfer +EXPORT_SYMBOL vmlinux 0xb58c8ef3 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xb5a3fd6f param_set_short +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a5a9c9 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5be5d49 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0xb5c84203 uart_register_driver +EXPORT_SYMBOL vmlinux 0xb6046380 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xb60c8251 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xb61480c9 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xb616f40e dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xb6219cb7 submit_bio +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb644c6d6 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xb65d377f xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xb67192f6 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb68959dc pci_set_power_state +EXPORT_SYMBOL vmlinux 0xb68c8ff6 phy_suspend +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb698a843 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xb6a15139 of_get_next_parent +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6aaeebd __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xb6e04922 dst_destroy +EXPORT_SYMBOL vmlinux 0xb6f0ba36 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xb74353d7 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb770be3e __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb780b42b pcim_enable_device +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb7aff2b2 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xb7b08918 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7ec4ba1 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xb7f9d429 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xb84e00ef misc_deregister +EXPORT_SYMBOL vmlinux 0xb86b6fb4 blk_rq_init +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8fae901 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xb92d69cf tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xb932fdc0 eth_header_parse +EXPORT_SYMBOL vmlinux 0xb935ed76 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xb9440a17 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xb9692821 keyring_clear +EXPORT_SYMBOL vmlinux 0xb970528f ppp_dev_name +EXPORT_SYMBOL vmlinux 0xb9aa72c8 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0xb9dff891 input_allocate_device +EXPORT_SYMBOL vmlinux 0xb9e51f2e tty_check_change +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f3d0b3 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xb9f75467 sys_fillrect +EXPORT_SYMBOL vmlinux 0xba2d0732 to_ndd +EXPORT_SYMBOL vmlinux 0xba2da147 pci_set_master +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba5b4457 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xba9086da pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xba95e4be xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xbab1b1c0 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xbac8e798 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xbaca4192 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xbacaf57d __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xbad6d7fd dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xbaf06b5d inode_set_bytes +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb77c101 thaw_super +EXPORT_SYMBOL vmlinux 0xbb8d017b cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xbb921ef1 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbae4f82 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbde3177 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xbbe56180 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xbbecfd75 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbbfabfef netlink_ack +EXPORT_SYMBOL vmlinux 0xbc04f278 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xbc07831e pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xbc10f0c7 tty_port_put +EXPORT_SYMBOL vmlinux 0xbc2302f8 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xbc23e731 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3719e1 blk_complete_request +EXPORT_SYMBOL vmlinux 0xbc59be71 ps2_drain +EXPORT_SYMBOL vmlinux 0xbc5bf28c udp_del_offload +EXPORT_SYMBOL vmlinux 0xbc720491 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xbc75f57d cdev_init +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbceddcad kobject_init +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd0e9f9c security_inode_readlink +EXPORT_SYMBOL vmlinux 0xbd24b421 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd5910cd swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xbd65f7da phy_connect +EXPORT_SYMBOL vmlinux 0xbd785883 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd88e824 ihold +EXPORT_SYMBOL vmlinux 0xbd895681 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xbd8a45db pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd997cc7 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xbd9d4ac3 __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xbdb0878a netdev_emerg +EXPORT_SYMBOL vmlinux 0xbdc389c4 param_get_ulong +EXPORT_SYMBOL vmlinux 0xbddfb91a set_page_dirty +EXPORT_SYMBOL vmlinux 0xbdee9a41 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe2bc172 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xbe614f77 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xbe68b9dd rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xbe8ccdb9 __quota_error +EXPORT_SYMBOL vmlinux 0xbea1da08 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xbecba3a8 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef75328 dquot_alloc +EXPORT_SYMBOL vmlinux 0xbf0688fd blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xbf146162 vm_event_states +EXPORT_SYMBOL vmlinux 0xbf2bd387 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xbf728f7d vga_put +EXPORT_SYMBOL vmlinux 0xbf72ebcb tcf_register_action +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf93f931 tcp_check_req +EXPORT_SYMBOL vmlinux 0xbf966a40 sock_no_listen +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb718a9 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc61143 d_genocide +EXPORT_SYMBOL vmlinux 0xbfe3b699 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc00ab2ec vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xc020ff6c bh_submit_read +EXPORT_SYMBOL vmlinux 0xc0232ad2 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xc0274a5f pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xc047e3f4 get_io_context +EXPORT_SYMBOL vmlinux 0xc04dd1cc blk_put_queue +EXPORT_SYMBOL vmlinux 0xc05bf5a8 inode_init_once +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc083eb3b bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xc096b5e3 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0e381d1 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xc1028b05 dma_direct_ops +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1790f4f kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xc17f7e22 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xc17ff581 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xc19c1d31 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xc1c4026d tty_throttle +EXPORT_SYMBOL vmlinux 0xc1c545e8 devm_clk_put +EXPORT_SYMBOL vmlinux 0xc1c68b57 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1eb1d0f sg_miter_next +EXPORT_SYMBOL vmlinux 0xc1ebe4b8 elevator_exit +EXPORT_SYMBOL vmlinux 0xc1f5e6e2 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xc231d962 lock_fb_info +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc24e727d netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xc277a60a tc_classify +EXPORT_SYMBOL vmlinux 0xc27bf69d pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xc28ea910 pci_find_capability +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2b4ae9c xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xc2c8d90f netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xc2cf4491 netdev_update_features +EXPORT_SYMBOL vmlinux 0xc2dbb944 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc3187ef1 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xc36fef85 set_device_ro +EXPORT_SYMBOL vmlinux 0xc3a1e5bc generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc3aa8d00 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xc3ba89fc agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xc3bbc87f ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3dd423f md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xc3e77e10 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xc3f236e9 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xc3fb414f devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xc4254621 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xc453698b zpool_register_driver +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4640ebe mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4bb9974 phy_init_hw +EXPORT_SYMBOL vmlinux 0xc4cac6cb dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xc4ef4823 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xc513659f netdev_printk +EXPORT_SYMBOL vmlinux 0xc5178bf3 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xc52a72f6 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55df612 simple_write_begin +EXPORT_SYMBOL vmlinux 0xc5666495 clear_inode +EXPORT_SYMBOL vmlinux 0xc57f0cd7 scsi_host_get +EXPORT_SYMBOL vmlinux 0xc58c81c0 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xc58db638 set_cached_acl +EXPORT_SYMBOL vmlinux 0xc592c20a default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5b139de rtnl_notify +EXPORT_SYMBOL vmlinux 0xc5c5a57f netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xc5c9f8f5 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5f9d01b scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6072db5 put_tty_driver +EXPORT_SYMBOL vmlinux 0xc61abc6a netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6426f48 input_set_capability +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 0xc67f58dd buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xc6c62312 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d2b7f9 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xc6e71ef1 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xc6fb0f15 padata_stop +EXPORT_SYMBOL vmlinux 0xc7067acf __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xc7187f8f dma_async_device_register +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7335bd3 elevator_init +EXPORT_SYMBOL vmlinux 0xc7512c6e pci_platform_rom +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc75a13fc of_match_device +EXPORT_SYMBOL vmlinux 0xc75b1ed8 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xc75b89c6 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xc75d07e8 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xc761478d devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc77eea42 sg_alloc_table_from_pages +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 0xc7936e4c pcim_pin_device +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a87ad2 key_link +EXPORT_SYMBOL vmlinux 0xc7dccaa2 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xc7e6ed2d jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc8025ade vmap +EXPORT_SYMBOL vmlinux 0xc81f343c mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xc823fc10 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xc831c6a6 kobject_get +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f1edf kthread_bind +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85257a6 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc86b4467 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xc86c4e58 nobh_writepage +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc88dbd66 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8949a27 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8983657 generic_fillattr +EXPORT_SYMBOL vmlinux 0xc8a21322 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xc8a844f4 inode_permission +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8e4d1f1 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xc910c2f9 serio_reconnect +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91296ee security_path_unlink +EXPORT_SYMBOL vmlinux 0xc9304a8d iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc946057a pci_iomap +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96611f7 freeze_bdev +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc9874816 bioset_free +EXPORT_SYMBOL vmlinux 0xc988522b set_user_nice +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9afbb35 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xc9c0eee6 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xc9e8753c install_exec_creds +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca39d337 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca3f8bb3 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xca497ad7 netdev_features_change +EXPORT_SYMBOL vmlinux 0xca4d896a netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xca516330 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xca52dee5 keyring_alloc +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca7020ec ether_setup +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca86ae89 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca938684 __sb_start_write +EXPORT_SYMBOL vmlinux 0xca953c0a sget +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf9bbe1 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb2b6240 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xcb2dd623 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xcb41138d uart_resume_port +EXPORT_SYMBOL vmlinux 0xcb46839c scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xcb5c2eb9 no_llseek +EXPORT_SYMBOL vmlinux 0xcb701ce0 _dev_info +EXPORT_SYMBOL vmlinux 0xcb83c793 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcba2cf13 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xcbb7e753 del_gendisk +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbf2564f dev_uc_init +EXPORT_SYMBOL vmlinux 0xcbfb8c8f netlink_broadcast +EXPORT_SYMBOL vmlinux 0xcc004d3b agp_copy_info +EXPORT_SYMBOL vmlinux 0xcc099fa9 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xcc0acdea audit_log_task_info +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc3933cc page_symlink +EXPORT_SYMBOL vmlinux 0xcc49d2a3 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xcc4fae87 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc582f9d of_root +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc8ef5c9 security_inode_permission +EXPORT_SYMBOL vmlinux 0xccb4c33b tty_port_hangup +EXPORT_SYMBOL vmlinux 0xccbbc632 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc98314 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xccd9f30c max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xccf39e61 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xccf9cbd4 param_get_long +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd06bac1 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xcd19d745 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2e6fba seq_file_path +EXPORT_SYMBOL vmlinux 0xcd36f6d9 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xcd470e8a inet_bind +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd5f4e1f __break_lease +EXPORT_SYMBOL vmlinux 0xcd738234 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xcd798193 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xcd7dde6e pipe_lock +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 0xcdb44298 mmc_get_card +EXPORT_SYMBOL vmlinux 0xcdb61550 d_tmpfile +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc75581 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xcdc97cb4 sock_i_uid +EXPORT_SYMBOL vmlinux 0xcdcc7509 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xce0cf7f1 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xce11455f xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xce263ec5 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2a180c tso_count_descs +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce4c88ad devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce62e8d7 kill_fasync +EXPORT_SYMBOL vmlinux 0xce6fb851 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xce700c4d cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xce734db1 iov_iter_advance +EXPORT_SYMBOL vmlinux 0xce74f950 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce938ae7 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xce9aad3a get_cached_acl +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xced1467d mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xced88d3b cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xcee43d30 generic_show_options +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefb8d8a dma_pool_create +EXPORT_SYMBOL vmlinux 0xcefc84d1 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1aad56 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xcf307189 do_splice_direct +EXPORT_SYMBOL vmlinux 0xcf3fa168 genphy_read_status +EXPORT_SYMBOL vmlinux 0xcf464b0b generic_make_request +EXPORT_SYMBOL vmlinux 0xcf58f12f of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xcf619ba7 generic_file_open +EXPORT_SYMBOL vmlinux 0xcf69d26f i2c_clients_command +EXPORT_SYMBOL vmlinux 0xcf8a2521 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xcfa1b688 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xcfad3a62 set_disk_ro +EXPORT_SYMBOL vmlinux 0xd006740a sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xd020ee2c single_open +EXPORT_SYMBOL vmlinux 0xd03b1f12 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xd04232ef scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xd0427612 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xd0605ca3 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd084d21a capable_wrt_inode_uidgid +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 0xd0ded24e tty_unregister_device +EXPORT_SYMBOL vmlinux 0xd0df9949 vlan_dev_vlan_id +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 0xd1114b9c mmc_add_host +EXPORT_SYMBOL vmlinux 0xd1115e62 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xd13adb6d devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xd14674f6 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xd15ebc05 dquot_acquire +EXPORT_SYMBOL vmlinux 0xd15f3d30 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xd15f787a security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xd15fcb20 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xd167595a netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xd16a079e iterate_supers_type +EXPORT_SYMBOL vmlinux 0xd16efc16 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd182a184 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd186804f generic_update_time +EXPORT_SYMBOL vmlinux 0xd186fd5a __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xd1d03cb5 load_nls_default +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1d956f0 md_check_recovery +EXPORT_SYMBOL vmlinux 0xd1ddab37 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xd1e62d2c inode_dio_wait +EXPORT_SYMBOL vmlinux 0xd1e9ba3b qdisc_list_add +EXPORT_SYMBOL vmlinux 0xd2035613 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22ccdc8 tcp_sync_mss +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 0xd26e3b69 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xd2745f21 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd29744bc blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2c503e2 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2f31f7c validate_sp +EXPORT_SYMBOL vmlinux 0xd304806a nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xd30a53e4 ps2_init +EXPORT_SYMBOL vmlinux 0xd31546d0 param_set_bool +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3269298 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xd33102a1 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xd3360292 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xd3497a29 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xd368e22d __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd38e42a6 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3c1c877 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xd3d6a773 vfs_writev +EXPORT_SYMBOL vmlinux 0xd410b19e from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xd41becbb uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xd426b89c of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xd435de40 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xd443c3f2 fb_pan_display +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd46050da of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xd4b47028 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xd4c5b88c __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xd4ce5373 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xd4d2c6ec lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd4e86bce scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xd4edbe35 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xd4fc4262 __register_nls +EXPORT_SYMBOL vmlinux 0xd52a46cd save_mount_options +EXPORT_SYMBOL vmlinux 0xd52d24c9 force_sig +EXPORT_SYMBOL vmlinux 0xd54cbeca blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd55b91f5 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xd564efd1 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xd56bf9b8 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xd57a5704 param_array_ops +EXPORT_SYMBOL vmlinux 0xd57aeea9 wake_up_process +EXPORT_SYMBOL vmlinux 0xd58aacae set_anon_super +EXPORT_SYMBOL vmlinux 0xd59ac0e4 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xd5a827ce dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xd5bf2171 sock_create +EXPORT_SYMBOL vmlinux 0xd5c6e3b3 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xd5ca9dd8 inode_init_owner +EXPORT_SYMBOL vmlinux 0xd5d0379d mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xd5d272a4 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xd5da9100 netdev_warn +EXPORT_SYMBOL vmlinux 0xd6097ada ata_print_version +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61e57a2 set_nlink +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64b578c page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xd65b758c d_obtain_root +EXPORT_SYMBOL vmlinux 0xd660f7cb dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xd673aba1 get_phy_device +EXPORT_SYMBOL vmlinux 0xd67400b4 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xd67b5dfc get_task_io_context +EXPORT_SYMBOL vmlinux 0xd67e6ae3 end_page_writeback +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68ff036 sk_alloc +EXPORT_SYMBOL vmlinux 0xd690794c invalidate_partition +EXPORT_SYMBOL vmlinux 0xd6a4ebe6 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xd6a5e9ae ip_setsockopt +EXPORT_SYMBOL vmlinux 0xd6c781fc md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6e6b0db scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd70c6c4d d_path +EXPORT_SYMBOL vmlinux 0xd72a0c5c of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xd740efae find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd766a5a4 iterate_mounts +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7a1d44d generic_ro_fops +EXPORT_SYMBOL vmlinux 0xd7aef682 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xd7b8b98a skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xd7c87f61 lookup_one_len +EXPORT_SYMBOL vmlinux 0xd7ce5862 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xd7ceaec3 dqget +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f5a6f9 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xd806e3c9 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xd817dfd9 inet_offloads +EXPORT_SYMBOL vmlinux 0xd824c6cb kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xd827e9d2 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xd8673108 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xd8865de8 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8aa83e9 mpage_writepages +EXPORT_SYMBOL vmlinux 0xd8ae78cf sg_miter_skip +EXPORT_SYMBOL vmlinux 0xd8bec922 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xd8dd9c85 __serio_register_port +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f1dc16 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xd907f0ed ppp_register_channel +EXPORT_SYMBOL vmlinux 0xd91a3a94 km_policy_notify +EXPORT_SYMBOL vmlinux 0xd9335104 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xd9418511 key_put +EXPORT_SYMBOL vmlinux 0xd94530c4 init_net +EXPORT_SYMBOL vmlinux 0xd95020fa mmc_register_driver +EXPORT_SYMBOL vmlinux 0xd95061c7 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xd974b4d9 phy_print_status +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd994cf2a in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd9b9f75f fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c8ce8b done_path_create +EXPORT_SYMBOL vmlinux 0xd9cf05a2 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xd9d0cf6a set_binfmt +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9f159fc textsearch_prepare +EXPORT_SYMBOL vmlinux 0xda084cfa skb_clone_sk +EXPORT_SYMBOL vmlinux 0xda0e272d put_io_context +EXPORT_SYMBOL vmlinux 0xda1d1fa1 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xda2bcc52 d_alloc_name +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda50d0f6 vfs_readf +EXPORT_SYMBOL vmlinux 0xda6fac1e cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xda702688 sock_from_file +EXPORT_SYMBOL vmlinux 0xda75cf7f sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda835f83 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa38129 phy_stop_interrupts +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 0xdad4741c console_stop +EXPORT_SYMBOL vmlinux 0xdad7adff dqstats +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf76bf4 bdev_read_only +EXPORT_SYMBOL vmlinux 0xdafca43d sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb175886 __devm_release_region +EXPORT_SYMBOL vmlinux 0xdb27faf0 kfree_skb +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb3cdf81 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xdb5f8f5e dev_close +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb8c8aac bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xdbb98d5f pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xdbbb7512 should_remove_suid +EXPORT_SYMBOL vmlinux 0xdbbebacc xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc19166a nf_log_packet +EXPORT_SYMBOL vmlinux 0xdc21740a tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xdc294fe2 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xdc31dc35 kill_pgrp +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4774c0 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc6a9dc9 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xdc79b719 blk_start_request +EXPORT_SYMBOL vmlinux 0xdc8a8e8d up_write +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdca05051 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xdca8a8e9 free_netdev +EXPORT_SYMBOL vmlinux 0xdcaf3058 devm_release_resource +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcdb3bed of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xdd2d55f0 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xdd54b024 param_get_uint +EXPORT_SYMBOL vmlinux 0xdd5a4996 get_fs_type +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd930a53 read_dev_sector +EXPORT_SYMBOL vmlinux 0xdd9474da pskb_expand_head +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd9f1e8a nd_btt_probe +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xdddff5fc soft_cursor +EXPORT_SYMBOL vmlinux 0xdde00098 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xddf96ba1 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xde08ca28 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xde14975a jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xde1a1054 d_make_root +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde57d528 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xde5e062f pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xde603785 __kfree_skb +EXPORT_SYMBOL vmlinux 0xde6106ac input_set_keycode +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde699af1 textsearch_register +EXPORT_SYMBOL vmlinux 0xde6aa72c nvdimm_bus_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 0xdeaa9352 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xdebd0b80 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xdede966d sock_no_mmap +EXPORT_SYMBOL vmlinux 0xdee1b66f vga_tryget +EXPORT_SYMBOL vmlinux 0xdef2821d bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xdef7443a init_buffer +EXPORT_SYMBOL vmlinux 0xdf0abf87 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xdf1f379d blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf59d920 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf789074 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xdf91e98e machine_id +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfadbe33 sock_no_accept +EXPORT_SYMBOL vmlinux 0xdfbd485c vfs_unlink +EXPORT_SYMBOL vmlinux 0xdfd1db1a tty_set_operations +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffa5243 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xe01ed833 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xe043158a tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe051c6a1 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xe05f4c5c __find_get_block +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07e7273 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b2de90 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xe0cb477a of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xe0d89e3b sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xe0f6ff33 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xe0fa59b5 of_phy_connect +EXPORT_SYMBOL vmlinux 0xe0fe1a96 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe129255d rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xe130f252 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xe15f5284 agp_free_memory +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe17edbaf blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xe18c8327 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xe1a6bc59 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xe1ae82ae nonseekable_open +EXPORT_SYMBOL vmlinux 0xe1b2b0cd new_inode +EXPORT_SYMBOL vmlinux 0xe1c1ab40 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xe1cc3216 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xe1eedbcf con_copy_unimap +EXPORT_SYMBOL vmlinux 0xe1f4743b t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe20776b5 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24ae277 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe261871f elv_add_request +EXPORT_SYMBOL vmlinux 0xe26521f9 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xe265885d set_create_files_as +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a7240d blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xe2b84227 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2cd1022 seq_escape +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2df2b64 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xe2e3cc36 proto_register +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe30e66ba pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xe3246672 genphy_config_init +EXPORT_SYMBOL vmlinux 0xe32c35ed iterate_dir +EXPORT_SYMBOL vmlinux 0xe33c8145 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xe34732a3 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xe3510216 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3a80b15 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xe3a9fa3c alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xe3c26c59 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xe3cec1ef locks_remove_posix +EXPORT_SYMBOL vmlinux 0xe3cec44e napi_gro_flush +EXPORT_SYMBOL vmlinux 0xe3d0bc4a param_get_charp +EXPORT_SYMBOL vmlinux 0xe3d3dc80 cdev_add +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3f3bfd5 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xe4010365 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xe4390df0 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xe43cf754 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xe4542c9a swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xe4683c86 mmc_free_host +EXPORT_SYMBOL vmlinux 0xe4829224 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe495d5a4 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xe49801ae blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xe4ab7feb devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xe4bcc8d0 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xe4d197dd i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xe4d6fe9b blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xe4dbac8d consume_skb +EXPORT_SYMBOL vmlinux 0xe4fc8c71 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe50dc341 udp_set_csum +EXPORT_SYMBOL vmlinux 0xe515d343 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52f94f1 nf_afinfo +EXPORT_SYMBOL vmlinux 0xe55c83a5 cdev_alloc +EXPORT_SYMBOL vmlinux 0xe577b6d1 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5835a22 irq_to_desc +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d68aee ip6_frag_match +EXPORT_SYMBOL vmlinux 0xe5e0e006 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xe5e68d39 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe620f215 mutex_unlock +EXPORT_SYMBOL vmlinux 0xe64acdc8 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe674babd pci_match_id +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a24afe __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xe6bd46cd dput +EXPORT_SYMBOL vmlinux 0xe6c703a7 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xe6f0207f udp_disconnect +EXPORT_SYMBOL vmlinux 0xe6fa4816 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe707eea1 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xe7093e36 make_kprojid +EXPORT_SYMBOL vmlinux 0xe70aa341 param_set_charp +EXPORT_SYMBOL vmlinux 0xe732adee gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xe7338eab page_put_link +EXPORT_SYMBOL vmlinux 0xe73a6f44 mem_map +EXPORT_SYMBOL vmlinux 0xe75e5cc9 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe781b43b sock_create_kern +EXPORT_SYMBOL vmlinux 0xe7a47d2a wireless_send_event +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7c6574a pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d0fcd5 scsi_execute +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7ef9d76 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xe7f5b946 touch_buffer +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8235b36 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe845c5a0 mmc_release_host +EXPORT_SYMBOL vmlinux 0xe8520ab2 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xe86644ac agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c11198 vme_slave_request +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8d7d740 param_ops_string +EXPORT_SYMBOL vmlinux 0xe8dfde52 input_release_device +EXPORT_SYMBOL vmlinux 0xe9043be1 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91f1521 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xe928b37e of_get_mac_address +EXPORT_SYMBOL vmlinux 0xe9299484 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe943aba1 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xe9452bf4 locks_free_lock +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9618b57 mmc_erase +EXPORT_SYMBOL vmlinux 0xe976f5b7 proc_create_data +EXPORT_SYMBOL vmlinux 0xe9b28e73 follow_down_one +EXPORT_SYMBOL vmlinux 0xe9c97d9f tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xe9e472f5 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xe9edf864 dev_uc_add +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea0f1b61 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea2f04fa bio_init +EXPORT_SYMBOL vmlinux 0xea3bdf06 __getblk_slow +EXPORT_SYMBOL vmlinux 0xea4610ed vfs_llseek +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b53d4 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xea7ee5cd unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xea8ef944 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9c0914 tcp_child_process +EXPORT_SYMBOL vmlinux 0xeac40667 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xead650f1 sk_wait_data +EXPORT_SYMBOL vmlinux 0xeae3a2ba skb_pad +EXPORT_SYMBOL vmlinux 0xeb1af224 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xeb292231 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xeb2a3ae4 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xeb2be24e kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3b5420 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb5d692c page_follow_link_light +EXPORT_SYMBOL vmlinux 0xebc71f05 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xebc758c1 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xebcddf97 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xebd777d2 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xebdc4428 alloc_disk +EXPORT_SYMBOL vmlinux 0xec21d0e4 blk_register_region +EXPORT_SYMBOL vmlinux 0xec254c32 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xec2cde70 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec537f57 flow_cache_init +EXPORT_SYMBOL vmlinux 0xec58e90e agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xec6bd19d sock_update_memcg +EXPORT_SYMBOL vmlinux 0xec7ca0cf scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xec8b0351 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xeca03497 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xeca29b82 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xeca6fa01 phy_start +EXPORT_SYMBOL vmlinux 0xeca9c7fd netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecc1b187 inet_add_offload +EXPORT_SYMBOL vmlinux 0xecce007d pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xecd2ec44 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfb9491 inet_addr_type +EXPORT_SYMBOL vmlinux 0xed0949f9 dst_discard_sk +EXPORT_SYMBOL vmlinux 0xed0f83df swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xed14083b register_cdrom +EXPORT_SYMBOL vmlinux 0xed14a99b pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xed27a060 __f_setown +EXPORT_SYMBOL vmlinux 0xed57f18f vfs_rename +EXPORT_SYMBOL vmlinux 0xed594283 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6bac26 agp_create_memory +EXPORT_SYMBOL vmlinux 0xed6db593 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xed928545 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xed959c9d simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda5194b agp_backend_release +EXPORT_SYMBOL vmlinux 0xeda568dd rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xedba9d05 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd316a d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc47bcb tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xedd05fa6 send_sig +EXPORT_SYMBOL vmlinux 0xedd3243e simple_write_end +EXPORT_SYMBOL vmlinux 0xedd3deb3 pci_select_bars +EXPORT_SYMBOL vmlinux 0xedea19bb param_ops_ushort +EXPORT_SYMBOL vmlinux 0xedec26fb kmem_cache_create +EXPORT_SYMBOL vmlinux 0xee193202 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee4b61ec dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xee5028d1 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xee631b68 mount_single +EXPORT_SYMBOL vmlinux 0xee7d09d8 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xee916fa6 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9f2c6d vm_insert_page +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeecc940b ppp_channel_index +EXPORT_SYMBOL vmlinux 0xeee2a068 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xeeeeb8a7 dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef5ae53 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xef3bb4a7 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xef5078d6 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xef903609 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xefaf8b5f sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xefb3fe7d dev_warn +EXPORT_SYMBOL vmlinux 0xefc7d813 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xefca44c6 tty_unthrottle +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 0xefebfad9 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xeff961cf __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00fc73e pci_scan_slot +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf05df243 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf072714b mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf08a691d dump_skip +EXPORT_SYMBOL vmlinux 0xf08b9ab5 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0ae7a5a tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xf0b8d94a get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xf0d350c8 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xf0d75bf9 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xf0dad534 led_blink_set +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0fe8143 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xf0fed591 ns_capable +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf1154bd6 finish_open +EXPORT_SYMBOL vmlinux 0xf1190c42 ata_port_printk +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1211a06 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf13682bf mmc_can_reset +EXPORT_SYMBOL vmlinux 0xf141ab76 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf165836d pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xf169f7b2 cont_write_begin +EXPORT_SYMBOL vmlinux 0xf16bfdc1 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf194a42a devm_free_irq +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1a3cfa2 unregister_netdev +EXPORT_SYMBOL vmlinux 0xf1b57362 get_super +EXPORT_SYMBOL vmlinux 0xf1bfb000 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e5496b nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f00fcc qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xf1f0d886 dst_alloc +EXPORT_SYMBOL vmlinux 0xf20ae7fc posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xf20be73e param_set_bint +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf251d1c0 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xf254d5d2 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xf26b14b3 block_commit_write +EXPORT_SYMBOL vmlinux 0xf26b83f4 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xf26ecbc7 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c1d85d skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2d7e41c dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xf2e97dd5 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xf2eb5cf8 kernel_accept +EXPORT_SYMBOL vmlinux 0xf2f535ea devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xf2f968ea xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xf2fd9e51 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xf3022030 set_wb_congested +EXPORT_SYMBOL vmlinux 0xf30ecda3 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31e00da of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3324c7a mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3616fc2 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xf386040e skb_copy_bits +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38d21bc xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3a25864 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xf3ac34ce twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xf3d0aff8 igrab +EXPORT_SYMBOL vmlinux 0xf3e5151d bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4703c11 inet6_bind +EXPORT_SYMBOL vmlinux 0xf472884a write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4922283 param_ops_bool +EXPORT_SYMBOL vmlinux 0xf4b59e01 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f375a9 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xf4fb5fc9 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xf4fe9bea seq_write +EXPORT_SYMBOL vmlinux 0xf506704d __sock_create +EXPORT_SYMBOL vmlinux 0xf516e856 scsi_eh_prep_cmnd +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 0xf534f4f3 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53df0a5 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf5423fbf __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xf5448630 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xf559f68c tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf5712f92 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xf5887493 bioset_create +EXPORT_SYMBOL vmlinux 0xf5914e01 inet_sendpage +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5bc4781 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf615aa69 nf_log_unset +EXPORT_SYMBOL vmlinux 0xf63253cc dev_open +EXPORT_SYMBOL vmlinux 0xf638534f nf_reinject +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6399efc blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xf65cb9c0 tso_build_data +EXPORT_SYMBOL vmlinux 0xf65d5979 tty_unlock +EXPORT_SYMBOL vmlinux 0xf65f3c9e adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xf6735249 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6ba0799 generic_setlease +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6cd31b9 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xf6cdbcbd dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xf6e1fd15 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ed220d mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xf6f4577a tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf7323ac7 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xf74b2122 release_pages +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf766cc53 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xf77f47cf inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xf7853925 __get_user_pages +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7b26d9c input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xf7cd9bbd blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xf7ed5da8 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xf7f0f10b reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xf7fec8a3 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xf80e2472 vfs_read +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812102f skb_vlan_push +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf815a767 softnet_data +EXPORT_SYMBOL vmlinux 0xf827aaa1 sock_edemux +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82abf64 downgrade_write +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf840d345 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xf8467c5d __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xf88c340a iov_iter_init +EXPORT_SYMBOL vmlinux 0xf88e6c7b dcache_dir_open +EXPORT_SYMBOL vmlinux 0xf8903da6 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xf895dc4b flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xf8ac8d4d vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xf8b56a45 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xf8ca740b path_put +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d7f123 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xf8d83f34 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xf8eafe9f of_get_min_tck +EXPORT_SYMBOL vmlinux 0xf90e2975 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xf9138230 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf93601b1 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xf96c3dd1 of_translate_address +EXPORT_SYMBOL vmlinux 0xf9825225 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xf9882387 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xf99c4f0d xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c58213 kill_anon_super +EXPORT_SYMBOL vmlinux 0xf9cf8b29 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xf9e5f50b pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xf9e66159 sock_register +EXPORT_SYMBOL vmlinux 0xf9e87b07 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xfa03d46d padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xfa0e4477 bdget_disk +EXPORT_SYMBOL vmlinux 0xfa46520f dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xfa4f892b iget5_locked +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfab34240 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xfab581e1 md_register_thread +EXPORT_SYMBOL vmlinux 0xfac01fb9 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad0205b nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaee2d56 inet_frags_init +EXPORT_SYMBOL vmlinux 0xfaff217b devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xfb37637d dm_get_device +EXPORT_SYMBOL vmlinux 0xfb3ab918 seq_release +EXPORT_SYMBOL vmlinux 0xfb3fb4bd md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xfb567e13 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xfb5736e3 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb8399c5 dump_page +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb95165f create_empty_buffers +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc66723 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xfbc6ed1c simple_rmdir +EXPORT_SYMBOL vmlinux 0xfbd31f9e ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xfbea40d1 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc139c6c qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xfc1847f6 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xfc26bdf1 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc3e911a touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0xfc752c07 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xfc8ba397 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xfcafe696 __dax_fault +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfccdd4a7 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xfcd83302 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfb61d0 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xfd261e1b generic_getxattr +EXPORT_SYMBOL vmlinux 0xfd44a2cf __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xfd467707 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xfd4d5dc5 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xfd57ad83 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xfd5f199a bio_integrity_free +EXPORT_SYMBOL vmlinux 0xfd952ac0 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdacddaf vfs_setpos +EXPORT_SYMBOL vmlinux 0xfdb39929 __inet_hash +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdbe5361 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdeedc5a tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfe0e3b thaw_bdev +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe06e443 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xfe09736e bdi_init +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe35aa4a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6a63d1 user_path_create +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfea16567 skb_seq_read +EXPORT_SYMBOL vmlinux 0xfea3d812 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee7c585 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfefd9930 phy_disconnect +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff3b70c9 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xff436661 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xff50da60 vfs_symlink +EXPORT_SYMBOL vmlinux 0xff5aeb79 km_state_expired +EXPORT_SYMBOL vmlinux 0xff5dec2c truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff72febd param_get_byte +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff7b4012 bio_copy_data +EXPORT_SYMBOL vmlinux 0xff840635 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xff880ad8 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xff90da4c skb_dequeue +EXPORT_SYMBOL vmlinux 0xff999bd0 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa7286a sk_ns_capable +EXPORT_SYMBOL vmlinux 0xffaf34e7 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffea3cb1 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xffef5a5c serio_open +EXPORT_SYMBOL_GPL crypto/af_alg 0x1f5f48d0 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x4d4d5117 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x52d8acce af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x747cb752 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x7ff91b66 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x8e629fad af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x8f034d9a af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xaddbd2e9 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xbcbd089b af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xdcb488fa af_alg_free_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 0xeeba3959 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8af77035 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xa2848d2a async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xee71210d async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xfa0209e9 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x01506304 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x24185013 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6db557b2 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe0cb0678 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x56422f23 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x77eaf658 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x6433a10d blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x23920bad 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 0x60497e56 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 0x100fa6ef cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x11a3abc1 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x1385a84b cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x4b642c3d cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x680b57d6 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x8e8abf6d cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x90a9d8e2 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa4581c84 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc839da90 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xf1b19da4 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x2ecc6848 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 0xde6b3f69 lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x067fa75d shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x1f164766 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3e3c4fc4 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x84b3aedf shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x963cd4ab shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb67d3484 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbf2201fa mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf13241c7 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 0x283e7ec1 serpent_setkey +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/twofish_common 0x25f45ca5 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x1a8c18fc xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x080eafca ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0e42b71d ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x17eebd13 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x18b6c003 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3701ecca ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x42cc8948 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5d1c7251 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5d1fefa0 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6e708cee ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6fda3ff3 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x76638b00 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x865babe4 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8af924e9 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa288d140 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc1c8cd53 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc433d333 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd1b8853a ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdff6265d ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe1dfbb72 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe4131eb5 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe8fa91cf ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfaa088a2 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x08f51c88 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0c3bdf4c ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x25b4ce96 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x288d70ae ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x431b8b9d ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4472e7ae ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9dda8fee ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb671a2e0 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xc3429613 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x440d2b97 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xa257b7b5 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 0x039db9fe regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x0dc47046 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xb48a64b7 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xc99e3560 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x02e0b7e7 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1bdffed0 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1ce4d0c7 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2686f0ae bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x27f987e7 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4339b14c bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x439005ce bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x45254d80 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x574d81d9 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5d397c79 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5d9ea8cf bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x637e2b8b bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x666af0b1 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6c534ffc bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x83207d43 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x833fe0dc bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8df4316e bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9a1a40ae bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdce409bc bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe289ce3d bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe4b87de5 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xee6c94f9 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf301cf9a bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfd1f9fc7 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x1ceda327 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x1f7ee8c9 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x294a41a5 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x3087037f btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8ee70f36 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xdaa41095 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x8fc7863a btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x8fdfe788 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x024fd68d btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x26cf72e3 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4bdc5bef btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4d70618e btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x683c3792 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9931a8f8 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb1da6230 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc6cce736 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe70c6804 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf04620d7 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfcf8c891 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x33ee0769 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x0decff8a dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x73dee72d dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x9dd63b10 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xb15c3b58 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe5cef7fe dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/fsldma 0x7fe97c3d fsl_dma_external_start +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x0745aaeb hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xa811a22b hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xcc64b0e1 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x504d1ed1 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x70aada86 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xa5d18fce vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xcb697aee vchan_init +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x058921a0 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0df7fc68 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x112c973c edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1d648ae0 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4446de67 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4fa7ca07 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x57338580 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5c2e1102 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6ff532eb edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7fcaecb7 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x84c69aae edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x879c9c0e edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa262a3fa edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaf559df5 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb8b13c88 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc1948034 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcd4aaa6d edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdccca153 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdcf7e780 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xddfda76b find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdfcd505a edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe6063b58 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfb65f8a2 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x21a0f39b bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xbd328894 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x4311725a __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xe992a001 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1bb56096 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2e29dfc8 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9fb3355e of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa15446ee drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb838d509 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xffdcab03 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x11095ee4 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 0x8839aa2b ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xc6203589 ttm_dma_unpopulate +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 0x1141d3c1 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x14e69321 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x189e236f hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1f665c92 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x29e9f739 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2d407056 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e02b71b hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31fa0287 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3727a49b hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x535bb803 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x622a5f1d hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x656eb275 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x790b69fd hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x798ed8dd hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7b29f17b __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x85e2602c hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b745f52 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8f1d2bff hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x91921965 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9fc03273 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb44890e8 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb7782960 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc13993c2 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5b2adf0 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc6002169 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd550391c hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd85dc0af hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde586f72 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe3f98d56 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe6809054 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xedd59222 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xefd706bb hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf072bdc5 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf5e9a0a3 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf6e9fcc8 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa57ff26 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x259caf37 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 0x136948f9 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x3e978670 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7dfd8945 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8c6c3b95 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9a05b50a roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb5fc8a81 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x01c1a1dc sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0964532e sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x19c06b35 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1c4d2251 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x71500102 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8732d637 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x98be647d sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa13caa76 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xebca1a27 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x2f3da3a0 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x08f932cf hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x12733359 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x181438da hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1f77d858 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x23c55a36 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x26299cef hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7053da88 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9fee01b8 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xaabdbafc hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae9c5375 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc3c6dbb7 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc6af0b5f hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc6c24abc hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcbd89559 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd0f2382d hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd484919f hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf1213625 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfc4a2eb1 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xd5183918 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xefa74f07 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0fc618ff pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2e944592 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3839a1e9 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x63f901f3 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x65a70489 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x839319ea pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x97d9007f pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9a96cf3d pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa1ad62d1 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xad0a2058 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdb23b2b4 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xeb6bc376 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf0b027d2 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf93924ca pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfe2cfc02 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x26ead0de i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2dd4eadb 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 0x5f8e65dc i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x72f90ba0 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x82fc129b i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x852507a0 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa6371ebb i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa6efb840 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc609cae7 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xd9f126b2 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xeb8e6c22 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xbc396ca8 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xef756803 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x47d51c79 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x592ad27f ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x808fa3e3 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x830252c5 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8ac78236 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa570fc10 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb54d3f5f ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdcd044f7 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe11efc41 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 0x086d6f37 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0fec5233 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1d8de773 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2911e5a8 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4377c2b5 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x572ee5ea adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x742c35d1 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc97a3b5e adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcc9fcfcf adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe26f6990 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe3bc18c2 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xedc1bd4d adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0144d949 devm_iio_device_unregister +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 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 0x2a5d77a9 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x301f18a4 iio_alloc_pollfunc +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 0x4c2acf20 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x529164b8 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5a9e85fd iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5b93304b iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x71b4e8ac iio_scan_mask_query +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 0x878ddc42 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88fb4acc iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8bce96d2 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8fe1c86a iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x95b8bddb iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9c0c9e18 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9e2c09a2 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa11781d2 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa97fb294 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xac79eaef iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbc2c4135 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc947d287 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd4ef4e7 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd88816b4 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdb7bbaad iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xebc9858d devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeee397e7 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf2070e65 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfaaefd8d iio_update_demux +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x55b0f9a0 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xf1f70d2a matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x21b7a6dc 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 0x16d6325c cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7e966a9d cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7f266b97 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4cf2604b cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc6bf1051 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xff3d4ef1 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x2621b567 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xb236db83 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0e7c96e2 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x11f50488 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x13c28bb8 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x56fa867f wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8605e7ae wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8f0a2cb4 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9cb89572 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa1bf0a19 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc2d6967c wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd3808e55 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe3a71909 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xeda99685 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x03082761 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1a8d846a ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x42a0f7ff ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x430fde19 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6a0bfec2 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6e653a71 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x70b7de42 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb7c79fcd ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdf28b2fb ipack_put_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 0x13126e0a gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x467a3105 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5f9a7d6f gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6b59a59d gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6ec43377 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7d073cb9 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x99a472f4 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9ce66a51 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9cfa24c4 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb7b6fe0b gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc7f3c5f7 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc87960cb gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcb6c095a gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdc9530ed gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf134e824 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf6f124eb gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfe5712bc gigaset_add_event +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0ba73ef8 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1c1f3b75 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa070cf8b led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xad89fa6f led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd4f3dc33 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe1e95925 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 0x0b64876b wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x1751f09f wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x25a839ed wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x28be4de7 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x3d0f1f25 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x52c79e61 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7206aae2 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 0xb53e7062 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbb9090da wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xc8cef8d7 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x03b3b448 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x072827aa mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x0cd63604 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x12349162 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1e9d6479 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x1fe5075b mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2dce6105 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5788efed __mcb_register_driver +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 0xa4619f5c mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa9b9ebe9 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb3928a74 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcf6b612c 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 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 0x4d3e81b7 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4db2c73e dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x733db751 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7e8c0627 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9c735d1f dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb43c323c dm_cell_promote_or_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 0xc3d15993 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe6b04eb4 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf2f986cb 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 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 0xd7c7baa5 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2a27f676 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x53ab79b2 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5fda3194 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9148ddc6 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb97ef42e dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd998051c dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xdb073339 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x615c5709 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xa9da2b33 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01c9f2c7 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0ded2da0 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 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 0x88938aa3 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa26ebf1e 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 0xd4f9650c dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf1f68f6b dm_rh_bio_to_region +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 0x3374932b dm_block_manager_create +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 0x42d1207a dm_btree_lookup_next +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 0x0231d8ca saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3b75533d saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x65befe37 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6c47e70b saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x75d2e413 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9f6293f4 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xbdce08db saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc8729990 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe2bc702a saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xec5cc027 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x00af04df saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x03115b73 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1b9d71dc saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x362a3ba7 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe206280e saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe82e0b25 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xeccb3a68 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x08204718 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1c8ccbf8 smscore_getbuffer +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 0x4e631b68 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4e942661 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 0x95822e65 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x964897ee smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x97fc73c0 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9ac75864 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9d2bf340 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xabf06354 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc9140314 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcd8b50f1 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdff499ce smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe1509cec sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe3508e67 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf1a2315e smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xffe18b8b smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x4972dce0 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x165fa15b cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xc22e2f60 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0ee0aa81 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x31cfff0d media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x358bb79d media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x400fde4c media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x45a5e3e5 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x546dd9b9 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x58c98305 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x62082f17 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x65753730 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x79d3a432 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x7c747ea6 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x8f0df7d5 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xad17138f media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xbe0e9a23 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xde24d2f1 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xedea9057 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xf5de7c65 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xf8e15744 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x3f4ee411 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x03074373 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0e27b788 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x27818566 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2989e5b8 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4042ce91 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4504d8ef mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x55f93eb3 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5ccf6447 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x67ec9ca1 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6c5b13e3 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7b613677 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x93982d52 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa2c3ca57 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa9a24e01 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xba90250c mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc572099f mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe9d2e659 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf2c4549d mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfe305429 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x259b1418 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x358f1ba3 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4161df7d saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4878f316 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x50d6b7c2 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6b172188 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x751629ec saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x793cae64 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7b57ae4c saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7cd10274 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8962e3ad saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8ba59d55 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8fae1f8a saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc558d0d0 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd34fcfcf saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd878636c saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xda2616e6 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf65ca964 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfb3250de saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x01be37d2 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1cc194aa ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x24fe5fd0 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 0x849dfd7b ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9b290556 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb25c32ec ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf3f4cfee ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x092074d7 xvip_clr_or_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 0x320acbb8 xvip_cleanup_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 0xbbd9c5a7 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xcad63dcd xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd01ae158 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd4a8e586 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf859cfcc 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 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xe100ccfd xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x14aba642 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xa4abfe02 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x14ef9f85 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x227302ea rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x24150c17 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x28fa9064 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x737e1fa9 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x868bb555 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x89722c08 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8de751ea rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8eb0bd45 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 0xa7837b95 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb467e1eb rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc0f441f0 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc469d61f ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd1e214a2 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd973e9c5 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfe2c0194 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xd1d1c1e1 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xeea0d500 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x7fd37a83 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x6f60f99d r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x1a24be79 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x54a8795c tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x2f40b3d6 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x73beb7b8 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x6931f63d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x5fba5c39 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc839150f tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x6faa2051 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xb634f667 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x30fbc193 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2da21025 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3b78981b is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x40f26882 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x48b8f1a9 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4ba737c4 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4cba7806 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x57196afa cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6aeeaca6 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x77d8ba49 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x85007f62 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9872d265 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa4738b5f cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa48a6af0 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaf651452 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd5ceaf00 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd92e5f65 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdc5306aa cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xde7c635d cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xec8f5e58 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xed613e44 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xbbce72f0 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xa516ca6a mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x13cc6558 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1e6e5869 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2b92ba15 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x31f575ca em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x45651699 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x550edf66 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x577fa1dd em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5da5b945 em28xx_gpio_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 0x87584454 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x889da696 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8a084af6 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8e013b24 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x95f9012a em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xac16496c em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbc37aae6 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd6a78438 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe15c1074 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe8d5c131 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x157b3e7b tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2319d2ec tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd3480bac tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xfcdd7db2 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 0x2fc6dca7 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x3742ef47 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x39f349b2 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6c5fb296 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7e2aae2b 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 0xd89cc8d3 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 0x89857194 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xf0f5bc75 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x06b4d46c v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0fa7e8cc v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x125f3baa v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x14441ba5 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2a38dd79 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2acb2ab1 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2cbc697e v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3a128429 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3db7a21a v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x40138155 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x55d6fa2a v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x590c52cb v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61254835 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x69a919a0 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x79392a9b v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x92a28fc5 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x99d60ff1 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa1a8bc7b v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa57a1bb2 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa6d15e6e v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb1a66ab0 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb2ad5ba0 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd8258b52 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdb245396 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdc3ca675 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3a056f4 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfa2653aa v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x05bff3ab videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0799da0e videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0f3dadef videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1f06bba8 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x27780c8b videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x28bee160 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x49690e1b videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5263866e videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x55a9d2cf videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x56999cc4 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x59a0fbf2 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6d46ca42 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6e55b72e __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x98b5de7f videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9efafdd4 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9f612be1 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa57a71f8 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb23cef85 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb8e842be videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc1280100 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc27073ed videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdc09c2db videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe3d8f960 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xea7e88dd videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x17c694d3 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x22cb234e videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x5dd0ca44 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8d0c7cc9 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x65bfd3d2 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x77079ebc videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xeeb6b278 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0144643e vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0b6798d0 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x17f7c97b vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x33b24e98 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x343e6d8c vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x34eca484 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x360f4824 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3a7bfb36 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4066bacd vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x41e80242 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4297666b vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52958fa7 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x53192d41 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5a44874c vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5da983a1 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5dd10237 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x61386854 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x690ec03c vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x78ffb122 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x89881b95 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9621be0b vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x96bdcfff vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb635c97f vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb8282eb2 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbc5b35bb vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbf3e215d vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc42e43b6 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd3933d61 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd4822c3f vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd76a50b4 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdac37fcf vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdbe4ed4a vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe5bb0585 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe6b7b440 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xed4f96ea vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1a2ba1a vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfbee4276 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfcb742ed vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfd00e0dd vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xb22b2877 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xdfb09b3d 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 0x1f44b600 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x69510c1c 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 0x13c87f59 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x6121661f vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xda3b0d43 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xe5f0cf03 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x6db5777e vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x108eacb4 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1f32c7b8 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1fb9defd v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ddf7abf v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2f5f7c00 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d8a5f87 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e3660e2 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5e535301 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6afb5e14 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x78faf9f9 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x91482e6e v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x931d2c03 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x97db5110 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9d5287e3 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9f1f87fa v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa88abb18 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xae17b3c8 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaefe12f8 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb03f9e09 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc46271cf v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc9bd4b48 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xca241cfa v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd11e88e2 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd414097f v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdc4acd5c v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe392ffe5 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7d3e78a v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xec2ff19d v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xa630c835 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xbbf2b3d3 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xf8c2a7c5 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x16ae70a4 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1905dac6 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x679e7ff6 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x93d645f0 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xdfc49fa5 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x49d624eb kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x77e84747 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x918f2421 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xabb0728b kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xae0a1cfe kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbc0f407a kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd532582b kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xebcf6eac kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb3116f05 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xce9a2757 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xe0a1b592 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x16f2b5a8 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x17b64ccf lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x1d4e5d18 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x55a8b982 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x705da445 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8a429c37 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf1dbdfdb lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x2233311e lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x42476463 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xa9277962 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1b0770e0 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x22280e56 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x301ed03b mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3027fb3e mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x62924576 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xfb5b3c66 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x18745521 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3d4f55d1 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x73dbb861 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x86fbc322 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa48afd25 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc10ebc69 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe51b493d pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe9aa78d8 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xee80aee8 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfa3c090b pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfb155fd2 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x7b544d5f pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xe60e8044 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x473102d6 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5ce66826 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9a6f1113 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc7ece287 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe1ddfa50 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 0x21fc3590 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x310fbf57 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3b9a8d1f rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x48cc31b7 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4d454a9b rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x51b2a0a3 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5223f041 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5cb132fd rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x67313c01 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d41c869 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6e9400e4 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x706fa4ad rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x73704333 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x784ce099 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7abce0b2 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x81b7725d rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x84af2ad2 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x84bc0964 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x904c5bb7 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa3f91061 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbd2455f2 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbea7bf96 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xccbc43f4 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeb0b28f0 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0e0b62db rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x23905eef rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2854d21c rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2f01e7d2 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x38d1c400 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x534fdd00 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7d3c330c rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x820a2ffa rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9b2700f1 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb490bf96 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd535960c rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdff2ee57 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe0986a42 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x044a8447 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0467c199 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x05a4d539 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0e8e5976 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x17eeb369 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x17fd3710 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1a0ac2c8 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1e16e05b si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2368df8c si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x243d5a24 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3eb07227 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x42ba14c9 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x442daa3e si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x47dc8567 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x490b5d69 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x59714d54 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x628b8108 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x63f4c83d si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7216dfdd si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x74b6f82b si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x806debf8 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x82f4734f si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84e4d6de si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x90f8520c si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9d2d5322 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb6406300 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb772b69d si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb7866c1c si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc18f0dc7 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4623e6f si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcd5a6ecf si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd2de3ad8 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdede7b16 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xec00f4a0 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00252f73 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x83c439b8 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9957f9cd sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa038581b sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd9750a06 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x338a8537 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x378d26d1 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x9426716b am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xf77a02c3 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x365f1df5 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa3ef6c09 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfbd29923 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xffd1eb00 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x26111814 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x820d0713 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xb9e17de7 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xf479e9b6 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x5bff6590 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x17eb9f43 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x1cc9bc7a cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x71d7f7f1 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x8606d237 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 0x0366e335 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0c156a13 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0c200792 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3407c0d5 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5fecf73e enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb2bc129c enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb9eb3468 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xeac48f87 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x08349f33 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2e21206c lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x436076ec lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x49f47bb6 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x72099a8f lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xacc17b38 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xae3df54f lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbf1d3d60 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 0x04b662b1 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x22645b6c sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x27a65025 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2a0b872d sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x590570ac sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x615f8824 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x645ce5ea sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x681b6c8b sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x99db94b2 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb6618098 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbb26c638 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc071e1f2 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc7e0cfa4 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcf79ff74 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0557cc10 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0b0920b1 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1606e4ac sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2dce1720 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4b7e5eb0 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x646a1963 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x721e9b28 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8288b350 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbe2fc738 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x532fdfdf cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x6c06fa37 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x9118dfa1 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x259e9577 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa8351121 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd6675af1 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xe2550e44 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0557fe75 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x06986f44 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xbf3d5d9f cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x05a2bbd7 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0d8be381 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x12e17136 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1496c401 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2a18a431 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3f863a60 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x45ea2447 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a633ab2 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4d6cab53 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e169816 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f5c8895 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x59d8c514 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5c386da8 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x65217c9c mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x65698fc0 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x65d2789f mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6cc4893c register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x76683015 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7daaa14a mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83a35ce9 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d07f316 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9a7725c3 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa2d8e7db get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xafa0dc10 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb28b283a mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb4479f66 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbb7bbad3 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbc0e64b7 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc5a01a3a mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc86839d9 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcfd0bee0 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd1192165 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0ceea8c register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4051553 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7b14f6b mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7f8395e __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf985747f mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfa923984 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfb25b50c mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfb69a458 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc241898 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfdc66372 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0b002429 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x74fd3729 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8c4212bf deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa0bd1c27 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xff42e59b add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xafec5f03 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xcc05f101 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x0c2b7d30 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x03bd1e22 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x403ab140 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x8abc044c spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1169df3a ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x17339308 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x21024328 ubi_leb_erase +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 0x6d7565b9 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x74f257a6 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7cd3016c ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x81b38672 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb70ff391 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbdcdb28c ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc506151a ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd1b96ee3 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xeda7c749 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xef3c5bbf ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xff8cfeca ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x06ad3f0a register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0906ac09 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x25efd7d9 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x45c95eb5 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x47ebe14c c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd391f14d alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0e76e6d8 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2335bb96 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2806a16f close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3af0042b devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3e734149 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x438b4e77 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x524d3e08 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5aba59c2 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5e3d218f alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6e5cedd2 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6f5c4f9f alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x80d0df21 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x83e35ab7 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9b49889a unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaa0b93a2 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdccf1609 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xde86b700 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf75b3157 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5d3fb47e free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x721d46c9 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xbb5628f4 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc75ea7f9 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x1519f104 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x2dccb8c3 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb4890a75 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xddb06df0 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x1240b93c arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x9335751b arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0092264b mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00c15bd1 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0521d34b mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05c4357e mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0889113e mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09bc86f1 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cca215f mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x105a3bf0 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12e8b79c mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1426d0db mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14984992 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16b1543a mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b20eb61 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d97492e mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x207f7eee mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x212b1870 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21ccdee9 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23df812e mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2547a21e mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x255300e1 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26242a9e mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2627c11e mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27684d53 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27a7e229 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28ef5e13 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29b406ce mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b329ae3 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31ae893f mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32648ae1 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33386f1f mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33befadf mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34949bb7 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b318642 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41194876 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41e67794 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42089fb2 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x440c5348 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46292e12 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47373cf3 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b8f8584 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b995781 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d2db7b6 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5389eac2 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54ab7c35 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54fba28e mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5699bce4 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58692018 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ad950d0 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b43453e mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b70f11c mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b99d848 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64666da8 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69325611 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6eb65848 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f5ef49f mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x702f0760 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7042eba1 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7077ac0e mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71b87bbf mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71df154a mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x731379d6 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x756f96b0 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78437e61 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7905b51d mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d440186 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x807f5e8e mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8221b1c2 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82c0682b mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88b83902 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89b7b189 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c952682 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8df049d7 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fe28d1a mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x910ec0af mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92306dd2 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9475dc7c mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x967bba2b mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x976e159e mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98530b65 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99385b52 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ad367e3 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ce943cb mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3386687 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa561954f mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6a28a03 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab103a29 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacc3266b mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad8a620d mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaff36fa7 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0294545 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb07ead21 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4d7b0b7 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf59a067 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1d04a34 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7530578 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8651299 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9e5c4eb mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcad43e7e mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcca0a066 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcca21e21 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd871c70 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4a59ae0 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4e014d0 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4e68f77 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5afd45f mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6b6c86a mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd875fae9 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8b4041e mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9c9b0ea __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb0b4fb4 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd69902b mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeaebad6f mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef8c65fe mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0c45cd0 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3472367 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf34ce286 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3676d8c mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf43c77d9 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5d3866d mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6b63a66 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6cdbba0 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf87e23d8 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbc8e372 mlx4_phys_to_slaves_pport_actv +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 0x13249672 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x15fc8c22 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x162e06b1 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1936f6e2 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cc02008 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f7e54ac mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35b8234f mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3894f909 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3d1906ad mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x44a1f67d mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x460c1fdd mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x522cd4af mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a470248 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dc02f7c mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x83dc088b mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x894ab8bc mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a86a16b mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c3a0d6e mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e664a5f mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9816196c mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9fd40ec4 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5c0cfbe mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa728fc1a mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafb3143e mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb4ec5e77 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7d89316 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc79de17c mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcdf3d892 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3076930 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdc17c951 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdcd60742 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe3fedbd5 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe46dae73 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee04e202 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6758a27 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x17256d37 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x292784ec stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x320be4c1 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x806e7fba stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x794dc218 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x79af9027 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x8f0edd23 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x032a14d8 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3297462a cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4f8fe768 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x78a0ad7b cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x79977d57 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7d6159df cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa5790480 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xad118a0f cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc028c640 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc744498f cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd21c7bc6 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd89f82fa cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe008f49f cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe69ce211 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfae50aab cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x23b6536a macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x98725d4c macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xf5a5822e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xff550abf macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xde9950e1 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x9efc7462 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4d71b910 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x7fbad4e0 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x9438ffae usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xdc16180e usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x20c5d0aa cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x32653336 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x404db516 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4a83785a cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8e124e51 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc5ea7d4d cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd7da933b cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xeecac2e3 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfdbe5308 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x022c5dd6 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1654aac1 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x33e2c910 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8384346f rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x89182757 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa4283a13 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x01b28597 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03aef587 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x05e988fb usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x06456031 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x07b44d0c usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x084e58f5 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c0c0fbb usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d2e3618 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0f14d187 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x128af9fe usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2221e6d5 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x22511af1 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x239239b7 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2eea164e usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3ae6ec46 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x520e84e6 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5548aa03 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5ae5a02d usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6338b01a usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x674e4a9d usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x740bf845 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x770c961e usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c0b2778 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x83b55c22 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8bf6077d usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x973525d2 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x99778071 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9c3fa610 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc35ca33c usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd4241957 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3e59aee usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfc25465b usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x32296169 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x48116481 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x4ad16972 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd89d2dc9 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x180b80f0 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1fed8e7d i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2a002e48 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2cb1a1d7 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4d101e35 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4f0e09c8 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x66ed34f4 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7252cd1f i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8c1c8b76 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9473f4dc i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x97d60bf1 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb7074b08 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb7475473 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcbdd853b i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcc04773f i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe71f2802 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7b09622c cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x9b9d82dd cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xcdd2cfbb cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xf63ebe73 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x35ba1d16 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6876097a il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xbce8a8eb il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc34a872b il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xd0dd7eba il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xe64eaa14 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x00a42d88 iwl_read_direct32 +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 0x167665a3 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x199bea85 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ed2289b __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x38444fb9 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3a3cbb6e iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4f152985 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x52eba85d iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5b46bd54 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7383c1c6 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x779e8d7b iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x793fbe56 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8be77315 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x95d7eef0 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa49d56e4 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbacbe677 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc6b1fe09 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd11c0ff8 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd87583d0 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe022326c iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe9dadee3 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xeb8189a4 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x17824a07 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2370832e lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x258ab8ec lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x59dc4f5e lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x70d1423a lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7273aa54 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x72e67c4e lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x77a223d1 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x93963fda lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9c9b9b19 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa2c220eb lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xaa4ea838 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb085db15 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xba06fe02 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd7af351f lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd7af765f __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0316e47b lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1c930cef lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x360856c4 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7c360e8b lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x98b3465d lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9c730029 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe9cde1e3 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf5e58d46 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2868084b mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3a2513fa mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x48433389 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4ab904d1 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5de35df7 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6c19cd5d mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x72f0ea48 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x825499e5 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x85715cb8 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8f254d79 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x92825aee mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9a2b7179 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xadb7e08b mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb0d51f26 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc0822b49 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd0103d25 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd5859fe3 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4007cb60 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6e91da92 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x709b2fb0 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x724ccd19 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7989f8cd p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x836951cc p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8ebe3774 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x996206d9 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf8079408 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xafc4c8bf rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xb724a574 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd4742231 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd590099c rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0143092b rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x01a26ef1 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x01f49b81 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x037c40bd rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x152d1a03 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x174acf2e rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1a066d7d rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1a4fb643 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1bd6dfe3 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24196dae rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2cf30e11 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2e77ba0c rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3801b241 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4046b4a4 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x42c57947 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x465ef6fd rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4bac2c8b rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4ef3ce28 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x50d7b55e rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x523bea1b rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5a2350a1 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5a4a2146 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b38ee77 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x60ebcb00 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x898870c6 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9cf4bd95 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa065a9bc rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa18edcd8 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xafc824f0 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb6c3f4da rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb7c64c26 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb9682df8 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb987404f rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbb6dd537 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbf9bc779 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xefb50e37 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfb9c61fb rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfd54913e rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x007c9da4 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x06ea36da rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1df89cd4 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2276cff7 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2bd6284f rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x51053194 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6dcf6879 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7b992644 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8e4e641b rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9ac621ae rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbcbacdb9 rt2800mmio_stop_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/rt2800mmio 0xe9157967 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf0921f07 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x041375bc rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x07eb2670 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0aae2036 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0cd0ece1 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d1aee2e rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0de2444a rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0e70dad6 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x11d7adcc rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x12258115 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x153302f0 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c7fb22e rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x229b2463 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x24356a36 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x24c14345 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x289a2a7c rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x33482c58 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3a2bb082 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46644980 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4da52f14 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4fb980e9 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x56005f58 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b36ccf2 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x68fb626d rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7c42a48d rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7efbcfde rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x83976b69 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92167326 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x936d76ea rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x93869e1c rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9698179a rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa52b3925 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa71b059f rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xac84fdb2 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xae9461ce rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb315b066 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc9c94dbb rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd5378832 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd76b6ce4 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb4fb08f rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddc32b7a rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe11501bc rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe3512f22 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe538a4d7 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf08ebc0d rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf836382a rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf9241942 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0af34008 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x394b53d2 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x466ee2a4 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7659ddea rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xff09a10f rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x270ae1f9 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2f3ed64b rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x58b9bc71 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9bd94bbd rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x092350f9 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0a208f24 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1aa40035 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x547746b8 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x60f45fbf rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6b3babdc rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x840fb97a rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8a98907b rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x946a5d89 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb0f65380 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbdaec9a4 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc20d21ac rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe56aa355 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe744f98b rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe92ae435 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xffa49bd9 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2732be94 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x782887cf dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a690194 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbebfe5cf rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0edc5676 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x160fb912 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x19184fd8 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x24d35d32 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2759f778 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2f5b58b2 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3a961403 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3bc1b2db rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4b11b7eb rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x532634ca rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x56bebd61 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5dff9bca rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x68fe2bd9 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6b9d9d60 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 0x74d2deed rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7e2d96c8 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x82cbf838 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x85c4617b rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x941807ed rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x94b52622 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9d4678f5 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa4251bc3 rtl8723_save_adda_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 0xbb9640d6 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcd188b6b rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeb0e4896 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xec3718c7 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xffc276a9 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x223647f2 rtl_swlps_beacon +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 0x38c4ad2f rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3cd8f659 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x40abb627 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x47ab7982 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x48e018cf rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4c268821 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4daa5fdd rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x58344f5c rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x625f5ba5 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x62d431f5 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 0x787f18be rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x81bcd08f rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x82135387 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcdba0e8b rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe688ed85 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xff8b2750 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x627ebe7d wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc586598c wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xcafbe05e wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00460e90 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01ac08cf wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0c9d89a1 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0eb8dcf9 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1267656f wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x25748a09 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2972bd1e wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a4f9121 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x43086ad5 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x452fa4c6 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4e091dc6 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4fa76fb9 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 0x5c611395 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x630c699e wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x651b35ff wlcore_boot_upload_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 0x799c1f48 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8bd12377 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e381986 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x986c5eab wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9d31cf29 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa0298486 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa28c16da wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa6183dce wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa7b13c3a wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xab284975 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xad5db954 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb0d0d01f wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb1005b57 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbfb8ca2a wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc023f78b wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc0565670 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc30f8a6e wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6282406 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8ccfd49 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcc910ec8 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcfa88735 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd15e72cb wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdafa21ba wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe64519bb wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe94739d4 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee15f9db wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xef3abf59 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf004f9e1 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x106e0490 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x107d6db3 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x4be79133 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x5a68c9cd nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x13a87084 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x439bb9c8 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x55a66c66 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7806930b st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7c5eeddd st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8870deb6 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe7fc85b2 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xec6fa4f5 st_nci_remove +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 0x978f9de8 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 0xc9f65a38 ntb_transport_create_queue +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/ntb/ntb_transport 0xff73fcad ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x0690a995 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x8883824f pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc8680da0 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9a1adcc0 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc90ce3d6 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd550f1a0 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xdc496929 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xea5c9f0b mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x00ca0504 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x04284a58 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1373011e wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2284eab7 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x403d87c5 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x49077495 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x7524642b wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x101f0e5e cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1033ef82 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x10614fe3 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x15dec991 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x19a37754 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1aab8e22 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x23ca2472 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x25b1f6de cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x35d8015f cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x39e7bc60 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e044eda cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x432b07df cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x46ebf9fe cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x488e3b3c cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4a83dd30 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b23a49d cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x51db17c7 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x529063eb cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x565acf49 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5dea9274 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64f90261 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65271055 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x67797b89 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x79c6c520 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7dfdf5b2 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x815b6936 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8161842c cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x825a633a cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8bd70b0c cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8f039a6b cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa01e8601 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa02584d6 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa263db1d cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb1347991 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb29f8102 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb42b2067 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbf7ee1a3 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc77950eb cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd783e8c6 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd9de59e8 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdc2f693e cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeb6d49ec cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xefb36b89 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf2935526 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf5f003fb cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf9ede84d cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x18dddd9f scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4e807db9 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 0x8a37fcfc scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x98d1a723 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa33db96d scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb27a4af5 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdb5fb76d scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00a80e13 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x18d865d8 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1bacb196 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x49798292 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x95d0bf4a fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x97dce644 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9fadc890 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa37aa911 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaba440e6 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb02a3adc fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb5b49376 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc36d001a fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe1d49e71 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xea640dc1 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xee26c5d1 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf4970fa1 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x02f03a34 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x092d1e3e iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x53f15300 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x711e4dcf iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x7493d4bd iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xbabf8e50 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1df0dc4d iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x29bd0b34 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x328c9b00 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35e60201 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3f4fe604 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x476a8c16 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x51e0c29a iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x59764b38 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5e36cb2c iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6425686a iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64bc82b5 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67379163 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68aa7b06 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69130b72 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x70313ba7 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x741c6cd9 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x743e4092 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x809d86ef iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x821f2eea iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x83acd68a iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86cbf7f8 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8a5f7bec iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8fbe03cd iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x912ee2d7 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa11e6e1f iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac3c461a iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaf1a685d iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafbbe3ed iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb07dffdc iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb5bd8af1 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc543a5b iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc75cae79 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5850fad __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdaddcfa2 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdca6e0b9 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe4a1ed3a iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe814f2a6 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xea851302 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee44cb4d iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf8da79c6 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc215ae5 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc6debbe iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x03826da7 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1ae8a8ad iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x33231ef6 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x648cee2d iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x86a29c21 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x88c7a7cf iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9252dab8 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa3b91c7e iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa5287f64 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaf6c01a0 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb42da47c iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb731b6b6 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbf20c63c iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcb187a21 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd75454ac iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd8a724af iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe92ff319 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0ce9a1af sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1c3df4f2 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2633cf13 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2f339187 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x32e7169c sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4e881fa0 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x54e6b263 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5be790b3 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x602970eb sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x76e9e061 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8678ec95 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x98c352e2 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaaa05656 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb18e4f1b sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc6448665 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd16f07d9 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd2f60c08 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd472f763 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe0ac4db9 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe34b5b90 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe57be42a sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf4c678f9 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfa99b2a6 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfd544a4f sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00cfd361 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x032663ba iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0f49ff66 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x139fd272 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x26ef1e47 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x35c81a0e iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x38075f77 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x38991ae3 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3c08cf17 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45856e8f iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x485946ff iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5dc00172 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6412ac9e iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6e300da4 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x86352226 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8aa7e212 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x93d4095f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9522cb68 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x95d3a3d4 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c1242bf iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c5da0b7 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa74f42ae iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa93577cf iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xade61f07 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb20117e6 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb5a8ce61 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb94c4324 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc945097 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe4bbc2b iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcea73dcf iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd6f77d3b iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdaa6e732 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdc3cce28 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xddd8f03c iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3a6ebfd iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe5d9a660 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe947300a iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf9ce6d32 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfadef67f iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff0f45b2 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8fd12d86 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa279e03d sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xdc585d95 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xee37f200 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 0xc2684b2d 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 0x0cc1f64c srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x57ccf474 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x60316df3 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x832d6e4e srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa4221513 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xde7f3013 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x237aef9c ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x342016b6 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x684b7837 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x9b3b24e3 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0225e842 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2d0c0d02 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2d1fbb70 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x8343c918 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb379ddd8 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x009737b6 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x027fb42f dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x827e384b dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf90bd48a dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0aa5d269 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2336da6a spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x28ccc34a spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5496f834 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x56a48479 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x57263fb0 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x661d40a0 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6deccd30 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x70c8ead5 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8a56f319 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8c75d656 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x95512a18 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xaea39480 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbbfe33b0 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc34270e9 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfaccc6b2 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfcf4ae06 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfec90ff3 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x8a4d2457 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x028c025c comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0630c9cc comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0691f165 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2c6dd7b0 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x34008eeb comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3bacd0c4 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e902b9b comedi_is_subdevice_running +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 0x5b414223 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5eff10ad comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x66689548 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7d82e00b comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8a651f64 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8f412014 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x95ab156d comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x962d19dc comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x99c89d7e comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e3fd2bc comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e6b7a84 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa09d407c comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa5a921f8 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9e033e7 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb0691bb9 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb21debc3 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbfeee867 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc1c2b92a comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc82fddba comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcbcfb1cd comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3ede028 comedi_buf_read_alloc +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 0xdc7bce74 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe27311e0 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe864630b comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf5ee4162 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf5fd9c1e __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfffa30f1 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x00713b65 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x14d2321e comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x42b2c7b0 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x45f5bf72 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9f63956a comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa9c3d623 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xef0ab358 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xf7ae4331 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x03f3f696 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x15e8e1e6 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x20772d8c comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x3c3ec9b2 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x58560061 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x69902d57 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xdd77028f comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x4936e548 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x50c4ea37 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x5299e643 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x81fc8c2c comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x8bb1e687 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xff8eeb7e comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x4d130953 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 0x365342fa amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x56bfd065 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x4a769816 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1f67c987 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x218290d2 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x309f3f94 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5af7460d comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7b300dac comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x88dd22f2 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x91570916 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9e4ac484 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbc44fc2d comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc02cd776 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xceebbd0c comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe41ff327 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xeb4ddaa9 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0308cd94 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x182dca9d subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x2c26a603 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 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 0xef00c939 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x8f412c41 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0eedee1a mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x161aa0a3 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x18cc7f25 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1e6e3c5d mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x27df2a28 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x35173e78 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x35d2fbf7 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3727677d mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x489a3671 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5091615d mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5b232936 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6ea07bb5 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x76787d9d mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7a1eeee8 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7f44356e mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8407fdcb mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9316694c mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xad8845fa mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc780c37f mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd3aa7c9d mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdde0dad9 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x15b32322 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xd13fea42 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x13827af2 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x2e0f5152 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x4f83894a labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x59842f2e labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xa16721c8 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x256b4362 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2d5cb8e4 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3d6f38e3 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5874464e ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6d09e7f6 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x94c2dc24 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbac546fb ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdc3e4343 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x762ec3b3 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x82bc3063 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x9030b3f1 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb1a75941 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbe09b336 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xec50744e ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2f8ec542 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5587cecc comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x58a04a31 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x63dac8f7 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x656c0a97 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8d012097 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xfd76ce1a comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x477b4ed9 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x66798897 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb252beab lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xcea0c4b3 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xffe52c51 lustre_attr_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 0x26dc6f59 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2b59fd52 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3bf0a699 spk_synth_is_alive_nop +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 0x492786dc spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5a3a885f spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x638bbe93 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x970d716a spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xac5135e8 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 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcbdb393a spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xdfa25ea4 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/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb2117e8b uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xee2f05d7 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xee455e91 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x0a2827c3 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x5bb1d486 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x1f144e69 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x8ce3a263 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x11c74e49 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x76bb9027 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xf58694f5 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1c629aa2 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x2a4e8557 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x56cf3176 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa57e2f19 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xbfbe8f0d ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf06ed861 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x20a10b7c gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x25e7a8f4 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2b91f8c5 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2b9419ae gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5f9e1531 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x874ce82a 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 0x8baf0d26 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9605aaf1 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa4c2d72a gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xac18f723 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbb1ee8b5 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc29a8917 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd0a6979e gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd476e57c gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf9f2a5e9 gether_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 0x89e43d01 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x948afa5f gserial_connect +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 0x0766ba57 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x27942579 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x58088ea1 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x06a54786 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x09910463 fsg_store_ro +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 0x0cb186a1 fsg_show_nofua +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 0x16598af7 fsg_store_removable +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 0x24147ac1 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 0x2c176d49 fsg_lun_fsync_sub +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 0x4c9f866a fsg_show_removable +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 0x59cb08e6 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 0x6e3128a2 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 0x921be654 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x96345c7c fsg_lun_close +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 0xac84a7f2 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 0xcf9151c3 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 0xdcc555f9 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 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xfd0529e6 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x301b3991 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3e37ced4 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x46261fc9 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x674ba3f7 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6e365908 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x72225d24 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8d9d28b9 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8da4d882 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa4486352 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xab931554 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb836110c rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbcfb4941 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc1aee00c rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcbc00eb3 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdb377631 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x04f15715 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x18cc777e unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19e89522 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a196c65 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1fc5684b usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3220d532 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3fbbd36b usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x477e8767 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4f86caec usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x587e67d6 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x60dd5eb0 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d3fabee usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x818f487a usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x83ede1f9 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x889c556f usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94591ab0 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9d92429c usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbe5f38a8 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc18df9af usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd66ea3a0 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdd0ee613 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xde0e421f usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdecbf36c usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe819c9f6 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeb6555bc usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf0865502 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf13e32ec usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf7b0d09a usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x13c6aa1a usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x13ccf5ff usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x18d4f72e usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1f0318d2 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2d65ecf9 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 0x40400beb usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xcde80e23 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd0acdbf2 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe4ff10d1 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe602d368 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf5969a09 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x8a8766f5 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xc57ad661 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2d35df92 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3d124fed usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4727af36 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4e187b4d usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5b245052 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8d5ec895 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa801904a usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc2a19201 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfae477a9 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 0x6a440067 musb_interrupt +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 0x9c69f848 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x789474fd usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x131ddc25 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x188abd94 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1b579e1e usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x21b1fee0 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x34636710 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x34f55142 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3c8214ad usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4dac4ab7 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4ff43d30 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5087cdb5 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6e88182f usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8d71041f usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8ed125d6 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9c05469a usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa1512409 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa7265458 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaaae6b6a usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6b1c804 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xce74ed99 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd320cf47 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xda4b1207 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x09938f28 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x13fde8d9 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x21123566 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2ff84f4a usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x356cad74 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x41756389 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x43d280b3 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x524547d9 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5a38338a fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7240340f usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x725c3a60 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x727fd5bb usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7da14bea usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x812107ba usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8b8a8766 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9b4eebf4 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9e8c4aa4 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa600e0b1 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb3e3a115 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xba4338e8 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xba4d1e3d usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdcc3f7d7 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe3aa9fd3 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfa6f9aa4 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0fcaa707 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x109d92df usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2104669d usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x289beb72 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3f24c45c usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4d1d1f8e usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x66f2f3fc usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8742decc usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8b173a86 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc57faaf0 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 0xeb9555b0 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xec858401 dev_attr_usbip_debug +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 0x2449c66d wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2f80f35a wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4cd9b0fa rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x57e9f526 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7d649ab0 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9e84ea79 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcbd9fc14 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x14d84dbd wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3254846d wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3a9c9833 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4c24a8f2 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x526f71a8 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6248da40 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x79aef5d0 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x79f76c33 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x88d1e12e wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa2912a8d wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa2b584a0 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd1279ca0 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe3943b06 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xec093c66 __wusb_dev_get_by_usb_dev +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 0x68ea0859 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x82236f8a i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x91ae06d7 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x18758e9c __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7efda7a9 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x902751d8 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc6f257a0 umc_controller_reset +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 0xf183f62f umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xfc0cbe59 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x002dd930 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x00e85944 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x03f4d1b0 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04018be0 uwb_rc_alloc +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 0x1dfa4daf uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x25100d40 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2b0c575b uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x39a9f972 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x39c29c23 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3cc7fdcc uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x40820f0f uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4205d527 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49104ab4 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49e2f108 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d296382 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5528f57c uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x58723f8d uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x59e3f828 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e6b4795 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6ec63f3d uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7cc335f2 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8516abfe uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8889c7b1 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x89ab0872 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8a8fbe4f uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9cc1a5b6 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1afa3f2 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa6bf7d06 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaaca6959 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xacea060a uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5dc9f33 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbeff974b uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc0161b42 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce4640fb uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce6be200 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe439362f uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf12c0bb7 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x0ff77f36 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x03a89498 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0dfc9f67 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x10ea6d1d vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x11f0045e vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x165865fd vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1fdf887c vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x23698a8d vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x23cc7771 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x37c46076 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3909fa6b vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4b091d25 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4d680155 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5058eaa9 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x588e2566 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x76b37bed vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x80cc2210 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x88a4cddf vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9370559f vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9408fc10 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9ee7d691 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaf5fabb9 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2d5c7a5 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb306c7bf vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb9cb0b4d vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc30cb85e vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc8a61ca8 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc917dc23 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe59bef50 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xebbe8b9e vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0643ad85 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x642d0e0b ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x86da6ad0 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x870b1dff ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf84a97f2 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0b164e62 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0be03b81 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x113e4ef9 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4478e7d2 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x694928af auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x81f38afb auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x8e591449 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb77a25a4 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf4589aa0 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xfbcb9149 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x764bb220 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x2bab481c sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xf8675346 sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x048761db w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x26f1766b w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2c77cde2 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4085ffa1 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x51eda237 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x56d31828 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x60132d04 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa2b98e57 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc64fec42 w1_write_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x976ace3d dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9a289b1e dlm_posix_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 0xe78b5238 dlm_posix_get +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0de00213 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1f0a5c48 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x28b0969e lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5b6e906b nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x78562c04 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8597fb25 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd4d92c24 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x005582a1 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x051a8339 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05d3009a nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0676fc07 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08422839 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0879ff68 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b088daa nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b1b2825 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ce642c9 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0dbad62a nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14601814 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x146100d5 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18091d7d nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f049a83 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21fb6419 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2271b0c5 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2562b104 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31ac44d9 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31aeb07b nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34f0c761 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36ea1e17 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38f2cfb8 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39aa4d65 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b1e49c0 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c1e7b0a nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c293889 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c47819e nfs_atomic_open +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 0x3f29395e nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x437dbf92 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43add581 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x443037ac nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44b26717 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45449634 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46320130 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47e3e7d2 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4bbdac2b nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e8aa4d8 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50274d93 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50b26a7b nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52682761 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52f0babc nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5770be88 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bd4cf9f nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d35b108 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f7b36b1 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fa42e7b nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x607ec535 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6645f04d nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69b6bd1c nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b148246 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c5c135b nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70e7d727 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x723efd07 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77a1057b nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77d2dfda nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x788111b5 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79397418 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ab29637 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b5b80a6 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c81f9aa nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e9060a0 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f893524 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x835ed831 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x857bc866 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85e14dd4 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86e7f7b5 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x872021f3 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b6a3ea9 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cb96029 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x908abb1c nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90bee45a nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92707959 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98de0918 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ab8b751 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c9c6e6c nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d23babe get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d5a2bce nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa15e4dc6 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa29fcd87 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3a0a210 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6337013 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa64d5f2c nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7881c44 nfs_rename +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 0xacee54e5 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf221c75 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf543ead nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0cadfd5 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb24d791b nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb33afde1 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb370e3d7 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb64a4b58 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9afaacd nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbadc48eb nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc023c30d nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc15313a6 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3fd4d35 nfs_fhget +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 0xc62e35b1 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc712f426 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7e9afad nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc86d3409 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8cd6f09 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc919bcb9 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce1053cb nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce7a294b nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xced5a338 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0cd24a3 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1b526d2 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2e40348 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5ae7ceb nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9c724c6 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda0829e0 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda5dffed nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1b127ad nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe336112f nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5066655 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe69fc970 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6cc3bb0 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9fe69ee nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed361a48 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed934225 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf206b115 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf730eac7 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf753c838 nfs_init_commit +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 0xfe7d2de9 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x18ef37d4 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x022fce88 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0746f682 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x084c3c7c nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x109b1c27 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11091c22 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x117906d6 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x212a5355 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23c5be8e nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x28f1aed8 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2990a356 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2dd78b7e _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2df86195 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39f53d6e nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ab97ca3 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x41bbab70 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x42054ec7 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43492105 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4882e61e pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49648b29 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49d9c266 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4cc3a05b nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e5dc39d nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x521936d8 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6317e49c nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68f608ed pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6c5074f3 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e2ba836 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e6b5cea pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x76c01002 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x771673df pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a79b7d2 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91b52905 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x93c89729 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9669998a nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9b2c1850 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa45c5ea1 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa4b5908f pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab64e3df nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae4a9b89 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5c92860 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb7ae7412 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc1feb568 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2faba3a nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4d15320 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xca390bcd nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcc5030f0 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcdbe502e pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf2fac43 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2688389 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xddd8bd91 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe02864e1 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeab24565 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xec791318 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf1f5d76e pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf39b4adc pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf58aec36 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf58bb4af nfs4_find_get_deviceid +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 0x62af70c8 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xf18bed1d locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x85db75b8 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xe718b90d 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 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 0x4a0aba12 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x595e8b10 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x673cf72a o2nm_node_put +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 0xbed72272 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc2e4cd33 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4c9a598 o2nm_get_node_by_num +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 0xe26f4443 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6a43f60d dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x904075c2 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xbf4cf791 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xceffc6e8 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd0a9f3f9 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf1417de5 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0d904aab 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 0x91031e22 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9dc724ea ocfs2_plock +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 0x009f227f 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 0x5411dcc7 _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 0x74219631 _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/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 0x902063cc notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xf0360677 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 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 0x9580d256 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xa6e4bf16 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x094a907c garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x156e7f1a garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x32f9da08 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x88cf6201 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xb630b797 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe80ffe20 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x77643d0a mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x8bf0d84e mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x915375c0 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xeecf0baf mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xf3537ee9 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xf7665429 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x185f2bca stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x2be432c3 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x51e10d26 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x79620633 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 0x03b073a8 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 0x1589fa0b l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x21515204 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x49cc2c12 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5bce91c4 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x61b825e8 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x94d9c3e6 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa8529dc0 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xfe409e91 bt_debugfs +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0c773b14 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x33e2f234 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x47ae2faa br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5f43e8d7 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8599fde1 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc3058de7 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd2fddbd8 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xffd4b5a7 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x3beba3ae nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x6d89653b nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0428baa5 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x098a555b dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0b79f90d dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0e45cc7c dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a72144c dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a8a1841 dccp_disconnect +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 0x21c7b86d dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2524363f dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x30090fd3 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x467eaaad dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x469d4d29 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x49fbc2f5 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4df5b602 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x57f5d251 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x58ca1bd9 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5cc752c4 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5ce3681d inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x61613c8f dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x635593d2 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x69637d77 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6bed0f87 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fd7624b dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x83748362 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8c322d0c compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x93402fcf dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b8cb2e6 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa4beba32 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb1305ae6 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbb00ae36 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc40104ba dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc69bf03b dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcd664ed4 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4909c48 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xee485e68 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5dda007 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1a8e0ac1 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x70b3c05f dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9875785d dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa4647658 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xbf7b2897 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc951ca09 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x54356911 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x5a102195 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd09c59e3 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xed641d11 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x54d8f4c8 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x95f03e89 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xce1859a4 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2122fe72 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x5df71a72 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9da0786a gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcd8b7974 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe03fc5ca gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3e0f4092 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6e16f9cb inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8e70d74d inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8f5a97fe inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9dc2a4c3 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc8e3a3ab inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0242e293 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1aab1643 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x46a5d9b5 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x492690de ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4e8070e2 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5afaac6f ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5bdf5e44 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5fc17af1 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6da52f0d ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7494b4d3 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdbe5fc4c ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe93a1541 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf171c866 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfd783a86 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xb99c0124 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x7f7d625f 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 0x1e5454d9 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x74b85005 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x85bf4f40 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x93d8df67 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe8d8f4c5 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 0xcf0e9093 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 0x3a96664d nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x56a3afd3 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x76043b66 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x9167a169 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xfccc8048 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xf3623f89 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5d0e75ce tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x7f0ae9af tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb3b9e991 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb572b682 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcc469747 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x13e8ae55 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9f72ab04 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xfadbf272 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0b75ea68 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4965b767 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x49e22d9b ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6277936b ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa709114c ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x5d1c4c9d udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xcb97cc4d udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xe5ed2eec 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 0x3b1e0dd0 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x3df89819 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xbec091f7 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xcda05e5e nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xeaa79609 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 0xc28374a0 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x5447b625 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x88c57438 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xa0800145 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xc45e77c1 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xeada1648 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xece23048 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x045f4537 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0f6dc57c l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1547ad1b l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x17437052 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1cf7bf68 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3d2ad86a l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4391ccf3 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x686b39ff l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x77657555 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x81b8af67 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x833b28f6 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8e1885a9 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9a4a6f26 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb73449ff l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd54ae759 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfc844280 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xaf80a379 l2tp_nl_register_ops +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 0x28204a81 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2983f8c6 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3416f740 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x357fdced ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3aa8bfb5 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6d40d69d ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x77563001 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7838c55b ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x81468ef2 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9ec295f3 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaa482160 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb158cfb6 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbecdf755 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc8aff4b1 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdc778b31 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfbd65012 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x081c81f2 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x15ef2ced ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x19addf93 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x19cb49c4 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2de27f43 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4c4af097 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4f296290 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5ef4629f 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 0x7e5eedf8 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x83d5f892 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x860b0210 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9c921741 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa5972a4a 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 0xd478ce93 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe80acda3 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xee144ea2 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x41cd39e7 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x634f14ef register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7249d8fd unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd9fe8231 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x001bf153 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01e4a331 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x034367b6 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0344f805 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0588c6e7 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x059e91c5 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0969ccfb nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a971d75 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11b24f50 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x131139fd nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x13d77f94 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14bfcbdc nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1aae45a8 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c6a9a0c nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2248a38f nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23aaff9a nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x252eac16 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ad31a1c nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x35527c18 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3569087f nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36839014 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36b12a65 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3928a0bb __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a2fd032 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b08c0fe nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3bbc43d6 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e176cce __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41d8fedc __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44bbaf4c nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a9ab3b5 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x563d39d6 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e98c48a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65076fe3 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65e6d19f nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6af9a2fb nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7058d28b nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77c6a507 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x809cbd34 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80b7b98b nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82bb0a11 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83f65293 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85621b7c nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x857671aa nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x875a83a8 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88ffb1bd nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ec32f99 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x902cc94f nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9392034f nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x943a4a7b nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95cb9d08 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x964bb813 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa21aabcd nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3b88156 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3fc1715 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5331469 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab760ad1 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb01683bf nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1c03011 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb713bf4 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc39188da nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc44ac51c nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7ecbe16 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcae966fe nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf649bdc nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1113dfe nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1236435 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd54f9881 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd965cc27 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc899f39 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd219283 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf8dafc7 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeeef7d64 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef90484b __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf300c260 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4b6da66 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf50fcfcd nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x530c9a9d nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x83c47f66 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xa3c45b87 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x05e87b22 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4c0a4737 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4ce051e0 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5a334cc6 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x775e00d0 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x78cf47db nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x79429cdf nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa61e88a9 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xab9d47a0 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd5bddae1 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x53c6d85f nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1464fe22 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x17504cc5 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb81b7be0 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf46464f2 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x27400079 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb0d3c1c9 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0ce74cc8 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1627720b ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4c2f89ba ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x87756bea nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa63d9dd5 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xafbca595 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd5c4dbf6 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x94039d6c nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xb4a11371 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x1237932a nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x4af1b235 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x5e582df5 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xdccb37bc nf_log_dump_tcp_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 0x31a09810 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x343476ed nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x397d3126 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4aa66d08 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x503959b2 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9537d08d nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa83eee43 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb9e01be8 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc448f4c4 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x506eb10b nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x7cb8c036 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 0x154650cc 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 0xa8bb1aec synproxy_parse_options +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 0x0b363535 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0c8d46ff nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x58f251d0 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5e376877 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x61e41036 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6b126b27 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6d4a35cd nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x76993739 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x90b8fd6b nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x92a38270 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xabcb28a2 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb32fe079 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb9841368 nft_register_set +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 0xe3781a2e nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe96f0c5a nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xea3261f8 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf2baeeb4 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0057e59a nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x379499e0 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x44330304 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9d779a60 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd9153cd5 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe025b2da nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe3725d65 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x7564b92d nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xebaf69a8 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xa93b7a5a nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x012494ce nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x39d1d7d5 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x630f4eb0 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x442b0c67 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x4d321db0 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x7577d669 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb34271ae nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xdacfbcf0 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xe737e024 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x10ef9f7b nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x24f04ee2 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc588c2ea nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x8d2a8d1f nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x916b820f 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 0x04e0ba91 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x171bc116 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1e8d24e8 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x20f07d00 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x358f4576 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x39e998cb xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +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 0x770f485d xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7fc70525 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8f7de84d xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x95e1f631 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9f3c28ab xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7f904f4 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb5252e8c xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd6e2b54b xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd6efd4a7 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdf502468 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xeb60a99c xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf7287790 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xff6bd2a0 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 0x271cbaa9 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x3747b0ac nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x6c9fbfab nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x7f8cf119 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x92d8b4f3 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xdc24107f nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1a939da2 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x581a301c ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x60897745 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9a3da022 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb5409b62 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbd83b3b4 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xe85454a9 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x020aeccb rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x09726dfa rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x1757b3a7 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x1e364ebe rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2f8e872b rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x30d021bd rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3763e110 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x37b5f0cb rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x448f3ff8 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6f362c6a rds_conn_destroy +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 0x8e240339 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xa17a9721 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa74f9e0e rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xab384f99 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xb75069a3 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xb9dbe2a1 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xbb294a92 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcf5a6eac rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xcfca2693 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xd2033f4e rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xd8f07e6e rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xfcd98286 rds_message_addref +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x9949823a rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe77ec7b8 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 0x4b83ecdf 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 0xc926bc63 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf39a5afc svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00020deb svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03dd42af rpc_call_start +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 0x06b3dca2 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08184c31 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a5ca0e9 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b21f0fd svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c6ca717 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c91976e xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d2e9392 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ef7ccc6 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f0004fb svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x102b8bc1 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1261c4f2 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13a26d56 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1410ffc0 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x160489bb xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17aaa4a8 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1859d6c1 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18eb24a9 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19ad1b6d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aa5fe1a rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b9b96f4 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d92b6f4 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1edaebd4 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20089241 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2099cbed rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x211cda86 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2397586c rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x259d43ff rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27d9034b cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28f5bed7 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29081d75 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29dd5c94 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c7382cf rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d9aa79d rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d9ad193 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dd0f0d9 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e5bc224 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f6bc7be svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30e6bd2c bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x326049bf xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x351555d1 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x362da782 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3862eae1 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3931418c xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39c06e3e rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a4eda2c svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b9e9063 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c578165 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d603d5f xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d95c2ad rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fde4561 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42124488 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4704b235 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b0c68e9 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b62dbbb xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d238e5e sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4da1d36f rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4efd9f00 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54c3983b rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x578fd187 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5856d5c6 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x587efde4 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59e5b61f xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c91bf8a xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d39c71f svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5db43d66 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f2a44bc _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63171e16 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66788653 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66bc8c22 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a0f2b3f xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a373bc4 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d3e0623 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ee04ce5 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f3145eb xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x710dc767 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71d246c3 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x721f8ae0 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72c80eac xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74feb30f svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7655ec6e rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76beadcc xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77da9036 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78500748 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a2e2dbd xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a607234 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7aae497b rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bdd5811 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c514d00 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d377a13 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d97a282 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e178da4 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e184b60 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fd7bf45 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x812446e2 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x820184ae svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8208ecc8 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82181c17 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83aabf20 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84c9bc90 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87086a35 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89984cb9 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a727639 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cd86938 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d7df6f4 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ed1ba06 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f406c07 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91051ac1 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92863dbd xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93c67d11 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94926e89 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94b3d614 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x953a026f svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9682e72a rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x981754d1 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b4b2e06 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c0fd8a8 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dc9f2d6 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e6a145c xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e7f5915 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9eb1f18b rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef82248 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa08365c9 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5192958 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa55aaa5f svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa64d4c08 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8416bf8 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa71ba67 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab6436eb xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac0694cf xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac5a3543 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac951757 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaef398d5 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0faded3 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb26deaed rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb64d85f5 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb999dc26 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba806be7 svc_max_payload +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 0xc1afc544 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1bce418 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3213b2d rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc333adb8 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4ab4260 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc723d903 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc75cac7c rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9922c2a xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcea14533 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd083a7e5 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1ab75ea rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd33f3222 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda435b01 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda750e99 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb36ae34 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb736b82 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb8c851f xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbd537fd svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd557ffc xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd670ffd rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd730812 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde1ac224 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdef2939d xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0a66bf3 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2795a51 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe29e2ee7 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe54f3273 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe55b96c2 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe65e248d svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7ffb31d svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8c02d9f svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe98f1b6d rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaabecf7 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb28a18e sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed5ca313 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeda0395a svc_authenticate +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 0xf040a8c3 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf148133e rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf17d94a9 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf30b5396 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf37ff9c1 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf69895c4 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6fa8866 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6fa9a08 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf933521c read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaa14a80 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb439a23 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfce30a6c rpc_malloc +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 0x17808c93 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x17c2be45 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1ac12347 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1d1a0079 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3caedb01 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x40d2c855 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x45534100 vsock_remove_connected +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 0x7c7450fc __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7dd85637 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8ffc5a81 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xaaf7dd79 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb0e509a4 vsock_remove_bound +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 0xf1e30262 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x06c961a3 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0eb5630b wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x404771a5 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4ba40387 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x631867ca wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x63cdc689 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x85010652 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9a4efe08 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa23c3100 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa98d7b30 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xac9f0217 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc1405733 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcc9fae61 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x117049f3 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5dab094b cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x69f0e4a7 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6c51751e cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x883887ff cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8e9af1e5 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xafda3caf cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd2b98d8a cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd558aa5c cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdd6434b9 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe3337337 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe6819a33 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xeb10c8ff cfg80211_wext_giwrange +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 0x36d2eacc ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8c2f37f2 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x98c6bd7c ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xcd17f2ca ipcomp_input +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x07551297 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x9202d6e5 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x147a8f53 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x63688d95 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x801dae14 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x85113086 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xa4d1ec2e snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xe8831974 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xfbadef0e snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x1c61f1cb snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x254543be snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x4621246d 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 0x0e264a1b snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x13d58787 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8009e884 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x93a9ad02 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 0xd1e7e9d0 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xdc42d1a4 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe14e91ad snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe4b064b3 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xfb813f12 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x14f24af5 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2442ec3d snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x25354fd0 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x28c44cbb snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x37fcf9fe snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x70b5d61f snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb7299f6f snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc038ffc1 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc63d466e snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd15cba63 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe0a94822 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x001e3a04 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x037147fe snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0908d660 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0a175ae0 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0c7a06d6 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x101082ee snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1b8c3d81 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x264c79ba snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2877ddde snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x340ab158 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x35ea7b3d snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a58c17f snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3b8f24a3 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3c69ec81 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x41aa9d17 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x443ae270 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x464573ea snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4701c7d4 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4736ae04 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x486ae6ad snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x487e7541 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4959e3df snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x50035bad snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x50b5daae snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x55706568 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x55be4d43 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6189473a snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x70a0b2a4 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x73be7183 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x73e4c66e snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x75ba398f snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76b728de snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7841cf3f snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x78a5c8b6 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ff42118 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ff6992d _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x839ecbcd snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84e04bf2 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84f47c4a snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x91b78844 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x921af2ec snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x93774dac snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x97992a90 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x999027a0 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa5bf4c9c snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaf851a82 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb35e81c3 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbc742c79 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbd82a9e1 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe98ec79 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbefd29c9 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc45644d7 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc9b3899f snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd10cf9b6 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1d79c36 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd2a48d78 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd35174b0 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd754debb snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd7c7e7f6 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde12b018 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe68d279c snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe853c91c snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xed96ae91 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6746eb5 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x17507305 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4ddc37cf snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9881db56 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xbe08abab snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc4370920 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe8c8fec0 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00a80ff4 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x013bce65 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05318a2e snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ae8cd0f snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e07aec2 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x130a0a8f snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14b7292e snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14dd419e snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15bcbe5d snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16317066 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a76e12e hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1afef838 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c58cccf snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f4d1b6a azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f56834a snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23e3e4dc snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25cd4850 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2699eca8 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27d44842 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2921a860 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b70b9eb snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ff90f5c snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30f9a6ba snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x321f7019 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x373a4964 snd_hda_jack_tbl_get +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 0x3a570962 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c24ce63 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d910135 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f36cb0f snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f40fefe snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40395f50 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4371538a snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4428e916 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46521e47 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x471b5f28 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49c8dbac snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a3f9649 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d5b9714 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e17103e snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e7b7bcf __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f766d89 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50a0b5a8 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52e82dab snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5703dca0 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a587b30 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e672956 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5eade2b0 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ed2d9c9 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61d15885 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x646f63e3 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6685cb76 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b155a7f snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f4422c4 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6feafb38 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x703d59d1 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76d4db08 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7afc63f8 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b9c529c snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c7351bb snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7cacbef3 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80026d10 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80a5f708 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82f3ed98 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86a934b0 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8aa093b7 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8adbac5f snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8baa19ad snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c483b60 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8cfda960 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d510ef2 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d61a537 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ddd9109 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91e5035a snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94a533b3 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x979d08e9 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x99629280 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cb37169 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ccab5c9 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f13d475 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f9c154a snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa08a76d2 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa41c4494 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa5a7e96f is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6a1fecd azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa510846 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaad54a93 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac1d7eec snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaccd25fc snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0184df2 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb03ea2ec query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0a7928b snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb202e1b3 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2abab4f snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb517b246 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb2fdf3b snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbeff78a7 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc200f822 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc375c5a6 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc76217f6 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf8f1296 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0491d8b snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0c66066 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd19fd3df azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd534e15e snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5807377 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9d798b9 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf61e2a5 snd_hda_codec_pcm_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 0xe1695ef7 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3012735 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3189397 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe91492f2 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xebcf67ae snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec1f2f6d snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed71fbbd snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee7b5005 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef88bf48 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0ce0548 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1e23bbe snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf57e2585 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6168d4b snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf78cd546 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa85d9bf _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa94c56a snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfabfa35e snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc143174 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x02eab2e1 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x05d6581c snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1cbf84ba snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x20cf7838 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x24618e84 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4109d7b5 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4a76c9c9 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x64d54fc0 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x662b06e5 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x66c16a3a snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6934a5f8 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6a54b4c7 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 0x7ccb86c7 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x81e928f8 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 0xa4e37615 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb208d91d snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcbbda7a3 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdf028f7f snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe16c2f71 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfae5088d snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfee3d02b snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7a9092e4 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xa5ec3f2f 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 0x66cff5f3 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x6d050aab 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 0x82e4fa50 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x9768bc3b cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xf51cf03d cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x6b5cca75 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x759f7e3d es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x1d32358f pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x628a2004 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x87e829e1 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xfd0e8bd0 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x054e251c sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x79b519b0 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xa0841d58 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xa6442f37 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xf231de91 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xfb243922 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xda47c95b ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xff58e212 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x29eba4ce tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x8bf35f24 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xe090fea0 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x8b832b54 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xad48bd8f wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xb92f4a3e wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc1fdc199 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x99009ac3 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x837e5600 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x34bfb30a fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x94aea750 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 0x06015bd3 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06928187 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07135e14 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07c11d95 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09db1591 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b9ec1ef snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c0df623 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0caf4e1c snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x102cd08d snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x114a37a0 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11b4c02b snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1234818a snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x156fac6f snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1718d204 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aac2cf4 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ab9ab17 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e944da7 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ef26ca2 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2056928a snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x222d41ca snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x224ab324 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24e22429 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25bf36a7 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2661d9fa snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2843d49d snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x285ab208 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29d39c69 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ce61d9c snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2df104c0 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ef11a61 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f4f43c9 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x303121a0 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3465d5a5 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3641aa93 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x371100cd snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a1da991 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f643b4d snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46a8f416 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47b2c828 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ef9b0e1 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50e56623 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50f9180e snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x510854fc snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x525e263c snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53fa77cd snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54473349 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55809bc1 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57a7e249 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57c23b0f snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b073b88 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b15469e snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5eccf2b1 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f9cb7f1 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6460364e snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69881fa3 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b909c48 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c109558 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d100f59 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d10103d snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f35d329 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70199f23 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70f4f930 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71591de2 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71a7d2a8 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7348f20a snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73df9744 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75128f41 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79999b79 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7af8c4cd snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84c0bcad snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x873b0fa6 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8919aabd snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89844dae snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a905819 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8bb91e81 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8bd96a42 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e68165b snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f0025d2 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93339e69 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x946c4ab8 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9661066b devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9680d383 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9dac7d65 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f246c43 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f25e562 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f4a50b2 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa78797b4 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7fbf82e snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab3967f4 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xada60ea0 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae38c35a snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae6aca0c snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf2579a3 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0550888 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb13dacc8 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb24a940d snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2c959fa snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb32cd4a5 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb65a8373 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb84ed8d0 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb88d9a0f snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb95af1d6 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9f3d233 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe487326 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0919373 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc18f0bff dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc37d9733 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc526b83b snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6a78c47 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc90aaea4 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccbeac43 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd5986bb snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf1c3f18 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1b01999 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd582581b snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd609a74e snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd89098c4 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdaac54d6 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd49f7f9 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdda157e1 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdefb690b snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfe1a272 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe08018b2 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0a3a2e3 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0d54f2e snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe442c4da snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe46b97f5 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe47396d9 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe605f0e9 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8e319ce snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9f6d430 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea22a1e5 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb9e7402 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec384f0f devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf07d5c16 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0c6ea79 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf29297ef snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf33f2531 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf441045f snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6aa75c9 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf85606e0 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8e5cf98 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa523b44 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffca4dce snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x11bf4c7f line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x38f2c181 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3b83c818 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7d164c71 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7d8d72db line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8cb2b9d7 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x91f3694a line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x92ee65eb line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xad6612a4 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xaed874f4 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xaf20650f line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb14dd30e line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf0875dd5 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf741bf48 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfb1d0f05 line6_write_data +EXPORT_SYMBOL_GPL vmlinux 0x00116672 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x001e5941 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x00426337 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x0050db13 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x0054bfcb devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x005e45e1 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x0064af6a kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x00751cde tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x0075df8a crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x008d6d22 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00aee169 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011a2711 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0129b7e1 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x01404b29 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x0143996f pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x01599785 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x01848ab4 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x0195d960 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x01c7a2b0 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f061e2 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x020629cd regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x021239f9 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x021a68d2 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x022c7b1c dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x0243a9d7 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x02514f44 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x0252c4a6 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x029000e2 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x029d1c83 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x02b2d244 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x02dec127 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x02fa920f __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03058c67 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032b1398 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034d58f2 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x034e9251 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x036b09e3 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x037c2261 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x038e6236 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x039d0001 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a24d31 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x03ae65e2 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x03b647d4 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x03b672ba ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x03bbb95b debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x03db8c02 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x03decb0d pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03fab9f5 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0408731f devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x043e0595 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x044aee13 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x044f635a phy_get +EXPORT_SYMBOL_GPL vmlinux 0x044fcd0e of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x04579aaf rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0467fa98 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x046d475f regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x0476854f devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0494b07a extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04b34eda blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c7325e usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x04c859c9 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04ead2a9 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x04fbb821 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x05360e75 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0573a0d1 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ccaaff trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x05d95a1f __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x05e00a76 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06485562 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065f8324 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x066e0997 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x06dbe771 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x06e4b11a da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x06eec14e dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x06f9b0ef devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x0700df67 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x0725c530 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x073b7890 pci_disable_pcie_error_reporting +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 0x07d966d9 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0807debd spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x087f8a5a file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x089005cb dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x08a52362 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x08a62b1c kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x08a91392 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08ca12c6 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x091fabce sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0945bd34 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0947a9ce inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x096ef40e nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x0988fdac crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x09a8ffa1 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x09a97601 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x09c244cd crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x09eb9fa4 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x0a40a500 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a5b45c9 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x0a6739a9 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x0a801f9f kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x0a8dba5c i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x0ab259e8 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x0abcbf10 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0ade0cc8 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x0af3c4ea thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x0afafe9e __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x0b00afd2 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b104ae5 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x0b21691b sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x0b298ebf clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x0b3e1533 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x0b40bc46 get_device +EXPORT_SYMBOL_GPL vmlinux 0x0b605a03 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0b7d29d8 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x0b842c87 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b9a43eb dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x0b9cd1cd ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x0bd991f6 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0be2d271 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0bf96953 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c215726 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x0c2864e9 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c428e23 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x0c71b32d pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x0c792921 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x0c9a8e1b __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0cbfa53b of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd1e32c blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cd335ca device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x0d025472 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x0d08a5e2 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x0d1ebdc5 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d5f69e0 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d9a8ba8 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x0d9d4d10 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x0da667e6 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x0dd73df5 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df80efc of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x0e060980 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x0e1ab700 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x0e605446 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x0e7d55bd of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x0e86b7bf crypto_unregister_algs +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 0x0efb9962 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x0f026646 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x0f085ef2 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0f0cdfb0 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x0f15a86b shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x0f2b5200 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f556a65 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f87748b page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x0f95ea31 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0f9c2728 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x0f9ea9f6 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x0fa52620 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0fab5316 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x0fad1463 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x0fc7e107 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x0fd693e3 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0fe319f3 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x1008323d ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x103c76df virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x105072be fsl_spi_cpm_bufs_complete +EXPORT_SYMBOL_GPL vmlinux 0x10529830 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x10651bdc regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1070564f simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x10980e92 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x10db9a02 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x10df4992 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110d2782 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x11113ea1 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11706ffb kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1192636d subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x119f4a91 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x11d50e37 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x11d56b64 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x11de531d mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x11ef9996 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x11f5e6d6 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x12139b02 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x1216d814 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1224a4d0 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x1241b91b irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1291c144 ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x1292cf79 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12da2053 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x12efe1e0 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1323c666 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1328cc3d skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x133d6972 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x134fa176 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x139ed260 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d03357 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x13d6b141 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x13e175ba blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13ea27d1 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x13eee605 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x142ef116 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x1459ff7f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x14792f69 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x14d20f72 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x14f45efc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x15061f1b sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x1514d891 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x152ec599 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x156e0973 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158efd39 ata_timing_compute +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 0x1600b97a usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x162c7794 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1634bbeb adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x16400380 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x165cc440 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x1661ef59 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x167299fc power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x16769dda regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x16836442 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x16848ab4 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x16c2b1c2 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x16dc90f5 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x16e6d284 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x16fdea27 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x171bd839 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x1735e779 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x175348fd serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x1770f8a7 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x177c3129 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17851a8d wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x17b8f525 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x17b904f4 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x181f0af1 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x183ab7bb phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x183f67ad adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1844d4d9 arizona_of_get_named_gpio +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 0x1866e20a page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x18744f91 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x18763341 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1887c754 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x189a9230 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x18c0e588 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x18f4bd40 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1922f95c unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x192fcab1 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x196ff142 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x198bc8c6 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c95ff0 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x19ca527a kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x19ec0655 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x19ed34b7 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x19f799a3 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x1a015865 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1a135a52 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x1a271da7 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x1a2e4679 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1a6b64c9 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x1a77f907 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aaa3fef of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x1aabe6b8 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x1ab0a466 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad4c2fd ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x1adec91f shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x1aec5b08 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1b070d97 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b347b3d tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1b47b25f wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1b5457e1 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bf11473 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bf25525 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x1bfc05c8 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x1c111341 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c2b0146 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1c32e831 input_ff_erase +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 0x1c6d234f fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c873983 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca6a997 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x1cb01e12 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1ce6a252 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x1d1a39c8 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x1d363acd usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d98ad80 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x1dadd170 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1db19e83 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x1dc06cc0 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1dd10b5e pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x1de0a967 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1debdf11 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1dfe1a47 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e49e568 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x1e592cf0 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5e3717 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x1e714e00 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1e780fed ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7f606c get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x1eb7f0ef pci_user_read_config_word +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 0x1ee2116a adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1f1dce30 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x1f2b82a4 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x1f4c87d1 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x1f50d1af devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x1f819e13 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f943afb adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x1f953187 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x1fb002ff palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x1fd09f95 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x1fe3445d xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1fe913f6 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x1ff86b52 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x1ffce150 kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0x200c7c99 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x2036c657 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x208d2d34 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x20966cc0 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b563be rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20f323b0 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x20fcb75a rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x2100c942 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x210260e9 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x210d3be7 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x211e0a53 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x21255674 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x213516f5 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x214545e2 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x2155dbac rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x21577ca5 of_css +EXPORT_SYMBOL_GPL vmlinux 0x21714ec8 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x21956d33 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x21a39e24 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21e62938 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x220c6c2a phy_create +EXPORT_SYMBOL_GPL vmlinux 0x22506e81 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x22518187 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x226433fd usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x2280d4e6 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x228e414e unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22aa00bd pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x22e17233 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x231eb627 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x233201aa stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x235c3d12 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x2360a605 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x23653849 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x2374b535 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23a68530 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x23b3ffba bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x23cd65b5 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2401c3ef ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x241247d7 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2438ec16 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x243bc56a rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x245f207b cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2480bff5 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x249b0c34 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x24a37c19 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c1b5f0 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x24e3cd48 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f54647 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x24f68142 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x252433d1 user_read +EXPORT_SYMBOL_GPL vmlinux 0x252a080a devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x25ae11b8 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x25cff12d ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x25fa3fbc flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x2602a47b kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x2616b08e fsl_spi_cpm_free +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2642070d seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x2649207b init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26524b96 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2652c556 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2653d993 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x26549f6c tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x26623bc1 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x26679d5d cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x266ee1fe rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x267713fe usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2681c31b kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x26854bf9 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x26a58bf6 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x26b40306 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c4ca66 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x27025422 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x2704b28c disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x27189a75 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x271f917d rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2774a774 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x27949484 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2794fc5e of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x27971218 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x27a07fb2 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c351e4 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28117317 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x28157f68 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x2819a5bd dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x2827b11b crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283671d9 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x28815988 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x28a2ce1a kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0x28c28e5c crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x28c8ea9a smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x28dd2a06 mmput +EXPORT_SYMBOL_GPL vmlinux 0x28f9a5a8 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x2908a422 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x2917e2a3 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x2943553a perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x2947d58d shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x2994b849 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x29b5d880 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x29fea4b3 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2a3744d7 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x2a44098c component_add +EXPORT_SYMBOL_GPL vmlinux 0x2a69f58e component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x2a6a293f crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x2a756c36 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x2a8c8f14 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x2aa36191 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x2aa3b437 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x2ab7b22a inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x2ab85998 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x2afa6773 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b21b576 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x2b35ef93 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x2b4fd2b3 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b6d0a85 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x2b7231e8 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x2b8bda50 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x2b918d71 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b9d21c3 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x2b9d5c63 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x2ba437fc sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x2bb806d3 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2bb8d4d5 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x2bbbf53e ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x2bdedaae rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x2be92014 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c225c28 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c448910 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c4a23a2 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x2c590616 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2c591a6a rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x2c79f833 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c845ed1 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cc0adb4 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2cc4fd72 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x2cca4bc7 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d082e2c devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d28acba bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d57d062 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5c980c cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d65be0e ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x2d6a8dbb gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x2d8aa64c key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x2da9bf9c apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x2dc1aad0 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dd7943a of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x2df3f08d __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2df85e9d serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x2e06ec69 ata_sas_port_alloc +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 0x2e7ce6b0 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x2e82d9a5 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x2e88556c devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2e905742 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x2e919738 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x2eaafd6b kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2eabcf2d ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2eadfb6d driver_find +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2f093876 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2d43ed of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x2f40adea regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f65da20 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x2f7e0c27 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x2f82f340 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2facd355 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x2fb4d748 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x2fb58b65 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x2fc7a247 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x2fd62304 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x2fdbdfee blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x2ffbad78 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x303fdac6 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x303ff3e0 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x30512256 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x3067a325 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x306ec5ed queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x308596fe dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x309477fd event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d87d9b clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x30e208a4 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3151330a swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x31688009 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x318a955c tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x3194f81b unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x319b934b usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x31a1f67b crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c47f28 kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31cfc0d1 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x31d23dc3 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x31d95a4f sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x31e91cf1 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x31f52e3e __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x321bd140 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x322dc48f dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x326fdcfd driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32abb9c2 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x32b21298 ata_dummy_port_ops +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 0x3303a059 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x330bc8b7 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x331106e6 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x332b3483 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x335afca6 sysfs_remove_files +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 0x336d96c1 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x33a189ab wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x33d976be scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x33f804f7 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3424eb34 debugfs_create_devm_seqfile +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 0x34ae0246 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x34cd0303 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x34d157d7 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x34dcd12b md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x34e38689 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x34fda67e get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x351134c3 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x35210182 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x3522492b devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x352556e7 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x35439781 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x355dd4a1 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x3575fa91 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35aebd92 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x35b8c32e dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35c0c0e5 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x35c8ddd5 fsl_spi_cpm_bufs +EXPORT_SYMBOL_GPL vmlinux 0x35ee160b blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362da987 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x363aa244 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x3653f56d usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x36584580 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36aa6d5f dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36d48902 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e86b48 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x3704d219 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x3755b8a5 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x37615c30 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x376c70e0 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x376f273b devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x377be8b0 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x3782dab2 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x379f252d blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x37a6eabc blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x37ce3019 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x37cf196c raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37dd1a12 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3832e688 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3845d363 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3863d6aa usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x386585da rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x38675327 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x388892db param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x388fe432 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3898e545 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x389a36d5 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x38c35470 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x3908cd7d mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x39140169 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x392a6e15 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x393294fa dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x39486e00 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x394c55d5 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x395c05e3 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x395f7341 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x396651ae mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d7df11 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x39db1b2f __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x39e5c221 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a0a816e crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x3a196e79 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a32a909 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x3a4b9c54 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a54d9f2 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x3a55a6e8 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab6de8c inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x3ac4d225 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3adb7db0 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x3b08aace kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x3b33513d of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x3b50e840 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x3b6d853e md_run +EXPORT_SYMBOL_GPL vmlinux 0x3b795916 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x3b993167 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x3ba00c2b hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x3ba1a7b4 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x3ba1f666 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x3bb0e450 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x3bb15897 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x3bb57d2c power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x3bd6f59a sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x3bd7f184 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x3bf2f80d led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x3bf7a04e rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x3bfd766c realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x3c1895cb ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x3c238ead device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x3c495a76 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x3c663f40 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cb963b3 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3cc88f9f scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cdc5f93 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x3ce64b0d virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x3d0529d7 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3d07db74 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x3d0f2894 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x3d30e21b device_dma_is_coherent +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 0x3dab5b1e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3db6abba nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x3db73c1e irq_create_of_mapping +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 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3dff0fef sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x3e0b9d71 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e2bb5e8 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e8d8017 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x3e969859 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x3ec80a4d spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x3ed206bc regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3ed32c44 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x3efcb2a8 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x3f07fa49 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x3f1cb321 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x3f244e54 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3f2de9ad ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x3f3ae36d __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x3f3dced6 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3f4b3e64 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x3f50abac blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x3f6ed31a ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x3f6f60bd ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x3f71a768 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x3f8218cd extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3f9b6673 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fa9f1fb pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fb444e5 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x3fb7ccb1 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3fb98227 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fd741ea ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x3fe06def blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x3fe83408 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x3fee5cc6 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3fefe1b5 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x4014845f unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404e9601 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x405930de unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x406862de task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x407d168f ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x40954e7b ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e039b9 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x40e1e929 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f8373c mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x41028ae3 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x4108a8a4 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x410c9e35 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x415c2860 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x417033e4 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41841b83 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x419765c9 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x41b885d9 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x41c27a1b devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x41c64595 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x41c8e794 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x41f9e5e7 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x420e9786 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x42119018 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x42220a3d pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x4235dfde kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x427b8e27 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4284062d pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x4285d45f tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x42873333 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x428ebdae sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x4292b48e bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x42deeb8a pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x42e7546a usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x42f251b4 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x42f3d113 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x43322e47 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x43357f4b device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x433f5f00 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x434b8daa simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43895cf8 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43ff0db2 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x4455c7ee irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449c52c1 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x449f6e61 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x44b66f91 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x44b6a5c1 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44bc0325 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x44c7625b sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x44f0280a dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x456981e1 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45813c90 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45bf6a62 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x45db31a2 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x45ef2f0b serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4672e264 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4675082e dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x467ed9dc transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4690d48f find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46a8db23 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x46add7f6 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x46bba4d5 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x46d863ba relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x46dd7e97 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x46e2df65 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x46e6fd20 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x46ed8ca0 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x471414d8 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4726d3f7 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x4743746d ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x47480c34 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a466f2 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x47a7ae4a usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47af07e1 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x47b305a1 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x47c67a77 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47e4b783 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x47ee26ab rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x482488d4 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x48356cc5 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x485c21c2 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x485db700 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487a0232 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x487b88b2 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x487c3cc1 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x487dd648 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x48966a2c regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x489a0395 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x489e18ee __class_create +EXPORT_SYMBOL_GPL vmlinux 0x489f0807 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x48aed7a8 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x48b5337b tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x48e29c97 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48f47e15 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x48f86cf8 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x490a2f16 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x490c4608 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x49105849 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x495241a1 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x49805347 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499a7701 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x49a8f324 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49ecf7b1 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x4a07066e fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x4a1de9ee regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x4a326eee rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4a35f95a class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x4a5c9fbf component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x4a6e9c3c md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x4a803027 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac8281b bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x4ae2cd33 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4af0bcb1 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x4b1601fe devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x4b3938c8 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x4b5088e5 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x4b63f471 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4b6b67a2 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x4b746388 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x4b7cb991 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x4b84c36f eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x4b919f1a smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4ba96d68 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x4bd58b99 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x4bf946e7 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x4c42ec21 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x4c456b5d ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x4c4ff37b __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7f4330 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x4c907914 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4c914576 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x4c9b084a phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x4c9cf139 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x4ca9fb05 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x4cb0e8e4 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x4cb4b44a tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x4cb73a5b pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x4cc9b3e6 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x4cd6cecc serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x4d204366 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x4d31a3d2 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x4d4b8317 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4d63ea16 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4d6a4cb6 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4d77de3b da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x4dab24d6 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x4dca84aa nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x4dcf550c crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e04c62b nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e19b9e3 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x4e1e5f75 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x4e20880c regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e592903 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x4e61e933 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x4e62c772 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x4e6619c3 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x4e68f6c8 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x4e855308 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x4e90a7b1 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x4e9a6e38 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x4eb70b51 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x4ed46dff stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x4ee723e7 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x4eedf171 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f1667b0 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x4f293db6 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x4f4ba825 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7853be usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x4fadacf4 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x4fb80433 __irq_set_handler +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 0x4ff99860 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x4ffd4c84 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x5046c58c tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x5052c291 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x50689f0f devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x506b3e59 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x506ce7fe usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x507596d8 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508fbe04 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a44d39 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x50b9979a ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x50ff7673 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x511a15da regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x51214203 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x51467922 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5153479e of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x51692ae7 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x51702c6e ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x518663fc dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x518a4a0a uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x519f5e7c proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c4065e regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x51c5cf16 fsl_spi_cpm_reinit_txrx +EXPORT_SYMBOL_GPL vmlinux 0x51e3cc21 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x51ea9760 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x51f391da device_property_present +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 0x5229b4f7 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x522c35a1 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x52457488 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x52637a01 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x527211a2 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x527b35c3 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x52aa8e53 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x52ab6fee cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x52bab959 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x52c28c9b inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x52ca9aad ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x52d99528 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x52f8f320 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x53323bb1 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x53409af0 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x534cd0cd scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x538034d4 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x53877b47 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x53b75d21 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x53d29594 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x53e2c3b4 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5424b1d8 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x54325448 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x544dee1b dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x544ea925 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54625d3f evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x54843076 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549d4160 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x54a164ce led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54eecabc powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x54f1e27e of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x54f3eaea blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x54f4de91 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x54f5d1f3 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x55036f9a dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x55141c2e ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5550777e mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x5550e9ce ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x555874cb find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x555e8233 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x557475f0 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5591eea9 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x55c2f882 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x55d1be77 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f51ef3 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x5600e890 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x564a0580 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566ee015 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x566ee34e module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56a636be __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +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 0x5715a839 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5718ea97 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x576cc4ab pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x5777019d pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x577a5594 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x5780ccb2 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x578747d0 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b8b756 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d08081 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x57e29a90 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x580dab29 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x582459fc dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x583a5975 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x584893d6 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x58525237 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x586293fc ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x5874a873 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x587eaee3 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58ab753d watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x58c7a0c9 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x58d608a1 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x58dc9436 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x590e4682 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x5915c05e ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x59196d0d __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x591eeffd __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x59214de7 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x592d93d5 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x59398cf9 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x5941c4d2 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x597c19d2 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x597f8a48 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x59a59eb5 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59c98322 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x59d950c2 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a1a055f task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x5a3c881e clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x5a4f8662 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a84ebf2 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x5aa24175 find_module +EXPORT_SYMBOL_GPL vmlinux 0x5aced00c pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x5ae1537d cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x5ae48540 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x5aefeaa7 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x5af9961a elv_register +EXPORT_SYMBOL_GPL vmlinux 0x5b051f66 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b6aba38 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x5b84df4a rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5bc1566d regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be0265a tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x5bfafa2c devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5c0b18b9 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c6793cc regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5c724a43 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x5c924049 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cd85736 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x5cd92840 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d3d6558 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5d3f6797 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x5d49c87a devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d4c20e7 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x5d4f8ed4 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d892169 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5d8d0801 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5d9a2be9 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5db1ce8a shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x5dc7f130 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x5dfb815a kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x5e073f61 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x5e28b87c mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5e3c36fa extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x5e42ff45 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e55c669 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5e7bdc42 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x5e921421 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x5eab9ada usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x5eb33dc7 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x5ed1526e blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x5edc9841 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f184338 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f1e5021 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f35243d dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x5f359975 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5f45afe4 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5f4d9855 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x5f5056ed dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x5f69a607 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x5f703a75 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f8b8ba9 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x5f9c3b7e spi_async +EXPORT_SYMBOL_GPL vmlinux 0x5f9d5c12 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x5fb7f2f9 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x5fcff5aa usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x5fe92033 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x5ff0f193 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x601376da rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x601918f6 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x603443d8 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6040e69f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x605d7bd5 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60815037 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x608349a9 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a1f1c6 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60b102d0 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x60b380c3 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x60c395fc sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x60ca6cda nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60defdee dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x60f183d6 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x6112bfcf ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x611769bf cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x611996b3 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x6126aa6a of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x613661f4 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x61435349 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x6151c81a blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x6183d2cd da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x6195c6e9 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61ac3584 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x61bfbd2d regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x62121244 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623f39e4 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x62496412 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x624b907a device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x62552ede extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x62843223 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x62d22cac rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63290118 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x634be6d4 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x63521cfb fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x635972a0 device_create +EXPORT_SYMBOL_GPL vmlinux 0x636b105a blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x636c2023 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x639d14f5 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63c7fca8 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6418b28c kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x641a3c70 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x64203a18 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x643ca47d virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x64587b6f fsl_spi_cpm_init +EXPORT_SYMBOL_GPL vmlinux 0x645a67f6 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x64bcfcb8 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x64f1b666 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x650677d6 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x65085729 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x650d3f4c virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x6552b8b2 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x65606fdd led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x65757285 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65954726 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x659bab71 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65ea8880 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x65eb5e5d perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x65ed4ff4 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x65ee0c44 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x6608794a ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x660ca8b5 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661cd605 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x664bcce0 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x66587524 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x668319e6 disk_get_part +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 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66c9c38c dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6716c408 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67af186c mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x67b3e365 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x67bff86c power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x67d92e16 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x684433eb firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x685d4371 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x68784c2c device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x689e2694 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x68a9c0a3 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68afaab4 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x68d44ecd fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x68f8b823 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x68f908a2 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x68fee7e2 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x69219488 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69314b66 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x697e3306 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69bfedc1 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x69c58aa8 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x69e05daa sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69e34686 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x6a0e0994 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x6a1a9709 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6a37e4fe blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x6a49527b dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x6a49a673 ftrace_set_filter_ip +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 0x6a8ca01c xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x6a9187a6 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6a9fd840 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x6abd5a44 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x6ac59fc5 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6b03bc21 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x6b0b3d73 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x6b279901 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3afccc gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b6823d7 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x6b6a0a89 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x6b7d5cce da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6bc37532 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6bc5512d inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6bdd12f3 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x6be7080f usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x6bf37845 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x6bfe96dc rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1bd36a irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x6c305afb max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x6c458670 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6c4a2188 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c677cf6 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6c7e1f4b ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6caf08a3 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x6cbf6fad pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd7d40f ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x6cde8537 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x6cfa81d7 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6d0b295d pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x6d19a70a inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6d1dbeee sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x6d2a11da __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d32426f unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x6d432892 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x6d4850f5 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x6d52d844 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x6d5d628b split_page +EXPORT_SYMBOL_GPL vmlinux 0x6d7b5a58 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x6d9a2dbf perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x6db1787a usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x6db46852 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x6dc08fb2 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e27cb68 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e4f234d irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea29b87 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x6ea70883 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x6edabdbc sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x6ee89e6b of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x6f1442bc hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2709f7 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x6f5e0c05 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x6f69d453 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x6f876087 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6f945c8c __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x6fb23c58 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x6fb32b2c sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x6fcc9e19 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6fe0784f powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff44e66 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70342371 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x703b2b98 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x70434c4b ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7092377c usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x709948e7 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dcd515 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x70e34dde kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x70e6b944 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x70f06260 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x70f54124 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x70f8e063 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71225f5e virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x712692dc regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x713aa7d3 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x7157f7d2 usb_hub_clear_tt_buffer +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 0x718dc377 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a770d8 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71adf86c cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x71c1f6b5 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x71ca2408 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f97a6b bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x71fac08e leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x720db169 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x721746a8 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x725a6698 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x72704e87 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72bcca3b ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x72e9ea72 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x72f22c8b device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x730a4589 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x73182370 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x7327377e blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x73449091 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7364837b __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x737c19c7 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x739e9aec hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c0483a trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d0e7e3 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73ea5138 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x74003049 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x745cd330 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746bf30e regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x748591b2 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x7493154f ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x749bf619 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x74b4c48f bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b8303f regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c9da7c fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x74d18759 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x74e103eb dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x74e26bd2 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x74fad227 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x751cb575 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7538d269 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x753f7657 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x754c1d82 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7578e3ca arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x759793f8 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x7598b7f7 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x75a31ca9 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x75c9d8c3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x75ce1ef9 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x75dc61c3 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x75f42535 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x76199924 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x761ed6ec hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x765ffa57 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x766ef8ef irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7690cefc pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x76d894a9 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76df330f rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x76f66676 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x76fb38a1 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x76fdfeee skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x77158eac usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x7716f6ce dev_attr_sw_activity +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 0x77b7e2f1 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x77c64997 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x77e270a6 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x780147a5 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x782c0e84 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7832522d gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x7849cb02 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x784cba24 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x785aaed7 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78a5530d exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x78acb552 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +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 0x78e504e9 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x790ddc82 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +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 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79b7d119 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79dc029a elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e1d7dc tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x79f94b10 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x7a0cd9e2 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x7a245743 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a3a54f6 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x7a473772 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x7a5f994e put_pid +EXPORT_SYMBOL_GPL vmlinux 0x7a778e99 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7b0d0d18 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b62e723 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b83261d alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bb47159 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x7bc85371 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x7be0c431 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x7bea2241 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x7c079b90 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x7c09e758 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x7c0fbb79 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x7c184cc7 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x7c217899 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7c29b909 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c6e45ec pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x7c823683 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7cad7dbe input_class +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cda268f ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x7cdc90a7 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x7ce51877 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d0e6aad regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x7d3fe747 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7d57960b root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d76862c tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x7d83fc2f extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x7d9e7c5a usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dbd292c kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x7dc1e388 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de12c1c tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7deeb12e irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x7dfa073e class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x7e083b10 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e28374e clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x7e333534 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x7e4b90eb crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7e5244f3 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x7e566583 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e740242 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7e754e0b regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eba02e3 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x7edc1c3b serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x7edebeff hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x7ee4c06e gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x7ef16f87 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f026549 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f2a8166 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x7f4a28cb ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f8831f5 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x7f887a18 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7f8bf4d9 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x7f982873 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x7f9ac9f6 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x7fc6fc92 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x7fe02939 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x7ff615c5 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x800081de rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x80077791 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x8016d67e pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x8023adda hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x8047af91 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x804c0b06 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x804cf4c0 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x8057205c rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x80739147 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x80742f7c mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8096ef35 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x80b86ea9 kvm_put_kvm +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 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8129c869 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x817f4b7e crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8183fd69 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x819ccc80 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x81a20750 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x81a8fbf6 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x81c05ac8 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x81c7cf8c virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x81caf2ba netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x81f49b0e tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x81f8a7b2 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x82081ce5 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x820fbc45 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x8221d989 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x8221e182 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x822e74c9 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x8248dd2b platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x825d6f41 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x825ea976 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x82825fa5 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x828ae181 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82eb8d9f pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x82f87473 component_del +EXPORT_SYMBOL_GPL vmlinux 0x83216ae6 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x834bfff7 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8360bb4d iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x83704404 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x837d5898 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x8382d137 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83b1a3e5 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x83bbe281 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x83ccd3c2 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8426d790 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x8440f9f9 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x845df8fe pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x845fd760 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x846b59ea ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x8485ea95 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84c4915d dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x84c579a0 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x84e586c7 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x84ef7639 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x84f420c4 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x84fab5ad pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x851ec230 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8547468a wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x85495021 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8578f32c sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x85abc02f sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x85af93f7 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x85b0c699 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x85b6293f __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d403f6 pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x85deeddf pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x85e591c2 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x85e7e605 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x8600d5ec ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x8605780b vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x861159c8 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8616a24e posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x862919b9 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x863b7166 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86444cfa devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x865c0195 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869348f7 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x86bb614e of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x86e9180f locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x86e9a453 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x86f0d672 set_cpus_allowed_ptr +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 0x8726e758 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x873a1650 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x875aa1aa of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x8779f4be crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x877d0f69 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x87c50ed4 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x87d32622 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x87e0552b stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x87fa84ad arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x880b54e1 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8819f3b7 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x881fac77 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x883294c2 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x8853fbab devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x8854278c register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x889e3d27 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b6ed06 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x89007bca kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x890280bb ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x890496fe ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8938009b of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x896212f7 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x8988b658 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x89895013 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x898bb5fa sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x8995311b of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x89a61dfa __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89cef61c regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x89d1d4b3 kvmppc_ld +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89f7deae scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x89f95897 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x8a0897ab device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x8a1a1766 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x8a1eda1b rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8a35e8d1 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x8a434bfa of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x8a466c68 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x8a4ba1ac usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a608a5d usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a80b5d8 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x8a86525b class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x8a86550a ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x8a868fe1 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x8a890cb0 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x8a930b11 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x8a9c1f4a generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x8ab69ebf spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae9716f crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8aea514f cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x8af6989a thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8afa2559 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x8b046fe4 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8b0ab12b ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b17aebb dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x8b207784 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x8b5ca347 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x8b5e0748 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x8b607858 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b76cee7 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b906bf1 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x8be2b066 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x8bf16028 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2c1f38 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x8c434263 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x8c53d9f4 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c736323 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c964a1f regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x8c9fa461 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x8cafbd2c dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x8ce306fd devres_get +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d1bff80 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x8d2e348b napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8d4bc7d5 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8d52aa3a serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x8d7a2695 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8d7dd835 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x8d9eed74 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8da88ae1 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x8db128de ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x8dc3dd3b bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x8dca1cda wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8dd66827 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x8de1bc18 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x8dfa82af regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2da3bc rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x8e34764d ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x8e4bc8d0 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x8e4e31a3 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8e5dae1b swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x8e6993ac shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x8e816a0d nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x8e89c6b4 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8e976b5f of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x8ea859fa tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x8ebca4f7 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x8ec0599c watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x8ef0011f devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f1ee51c kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8f42c2ac tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x8f5567a8 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fa6496f scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x8fb992d6 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x8fced602 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x8fd1b14f wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8fec72cb led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x90362e5a ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9061a3e1 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90757b84 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x907873da spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x9083a24f aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x909dc9ab component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90c7ee64 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x90d8f4ca con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x90e78a55 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x91084622 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x911dc98f rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x913642c4 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x9142b1f4 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9179a2d4 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91a2cbaf pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91cc3d30 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x91df3cdf __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x91ead2b8 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x9220d406 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x9241ba89 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x9244ea12 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x924760b7 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92639be3 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x927128b6 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9274812e of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x928f0479 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x929dc160 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x92b2fe93 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x92cf47a0 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92efdd4f get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x92fcdc2f usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x92ff642f bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x93083e39 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x931d2b76 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x931f75c0 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x9352ed6b class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x93554183 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x9355db38 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x93691426 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x93842bf1 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x938c30bf wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x93d14d95 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x93d57fff dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x93dd84b0 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x93f3bf6d max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9428a9d6 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x94579bf8 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x946e7eef irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x94723a3a pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a09b57 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x94c3d0f5 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x94c87469 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x94ce40fb napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94e13319 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x94e41f6e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x95114436 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x951e0e98 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952cbfdc pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x9539358e kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x953e06c3 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9568023e spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x956f30aa spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959aa311 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x959e34b6 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x95a72946 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c30f7e kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x95e62fb9 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x95fb6409 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x9602a22f unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x96197eba crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96285ceb usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x96423381 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x9647ad1c pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9663b80a tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x967cfb6c user_update +EXPORT_SYMBOL_GPL vmlinux 0x96a75976 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x96b687e8 fsl_spi_cpm_irq +EXPORT_SYMBOL_GPL vmlinux 0x96b801a9 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x96cd2adb cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x96db3e40 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x96deb6b2 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x97068a31 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9744edbe gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9745ff84 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x974a313b nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97562d4f sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x9769bcac powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x979a02b5 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x979ec726 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x97d9d8e4 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x9801ed0a trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x9807111a pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x980e61ac sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x9817e286 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x9818ad3a dev_pm_disable_wake_irq +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 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9858b513 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x98782daa devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98809b1f uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x988bb8ab cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x988c7c76 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x988e81bd devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x9897eef8 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x98999c7d regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98bd39f3 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x98e67e6b mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x98ebf582 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x98ed65b7 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x99128e40 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x9918b5e4 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992f2663 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x994f4a57 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x9950dbf8 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x9953bdfc dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99617f4b ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x996f62a2 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998f34d5 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x9a0c0e3b dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a4b569a wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x9a7d030e devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x9a84b682 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8fdc24 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ae23c3b phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af323e6 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9b203003 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x9b4a11f3 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b5ab0bd xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x9b5d1aa1 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x9b70f567 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x9b8835b6 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bbecfbf unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x9bc4fb94 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bcc478e spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x9bd431bb rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x9be09e55 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c087c92 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x9c10f679 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x9c12f22c crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x9c15a079 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x9c25fef2 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9c2bca60 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9c4da40d rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9c588692 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x9c601c78 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x9c785047 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x9c857066 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x9c98b43f blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x9ca65bd1 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cf3f2b5 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d2ff63c __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x9d53708a __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9d7d628c fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9d84ea8d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x9d8e4c3f virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db91eea da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x9de81129 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x9df3b838 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x9e08efae regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x9e1047f4 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x9e190a9e ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x9e31da69 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x9e37ae6f pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x9e3f8eb6 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e529724 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x9e707880 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9e72517f devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed77bd7 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x9ef04ad2 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f35d772 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x9f6d7a18 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x9fb08d8f device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x9fbffd9d sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd747ae iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa01d0abb pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa028b737 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xa02d43ec ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xa05ced02 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa0655501 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xa0687da6 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xa06f4815 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xa0799a99 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa09cbbb3 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xa0a0a84d tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0bbb3b1 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xa0def4b2 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xa0e4d6af rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0f61a6d cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xa0fc9454 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa1292b0e ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa139b1fd __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa173e786 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa19ce4f9 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xa1a2a9cb skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xa1cce684 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xa1d70298 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa20fed8f da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xa2124a36 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0xa22d3861 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xa263567c ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa294a627 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xa2a89fd4 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d396ad pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xa2e441de blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xa30c2203 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xa3180e14 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa364d71d spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa36dfb2e scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa39afb81 of_property_read_u64_array +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 0xa3bcf756 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xa3d333a3 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xa3d5a02a inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3ed01e6 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xa3f5c649 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xa413f4e8 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xa423d198 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa48175d7 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48287bb ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xa49e9528 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xa4b0b37b usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xa4b9ec93 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa4de91e0 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa4e55aa7 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xa4fef72a crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xa52d7287 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xa53c2a8d n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xa55ae840 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa56e22e1 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xa58919f3 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5e858e6 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa60a9bbe kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa625a666 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xa62c328d dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xa6333160 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa6b31a86 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xa6c8d8f7 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xa6cbe02f event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xa6dcb38c dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xa6dd40b2 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e92d0a ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xa6eeaf13 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xa71e95fe kick_process +EXPORT_SYMBOL_GPL vmlinux 0xa73d7c95 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xa7473989 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xa74e075c blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa7606c8b pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa773bda8 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xa78e813a crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xa7b0bc84 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xa7dfc205 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7e145da da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xa7e2183c pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xa7fca137 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa7fe395c tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa831569d ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xa841843a sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8826b57 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8f558d8 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xa9035484 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xa9056b55 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa90e7822 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa931ffe9 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93271a5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa9383303 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa960363c clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xa965e79b mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9a7a742 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9c03fcb transport_add_device +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 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa3b5ce6 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xaa3c07b9 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xaa938fb4 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaae5fc0a gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xaaffc223 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xab106613 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab361d54 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xab3c1e17 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab4d7c29 debugfs_create_atomic_t +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 0xab600f9a gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab78a578 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xaba25ade blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xaba2db15 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xabb2c9ae mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xabbf96b8 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xabbf995f tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd18205 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xabf4a3c5 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xabffd121 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xac37145b bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xac4d2341 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xac7e09d9 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xacc81aac get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xacceb055 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xace5a572 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacedd536 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad1c566e gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xad2db952 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xad5b1824 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xad5ce8c0 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xad82d604 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xad8c22d3 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xad9f3929 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xadab2929 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadccbea9 platform_device_del +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 0xae060a41 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xae3598a1 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6a9596 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xae6e0560 kvm_flush_remote_tlbs +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 0xae971ce7 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xaebb5933 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xaee33f6f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaef619e3 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xaef82b6a filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xaf4d8802 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xaf5a4de7 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xaf897c34 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xafb83b79 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xafb94771 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xafcaded2 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xafeb61e5 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xb014498e pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb0433380 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xb055b7cd gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb086c374 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb0910084 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xb09ca811 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb0a70903 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xb0b41127 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c0d4e4 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xb0c9a122 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb1004216 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xb117dd47 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xb11b6a70 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xb1216eef of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb13c96ec driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb158761d of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xb15adc6f xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xb1923bae nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb195f800 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b09030 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xb1b852f1 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c1c59e of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xb1c67180 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ec90b8 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22429e6 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb22a52ed platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xb25f4f3b xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb2800221 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xb289ab3e __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb28e6e5f vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xb2d55804 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb300f5db i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xb328985b unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb3554613 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xb3970bb9 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xb3b0bafd unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xb3b4b2b5 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xb3b68f55 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xb3b7373b vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xb3bc1b16 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xb3c91b9f ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb3e39a2b crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xb3f58e1c sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xb3fc22f3 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xb4152b6b __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xb416fc81 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb420dcf5 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb4486ecb exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xb44f871a inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xb45731f2 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xb48072a8 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb4a514c8 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d11d67 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5010aab driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5312713 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53806d9 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb53f0d6c ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xb562dece inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb57e336e blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xb581c312 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb5878541 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb58943d0 nvdimm_bus_attribute_group +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 0xb5b05d91 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xb5b42840 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5d23f59 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xb5d6514e __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xb5da504d clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xb5e3983a regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xb5e3cdcb nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xb5e5d16e hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5fc4d5d gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xb600c320 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xb6059274 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6541d8e blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb65c730c request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xb6a2a791 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b2b65e usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xb6bc4b6a of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xb6c3f372 device_move +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6ea7f2d of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0xb6ff2ddc posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xb70657d4 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xb7182ed4 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xb7223b43 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xb73298a7 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb75a14e2 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xb76e2806 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xb77937ce usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb79f857e tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xb7a66960 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xb7b25596 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xb7b29694 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb7bd0156 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xb7d6ab76 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xb7eabdc7 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb7f6cf23 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8116998 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xb82f5793 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xb831c7cb md_stop +EXPORT_SYMBOL_GPL vmlinux 0xb8324b4f rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xb84735b9 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xb84f3228 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xb868b0be rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xb876302e fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xb880d75f get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xb89f7f00 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8d5de53 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xb8e09ca7 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xb8f0ea0c reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb8f88937 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9059161 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb90670ae kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0xb95492d6 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb97faed7 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xb99c1128 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xb9b43595 sysfs_remove_mount_point +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 0xb9e1c5a3 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xb9fab164 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xb9ff64c5 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba31afa5 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xba35ed8e watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xba39acf5 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xba670b4b posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xba814392 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbacc7c62 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb060497 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb10274b pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xbb481f1b wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbb5bdee2 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb7344f2 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbb8674bb rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xbb93734d power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xbb9ea22e of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xbbc53321 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbc01fab8 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xbc307db9 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xbc62c52a do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbc9f8d04 bmp085_regmap_config +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 0xbd192537 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xbd295970 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xbd387a4d rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd52ef18 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5eba6e clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd71fb90 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0xbd75c171 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0xbdc49552 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde8dc00 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xbdedb146 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xbdfb2d8e fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1e7e29 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xbe3def03 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbe5e729b cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xbe5e80df crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe795bf2 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbe84078c cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xbe93602e of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeae4aad crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xbeae6d8d __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbebeee59 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee61178 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf342825 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xbf411521 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xbf6293cd regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xbf91b64b i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc94bb9 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbfd60656 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xbfd81cd6 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbfdfcdaa crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xbfe133df kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfebdd9f dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0484099 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc079c62b fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc07ce5a1 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a0c1c9 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xc0a60cf7 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0adeac3 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f0a064 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xc0f60f9d raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xc1022c95 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc10599bb fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xc1179bb7 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc11e3bdc bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xc123cafc vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xc128f579 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xc1343e8c regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xc16c063f wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc1703da3 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xc172f56a usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1bd5a55 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xc1cea64e pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xc1e4b903 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc21636a2 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc24844e4 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xc27d15eb skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xc280709f kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2b7df07 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2d9af95 kvmppc_st +EXPORT_SYMBOL_GPL vmlinux 0xc2fe8483 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xc3032270 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc3155411 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc31fee19 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xc323296d pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc342b14b __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc3498237 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xc34de341 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc35c80b4 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc38190aa devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc38f966b pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xc3be5860 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xc3d94870 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xc3dce95d rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc3f7515c of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xc404c4ff ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xc40a7a20 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xc4182adf sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc427f1ae ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc437bdff i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc43acb42 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xc43c9323 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45e394a rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xc46ef830 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4a46f8a key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xc4a55f21 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xc4bd9fdd i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xc4c0c97b usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xc4ccdcaa ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xc4cf6e77 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xc4d640ec pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xc4fd0cb1 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xc53500a4 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xc539d264 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc546a77d xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xc55e98cc cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xc55f7c35 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5814ae5 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xc58a1687 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5e96bdd arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xc5fb990b sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc627431a alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc630531e user_describe +EXPORT_SYMBOL_GPL vmlinux 0xc639be4d usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6407778 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc6632ea6 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xc665e823 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc673c19f irq_domain_add_legacy +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 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a78093 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6e7690d sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73ebfb4 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc7589911 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc776792b cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xc78a13af pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7ec4e26 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xc8017f28 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xc81c67f6 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xc8338880 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xc85f8bc4 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b576de trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xc8ba14ac virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e2b3fd md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc8e61cdd phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9153c4c regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc918f5c4 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xc9336cb8 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xc9513431 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95f5e46 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xc95ffe4c __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97ab194 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9882850 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xc99e1905 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca031c07 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xca1f4a23 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xca6adf11 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca91c5a1 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xcaa4b0c4 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xcab1f74a usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xcab4b6cf ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac34eaf of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xcacf8628 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xcae2a8e5 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xcae8f31e __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb261ec8 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xcb3ead83 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xcb3eafc4 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xcb45760d vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5de628 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xcb5ee621 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xcb665648 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcb72f347 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0xcb7a5961 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xcb9396e1 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xcbb46da3 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xcbc04ebc phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xcbda93af wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xcbde0e48 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbeec12d uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xcc0d746d trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc1a67fb mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc4bb5ee regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xcc666a7c get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcc68821a ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc86175a rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xccabbb93 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xccb22ea3 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xccc276a0 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce54475 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xcced3931 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xcd0541b8 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xcd073385 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xcd28859e scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xcd2fab3b gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xcd3c99c8 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcd67de95 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xcd791321 fuse_request_alloc +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 0xcdcdd9ec subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xcdea54ce hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xce1b4c96 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xce3a054e tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xce449908 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce70c3fe usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xce7233b0 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xce7dfde0 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xce91a01a tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xcea892f1 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xceaf40e8 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xced7bad7 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceec1c0a ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xcef2dd96 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcf06ce0c clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xcf3117ba sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcf4e6b38 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xcf514a71 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf74544c ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xcf9aa331 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xcf9bb831 inet_getpeer +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 0xcffb6ec9 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xd024a730 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xd028c96d usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd03e536f i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xd04f5d72 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xd05c71ef kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06dc9d3 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xd086ea6e device_add +EXPORT_SYMBOL_GPL vmlinux 0xd09d6558 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xd0ade83d of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e82085 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xd0fdd545 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xd1124837 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xd118a9c4 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd140c594 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xd1558d2a tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xd15b7df0 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd16b304c serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xd18ef0fc nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd1ce92ad pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xd1e186b3 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xd1e63c1c usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f59ea9 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd232360a da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xd232611c evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xd23b9b7a of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27705dc pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xd2cdd055 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xd2e602c2 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd312399f dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xd31e2824 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xd3244751 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xd38c1378 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xd391d601 kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0xd39479f5 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xd397e9e5 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd3a2edcc raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xd3d15dc9 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4113c2f regmap_field_free +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 0xd46388c6 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xd4683449 put_device +EXPORT_SYMBOL_GPL vmlinux 0xd48e61d2 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xd4a061f9 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4e5f730 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4ea4d18 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xd4f2ffcb nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd508f779 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xd5528bad gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xd553eef6 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd5b7518b relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5d55c05 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd5f57b00 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd612c8a4 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd617887e gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6370ecc ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd6467bd9 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xd6468799 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xd667f8fe fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68598ed pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xd6a5b9e5 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xd6b2939c power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd6c8828e serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd6cd304b sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd6db1147 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xd6e7a834 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd713a52f device_register +EXPORT_SYMBOL_GPL vmlinux 0xd729cfe5 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xd75a58c3 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xd762a981 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd782d740 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd7912cba ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xd7a0f1e2 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd7cd4420 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd7e52769 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xd7fc3e98 alarm_start_relative +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 0xd85ef460 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xd86bcd35 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd894032d attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd9390fdd cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96b3b28 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9850e47 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xd9aba8e8 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xd9b8fd6a bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xd9e1f238 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda128ee5 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xda3956f2 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xda3c7c7e virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xda49d0e2 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xda4b5c8a device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xda4f9f48 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xda70e650 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xdae19ca6 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaeddc4e devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xdaf2d0b5 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb27a82e blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xdb35b952 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xdb40b211 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xdb89051c usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba68218 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xdbebc19f ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfe0b6b tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xdc191b27 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc5d0541 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +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 0xdcc339a4 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xdcf1b9c8 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xdd0d7166 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xdd10a3a4 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xdd153523 tpm_pm_suspend +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 0xdd43cbe6 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +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 0xddf2dcad power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xde059ee9 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xde20d582 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xde2d9d11 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xde31eff5 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xde3e9a34 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xde3fd774 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xde7d29a1 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xde7fde83 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xdea93e47 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xdeaed205 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xdebfe1e9 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xdecb8d8d kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0xdef9a40d sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf28755b crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xdf531397 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xdf5f2c47 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xdf6cc4ac devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xdf7873f6 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xdf80476d trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdf854765 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdfd3798e ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe017f252 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe04008e8 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe041804f inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe07bddc0 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0918feb ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xe0a25d4c ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe0ae3ed3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c411e0 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xe0f15b66 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xe10a7615 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe133697a __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe19ba5b1 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1b23ae4 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xe1b53e22 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1e2db79 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xe1ec4712 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xe1ede44f tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xe1eecbd5 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe1ef2e19 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe1f93fc9 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe1ff9e84 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xe23b6342 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe241af74 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe279efa7 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe290669f regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xe2ae36dc kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe2cee9dd generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xe2f136b8 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30880a9 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xe322ff14 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe327e40e pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe3344202 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xe337462c usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xe3590c58 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe37ce749 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3cc890f blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3d96667 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xe3fa9d77 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe4193d43 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xe41db00d platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xe424a39e regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe495fc1f crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49dcb02 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xe4a52e0d udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe4b93140 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c1801b rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe4d198bf clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xe4ee64df inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xe5028e86 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xe50f6482 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe527ea83 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xe53c2dee device_get_next_child_node +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 0xe5a0f4a0 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe5bfd0ae unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xe5fe05d2 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xe63eef77 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe663ed9d regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe66dda76 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe6722192 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xe675f1b4 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xe6908022 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xe6b23d7e remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xe6bf4745 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0xe6bf811a input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d1cd74 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xe6d66176 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6eb4820 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe6ecaa2d platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f3a667 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7149da9 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xe72c92fa regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe740c65d adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe747959f led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7ba4778 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe7c5f72e mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7d0bd68 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe7db17da pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f4b995 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xe7f98749 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8082cfa of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe819cb6d find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe81b735b devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xe83466f0 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85417a6 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe883ad1b tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8d8a15e crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xe8f2bfdf inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xe8f64bfc i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xe901cd28 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe98006eb trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xe982413b flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xe9cd6b4e dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d67aa2 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe9e0a859 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xea01b8f3 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1facf0 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xea24f863 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xea317434 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea586e85 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xea5f3086 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea77c209 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xea87d1e6 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xea9ab6ce unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xeab36996 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xeab6693f devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xeae1006c dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xeb08698f inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb5fd82d digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xeb629c99 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb9ac15f kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0xebdece6b rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf9a746 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xebfafee8 usb_driver_release_interface +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 0xec347423 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xec763a8e device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xec79ebfb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xecbf1c29 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xecc0fc8f devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xecd396d3 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xed179b2a fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xed53b2f4 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xed77202c dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xeda12e92 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xedbfe147 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xede0a518 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xedfde44a dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xee11b74f sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xee1225ca clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xee1f9647 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xee615cab sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xee68a2bb of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee772595 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xeea48781 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xeedb187d gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xeedd0b5e usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xeeebaf30 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb82552 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xefc0a1f6 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xefddeba0 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xeffea8eb sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf001fb54 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0536f57 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xf06c70d6 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xf070a9db bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0985880 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xf09b0733 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xf0a6c784 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xf0a83379 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf0b3e0aa ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xf0e3e94b ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf104e0cc sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xf1098154 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xf10c4d6b crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf10e5f85 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xf114be47 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xf1273d65 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf13ea56b xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xf13edda3 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xf1571fda ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf173f43c skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf19bfbd1 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1ba4441 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xf1c5df38 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xf1c6eec8 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xf1dfd2a5 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xf1ee16ce irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf21be9e5 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2778b8c fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27b8e3a cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xf282bd11 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xf282c05c rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xf2b4ddb9 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fc61ea thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf2fd50a4 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31040d5 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf330455e dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3addc0f of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3c06603 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xf3caebd5 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xf3d0691f regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xf3db00bb uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f60f3d fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xf416ed45 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf420704d tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xf4659811 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xf470f75c dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xf478d193 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xf47dc844 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49dc716 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xf4a0403e pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xf4b252cd sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xf4c0d0a0 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xf4c70570 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xf4caaf47 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5109052 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf5126595 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf515136e tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xf51af4a7 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf542ae42 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5a2f3be crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5c5f181 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf6237e43 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xf646f452 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xf69e890c tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xf6af11b9 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf71bbde5 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xf71d158b ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xf722ed0f tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf727db97 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xf730bc76 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xf745d9b7 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xf75818ea ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf763fceb crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf7729af8 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xf7822e0b transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xf786db1f uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xf790ccac da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf796cb89 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf79771b8 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xf799a204 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xf7aaa8c2 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xf7dbaaec sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xf7df1a78 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xf7ec0099 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xf8016c32 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xf80c4ac5 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8294e8f tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf83cf7ce dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xf83ebf77 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xf851b22e swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8af10b1 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xf8b3dea6 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xf8c74605 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xf8cb5ed9 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xf8ce41f0 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xf8d588c0 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8e7bfec crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f545e4 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf8ffd623 device_rename +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 0xf932b39b wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf96b3975 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xf98483c0 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c04b1a regulator_get_bypass_regmap +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 0xf9e3b325 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xf9ebc5b5 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xf9f46b8d pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf9fe4980 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xfa03b0e2 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa39a817 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xfa4b692c rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xfa7c7986 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xfa7f7d30 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9f8f0d kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xfaa96f59 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xfaafb366 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xfab49ec4 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfade055f genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xfade86fd sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xfadf174e device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xfae67a2f dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xfaf959c6 device_del +EXPORT_SYMBOL_GPL vmlinux 0xfb22bc6c cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xfb24d0cc blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xfb2da4b4 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb356168 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xfb357149 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xfb4eb1c5 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb881842 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xfb890898 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xfbaa1bed clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xfbb008aa skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbde5159 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc444ca0 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xfc463930 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfc5333b0 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xfc565881 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xfc582546 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xfc5c281f sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfc8c8126 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xfc935eb3 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xfca0f139 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xfcadd0f4 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xfccc0b86 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce5c170 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xfcec3f81 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xfcf66b55 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xfcf88933 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xfd374568 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xfd5858b3 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xfd5a5fac of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xfd5a62bd srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xfd5e9fa4 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xfd5f25b9 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xfd6f9334 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd913dc9 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xfd97c40d public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xfdad9574 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfdd4e1e1 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xfdd9b157 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfde885bf __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xfdf16533 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xfe1dcaf4 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xfe2b8235 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe6332ee mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xfe6e8e4a __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xfe786717 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xfe7f645f pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfec3e3d2 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfedcaae7 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefb1edf devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff14a72a register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xff1c2bea regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff292927 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xff2e62eb bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xff35f43c regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff838879 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xff9ae020 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xffb21886 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xfff14f77 pcibios_alloc_controller --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/powerpc/powerpc64-emb.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/powerpc/powerpc64-emb.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/powerpc/powerpc64-smp +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/powerpc/powerpc64-smp @@ -0,0 +1,18632 @@ +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 0xf8e38dfa suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x6231d605 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0x93672bf9 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 0x0fdd82a9 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x401a5a85 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x4175c9f8 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4a421742 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x4cd195f4 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x598efabc pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x651af6a8 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x92a8a2ba pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb645be75 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xf19f31a1 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xf6e09891 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xfbd84be3 pi_write_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x91b1d4b2 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 0x1f2770b0 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 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x570a2c62 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5aa841a7 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 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 0xa40dbf89 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 0xf9e8ab3a ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x28a7f62b st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa2d6236e st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa582493d st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xab6643ec st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x4df1ef31 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x4e34bc7f xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xadb5afbf xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x513074b1 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x799971a9 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x9b785742 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb2fd3474 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc96dd6c7 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf218e42d dw_dma_cyclic_free +EXPORT_SYMBOL drivers/edac/edac_core 0x3bbd4cdb edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x02f951df fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04c45668 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x081297c0 fw_cancel_transaction +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 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 0x266e5655 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x378fe496 fw_core_handle_bus_reset +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 0x6442e891 fw_core_add_address_handler +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 0x6bcd2f4d fw_core_remove_address_handler +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 0x87b7da41 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8a68c43c fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9d723dbd fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9d9ff10e fw_send_response +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 0xb805b08d fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd0e91677 fw_bus_type +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 0xe2ce0ccf fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xea9c8707 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf4e49d9f fw_fill_response +EXPORT_SYMBOL drivers/fmc/fmc 0x129b8cfb fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x2b0a170c fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x3938221b fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x5b01fd58 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x8d0e5e89 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xacd9b3e0 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xae4b4951 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xc6c82ce3 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xd7f13941 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xdc433267 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xe245b43b fmc_find_sdb_device +EXPORT_SYMBOL drivers/gpu/drm/drm 0x004fb287 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0100eab8 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x076be914 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x082b39f1 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a06f213 drm_gem_object_release +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 0x0c1466bc drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cd1059d drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d9555d3 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ef7dbad drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10698ff8 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10946331 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10d3600b drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11d9be69 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1271205d drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12f528fe drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x144d035e drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14f0d22d drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1602f342 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x163fbae9 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17a314a4 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18808366 drm_mm_dump_table +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 0x1a6252f7 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d412991 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1db4e6a1 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dcda8d1 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x201577f8 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20955561 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20983d68 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25af0c27 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x263d5004 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x269a655a drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26ff41a9 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27cab374 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x288edcac drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28af48d5 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29836125 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c107024 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c5c7c9a drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c79d7db drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cbb30fa drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ced9f41 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e3bbc75 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2eb89c1f drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x309b2142 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b3ab78 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3398b609 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x341b12f7 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34d93af0 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37987ed8 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37cfd98d drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x385eb598 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39d437a4 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39e0c147 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7f12fb drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cacb9ec drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d698108 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e233df1 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x410d821d drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4296d853 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42a732c5 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45c89542 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45cb8fba drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47101b2c drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47db4bdd drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4887f8dd drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x496fbc36 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4caf462f drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cb4791a drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d328cc5 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ed9a2f7 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f478918 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f8d5501 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fa22981 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x504af0d2 drm_vblank_post_modeset +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 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5334776f drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5627c18a drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56cce44a drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x574c87da drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x577faf05 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5825f6c9 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5875892b drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5878bf5f drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x593da5f6 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59bd09dc drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59feabdb drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a0421cd drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b19d00e drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b622456 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b991263 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c14b85c drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c19f66c drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ddcf57a drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e4ff2ae drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f0714ea drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6131ac69 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61fce07c drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64aed817 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x650811f3 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x664c04e2 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68606edd drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68a0f5f8 drm_modeset_acquire_fini +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 0x6ab18182 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b0f97b6 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b1100a7 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bd73476 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c711d9a drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cac63f3 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc59a0c drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d08b89d drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72768ce5 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72fc7a5f drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73a3f9d7 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73c93e03 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7459a44f drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x751dead3 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7599468e drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7788e85a drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d75a57a drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7df472a7 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f1fefe6 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x808b0479 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x819e24ea drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81dd1598 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x829eb21a drm_modeset_unlock +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 0x846a03b0 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x855feccd drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85bb86d9 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86cd7bfb drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x877860f4 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x879f085d drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89376b73 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a5876a9 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a7049a4 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c0a2264 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c94c674 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ce0b2db drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dd5ff12 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e9068f1 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e9935d6 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ff12564 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90c2dc42 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9187de9c drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91bddf27 drm_i2c_encoder_dpms +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 0x967149d0 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9880e133 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9886e886 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98b18744 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a1618e3 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a84bc71 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bcb81cc drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bdd848c drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d220746 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e108255 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e185f5f drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e21f101 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ef065a9 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f3e607f drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fc17bd1 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa000ad66 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0d3643a drm_mode_config_cleanup +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 0xa33e4015 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4199ca5 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4dd4da7 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5fbbfdc drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa62a8dce drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa78be916 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa891a696 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8f7fa79 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9560725 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa02da3f drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9583fb drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac38d38 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad8698da drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae0b5026 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae23cae7 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaeca29c3 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb12e6783 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb20fb13a drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2827f84 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4b38a1d drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4c5314e drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb591b259 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb60df183 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb63b6a48 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6777a27 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb69ab9e2 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6fbc88f drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6fdcc00 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb769afcc drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8c2a4c4 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb94f67ce drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb927187 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbe9dd43 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc2a16ca drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc88abfb drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc89a63c drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd3c5345 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd3ed82f drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd4419a6 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe26787b drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe6a4615 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc12e030c drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc13c3d7b drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3589f7a drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3d3482c drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc42ea8f7 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc71a97f2 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc730db7b drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc772cba6 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc78d4411 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9030d29 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc97b459d drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca209993 drm_atomic_get_plane_state +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 0xcab7c6de drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcac22e7e drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcad4f2aa drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc701746 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcccc7705 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdfa3f68 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xceb624a3 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0a55e34 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd15f024a drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1cea100 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd273964e drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2ab873b drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd31d12dd drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd34c770c drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5d1570c drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6a7306d drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd71732ef drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7fa8a4e drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd876b649 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8b115fd drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8f4ac8d drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9d0153b drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda8fba19 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc87faee drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcd0aec4 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd1a190f drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd4524bb drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd8738b8 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdec50777 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfbbff22 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfc0ed02 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe151c7dc drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2d2a3a9 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe49cb50d drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6a61bd2 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe977cbd5 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea7d6644 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeba672dc drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec3e0882 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecc15daa drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xece8873f drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedf371ac drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeec80dba drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef8a40e4 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0b15f31 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf177069e drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf18e71ea drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf25caf5b drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2e32186 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf311eb69 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3c9ceae drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf43dfea5 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7693681 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf86e7193 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf960a471 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaa5089c drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbd0c7e5 drm_property_create_signed_range +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 0xfd2b41a6 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed24f88 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x02d2bbb9 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0337eb8f drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0583e480 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06243ee5 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b0be04f drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0cd30681 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0eab9a5b drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14327c06 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x143a9744 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14a367fc drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1547197c drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1763ad32 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1caebb39 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x201b27da drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21122cae drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x212bbbfa drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x216b294d drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2319824c drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25d91f45 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ad9ee25 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b21cb97 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d5d5c36 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f4b790a drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31251278 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32e18437 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x330147df drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33583c1c drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x340d9829 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35c3e244 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3796b4ab drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a151593 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x408c06ae drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x412f04e6 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x414a03a7 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41f46d72 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x471316af drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52c10297 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x535f7608 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5efa0fd4 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f691326 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61a01fa4 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66cbea4b drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66ee9694 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67a66d1b drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68ca2f2d drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6924f4ec __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e65be72 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72cd9501 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7340dc01 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76328f15 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7926bd97 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f56b30e drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80a870a1 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8243510f drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8279bfd2 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x871f2ae6 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87906342 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x88d5bb14 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89da8ca3 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a05d422 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ae7ea18 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d9aef75 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8eea0393 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f885e6e drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x901709bf drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91aa392a drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92124e7a drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93996a84 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x954ccafa drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9598b949 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ba77491 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9fd3ca18 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa07c38b4 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2b5c7cd drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa33df97f drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa44077a3 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4e57cd0 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 0xa9bc3dcb drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9c568b6 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac4a25d5 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafb4ab26 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2ad1599 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb39f020a drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3ead5a1 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5497b98 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb84a139c drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb897d1cb drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba89aae1 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc84c02b5 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9c9a4cf drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc1e179d drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1b48c11 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1db899f drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe214e145 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6545724 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeaa2ded8 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec10b2fa drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec70d9fc drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee0a3a95 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf27688dd drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf41c6ca1 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5e24a9d drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf604a8e6 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf647b3c1 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf751f033 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf79ce808 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8c0f0e0 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf94cacf4 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfad74773 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x05caac55 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x06a302cc ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0732d798 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0834ecfd ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d809921 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0e3b21c5 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x115a6924 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x14907416 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x154975ec ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16619b19 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16b06043 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2126ee88 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2802e215 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2980cc3f ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x298ba480 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ce8c11d ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x34cc5696 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4a8bbdb1 ttm_bo_move_ttm +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 0x57672109 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5b63fce8 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d040d3c ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x653aa738 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6d8b98a9 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7412e46e ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x78d14b03 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7dacced5 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7ddc95e0 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80a3084e ttm_bo_add_to_lru +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 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9085a716 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x959bfa7b ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9666d81c ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9aa07ef2 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d1cc083 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9f100e08 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fe7503c ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa463f85b ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa51eba4c ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7fc88d5 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8800b1c ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac2d3f73 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xacb3da14 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae244015 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb29a5d55 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc711c4a ttm_pool_populate +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 0xd55a9c8e ttm_mem_global_free +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 0xdda5303d ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdecb5482 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe969a124 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe9e21935 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeb20ca9d ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4738dd3 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf560934f ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf8f0c562 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfc1b5ea6 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfcde26a1 ttm_mem_global_alloc +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 0x635098db i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x93c0d9d2 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbfb2926a i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x1330eda4 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x234ad49d i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xdedcf03a amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0ce852ac mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4e109fae mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x540dca3b mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x57395fda mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5c34ff6a mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x63fcf2a0 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6754b50b mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6a49185f mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x73132f38 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7d5add09 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7f87eaa5 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd8c11c8d mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdbc880e9 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdf2f5dfd mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf125da58 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf8e655b7 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x32857883 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xd882a440 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x14512c08 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x6a238b8c hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7779ecae hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x840e01da hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa1dbb9da 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 0xd4ec98da hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x122f3e59 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x680c502b hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x8ba47307 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x99dc0ec9 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x117f6c2e ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x1f223fef ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x638f1898 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xecdf6e83 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xecec9fb9 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x2a8a1bb7 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x8b66e33d ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xca90e1af ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x04619c0e 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 0x0cbf6278 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0d704898 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x174ef3d8 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x307cbda6 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x32e90332 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x447a9d7d st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x75b45ecf st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7f3aa175 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9a2124d8 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xacd2936b st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc4bc5911 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd484adb0 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf2215b8a st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf62f3d25 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x000e7617 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x8ca76668 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x366d09f6 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x0926c28e st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x99b2d32d st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x5b396637 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x8bec1b6c adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0508c3c5 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2383f9d7 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x2993a1fd iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x47427e49 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x4cb825b6 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x4d3a1230 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x59b9d88b iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x5a42b301 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x6f193404 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x8be25c7c iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xa0b6ee91 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xaad02caa iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xad7e598a iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xc95624a9 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xebdff471 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xf29e70ea iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xf5ec4331 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x0dac0e65 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x26ae18e5 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x011eedcb iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0a9bbde3 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x5f27f416 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xf40b9d5e devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x2dc8ab88 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x78e05072 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x5f816821 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x0e4c08fc st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x1804019d 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 0x8388e9fa rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x098c0c7f ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0d5b2252 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2e5182a6 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2fcf40bf ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x385dcf06 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3dcdd075 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x562c94d7 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x61452c3b ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x73c19e0e ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x75884033 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x79041674 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb4c962fc ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbccf0887 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc7b7fa55 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcb067593 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeafffac4 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf2f8acec ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x063ae22c ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08f6a24c ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x09d3bbaa ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0aaaa7cc ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ab96e49 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11cc5f1b ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x160ddba2 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1702341b ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17788da7 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1813e026 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a955846 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b2680b5 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c267946 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e7972e1 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f8c79f5 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x203e7c74 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x224cc2e9 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22b739cd rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2412ec4f ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2592c84e ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a1ec01b ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e64a253 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f65d4d5 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3053b144 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x306689da ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31b0d6cb ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35010774 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3abd6ae3 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46b7d57f ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a55ae4b ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f40bb21 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50e19a29 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x548238b5 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55c765f0 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x565e5783 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56bd4f54 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57623463 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b12d53b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d3d3a5f ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d821589 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x623bd49b ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63c37c86 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65df5cf5 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x661bf532 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6956e13a ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6caeb153 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6df65dd9 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71ac213a ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7416b10b ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x788459f5 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a67bb33 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d772e63 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80d4a6cc ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x819ffce7 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82380256 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86027a56 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x872bda08 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8daf7960 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f08aa1d ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93ba5731 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa942aa9c ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb53f7090 ib_modify_device +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 0xbd7f2327 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc152ef37 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3a36b63 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3ba7394 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc610032e ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc698f9a4 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0fecadc ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1a41380 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2b42f26 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd638d415 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd83b4026 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd872f86b ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xded2ea6b ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe166b3ca ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2057361 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4f5f94b ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8561e8a ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9f4abf4 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeaba8776 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4558906 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf50eec5e ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf659aa4b ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x29b072ea ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x56963099 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x79dccabd ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x79f62efa 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 0xa0922bb6 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa5801f0d ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa94233d5 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbf361602 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc12bd9c0 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xce1fd794 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcfc4b205 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd1a83763 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf2187508 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x48364d0d ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4e6d2cb3 ib_sa_service_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 0x6853d508 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7b25df09 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9dc2ca0d ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb149b214 ib_sa_path_rec_get +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 0xeb82ebeb ib_sa_join_multicast +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 0x0a195f59 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0abf810c iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x17ed7630 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x323179a3 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3d1fdbc2 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5c1e54ff iw_cm_disconnect +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 0x773aa30c iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7f70565f iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x82cc1d6c iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x839b0c44 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8a0318f4 iwpm_mapping_error_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 0xb69c52d9 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xeba44e5f iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3fa7af2 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfa975423 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1a261723 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1fb0e0ac rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x39f218c7 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3a51e1df rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5e790aeb rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8343372d rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x96962c90 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9b42d98f rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9ed5e316 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa28393fe rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa2bc8e42 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa7eebd69 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xae4e1a6b rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc69d61c0 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd4ad8bfa rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd710ad42 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdf41cff7 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe0c03834 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe1be2ab6 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf8e95a90 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfdbd615d rdma_resolve_route +EXPORT_SYMBOL drivers/input/gameport/gameport 0x013b669b gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5b35c779 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7fde5390 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x96dd25c9 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb6509b2b gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdbc3744c gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe10c5ac5 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf78dc173 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfbe2b694 __gameport_register_port +EXPORT_SYMBOL drivers/input/input-polldev 0x2b312b91 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x780eb19f input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xbecb69d6 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd941a20b devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe6232c5b input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x999d632a matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x16415602 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x2da23eb0 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9afb4f63 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xd31a7890 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x49f1047f 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 0x3940a090 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x83b3c80a sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8e7d6158 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb30ff82f sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdeeea86c sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf265d846 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x266212a1 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x95514e8b 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 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 0x3f84aa40 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x592880e8 capi20_register +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 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x774020b6 attach_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 0x7f1b2923 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9395989c capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa78fd59b detach_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 0xb3c6b865 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbb75777c capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcedd947c capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf4a457e7 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0886655a b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0e9eb49e b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x15a4a77d b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x19a7f8b2 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1a32bb40 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x275dc659 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x491375d7 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9038fdd7 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbdd83f5a b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc2e50ef8 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc50b013b b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xca31e076 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf7a48429 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf8db9fb6 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfc216776 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x193c58a5 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2ae7001d b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4e803140 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5fa15375 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x713dc6cf b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7209b6d6 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x934db508 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xad8b2ac9 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbe7cdfcb 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 0x2d0d09a6 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x4615408e mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6aa50347 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xe8705968 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x15751edd mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xca336c86 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x09a3088c 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 0x0bf31061 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x20b31c56 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x4fb4112a isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xcc32fd1f isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd1a5dc1f isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x3fdbc8dc isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x79813958 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x9545de65 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 0x07762f34 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x189cedae recv_Bchannel_skb +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 0x33dc7168 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x39aa255e queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3c768369 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4719b945 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4e134afe dchannel_senddata +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 0x60c3d5d8 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6d9520b2 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8de92375 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x930b3bcc mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9927e3d6 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9fdc990e mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa1b7bc8b mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xae218e62 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaf921c57 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb10cde3b mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb8cbad7b get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb8ec7397 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb9e5ac25 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbcb29f26 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbe0a4e1b 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 0xd4406a6d mISDN_freedchannel +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 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 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 0x34f8601c 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 0x7503a2e9 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 0x925089ee closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc09f5750 closure_sync +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 0x4e44bc4d dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x67e60424 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x8479f32f dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xc8f3310d dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1daa40e9 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x336bf353 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x614824cf dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8b08e783 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xcdd4b95e dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf55b55b7 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0x0f1ee3bb raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0d2b6349 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x28b4c66e flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2ae4bcd9 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3525e171 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4ad57603 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6e7217d8 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8b37f644 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x988dfa2e flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9fbeb30b flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xad15157f flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xaff92654 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb7be115e flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd593645d 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 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x875a02c3 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8a8673fe cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x96e53ab4 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc3af852d cx2341x_handler_setup +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 0xffd88f3b cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x490d42c7 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x80ac0a16 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x06ff64d1 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07ff0fb9 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x09309945 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17a23939 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1d05d6de dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x29dc0b43 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f35cc92 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x39ef2a31 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f3849d3 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4b8a79b7 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4fca42b8 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58becdd9 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5ade8500 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5e0c96d2 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x64a55759 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x67202f64 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70c76df6 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x71be14a3 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7de71092 dvb_register_device +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 0x8e811359 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9bfddfbe dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa02c6bbf dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa10eee87 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbe7d0877 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcc008af0 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd25ae97c dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd7580464 dvb_frontend_resume +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 0xf0cba4f6 dvb_dmx_swfilter_204 +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-frontends/a8293 0xdcdcc43b a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x9dbb418b af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x4f4040b5 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0bef2a80 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x26c05a17 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x51c33d63 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9550ede1 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa832e98e au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xad320d4b au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb5c2a388 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb61ccf46 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xcea99e1d au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x1aaddcaf au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x7b7098d1 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x296ab59f cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x96e0b486 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xe6f37943 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x4cc62e8a cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xee98bb38 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xb2abbbae cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x0c91e3b7 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x8cfa3f3e cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xda36e472 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xb6808433 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0754e537 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0a43c6be dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x99204817 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xbfa4a547 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xefea1857 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x093b9380 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1667be6a dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x52be894b dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5c641fc8 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x787ff28b dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x83314292 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x856ac199 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9b09957d dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xaa272f1c dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbb0509ee dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbd12d7c2 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc3649f49 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd1cce579 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xef94bfa0 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf35d4ff7 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xe1deb8e4 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1199a6d8 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x75bdd235 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x86b8dc08 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb9d0b9b5 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc56f6979 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd01470c2 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0b88b79d dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8d968692 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc3e63bb7 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xf83b943a dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2a842e7c dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x44eb3819 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x13be4f10 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x7d8cca92 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x90f42a55 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad2f5bd1 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe0c4577c dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x43b37e13 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x44c0971b drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x776986ca drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x39b87174 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xbf5bbe83 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x3b8b3ace ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xe71c6308 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x8c57eee3 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xd1b9c655 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x999b3818 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x314cee02 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xc16bd359 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x6c009c8e lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x123e8a13 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x1179a906 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x51129465 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xbe662956 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xd3d104cd lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xd90bcdf7 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x29cf22db lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xc80c0a98 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xcc864904 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x0dbb90b2 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xe44fb288 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xdde52e9a mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xec59a890 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x133a2da0 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x27fa2078 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x44f5b9b8 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x9c24d04d or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x1732a714 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x25d70f99 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x511667f5 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x97b9cf92 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xf70c55a9 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xddd3196d s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x13e2f652 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x29b7d659 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x0b9d3b0c sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x5828f9cd sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xcc7cbe26 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xd7986a97 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x0e2c844b stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x446699e4 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x4367f83c stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x5a22f857 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x84fc5230 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x87a56a2a stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xf8e32816 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xd93ee778 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x586ebae3 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xcb0ff092 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x5efa3500 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x27dbb735 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xb12d7a22 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x568a0fe9 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x629fa781 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x2ee00f06 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xbfac8491 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x02834a5b tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x44d0b5c3 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x2b7e665d tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x311e2d48 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xb0cd6b78 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x1c52f756 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xd917b853 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xdc1cee6d ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x45470151 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xbe29fd4c zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x75859bd8 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1ae2e8a5 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x534f0b65 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x64f0c860 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x70b63cf6 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb09ef05b flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc163ddd4 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf11cd543 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x9d6fd692 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xaff7a04b bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xb5daa5fd bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xef36b708 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x22b2a633 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x2bf6bcaa bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xb909b63f bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x35bb2038 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6837f864 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6da2ef42 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x77bea929 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x79f9e454 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x86125ec8 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x912837ed dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcc1bffc6 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf26c7cbb dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xe7d6f7fe dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x6ce00408 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x6f9c8f9e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xbcdc820a cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc9c5b1b6 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf1d14f59 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xad872d57 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 0x11d510f1 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1465e803 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x518fcff8 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7aca53f4 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb1b06c23 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb1f3653a cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xbe875b3d cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xd64410c0 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xfb8545a5 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x56c8a029 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xd8d14fbb cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf7408bdd cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xfb924e79 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x803b1d03 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x834660b9 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x93cb8c8a cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xadd35318 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb1e3e68a cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbdcdf5de cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc71bda94 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x03d2f847 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x10f3b1d1 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x259dd7b6 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x46673a09 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4b409d0e cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4cdf85ae cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4e000144 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5f61ffb7 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x622eee0c cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8ec03de6 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9295f117 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x964065ae cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x993cccdd cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9abaedca cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb2470747 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbbf33345 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc97c8aab cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe47e7eae cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf045eace cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf625132f cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x046cd8b8 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1b87e8d6 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3b63f38a ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x563d20f3 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6887219b ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x74224fd4 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x763352ff ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x98885e9e ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9cbd408c ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb10c8e6f ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb74be635 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb7671c7e ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcbe651e5 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd3b0a2a9 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdbbb93e1 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe5d3958b ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf2ae26b3 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x01aff9ce saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x03765188 saa7134_pgtable_free +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 0x259670b3 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2b97eea7 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3ac5762a saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3cf26785 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6cfe042c saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa29ab20b saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa7e22b32 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbcc3f1a1 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdc8125b8 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xeccb7cb2 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x90245530 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 0x19b4c9b3 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4e80d25c soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7fc01726 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8eceae0f soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x9c58372b soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb4bc8b5a soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe1da3e27 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 0x103f52ee snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x131e9a24 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x182fbfea snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x22a291cb snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5e07df94 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7df717ef snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb740415d snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4da05ab2 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x82371002 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa6666f0a lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb117bb0f lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbde9a536 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc9b8e64c lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xefb55a63 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf5bc9b1b lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0xce70f5b1 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf3116d06 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x88e597a6 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x44c32e44 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x2199d294 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x59505d1e fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf8841358 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x9115d237 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x5e1dd019 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x084cd407 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x30046322 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xd2d8dad5 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x80cb8693 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xab77d9ff qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xc94ba27a 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 0x5370ec0b xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x6dac39db xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x5fea8f70 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x2aa88cb9 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x31f40ea9 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1ac980a4 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x242ed9bd dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x39404431 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x85e583a6 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x87a18a41 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x906b6530 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9af1d069 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xcb1f6d6c dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe171134a dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x06743da7 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x20ea510b usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x71666cc0 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x71d189bb dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8144e435 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9d13b29e dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xac00772f 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 0x7d9f53ae 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 0x0f2dbd76 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x241fcd38 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5c48aebe dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5cfec684 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x64edad81 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9bba2b26 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xac2da48a 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 0xc2077db2 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd8ef25a1 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdf9cf9c7 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe4210a9e dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xbbcba5bd em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xf926c0ce em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2b63452d go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x47b491c3 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4caf06d7 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x71f44686 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe0e3edff go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe223c2fa go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf520affb go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf53462c1 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xfcccebe6 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3a17f43d gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5e41efb2 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x70bcf6df gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7f82e2ad gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x90fba80e gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x99fb69cd gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb447a07f gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xff7b27ec gspca_suspend +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x54129440 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7a7edf81 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xffc1ed8b tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x44fe8d79 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x6f398cb3 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 0x6b403df6 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x8d712c5f v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xa1318a33 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x71eebc9c videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x944c30d6 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb700669d videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbdb727ae videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xed350038 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfb5567bf videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x0e894ca5 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x1b74f2d9 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x50e2cd35 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x5f86f0b5 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x6962452c vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9d9f32a4 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xc2eeda48 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x006f5c8e v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0576c8aa v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0fe697f5 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10801f9c video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x14c1c13f v4l2_async_notifier_unregister +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 0x1cd853c2 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f2ea87f v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2238e570 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x224043a0 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x27319494 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30542a6d v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30e6d3f6 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3283986e v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3519ad20 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3575d60e video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x35bede49 v4l2_query_ext_ctrl +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 0x420ff2f4 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44574bee video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45e9b373 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 0x58b075b1 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x59669339 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c25b11f v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6034d9cc v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x62d26a3a v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63b11e01 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6461be64 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x68d6e9eb v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6c6d3da7 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6db92226 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e2a155d v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x70dd71a1 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71796d6d __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72483d70 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7294bb8b v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x771fafc1 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79fce2d2 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b5714d7 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7de72ae3 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f5883d1 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x832c1b36 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x873ebb02 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89c1955b v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8bfcd29e __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8fe0d9ed v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9450c5ce v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95e46e30 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x96aaa410 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9902e4d9 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa25612b1 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa27a1108 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2f1196c v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa95c5e20 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab851502 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb3d8998e video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb875d433 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbad1559f v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc73bcbc v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc40f59bb v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc6b41817 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9d42893 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbd120b5 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1dca68c v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd52e986f v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6f30384 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdacd3b14 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe708d338 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe79f5657 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe8faaef5 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe99995f8 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb072f91 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd188e22 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfebbc14c v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff2695ff v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0e7385dd memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x334eb797 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x352bdfcc memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5df17570 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x84645231 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9dfee6a2 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa1c30678 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xaeb00110 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb9fd4c8a memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcec09706 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdf41e8f9 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe2adc5b2 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x04a182cb mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x074a98e1 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x21ad48db mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x24d7b986 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x27b752be mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2b888c89 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3365894f mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3485b4c0 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x39906de6 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x44226203 mpt_raid_phys_disk_get_num_paths +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 0x52ee0e53 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x603a28f2 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x60f60182 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x76db64ee mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x846a27d8 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x91726b56 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9d8af1e0 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc44b287b mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc814319f mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcab7c71e mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd1424b2e mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd38a2c2a mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd602fa7e mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd8159270 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd8cd86c6 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xda27c1ab mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xec91d385 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf6f30bfa mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xff279ca6 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x01f4578c mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x021c5a10 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x097c386c mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0a7a408f mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1cb2cb2a mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x25f080ac mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x32b26893 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x39501001 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3c0c2ce6 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x442c19c6 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x64618657 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6dfab06e mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7b1d2b05 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x82ba7175 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8d7c352e mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8f3c1005 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa009d04f mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xafe4d98d mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc40b2063 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcc587019 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd1ca1f36 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd201b94a mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd5cb7b40 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe1420388 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe3ceaf60 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf7df5f1f mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfbb10e0a mptscsih_event_process +EXPORT_SYMBOL drivers/mfd/cros_ec 0x07e067d8 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x183005ad cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x60a662f6 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xc1e322d5 cros_ec_register +EXPORT_SYMBOL drivers/mfd/dln2 0x41dce9c0 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x4e062bc3 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x6edfe938 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x5b4385c0 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xacb04d71 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x11770a30 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x289a6250 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4c9917dd mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x53954e42 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6e2eab67 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7b715fdd mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc35ed72e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcba0dd71 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcc93afc0 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd29d6447 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf8cd0ea4 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/tps6105x 0x505bc602 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x5555a9e1 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xfcceac30 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 0x6ba76786 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x81f263bb 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 0x2b9dd54c ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x429ea4a5 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xfefe536e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x355b101b c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x8662b026 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x0ea0de08 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x334f3b2b ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x045a1b2b tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x06a34ca2 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x2d113ed4 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x5fd81d59 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x75a97c4d tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x935e2a14 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xa76dbe93 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xad6c8809 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc9593d12 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xe1dc3d08 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xfcdf0796 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xfd6bb680 tifm_register_driver +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xc3c4c5ad mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x50fe2c9a mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x859d7302 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x05933d54 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2676b05d cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x36cb8822 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x55e3a6f4 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6f3fb8b3 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7b1122fd cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa47659c2 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1a621f33 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x760b5246 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa447bf0f do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa5aa4ad8 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xa2236757 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x7b0e4afa lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x0000243e simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x80567fd3 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xea923bdf mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x13888b83 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x5f4f8192 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x49164a3d nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x4e965d43 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x68d42432 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8edf5fdf nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xbf0e01ce nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf76536ae nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x88a17833 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8af107cc nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xb7fa6057 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x91a0347f nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xced4d749 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 0x69224b47 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8c661cf5 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x9a9e921a flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xccdd8b7a onenand_scan_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x02c1128c arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0f50d960 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3581708f arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4c4291e9 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5f972724 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x66e1f7fc arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa79d90dc arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb373ce1c arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xea640f04 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf0e17f57 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x179ce0c3 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x7253d3d6 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa6c6e61e com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0c297bc1 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x13cb68b5 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x17b7a8e6 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2596e958 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x28652195 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5501e5a4 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5f3fa090 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x641b96ee ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6af8e5d0 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8d23786b ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x5c10ffd4 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x3ae36deb 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 0x0f2aea59 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1b75307b cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1e7d6914 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x24e7784d cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x297c18cb t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2fb208b3 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x42bbeb09 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6403efcb cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x69a23905 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7b4ed3b3 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8c8acc22 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x98488af2 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9cd88414 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb4073792 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbaac548d t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfbbe7e2e t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x058e846f cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09d8fab0 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c5882d3 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e4ab62a cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x203a3a43 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2bd9a105 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f7bfb6e t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x36da6714 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x41dff16e cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x49406ff0 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x49738fb2 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4cd23a41 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d8314e7 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x541fb609 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a89639e cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5f2a1c12 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x63ac26a6 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x656f7550 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x67ae5c22 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6c99c1c9 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7660f9b6 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x76e93f12 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x81247009 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96f6705a cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0a7110e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3035303 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xad84fa2e cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbcbed001 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd430c3c1 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xed66d266 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xefdc5d24 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf40d4cd1 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf9386907 cxgb4_l2t_release +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 0x1e31030d enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4bc30e3b 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 0xd44b72d8 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4a7128a9 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 0xc6d52ddf be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27f0e3b4 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3793a59b set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x444f2434 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x456d4f99 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53824f44 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54739eb1 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x683886ab mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a8f1697 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c630e76 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83e9e8f3 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88c25be4 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x898c1427 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95140de5 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa88b6f4d mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaad59ff7 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaaf167e1 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac304b39 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3b78f54 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb89de193 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb909c047 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb93ee14a mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb92c0ab mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbc0053c mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe396d78 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5fa3355 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc75d4c23 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6e22615 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1bbce12 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3d3a5e6 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe447e093 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea881f57 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2d9595a mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3a1d529 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf41ddf8c mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8464ba9 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe2b0bf0 mlx4_get_slave_port_state +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 0x0a888126 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0bcec0e1 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d6d5086 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0dda8cb7 mlx5_query_nic_vport_mac_address +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 0x164d2927 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x268af08e mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2794f8a2 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ef2d57f mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33eca52d mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x341fdaea mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37cf30ec mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b082109 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46066503 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x539c086c mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54c075a3 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56e98e0f mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5af08d23 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5babc7c2 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72b7a3cb mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7752d3cd mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a15e0a8 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a795301 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c544194 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c6ee1a9 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f6f3c26 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99e6707e mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a66d620 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5ba58bc mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaef9ae16 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb18e70df mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb420970a mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcbb1af65 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdefda00c mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4089fad mlx5_core_create_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 0xedc5cdb5 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3a27d73 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3cf585c mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x15dde3aa hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x27058f33 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x946020be hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9c5fd037 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd0a428ce hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x20675890 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x224302d0 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x32baa127 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x55203011 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x96467ab1 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9f9daf4d sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb024659a irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc50cc289 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd23b210d sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd79d82fd 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 0x073bc58f mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x09e51c2f mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x2dc38f28 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x5dde6cca mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x763d5998 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x7d49769f mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xe79397f8 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xebd1f32a mii_ethtool_sset +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x4a5b3734 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xb29b452c alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xf7e05bfa vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x606046ab register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x6d6d13dc pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xb6ae9ac8 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x3e72a7a9 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0e82e2aa team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x22516a3d team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x3f26a947 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x45aa53a2 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x70a9c1c4 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x8e225fd8 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xe2d245f6 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xf5cf53ea team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x0eb1645d usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x558c15cd usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xbc23b184 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x027c8de3 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x118bc4cc alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1afff95c hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1b9cb6fe hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2cc3d460 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6b3cb5da attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7dec1d0e hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8d920824 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x925b14e4 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf0d52862 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf2c608dc hdlc_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x93b8a860 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x25d81a22 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x3c807282 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x8acf60c6 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x16b06fa0 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x60739500 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7031c293 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x70d8462d ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa4080374 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xabb52918 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb8a26dd1 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbe46c274 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd1bd843c ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdf30ae97 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdfc6d000 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xee390b15 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0ff09785 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3166785e ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6cade598 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6dfe9eea ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7ba7c55e ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7ff8516e ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9f3d5036 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa2199640 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa76d2d9d ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc0c47aaa ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfabcdda2 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1f7b46b9 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3e38f383 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x57950d7f ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6ca57879 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x73226cde ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7692969c ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x78353e23 ath6kl_cfg80211_resume +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 0x880e34e5 ath6kl_cfg80211_suspend +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 0xdbcaa5e0 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe14f89e2 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x03341794 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2bfd5fba 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 0x385fc79a ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3caeb367 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x448bc1f8 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4d13b3c0 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x58f75a34 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5b1493c7 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6125223d ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x66cd1d78 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7c58fd13 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7d575aea ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x83ebb78f ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa1dd40bb ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa771e090 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xab3c50c5 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb92035e4 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc1a4018e ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xceb92961 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdc4c8433 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe0e85a46 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe61a708e ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf5067a38 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0068ecf5 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0086b984 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0333a540 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x038a8677 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0557f642 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0959051e ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09b50e7a ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b3f1187 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bf2fa37 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c0dcf2d ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1106ac6f ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12ce5f19 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13aef1ea ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14cafe18 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15120255 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19c35be8 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1abc76bc ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b4f03a8 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dba39ca ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20252f32 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x212188cf ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2593da60 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x261bcc91 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2727ddea ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2787ce9f ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27a26e7e ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ad3090d ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b01634d ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ddec4eb ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30da1f92 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3331cd65 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x348efd4a ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x374af0d2 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39237511 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c8cf153 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45a4c0a0 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4afa157b ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b3c3f18 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4bc5e611 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c56610a ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5511b841 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55e6db32 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57b099a6 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5980f3e0 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5fbe2db7 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x654dd3d7 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x672f5fcf ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68fe9bb7 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b4fff6b ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6bcbb420 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6eea6f56 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fd09a51 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x728991e1 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76d318c3 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x801bb77f ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81463d0c ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83ccc121 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89683446 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d0bc3b5 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92be205f ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x943241d6 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9504ed31 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9510f918 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96174c56 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98824183 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x996318c6 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a376f93 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ee37e9d ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2347489 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa312716a ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3db8869 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa463443b ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9070c9d ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac30bec3 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0154149 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1f31c44 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb48a121e ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba478c53 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe0ef822 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe249e27 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1fe0611 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc239a152 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6e4e930 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6ede3be ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcdc07b45 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd21dff3d ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5694260 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb5583fb ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd35fb43 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd979ccb ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1822da9 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe278c91d ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4e3739b ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe65c8a4d ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed7f0121 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf17f7165 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4d9ef92 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4fe5ccb ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7292465 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8564ba5 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8617037 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb2e7e73 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc8dc977 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdf3c22c ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x127f2d8b stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1efaeb93 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xbb4507d4 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0c316567 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0e037c56 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x195fca68 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x261e2275 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8ea48e39 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8fa0afad brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb8a56303 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbb61fbf7 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc2b9486a brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc4b251a1 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc87dfca4 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd92aa842 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe1af6a5a brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x011448ca hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x05d9334d hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x27e69a27 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x299d7a10 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x31cf77da hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x48e1d135 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x494ff1ac hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4ee0eae9 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4f223fca hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5c8e0474 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x653a0d91 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x84e0c998 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8b5a7389 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa0fc7618 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa5584d63 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa6f5beb2 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaaa344d6 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaca84056 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 0xc235876e hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc50eef03 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd76b44d7 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xde8af9d6 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe13a6873 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf6880b2e hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfcc37ce1 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1627e797 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1721867f libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x181995ba libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1e9aa14a libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2126c878 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x355f6a9f libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x37373863 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3a6d8513 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4b9082ff libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x55fd858b libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5ca799da alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x610ceb68 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x75e7d1ab libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8060e020 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8cd73458 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xabd2ec7f libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb65d0ac8 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbb509ddc libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe2015a2f libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe531328a libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf4533e34 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01e2023a il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a00606d il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b2a78ed il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c09001a _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f011570 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x109f6c7a il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13034db3 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x130d2c0e il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15b8bda5 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x174728ab il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17c9b956 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1be2f80a il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d17e9f0 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2088b098 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x264a85c3 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27b325ad il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2818f5ee il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28c1cfef il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29401eb2 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a8ef89f il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c0d8cfe il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2cd0d709 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2df178c9 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f86a65c il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ff2fcec il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31ebc1d3 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x326c164e il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x368d66db il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36fe5015 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37bced16 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38445cb7 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dbe578c il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e3a9040 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42c53c4f il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4301f341 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x436cd86d il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4404d159 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45d1fe93 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x47be0771 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48cbcdd5 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48e35bd7 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x496f8501 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d2f3cf6 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50261e82 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50d17930 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x544e765f il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6069ee94 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6112cb6f il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6297570c il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6548dedd il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65c34b4c il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x688483a5 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69bb79f3 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ca70111 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f4af321 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7732b5f0 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d0deacd il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x806f3b2e il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x822f4ed9 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x861b31c8 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x87a955d7 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b76c87e il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8cfabe6d il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e438fb7 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x922e251e il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93830b2e il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x97dbb3c7 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99f74e29 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa194481e il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6a7103b il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab7d0a78 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad4e8515 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xadce6b91 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb13b8f9e il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb32fd60e il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5d7a2d3 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc586cbb il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf706790 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2e19833 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc4efe807 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc678da70 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc9ed8a3c il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc1c0298 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc7889f3 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd173dc67 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5747566 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd777bd39 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb2d08d8 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbe4eced il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc74d8f0 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc9418ac il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xde210044 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe497f34a il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe543f5ea il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9d6eb3a il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee3c969b il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf642196d il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff0372e4 il_mac_flush +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 0x0131bfb3 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x091edcec orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1a98cfad orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1b03daf4 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x244eda8f __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x37d38f89 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4a6ede8c orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5ad3eb29 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x73561d92 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x779c2f12 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x82baac6b orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x89033549 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x92003820 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9f7b2a62 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa2c0c2be orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd2914a26 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xca757df9 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0a8cf599 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x140c7b69 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1e5d7857 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2026227a rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x23382edd rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x270c0432 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x30ee763b _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x37706c2d rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x43449655 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4e203efa _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x516eca40 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x524ada9f rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e533e60 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x60b39106 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x63db909a rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x65fec676 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x66a4d842 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x80ce6a99 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89201ce9 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8abb11b0 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99c0e0a0 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9c4c2ca1 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa5aa424b rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa6c1b11e _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb259d888 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb625d50c rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb7af6a96 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc75b8f78 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc959dd6e _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd2e156cf rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xda2c70ca rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb1362df _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe0671f56 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe858302b rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed5e5368 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xedc6a854 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf11cf767 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf6f64a5e _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf9a72b4e rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfb23782b rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfe9c0364 _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 0x514d2071 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x536186d2 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x6792e5a1 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x6c8dcfe0 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x1785d35b rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x7819d0d0 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x9812e2e4 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xe5c78b8b rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x189c1adb efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x198e6d3e rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x32b24df7 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x36a6e942 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x36cd3cd1 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x39ddc48c rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x47209558 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x51686eba rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x530dbe70 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x61ae83d0 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6511ee42 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6669ab2c rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6d0df423 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6dbba5c7 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x70b74fa3 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x82205d99 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x881709fd rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x88eff3a3 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x894bde81 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8ef8403b rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa1b899e1 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xaef44d2e rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb00b93ca efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbd43bb70 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbeffd6fb rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc00baf41 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc0607aa6 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc13181e4 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdac08079 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf885cacf rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x100b2c2b wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x231d20c1 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9da839fc wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xcffd4016 wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0x31f0f04a microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6aef6fa0 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x2271269a nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x7a712ae3 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xac6b7e72 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x49d5a6cf pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xbd69525f pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x130de35f st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x16291eb4 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4692d5a9 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5e3353cc ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7ad3702a st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x869355aa ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8b72196d ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xacd41103 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf895f0d8 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4666f180 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4734342d st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x682b27fb st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x82b80a59 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x88f917e4 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8a551df4 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9a2178ca st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9b171672 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa11287aa st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb3e14986 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb5d34b63 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc7c6d327 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcfeda42e st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe1768aff st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf0bf2722 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf4c8e940 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/ntb/ntb 0x88082413 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x8856f1fc ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xa1b9a37f ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xb8b67fad ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xcf139fab ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xd562e327 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xebf03972 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xedbc1599 ntb_db_event +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x5fcc834a nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xf6d51fd0 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x066845e2 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x15a4b233 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x1a3c3c9c parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x272a45b1 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x2751b732 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x2d3a13c5 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x2e685624 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x3f700d40 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x3f8e29ea parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4dc13bf0 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x5358bc9b parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5adcc5c7 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x670b2463 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x68461af1 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x68d1defb parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x6d692b11 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x6e4ec5b6 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x91892b5a parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x93e59d71 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x9520f7b0 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x97378351 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x9d63e4b8 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xacda1553 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xbe672f31 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xc5e4e595 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xcd79ad44 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xcfdfe495 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xd8379578 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xdf30e409 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xe3d80f47 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xed7c4d2a parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xfd704df6 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport_pc 0x3ab8ff0a parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xea06a482 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x03e974dc pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x06833503 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0f2ac421 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x16be0ed7 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x43eb4fc9 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x517b3c35 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x55543f87 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5fc253ed pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6276b3da pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6f106f72 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x735de0c2 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7788af1c pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x77a75384 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7b220fd1 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x80a212f9 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9d06d2ab pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc16f1a23 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xde92eddc pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe6a87fea __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1168ee6f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x72aca0d5 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7e306cac pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8123b9c1 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa293a591 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa3ce36cf pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbbba7c36 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc0a2d967 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc2b80db8 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcbfea1cb pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd1d3da1b pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x217d76a8 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xa97522c2 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x08514b2b pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x27fd4a81 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x9599a57a pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xebe0663c pps_lookup_dev +EXPORT_SYMBOL drivers/ptp/ptp 0x2a54b88f ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x49224d8f ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x6409a224 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x65c962ef ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xdf775827 ptp_clock_unregister +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x404c7b3d rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x44543b69 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9b0d8e2d rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa8e58360 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xaf94cf3f rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb977945e rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb9e7198e rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xdc162f01 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe2fdf07b rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe89af9c8 rproc_put +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xf146a9ca ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4d02c2a4 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x50fe7595 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x5dcb8ac4 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x96b47f31 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x157b5bc5 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1b653fcd fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1cc8eed0 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x628f7183 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6b93dbe5 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x84e69a53 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8cbb720d fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9eb9ef67 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb9fa3ce4 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbf5d4a1e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc6f63920 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc7a7b95e fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10931f1a fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1346dc3f fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c3eec22 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2393141b fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x29480328 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3008fe4b fc_exch_mgr_alloc +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 0x428d6766 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x433dde4c fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4e0d6711 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x531a3163 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x53440a29 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5593db0a fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x56e228fc fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66fd2fbd fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6fdc954f libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74181481 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74c78c4d fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f5cd3eb fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x816ee4c5 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85212920 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x88bfd4d7 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8cb0f932 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dd9cde3 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x924fc9cc fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99690c74 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9bf18969 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9eb6bbfd fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f2d1757 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaba1b71f fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbefdd9af fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7d490b9 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd22d4f12 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd5d3d34f fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd6cb3c62 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb569ee0 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdccb9042 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6699ec9 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7722dcc fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf21a2b39 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf924178d fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfca95af7 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd898996 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe5ab42f fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x1b7bc651 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3b2ace5c sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8f5a82fa sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xac14a08b sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x4034509f 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 0x16446856 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x17ddb9d9 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d09217d osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x21b20a1e osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2902d089 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b41aed7 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2efc582a osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x407b7901 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4a68f62f osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x57c6a017 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x641dde8a osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x676d0698 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6e14c510 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x733ddf99 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x75dc8ee7 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x75efadaa osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8264a1e2 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86e964e8 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8dde5d49 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9318d80a osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c05baf1 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c45d05a osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa7b438a1 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa88db11c osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb467053e osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xca4d7949 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb15108c osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xda22fa00 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xde02ac1a osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xde60d51d osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe816ab48 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xec5f07e7 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xee1081ac osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf877f9af osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfb687d82 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff504c9f osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0d999caa osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x58e4d62b osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc4083eee osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc8c21730 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe8d80fd7 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfecd3f85 osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1bb88cd4 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1e6e2c3e qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x21d22a33 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4517af1f qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x967df891 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9a896b27 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa5a283a2 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd1676525 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd318f77e qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdc715d29 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe23b73a1 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf69a35d2 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x18ff7767 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x309b0250 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8aa0697a qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xd6b0a164 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xde319adc qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf20962ef qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0xb8645c1e raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xc6f6ce9e raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xd3665eb4 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x121abac5 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x214ad23f fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3a748f88 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x51b80f0b fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5bdb3867 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x62de5e7f fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x666061be scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x91c6b178 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa22ddcf7 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa3c61e3c fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb541a287 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb649ef38 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe95d44f5 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02d70464 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x061c51ec sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x097b19e5 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0c3bcf7b sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0e4e79eb sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x229b608b scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4b385b0d sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4da04f20 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x58b386ed scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x63d4a6a6 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6e350866 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x88c54aa5 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa257d507 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaeafd02a sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb30321c9 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb425a2a3 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc3447a89 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc3c1b62f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd1ced6b0 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd4036df2 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd5693f69 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd5b4a3b5 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd8e31017 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdaddc2ee sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb28d487 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf12a795e scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf83a4d4b sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfd8b6f18 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x012d8794 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x119f63d4 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1c514442 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x86b53067 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf3285e60 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x15ee6c32 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x386767a3 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xaa3977da ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xaf2d8a67 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd0b4694e ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd7ce977d ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xebcf75d4 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/ssb/ssb 0x036e16ea __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x16cf1fb9 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x38bf86dc ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x48a2d39b ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x4b094dbb ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x52a0ec96 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x66c2b449 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x6f4de415 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x775fe9d2 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x79576ea7 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x841df79c ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x8b28e042 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x94439bd1 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xbe68e276 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc35fa888 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xd2dbbacc ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdc99a966 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xe2be02c5 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xe358ce55 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xeb416bd6 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xffbc968a ssb_commit_settings +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0eaf9e36 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12136a75 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12a0503f fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x169c1247 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x26371678 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x318c470d fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4933a3a7 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4f9f3639 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4fb0eb65 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5e0d1f41 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5ec16a89 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x60df6106 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6b5a49c2 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6fb6edb4 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x73fe7720 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7a473dce fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7aab6a9a fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8e28322d fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8e60692f fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x94cfbcb0 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa12b498d fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc96a3374 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd590b25e fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfcc91b3a fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x2b081cdf fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xaa4cfb5c fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xe3ce562e adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x5c38c54d hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x89a25133 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x8a8f1306 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe7236103 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x5decb3c3 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xfb37170d ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x013776ef lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x09517b17 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0f878a1e lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x10c24121 lnet_copy_kiov2kiov +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 0x200083db lnet_copy_kiov2iov +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 0x3116c292 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3aa0f708 lnet_sock_accept +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 0x402f1225 lnet_net2ni +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 0x4ec3893f lnet_sock_write +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 0x67221ce1 lnet_sock_read +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 0x7aef7c16 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7fb3274d lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8219172f lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x93475f0d lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x942bce08 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9557cd16 lnet_extract_kiov +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 0xd3bd6e8a lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd4cf0d0a lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe3c20e95 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xed2726ef lnet_sock_listen +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 0xf87facba lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfd356ee0 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xff0fed3d lnet_parse +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 0x259d6110 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x657e682f seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x664ddcac client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x6bdaa9e2 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x870d5666 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 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf228c9cf client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf884ad91 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x14958ea5 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x549e1dfb fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x64d7a27c fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7b601697 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7fea9257 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc761a74d fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xdac89edf 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 0x03c7ae5b cfs_percpt_atomic_alloc +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 0x0933ce01 libcfs_kkuc_group_add +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 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 0x279cc0ff cfs_hash_debug_str +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 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 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 0x6b8abda1 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 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 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 0xa9282adf libcfs_kkuc_msg_put +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 0xbd06d45e 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 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 0x88256bf6 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x9eb5d380 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x9ed0f5ff ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xaa4375c8 ll_iocontrol_register +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 0x4a276cc1 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x80a27cee lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xd1f2a268 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xd5795965 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 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01f487ce lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02cafbec lu_env_refill_by_tags +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 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05a0abfe cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05ff9959 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x067890bc class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07133e52 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0732a088 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07a1047f llog_cat_init_and_process +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 0x07d4913f lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07e08bb5 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08a572ed llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09cd60d3 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a71998a cl_offset +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 0x0c34a747 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c52d431 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c72e3d9 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cc96c72 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cfc0dea llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d393305 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d4bb7b2 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d7e7d94 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ddd2715 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f093f59 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f35cf83 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f3c77d0 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f8bdb8f lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x101b250a cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x102acf74 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10427351 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x108b8beb cl_page_list_move +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 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x138139e3 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16f3f531 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18af41ce cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x193a898d cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1961a7cf cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x197f91ae lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19d2fa1f cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a9f7d6d class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae97a75 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b2760fa class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c03f85c cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c4d35e6 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d71b15c cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20238872 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20607252 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2112190c cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21d4a212 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x233845b2 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x237f0577 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x243b2285 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2491b7c6 lprocfs_obd_cleanup +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 0x25ababc7 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25b6e888 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x263f6ae5 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x264fec19 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27889d9e cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x278c7a5b cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28fd2325 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a1b1bea obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b9e83a1 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c2f13e3 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cc01edb cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ce7a8a5 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cf9af19 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e1fe437 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e8453dc dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eb4096f cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2edc13f9 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eed5fda lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f27eb6a cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fa1f1ba lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30067976 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x303f2f9a class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242b734 cl_lock_enclosure +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 0x32916989 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x331a8f47 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x342206c3 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34782ab7 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x349b33e8 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34ed513d lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36993052 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36cdc069 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38b34a04 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39be91b2 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3babde6c dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3baf61fa cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e1cf286 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ed00d5d lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f4c2d96 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fece90a cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x412dbdbf cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x416aae9a dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x419f9a21 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x424545dd cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42c47533 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43d8bf52 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x443bffda cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x444bb909 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4596bbd8 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46d583a3 lprocfs_at_hist_helper +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 0x48110a8f cl_lock_print +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 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 0x4ab53b17 cl_lock_extransit +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 0x4cb05280 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cbb190e cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cd580b7 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cef27d4 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d5e2c3c llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e8527ed cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50fb1c69 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51457113 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51f91c82 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5291554b obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x535d76d3 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54348af3 lu_site_init_finish +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 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 0x55efbfd9 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x561db215 cl_page_clip +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 0x57233624 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58203cad cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5877f8c8 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x587d0bd7 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5af6e57f cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b4670df cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5badfdd8 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bb48c74 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cba8479 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cd48d58 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cf16587 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e5e5282 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e71c8c4 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ec3ee80 class_destroy_import +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 0x60c21e51 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60c476eb dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61082648 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6123916e llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6130bced cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x621454e2 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62c89e52 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6310227a lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64befb28 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64ddde63 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x664135c2 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66fd7d54 class_conn2cliimp +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 0x67a62a9d lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69435011 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69829740 llog_init_handle +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 0x69c498c0 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69ca0bd7 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b0a037c iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb298e7 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bc96f2c lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bfec359 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d9f1f22 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6db83230 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x715fec59 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x718563f1 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71fe7259 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x735b22c1 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7386a1e1 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x745a428e cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7491f232 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74b8025e cl_object_get +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 0x75d8bc01 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x769f1f57 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77948b94 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77e17a13 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x787c498a class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78b73c46 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78d9a55b class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x794f47eb dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b2c3390 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b3782ce lu_object_add_top +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 0x7bdd53f1 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c437f90 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c9fbab4 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7dbf1bf1 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ee2d829 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f3f69af lu_context_key_degister +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 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 0x825a06dc cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x829b7b78 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83d03347 cl_sync_io_wait +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 0x84ca7a63 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8540f5d6 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85cd24e1 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86139a91 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x888ffccb cl_lock_closure_fini +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 0x89a8277c class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89ef6b4f lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89ffc4b8 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ad05ad1 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b6b4847 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba547b0 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bb85d30 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c357778 cl_io_unlock +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 0x8e2ad314 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e5b0616 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8eed3db4 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f44c151 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f7d91ed cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f9b2c5a capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90cd8d8a lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x921e25c6 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92394cc4 lprocfs_seq_release +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 0x93bde1b3 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93bed282 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94598192 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94b6fafc cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x951d40bf ldebugfs_seq_create +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 0x95925345 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95955666 class_add_conn +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 0x97dbdc3c class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x988ae411 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98b22d70 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x996cbb04 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99ab588a class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99e4e526 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ad1c38f cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9af425fe cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b0bfcbe cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bf62b4e cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d6f9348 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e085279 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ed4216b dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9edd98db cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f9c58f5 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa17139a0 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1775ecf llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa303a2b5 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa34ad430 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3e28840 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa44b2d9c cl_enqueue_try +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 0xa72774a5 cl_lock_closure_init +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 0xa8f18d37 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaaa9fb14 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaae9a6a9 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabae1a76 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac475d8b lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac9adb64 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae0de758 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf6ce3a5 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafd5368c cl_object_attr_unlock +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 0xb2044625 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb256f176 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2777afd class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2bf411d lu_object_find_at +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 0xb5195e29 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb61883f6 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6483e2c lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb655134f ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb674439c obdo_from_iattr +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 0xb746902d cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7bbb8fe lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8358b92 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba189461 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba2f664c obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbaaa835c llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbabfd13f class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbba8b2b5 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc51affc llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdcd155d capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdd0b1ec lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe0e4b32 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf274a8f cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf53c8c2 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0064aaf lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc029197f lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc07da0bf ldebugfs_register +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 0xc0f42ba6 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc10a93f6 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1461172 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc155e8e5 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2ea2c09 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2fdc66f cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc362fb35 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc387d7f2 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc53d0ed6 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc56321f3 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc64764d7 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7759db6 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7b89fa4 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7ef9823 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc827b692 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc840217b class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8cd6b11 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9530281 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb016ae9 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb215ccb llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb4d0914 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb54766f cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdb17ad7 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce906fe7 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcec0fcf4 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcee3c1b1 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd00e1156 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd022d33c cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0a3de2f 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 0xd1b42a1a cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1ca6d69 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd525f269 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6d5a375 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd76cfcbd llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7a84d33 ldebugfs_obd_seq_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 0xd94dbefb cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd98cf16d lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9fef4e8 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda8c0dcc class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdaa083f9 cl_io_iter_fini +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 0xdb1c6afa class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb46c221 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc2e95e7 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcbbcc2d cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde26f55d obd_export_evict_by_nid +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 0xdfb570b8 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe09be926 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0f95516 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2187152 cl_page_cancel +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 0xe3082848 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe357b7d6 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe38f395f cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3b91528 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4d2e579 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe51c0b8f cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7498aca cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7ee903d obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe897651e lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe917e562 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9d9e87f ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea90008b cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xead133a3 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec769fe6 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7a7d32 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed8283b0 dt_try_as_dir +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 0xeeff39a0 cl_env_get +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 0xf0d1e4b8 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0f06197 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0fa515e lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf12fd23d lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf17816ac cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf17a510c dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf27a3bda lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf304e00d cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3a5a3b2 cl_index +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 0xf53cdedd cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5b84e24 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60e0180 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6819868 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6e70b4a dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf78052a1 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7cdce2f lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f8c9ed llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf83369f8 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf849c004 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9a2ee25 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa0e6c68 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb021aca dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb575450 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb7a3bad cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbb0abf9 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbd3e25d cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc3ee451 lprocfs_rd_connect_flags +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 0xfe12f075 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe1db264 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfebb91f4 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfeeee332 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff305451 cl_page_top +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 0x0099ab13 ldlm_lock_fail_match +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 0x01366cad ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d2d9c7 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03e46b8e sptlrpc_sec_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 0x05afa665 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05ec1ce2 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05f0436d ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06134361 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06e58257 ptlrpc_pinger_del_import +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 0x0789b115 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x081c6f1c sptlrpc_cli_ctx_wakeup +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 0x0a5de181 req_capsule_shrink +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 0x0ce740e0 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e4d2097 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ed4054a sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1089b47f llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10a5e5a0 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f0740b ptlrpc_prep_bulk_imp +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 0x116bf563 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11d66c2a req_capsule_client_swab_get +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 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17542f4c ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17bf02c9 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18c2b54b ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19805bd2 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19a5cec8 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a591838 ptlrpc_request_committed +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 0x1b36a292 ldlm_flock_completion_ast +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 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d533201 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dab14a2 ldlm_cli_update_pool +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 0x1e767163 ptlrpc_reply +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 0x1f048c49 ptlrpc_unregister_service +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 0x22e6547d req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x22fa3e22 ldlm_lock_allow_match +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 0x24c00b4c sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24d4d860 ptlrpc_start_threads +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 0x279cb602 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28579271 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x286610c6 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x295e8aea sptlrpc_cli_wrap_bulk +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 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c8a9776 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2caf33ea sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d42d06c ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d5af80a _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2dace1cb ptlrpc_lprocfs_brw +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 0x2efc7846 ptlrpc_request_bufs_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 0x2fcbd191 __ldlm_handle2lock +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 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33d7103a target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3414a36f ldlm_pool_get_lvf +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 0x389de815 sptlrpc_gc_del_sec +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 0x3a008561 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a6acb07 ptlrpc_restart_req +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 0x3aff79b4 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b12e24d ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b5744cb ldlm_resource_get +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 0x3cefc9ec ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cf0e645 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dbbf1b4 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3de9ce67 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ebab6b7 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f34bfac req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f5cf496 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40004682 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x407f8e84 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4166ab4d ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4166e459 lustre_pack_reply_v2 +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 0x43825fb7 req_capsule_client_get +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 0x44bfbf1e ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x452c0f98 client_import_add_conn +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 0x462cb29d ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46f643b1 ldlm_completion_ast +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 0x4a437426 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a64af84 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ba0aea5 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c811052 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c8a0bc7 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cfc0d35 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d001b71 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 0x4daabeba ldlm_pool_get_slv +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 0x4ec0d3b6 ptlrpc_hpreq_handler +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 0x506835b8 req_capsule_set_size +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 0x5389bdab ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53aa88aa req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53ec119f lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55206ccc ldlm_pool_get_clv +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 0x59142e82 lprocfs_wr_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 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5aff62f2 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b773394 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6d3ae4 sptlrpc_register_policy +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 0x5ea30809 lustre_pack_reply +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 0x5fc5f797 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fd830e6 ldlm_pool_setup +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 0x611bba1a ptlrpc_nrs_policy_unregister +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 0x6234f5f1 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62a1111d ldlm_pool_del +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 0x6322ab10 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63799963 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64e027a9 target_send_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 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 0x69740025 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69a46379 ptlrpc_set_add_new_req +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 0x6b1216fd ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bdeeab4 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d083c79 ptlrpc_at_set_req_timeout +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 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 0x6fd948b6 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70e867af client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x715aa84d ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71d74ddf sptlrpc_cli_ctx_expire +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 0x73fef983 ptlrpc_obd_ping +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 0x76fa0e37 sptlrpc_lprocfs_cliobd_attach +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 0x79c3ebd7 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7abb3580 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b169c0e ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c2d20b6 ldlm_register_intent +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 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 0x80e778fb ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x815a989c ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81cb11f3 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8231b575 ptlrpc_request_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 0x8389ebb2 ldlm_pool_set_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 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8658bedf client_import_del_conn +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 0x88af6a5a sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88f7c95b ptlrpc_wake_delayed +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 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 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d67cd6a ptlrpc_init_import +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 0x8e357980 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8eb38df6 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f204909 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x90f8a8a0 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x90fa1b6b sptlrpc_target_update_exp_flavor +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 0x92fa646e ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x93ab63a4 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94bc1fb3 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94c17ca1 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9597331e ldlm_reprocess_all_ns +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 0x9683f291 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96918f1a sptlrpc_unregister_policy +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 0x981ceec2 ldlm_cli_cancel_unused_resource +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 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 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 0xa3a33bd7 ptlrpc_connect_import +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 0xa57991cf ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5dcdd32 ldlm_lock_convert +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 0xa879abe9 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 0xaa80893e ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab15eb85 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad967407 ldlm_pool_set_limit +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 0xaf5c89f0 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb09eefda ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb126fe2a ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1293ac3 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb24a2391 ptlrpc_disconnect_import +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 0xb32977d3 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3f3703b __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3fde77c ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb46f18e5 ptlrpc_replay_req +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 0xb5cc5e15 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5e476a6 ptlrpc_unpack_req_msg +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 0xb6f5c89a ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb701242b ptlrpc_error +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 0xb8583637 ldlm_lock_match +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 0xba525308 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb33befd ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb9953bf ldlm_init_flock_export +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 0xbd893ebc sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe8db9da do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbed86e92 ptlrpc_nrs_policy_register +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 0xc28f0ca4 lprocfs_wr_evict_client +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 0xc2efc7a5 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc486bc9a sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc515a76b ldlm_lock_get +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 0xc6897c9c req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6c99496 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc711948b ptlrpc_abort_inflight +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 0xc912c1ba ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9634d77 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca34d069 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcac5bcaf req_capsule_get_size +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 0xccc21421 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1fac28 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce218ba7 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcea07d52 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xceadba47 req_capsule_server_swab_get +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 0xcf65b9ea req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf99b523 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1f6b862 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd223bba8 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd251509f sptlrpc_req_replace_dead_ctx +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 0xd5661261 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5ef22c4 ldlm_glimpse_ast +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 0xd733d652 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd74b285e ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd77aea46 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7a03109 client_obd_setup +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 0xdcc117b4 target_print_req +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 0xdd947ce8 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddba0b25 ptlrpc_send_error +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 0xe1a9bb30 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2478d00 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2521bb2 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4f11311 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57770a7 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 0xe60fd1a5 sec2target_str +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 0xe88628c7 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe99038d9 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9ce18e1 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea499266 ldlm_namespace_foreach +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 0xebc82b76 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec087e2d ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec35a56c lprocfs_rd_pinger_recov +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 0xee033d55 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefaf9c8e client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf096f6c8 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0df874b lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1d4ebff ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2617769 ptlrpc_mark_interrupted +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 0xf2886e6c lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35715c6 sptlrpc_gc_add_sec +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 0xf3df765d req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf44152f5 sptlrpc_cli_ctx_get +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 0xf573b3af ptlrpc_req_finished_with_imp_lock +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 0xf703ffca ptlrpc_pinger_sending_on_import +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 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 0xf9f4df1f ldlm_lock2desc +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 0xfa57893c sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfae410f0 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 0xfbd67fe4 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbdce203 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbe20241 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc718df0 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfeee8b53 sptlrpc_sec_put +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 0xe3ad0947 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0b23b2bf rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ed77b98 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1d400a8a rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21c6a16f rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x250527c7 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2bd072f7 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30c8615d rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3359b45c notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x356f2184 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x377f4525 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ae154d8 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x425971b8 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4c725c9f rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4dc20c42 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52073149 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x548c6a77 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x551179ab rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x564f907b rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5684943c rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x583d7343 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5c20a0af rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x65a30369 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x68eb1064 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x773b4197 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x82dc3827 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8c4b040a rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x90a4b9d0 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93f0c404 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x96d27a51 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x97db5a81 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9e7eb089 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9f098545 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa31832c6 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8c2b481 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xac00c686 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb2735631 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbc274833 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf686a9b rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7da6a22 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8edd14e free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcad447f2 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4b19786 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde4f6657 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe0315422 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe38aa5b4 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe4f2d28a rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe5357a41 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe8354b3d rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xedf1a312 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf34be557 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x066e7461 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1164840e ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x135e0f8c SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x15f94bec ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x18023429 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d0ddb86 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1f489aab ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1fc8fb1d ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2137b3a1 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3254e2c3 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x36cd21e4 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x43f3da84 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5346cc1f ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x557d2d7d HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x58e37807 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63ff001f ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6cf790fa Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x723bac7b ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7281a8d4 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7380c755 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x78731fbc ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7af09d90 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7aff7980 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c17b2de ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8045e7a9 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x841b87fa ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8b3c3445 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8d2c2d72 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92bf0d15 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a1a3895 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0015d1b ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa3735d61 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4961b71 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac512969 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaed0445e ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7a85aa0 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9b1ed96 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba16e20e ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbd6d2f93 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc2ffab9e notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc7c93304 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc80048dd ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd2344221 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3a0cf21 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd84f91de ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdaeec5e3 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd5f2be7 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe549fcc9 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe68e5d3f ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe8efab44 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe96e5478 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf10e2c7d ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf1768260 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xffd39ce9 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x094c265b iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x121b4f56 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x18551bed iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x189d04e6 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1c35d3f3 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1df5ce7a iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1f5f8048 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1fd768de iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2bd2586c iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x334dfe51 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4390befc iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5544d10b iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x55d0f86c iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5c433fe2 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5e1e79c2 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x63378479 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6374b7b8 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6b609557 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x76555dfb iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7d5a8443 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8a33b2ec iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8cdfaa89 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8d78fecc iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9052801 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe72ea55e iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe8dfb7d0 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf2859ed8 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfbd65a75 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/target_core_mod 0x01bd3d9e transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b7c300a spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x12730754 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x1485d6fe transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x18ae1103 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x1df6be37 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f24b0a0 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ff14cce core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x208285b6 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x23259e62 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x26b178ef transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x27dd3808 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a4ea620 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b8ec9cc target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c947db6 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x2eca8c16 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x38988a3a target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x407ed11d target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x40e6dd11 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x41b81996 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x47bb0b2b transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x48b32507 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a262345 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e42a809 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x511813cf target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x582e5ff9 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x589974b1 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x59696549 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x610a6756 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x614bcbe3 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x66b4b48d sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x69e8a476 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x7130cebf target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x746d763b target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x79437b04 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b35e7bb core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x83bd2578 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x83e982ca target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x84543ed3 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x878996d3 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d147602 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x91086221 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x92e6a056 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x94584cf4 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a084113 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x9af9523b target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa397353f sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5b1803e __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xae7e8e5d core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xb0a37f02 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3b57df0 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xd500999a target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7db0f4c transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xdacb3258 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xdbbcfc68 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe57b9310 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6888e28 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xed55b6cc target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf39c22c9 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xf56e1aa2 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xf6077678 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf6f64cfd sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb210151 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc6e6761 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfd49c3d3 transport_free_session +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xd7fd0729 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x3d5433df usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x8bd09104 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00bfe15b usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0e47811d usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x126fa141 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3c242c9c usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4975ec28 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5cef8b8d usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6210d10c usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa90856c3 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaac9385e usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xad2c538a usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbfa38909 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd8230176 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xcc4fa3e2 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf3249eb1 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 0x8434bf5f devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x97a15540 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xaec5362d lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe6e873bc devm_lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x0d16d895 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 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5a242ac6 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6c4e9c59 svga_get_tilemax +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 0xc50f1907 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 0xd4c7aecf svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe7905f09 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe8af5243 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 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xaa1c8d20 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x04a378e6 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x9887dada matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xc5f5fea2 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x72bc4c92 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x84a4d091 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xccc40ddb DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xda9470c4 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x6fc1b9de matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xa7caaae6 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5378a4db matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5ff000c3 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x81c1ce6b matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x8cf0ca31 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xb50c74bc matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xbad2fce9 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x0004eabb matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x157fed9f matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x31d8251a matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x96808828 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x97da1bec matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xb7ea6334 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 0x64cf6ba4 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8781fdec w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8c6dafd3 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdd27cbc7 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x90b78594 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xddc31359 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x52825160 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x6f5c5f8f w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x27fa15a0 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x8990847c w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xd98a1957 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xe3d053b1 w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x056454ab config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x1a870cad configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x258090b4 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x3792749f config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x618ab558 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x7cbe0e36 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xada9f21a config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xcc581ea5 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xcd40cf9e config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xe663fbfe config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xf28360eb config_item_set_name +EXPORT_SYMBOL fs/exofs/libore 0x232cf1c9 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x5179822a extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x51ca9e0b ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x6d6dc877 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x99b1f7e9 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb75d1823 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xc50af49f ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xcb5e555b ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xd0587627 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xd30c2480 ore_truncate +EXPORT_SYMBOL fs/fscache/fscache 0x02705cba __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x0286b57d __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x0f3be236 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x0feaefcc __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x10f696c9 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x18f699e4 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x36bd2d59 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x3ec3fd14 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x47e4d438 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x50ac71e0 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x5a485d26 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x5fb24b88 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x6f87880e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x729ac6de __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7a55edd7 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x7de31ecf fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x7e22daed fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x8341467c __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x8b447266 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x8befa304 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8fe3985d fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x919eb8a9 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9468cfbc fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x976bd6c6 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x9a8482c2 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x9bcaf867 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xa00be51f fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xa29ab0bb fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb2ea6747 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb4a0569a __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xcbfcf950 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xdab26a96 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xdeb5a95f fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xee94551c fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xf7e25f1c __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xfbb88f52 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xfccde51e __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xfcf63c4f __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xff009cbd fscache_put_operation +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x79499efc qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x7c9f8222 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9b957cca qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc884cc1c qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xf6b055b0 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 0x4c0b4367 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 0xef5399c9 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 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 0x039b28aa lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x22fb6006 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x1ed75f55 register_8022_client +EXPORT_SYMBOL net/802/p8022 0x3cd6a030 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x50177c66 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xf4c20b6f make_8023_client +EXPORT_SYMBOL net/802/psnap 0xdace3c61 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xe72e7156 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x01625d43 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x10a09eb2 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x13d516c7 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x15812a14 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x24ff69cb p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x2e1d155b p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x324f2735 p9_client_renameat +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 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4667fa69 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x52c81c8f v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x5b0749e0 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6905ae74 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6b63a443 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x7768d604 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x7834c706 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x8bbe6f54 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x95014194 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x95452cb9 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x9f7edb45 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xa60a0f7a p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xad56f87b p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xae4c4e0d p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xb1aaa46e p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xb1f1cc2c p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xba7761dd v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xbc3b91db p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xbe77235b p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xbeb4f32e p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc11b0920 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xccb7edcb p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xd48ff9ee v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xe18f0e04 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xe486adc8 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xe4ee2d87 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xed9b5932 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xee8da24c p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xf3dd23c3 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf54d66bc 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 0xfd8ebb1a p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfdefd3a4 p9_client_wstat +EXPORT_SYMBOL net/appletalk/appletalk 0x0095a6b2 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x38f6a715 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x4c215b72 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xf283e2a1 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x354d4cdb vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x3eb56aa7 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x56d9b904 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x5bd554c9 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x5d5e56cc register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x6888e073 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x7a48ae73 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x867efa7d atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x92840d9f atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x9403e459 atm_charge +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xbd7581aa atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xe12e8dcd deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf9c43424 atm_dev_register +EXPORT_SYMBOL net/ax25/ax25 0x04c3369c ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x2105d6da ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2f63d3a1 ax25_ip_xmit +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 0x5cb8064b ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x5f8224e4 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x880ec2c9 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x997fba90 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 0xfb8c63af ax25_listen_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03bb0e76 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0a14f154 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x129807ec bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ad1369b bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x21ddc922 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x23e51325 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2a448c97 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3414797f bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e40f561 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x417358cf hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46748e57 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x49ae7799 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x530894b5 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6108c671 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d21c542 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8124697a bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x81b1510a hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x90d2472d hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x933d419c bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x937aef94 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9adcbd5e bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa26245ed bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa5e85686 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa6122378 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaad39499 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb6bcd572 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb7814384 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb8955daa hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbccf4d2 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbf4058d4 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc35a11d5 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc53e0765 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc57305e0 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd15f6ba6 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdf4aa610 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe278e91f hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe6df354e bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7660c23 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf3f138db l2cap_conn_put +EXPORT_SYMBOL net/bridge/bridge 0xe773b30f br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x0bca6712 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x62d4c956 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x884731f6 ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x11a3c51c caif_enroll_dev +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 0x3d3e90a4 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 0x83857354 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x90160974 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 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xfd409b62 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x1219b4fb can_ioctl +EXPORT_SYMBOL net/can/can 0x6a314a96 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x6c0efc85 can_rx_register +EXPORT_SYMBOL net/can/can 0x94e189da can_proto_register +EXPORT_SYMBOL net/can/can 0xc117ba05 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xe2add282 can_send +EXPORT_SYMBOL net/ceph/libceph 0x0240eb9c ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x0437beea ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x078a2c57 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0f66332a ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x10099279 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x110fa59a ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x12492cef ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x150efda0 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x1b6e3374 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1cc52d56 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1f523510 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x22370f04 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x29f3ae60 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x2a8e89ac ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x2ae3a719 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2dd607be osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x2e632eef ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x2ffc147d ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x30a12c01 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x33787e6b ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x39437814 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3f31db1e __ceph_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 0x42c5df45 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x43667a2e ceph_msg_data_add_bio +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 0x472c42bc ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x569f5975 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5c907516 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x60128d39 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x67288a4b ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x67b7b33b ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x68738bcc ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6ecb27a1 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x7465b3e0 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x748f1ff3 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x784ab6e8 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x787ed010 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x809151cd ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x80f3c661 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x811769b7 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x827fe6bf ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x897b3384 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x8cc2f26e ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x8cca64f9 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x8e276291 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x901ca786 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x90716d00 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x9115bf7c ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x922a73dd ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a78ce76 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x9cd141bd osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x9e3d3ec6 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2e44b2f ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xa55098b1 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xa7f55d24 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xa945f51b ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xa9576163 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaf8de1ad ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0f7f3bd ceph_copy_to_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 0xb91c87a7 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xb9db8084 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xbbff1ed8 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xbd34da03 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xbe1b5eeb ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xc26b0ee0 osd_req_op_extent_osd_data +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 0xcb7a278f ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd441253c ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd6a68338 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xd6aab7f5 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd8792d80 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdcf39d05 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe7800886 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xea9cbe76 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xeb5e02f5 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xeb846836 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xebe2befe ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xedc315fe osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xee760b0e ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf05a5a67 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf64f406b osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xf750fa55 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xfe8f2254 ceph_con_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x8490577a dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xdc86dbcb dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xb6fb72f1 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0678e9d3 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3dc871e1 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x42762c77 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb9c7cda5 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd3f6faea wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf126a9a3 wpan_phy_register +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x7d7e4449 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x95d09872 gue_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x03a4cd76 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x23ed442a ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x3693c3e0 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x70163bdf ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x9816a1c4 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xc5170689 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x1b580937 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xb8d01d80 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xeaa0e873 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5cbb31d7 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x7478e761 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xa211900a ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0xab5a3a8a xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xb847d55a xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xb0a95d87 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x914d5ee4 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa4ac4d9b ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xbd451d0f ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf1869c1f ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x2840e678 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x528ed125 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa7b2ad5b ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x4460a752 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xe7a77e9b xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x39bc3831 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x96fddc91 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1cb929fc ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6def93cd ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x71ef2c04 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8b4361e9 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa27f7cbe ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa4888650 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xeb1e43d7 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xed2cfa0e ircomm_connect_response +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x04225306 irttp_close_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 0x080c694c irttp_dup +EXPORT_SYMBOL net/irda/irda 0x0df4d7f6 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x236dd437 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x2bc5727b irlap_close +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +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 0x4b0db424 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x510d1ea1 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x5d70295c irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x5fc29014 iriap_close +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x647ff522 irlmp_data_request +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 0x6fcf7b99 irlap_open +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70e57fc9 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x72de9a63 irlmp_connect_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 0x801d6496 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x85057170 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8bae44da irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x8eb13f0d irlmp_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 0x9a162767 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x9d41c87c irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xa096265b irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb7aae9cf irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbbe2c6f9 iriap_getvaluebyclass_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 0xc45a0b70 async_wrap_skb +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 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 0xe88567bd irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xe929222d iriap_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/l2tp/l2tp_core 0x2c117cf7 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x10fdab77 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x1dc1b320 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x43918e45 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x5cfb8bd6 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x9edf4004 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xabcbee79 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xe8394d61 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xf9828ad5 lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x13c2cb7c llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x4b6e5bc2 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5e1bd49b llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x87f20375 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xb18c9cf9 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xca1cd27a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xda8416c1 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x02b8dd7c ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x0bb1a261 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0c06b86b ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x12c09ea2 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x19dea952 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1c98ef7b ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x20abbc38 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x235aef5a ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x2b3114b3 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x35ff0d17 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x3ac9a764 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x3e3d7039 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x43aee495 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x48d42e01 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4a210761 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4c03b2fb ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4d7d7936 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x525c2af3 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x53dd00bb ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x55cc197d ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5cf7893d ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5da983c9 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6854555d ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x69f21712 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x70c66ffe ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x710940a1 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x757207f9 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x75b10e14 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x780fa66f wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x793df018 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x795fae84 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x80a1d6fb ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x8116e27b ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x8232dd5d ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x8642e86f ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x875fe51a rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x8b336be0 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x91d5bd44 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x97718f2e ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xa0c37084 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xa692cb2a ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xa8bbd4d7 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa920de4e ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xac1e9f5a ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xadfd202c ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xaee62928 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xb1d4d2ec ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xb20844b5 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xb3ab7ea3 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xb46940a7 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb4c47309 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xb6933bcb ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb850c8bd __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbe16aa03 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xbf3c8759 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xc418e7f5 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xc799ab24 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xcc3bd239 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xccae6a22 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xd001c9e2 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xd18ca500 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xda2e0a34 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdb03da53 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xddc99c05 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xde12dbaa ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xdf881c8e ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdf88984d __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe02bfa79 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xe38c9238 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xe5b2256b ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xea62d5e4 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xebe62beb ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xed74fbac ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf6ee0f3a ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xf7491b01 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xfab1b762 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xfd37036a ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xff2fdd9e ieee80211_radar_detected +EXPORT_SYMBOL net/mac802154/mac802154 0x0972072b ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x11598312 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5949a173 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x745167fd ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x7e69f0c9 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x99f97d56 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xec713267 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xef27b83d ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xf9a74133 ieee802154_unregister_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1e61dd8d ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x20654388 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x42b3c692 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x548a5b32 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x56616b29 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5e5654f2 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x70a67150 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x83a7159e register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8ddac494 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x93743487 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbb6f2e9b register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc03d9b65 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc38f4200 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc94b9998 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x065e5469 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x99372125 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x9f2cfbb4 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x168a76d4 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x1ee8fb22 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x3af43940 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x959f1ad6 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x986390f8 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x98974d40 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x182aa16d xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x46d63726 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x54650d1d xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x7a2a0426 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x880b83a1 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x9a3b2e27 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa8c17195 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xaf2c3fab xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xbf7c5603 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xdba8e479 xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x079ee266 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x17ae2059 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x2478a544 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x30d39c3c nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x3720d639 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x3fd2e6aa nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x541881df nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x55931fb8 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x84c5a761 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x8b1bf31d nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x8de3a787 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xa1dd4ead nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa60118ff nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xab1f0c4d nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xceb69a16 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xdf96a6ef nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xe4de85b7 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf7958c61 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xfa9530ae nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/nci/nci 0x15a42609 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x19659c1a nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x1df7ed12 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x252c7b07 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x38d5fb76 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x488125fc nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x60ced1e8 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x82cc9c89 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x86152d10 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x8e740024 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x9b37205f nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xb544467f nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbdcd3310 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xc72d13eb nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xce3e7b4b nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xcf251791 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd43d89d3 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xf3719d9c nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf9edaef0 nci_recv_frame +EXPORT_SYMBOL net/nfc/nfc 0x1af94c0a nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x22570510 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x28202d6c nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x457132ba nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x598afee8 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x6a3e387f nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x6caa1d6a nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x72ffd527 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x819dba60 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x955c0328 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x96c6f0b3 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x99006a63 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xa11bcfd3 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xb6f365cc nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xb7a5cffc nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xbb661629 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xcfb2e657 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xd3f792e5 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xd63d9f99 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xdbb7c212 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xef941e25 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xf4700ac2 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc_digital 0x1e12d469 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x788fc02e nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa00e13f3 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe3ddde75 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x17313a3e pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x1b200514 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x1ee75c43 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x83d50979 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x95f9a7b4 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xb23e6df3 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xdb952b2a phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xf4f5f8be phonet_header_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x154dd02c rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2b47c2da rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x38a32c98 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x602266c3 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7295e6af rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7be28427 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x800d0a1e rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x884ed767 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8da6ec7a rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9773ff27 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9db873cc rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb8be7526 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcda13017 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xea46a000 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xff7a499c key_type_rxrpc +EXPORT_SYMBOL net/sctp/sctp 0xaf95ad1d sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x1572ab70 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x9508140e gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa56a33f9 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x5ee8ae36 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x73aeb19e svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x76f829da xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x39cb38ac wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x650c77ae wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x003c8978 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x06666ec8 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x091c5369 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x09223196 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x09790972 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0efa3a9b regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x162a481d ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1682ef4f wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18d0157b cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1e688952 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2157980d cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2836fa35 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x312f0dce __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x31c39913 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x32a435fd wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3ea35bc1 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x4003553c cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x41d09ba3 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x43255158 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x43c5e7df cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x44cc62c7 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x4533fcf1 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x49e8cc75 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x4f0822f9 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x5089b1f4 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x5512d5d5 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x58173023 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x5ec65d2e cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x5fd5d993 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x62159417 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x63b084b5 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x689c5029 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c43af42 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x6d5e7f6d cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6ea347ae __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x71217d3a cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x74cc73af cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x765ea5e6 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x7762a97c ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x787543cb cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ad38b19 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x7c5e93c3 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x7d8c5458 cfg80211_tx_mlme_mgmt +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 0x886c7bca cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8a9e64bb cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x9314bb32 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x938016d5 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x96909903 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x96c5642f cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9702a9d4 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9dcc4291 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x9ef11d6d cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x9fd4f246 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa18f1396 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa1be023a cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa58ce969 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xaab5ed31 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xaac6e86a cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xac60a936 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xaea04454 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xaef47187 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xb29022d7 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xb8f8fb6d cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xb99b0fea cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xc1306924 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xc60d7b0d cfg80211_disconnected +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 0xcb08c7fc cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xce772ce6 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xcf062933 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd933005e cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc947609 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xe06a1496 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xe2181de0 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xe2936148 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xe357a563 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xe456e842 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xe64f512c cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe9677a65 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xfac37af4 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xfbcd3e6d cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xfee2fe87 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/lib80211 0x1dd26ac6 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x591acb3a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa6c495b9 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xa7552b84 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xbe8dbf56 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xfb326103 lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x927875ea ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x989cd355 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 0x6856ba3b 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 0x83f08bc1 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb3b36b8b 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 0xdb75fe95 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 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x8cd4c3f0 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 0xd5d1618d snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x04b9e751 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x063fb7a4 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x0c5df243 snd_mixer_oss_notify_callback +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 0x1a8ed399 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x1c76a742 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25b93a03 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2c825d0c snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x2f444cfe snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x2fcb2d04 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x357ccda7 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3f1f53ce snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x460f028c snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x4671599f snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4d035b27 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x4ef3112a snd_device_free +EXPORT_SYMBOL sound/core/snd 0x4f89304e snd_cards +EXPORT_SYMBOL sound/core/snd 0x531f27bd snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x588948ea snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x5989b2a7 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x60db54ae snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x618c8c2c snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x6590250c snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x6835a211 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x68c6c6a2 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x6ea4be22 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x6ec8804e snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x6f54d68a snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x7066771a snd_device_new +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x717fe49d snd_component_add +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8271605e snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x938d5bee snd_card_set_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 0xa1a555be snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xa48782b7 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xaff5f61b snd_register_device +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb5b65eaf snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xb7e84f22 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xb8fa9a8c snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xbc2779d7 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xd82f2e0d snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xd9c7f597 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xe1347223 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xe50276e3 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xe5f5029d snd_card_register +EXPORT_SYMBOL sound/core/snd 0xefbd7dd3 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xf820ee22 snd_card_new +EXPORT_SYMBOL sound/core/snd 0xfb42d10e snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xfcd2b2e1 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xfd6b4a17 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x3c22d77a 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 0x0d243429 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x10e14243 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x176b702f snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x1c679958 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x20612eb0 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x23797ecf snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x28669a1a snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x290da280 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x2ac75c92 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x2c7bd4d9 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x3485ee0b snd_pcm_kernel_ioctl +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 0x40cb4125 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x49c27295 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x49e2496b snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x4d482ad3 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x4df9485b snd_pcm_hw_constraint_integer +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 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5ead413e snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x62466f75 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x679255bc snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ac4332e snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x6b4a5ff4 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x6bd7e08e snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x73a2602a snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x85e6fce7 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x8a80cd47 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x91eaa285 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x998d8b57 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xa031dac8 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xa09231db snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xa5d28fc8 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9149ebd snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbb367ca2 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xbd5757ca snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xca52c800 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xcab8eca1 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xcff12109 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xd53bbf85 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xd6d3cf7f snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xdb2f912b snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xdce1651e snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xdd16b5b8 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xe06fa3ae snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xec06f1ba snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xf0c03d1b snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xf29b2d4a snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf884d23c snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0aeda16b snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x162cba11 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x16dcae3e snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2231652a snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2e33a77a snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x419a8ad3 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4d2509a1 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x610c03ea snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6ad9661a snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7262fcf8 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7e4f2469 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8662814d snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8b74f3e3 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa4abe906 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa6cbafb0 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0058990 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf079d04a snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf12fcc42 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf67f53d3 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-timer 0x268244fa snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x2a201616 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x30d72f29 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x6e3dab5e snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x7906c346 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x7bf3cdf9 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x89b5175b snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x92bbe30b snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x9fdcd0bc snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xeaef4a61 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xecf86096 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xfd1f7e83 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xfd356a74 snd_timer_resolution +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x4776b2cb 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 0x16dcdf1c snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x20f26770 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2cf0e386 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3b5e3a65 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7612cb26 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x973f0ece snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9d2efd73 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe509886b snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xecf188b6 snd_opl3_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x024195d6 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0f702c64 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 0x5f369977 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x736aa07f snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8c71c93f snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8d38b780 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb77f3486 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdb2cc353 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe0bbbfca snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x03944eff amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x048a1eb5 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0847e52c avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0a98ce0a fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x153f0e6f fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x159e5366 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1aa73e08 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1bcc90a5 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2a946104 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3314fea8 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x50bd0fb6 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54a6484c amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x58db747a amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7064387e amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7ad06633 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x82fe8fef cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8481bf9f snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8b2a8de0 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x91e7a389 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0403330 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca161a7a iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca782d3b fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcd648854 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdb06b14f fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe2608ade amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe973bf28 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeac7f99f avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xede03c7a fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef7470a6 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf0d36ce6 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf8c9711a avc_general_get_plug_info +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x1df0f36f snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xcded2509 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x069d0803 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0c9cab1d snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x12515bfc snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x33583cdf snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4ecfc97f snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5b890d5f snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x75b74f1f snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf8a1b700 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x27be472f snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x3361f1f6 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x99f2f306 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9f5e2ec8 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xba1abae3 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbd6ee680 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x2860e4d9 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x5faf4266 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9255d67c snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xc4e53913 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x945b15a5 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf0b9f535 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2de410cc snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x52834970 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7a6deab0 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7e584ac2 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9f33d628 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc05a0ea9 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x2224dfff snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x50ff2c38 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x59852448 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x66813580 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa893a5d0 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe442e2fc snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0556d4dd snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x11df80dd snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x224aa3e7 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x23b2e4aa snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4b36a85a snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7b72eba2 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc1141022 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcc70e69f snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xde3d0887 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf44141d7 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x03cfbc7a snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0d3ee8e9 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x16e743d2 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3bd8bde3 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5418e9c4 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5756733d snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x576cc1b5 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x68402489 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8910ed06 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x89e9b7d7 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8ee6efb5 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9cc26f16 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xba24ae6b snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd8229f2c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe27d756d snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe5351b6d snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf4f3ff46 snd_ac97_bus +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x18307902 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x26c436b3 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3044f454 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3636c4f8 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5b1fe69f snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x629ef669 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x88f8528d snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd00f9f27 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf8e6b7e8 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x1567112a snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x86582ed0 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xcbb5fd23 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x02e87c2c oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x101ba14d oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1efb4701 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x25d1e7d7 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4b582c2b oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4d99987c oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x67e3a448 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6b9da8a4 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6ba7c547 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6be6a0fe oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x73fd826f oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7e5756e2 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x800be216 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbf987de5 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcfc16362 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd2d813c0 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd7e642b9 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd945f36e oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9f05da0 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf36dcc52 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf423ac50 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x01ba93c2 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3eb9d6e9 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xcdb081c1 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe1da714d snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xf2bb1dd2 snd_trident_start_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x35ee04ce tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x56524df1 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0xf0eb7442 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x08772dad register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x697e2744 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x6c35fdaa sound_class +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xb053c3eb register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xeb21a6c4 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xf7d2f68b register_sound_special +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1d3608a5 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 0x739c1a6b snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8097ac61 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9201de53 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9b84d068 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb5215240 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3ab04eaf __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x513d4e39 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x5522d32e snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6d835007 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7ca0e5b6 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7d8f99b0 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x84587736 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb2a1fe47 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 0xa75b8761 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 0x000a172f abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x00106ea0 mmc_release_host +EXPORT_SYMBOL vmlinux 0x001f0a5a locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x00331f95 napi_get_frags +EXPORT_SYMBOL vmlinux 0x00393cb4 seq_lseek +EXPORT_SYMBOL vmlinux 0x005a4975 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x006ff7c9 bdput +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00a8b52f pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x00be1216 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x00c1b41f blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x00d3be49 revalidate_disk +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e7f50a padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x00e8f451 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x00ee75ca dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01018c29 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0122f95e _lv1_get_spe_irq_outlet +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x0136c74b __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x01398e4d sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x014b251d i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x01583b11 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0180e697 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x0189f2b2 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x018d9919 _lv1_set_lpm_interrupt_mask +EXPORT_SYMBOL vmlinux 0x01d326ba pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x01e7ca2a padata_alloc +EXPORT_SYMBOL vmlinux 0x01f0f8f1 nobh_write_end +EXPORT_SYMBOL vmlinux 0x01f81d81 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x020d18d7 _lv1_set_lpm_debug_bus_control +EXPORT_SYMBOL vmlinux 0x02308e93 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x0254473c posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x02583c25 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0275e098 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x0278b87c ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x027d5499 _lv1_did_update_interrupt_mask +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02d5c3fa mmc_get_card +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ea1e4d blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x02f23f73 netdev_features_change +EXPORT_SYMBOL vmlinux 0x03019e92 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x0318bda5 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x031dc65e pasemi_dma_free_chan +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033fd2ea generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x034d7935 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x034fe32c lease_get_mtime +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 0x0379866a dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0389deb4 kill_block_super +EXPORT_SYMBOL vmlinux 0x039114a8 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x03a09205 path_put +EXPORT_SYMBOL vmlinux 0x03a2d298 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x03a5bc41 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x03cf514c pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x03d2f7df bio_clone_fast +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03eecfd1 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x03f411c1 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x040f7c74 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x043f10ee cdrom_open +EXPORT_SYMBOL vmlinux 0x0440a533 _lv1_net_remove_multicast_address +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044ed177 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x0467b9b2 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048f15a7 sk_net_capable +EXPORT_SYMBOL vmlinux 0x04ab644a pci_fixup_device +EXPORT_SYMBOL vmlinux 0x04b8a161 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x04c3b013 d_set_d_op +EXPORT_SYMBOL vmlinux 0x04c51983 ilookup +EXPORT_SYMBOL vmlinux 0x04d585e1 vga_con +EXPORT_SYMBOL vmlinux 0x04e2c137 kill_bdev +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f19f47 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x04fb7fc2 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x04fba37d input_flush_device +EXPORT_SYMBOL vmlinux 0x04fbaf77 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x050628f3 input_register_device +EXPORT_SYMBOL vmlinux 0x050efc89 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0540b32a cpu_core_map +EXPORT_SYMBOL vmlinux 0x05455bc4 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x054708db skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x055a28af prepare_binprm +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x0569d63a is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x058793fe generic_file_llseek +EXPORT_SYMBOL vmlinux 0x059861a1 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x0599fd1c set_security_override +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05ee20e8 import_iovec +EXPORT_SYMBOL vmlinux 0x05f1ab42 path_nosuid +EXPORT_SYMBOL vmlinux 0x05f2a289 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x05ff31ca xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x06020a27 macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x0613c122 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0630ce51 __sock_create +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06456aff _lv1_get_virtual_address_space_id_of_ppe +EXPORT_SYMBOL vmlinux 0x0645a31e nf_getsockopt +EXPORT_SYMBOL vmlinux 0x0647ef3c input_register_handle +EXPORT_SYMBOL vmlinux 0x064aa603 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x067b8348 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06ac6a1a sk_common_release +EXPORT_SYMBOL vmlinux 0x06b1e885 neigh_table_init +EXPORT_SYMBOL vmlinux 0x06cd58ca posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x06d42f46 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x06d96a2e poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x06eb5cc3 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x06f5f107 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071c4172 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07483536 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x07654cde pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x078f9697 serio_interrupt +EXPORT_SYMBOL vmlinux 0x079b63bb blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07a912c1 nf_log_register +EXPORT_SYMBOL vmlinux 0x07bc0261 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x07bf2c06 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x07c02883 of_phy_attach +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cfb5b7 dquot_enable +EXPORT_SYMBOL vmlinux 0x07da8164 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x07dd7f44 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x07ef213a pasemi_dma_free_fun +EXPORT_SYMBOL vmlinux 0x07f61181 __invalidate_device +EXPORT_SYMBOL vmlinux 0x07f8ee15 _lv1_unmap_device_dma_region +EXPORT_SYMBOL vmlinux 0x080ffe20 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x081cf0c8 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0852c98e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x087a6d14 vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x087c32aa blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x088a1bbc netif_rx_ni +EXPORT_SYMBOL vmlinux 0x089c8dfa pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x08a8bc51 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x08c5f341 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08eb686e __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x08f86850 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x0954454a bio_integrity_trim +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 0x098dabf1 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x09aedcb9 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x09beabd4 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09ca0e2a alloc_fcdev +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09edd96e tcp_ioctl +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2581d3 proc_set_user +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2db3af ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x0a3d0644 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x0a44a297 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5d8ddc sget +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a772b40 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x0a781d8c of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x0a810d95 sock_init_data +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa53ad7 param_get_charp +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad9b707 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x0ae57f2b tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x0ae5a339 free_task +EXPORT_SYMBOL vmlinux 0x0afc3324 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x0afdb5df mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x0b08c117 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1a6040 follow_down +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b25b514 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b40e0bc tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x0b52c6be pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x0b62dcb7 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x0b66358f xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8bf61a mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x0b949d89 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x0bab2e6b scsi_scan_target +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc254d2 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0be857f8 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x0bedd9de pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x0bf309fb of_get_mac_address +EXPORT_SYMBOL vmlinux 0x0c139d14 kern_unmount +EXPORT_SYMBOL vmlinux 0x0c1ad162 _lv1_net_start_rx_dma +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c2e176a force_sig +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5bd9bc mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c6e9d90 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x0c74d15f blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x0c83eb2c kernel_bind +EXPORT_SYMBOL vmlinux 0x0c879427 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x0c925e3f del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc4e770 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x0cfccaa0 dquot_disable +EXPORT_SYMBOL vmlinux 0x0d1a21e8 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x0d243a67 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x0d3f43bd sock_alloc_file +EXPORT_SYMBOL vmlinux 0x0d52700b pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d59852f mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d62419a alloc_fddidev +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d73d9e0 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dd37df4 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x0de25467 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x0de907e3 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x0df3e049 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x0e431246 dev_driver_string +EXPORT_SYMBOL vmlinux 0x0e58ada9 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x0e5c99f3 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x0e634e28 ether_setup +EXPORT_SYMBOL vmlinux 0x0e6b1287 con_is_bound +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7f94ec md_cluster_ops +EXPORT_SYMBOL vmlinux 0x0e89ba2d of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e9d7026 seq_release +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0edef243 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x0ef4dc97 __devm_request_region +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f15152a vga_put +EXPORT_SYMBOL vmlinux 0x0f232c10 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x0f2486c7 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x0f25f7a2 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x0f26d033 d_path +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f664c90 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7fff9d dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x0f9068c6 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x0f92b72a ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x0f9dd248 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb18b0f generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x100efe65 load_nls +EXPORT_SYMBOL vmlinux 0x102f90b6 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x1058cb35 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x105dfbb5 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x106f2cee pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10abdd3a __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x10b9ee63 dquot_transfer +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10ee87d1 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1114a555 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x1125ead9 nf_log_set +EXPORT_SYMBOL vmlinux 0x1133d68d mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1136c1b1 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x1138ab2e ndo_dflt_fdb_del +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 0x11757957 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b2bddb compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x11f70165 skb_checksum +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fd792c agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12265a05 proc_create_data +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x125fd123 srp_rport_get +EXPORT_SYMBOL vmlinux 0x12a02677 inet_select_addr +EXPORT_SYMBOL vmlinux 0x12a06967 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12c52024 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x12c99308 pci_release_region +EXPORT_SYMBOL vmlinux 0x12cb6622 _lv1_map_device_dma_region +EXPORT_SYMBOL vmlinux 0x12cfc4bb init_special_inode +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f0ee22 __d_drop +EXPORT_SYMBOL vmlinux 0x13145c41 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x13215eac mem_section +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132a240d of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x134a0e38 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x13a12132 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x13a92151 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x13ba3d80 blkdev_put +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e81074 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x13edef6c request_key_async +EXPORT_SYMBOL vmlinux 0x13f22bfd phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x140f3fc6 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x1417b030 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x141fe5fd pasemi_read_iob_reg +EXPORT_SYMBOL vmlinux 0x147c0af2 unregister_console +EXPORT_SYMBOL vmlinux 0x149bf1f6 mach_maple +EXPORT_SYMBOL vmlinux 0x149dc35f pci_scan_bus +EXPORT_SYMBOL vmlinux 0x14a14817 pSeries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0x14aaebcd dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x14b6371c qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x14cbef47 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x14efafcc tcf_hash_search +EXPORT_SYMBOL vmlinux 0x151592c4 _lv1_invalidate_htab_entries +EXPORT_SYMBOL vmlinux 0x1515e8df fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x15335c93 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x154138ee framebuffer_release +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x154e39b0 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x155020c8 pci_iounmap +EXPORT_SYMBOL vmlinux 0x156f929f __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x157e3359 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x15aea64f xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x15aeb6dc tcp_release_cb +EXPORT_SYMBOL vmlinux 0x15aebd5e param_set_int +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bd6f3c tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e34594 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x15f92c81 pcim_iomap +EXPORT_SYMBOL vmlinux 0x1601f656 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x160f2354 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x16167f33 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x163c0b7d dquot_free_inode +EXPORT_SYMBOL vmlinux 0x16726246 read_dev_sector +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16d710d9 d_find_alias +EXPORT_SYMBOL vmlinux 0x16d85566 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16ef1259 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x172232e8 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1767b4fc param_ops_long +EXPORT_SYMBOL vmlinux 0x177c54b7 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x17872477 kobject_put +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x179feab2 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b1c041 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x17c0f262 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x17c51b34 get_task_io_context +EXPORT_SYMBOL vmlinux 0x17cb515a __frontswap_store +EXPORT_SYMBOL vmlinux 0x17cb8c79 _lv1_read_htab_entries +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17ffc0ae mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x18293f75 wake_up_process +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182e33a9 of_device_unregister +EXPORT_SYMBOL vmlinux 0x182f50af _lv1_open_device +EXPORT_SYMBOL vmlinux 0x18396afe pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1842f3b9 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x185aae61 mpage_readpage +EXPORT_SYMBOL vmlinux 0x18677ea8 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x1867dfd3 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x1876a478 dump_skip +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18bdf26c ppp_input +EXPORT_SYMBOL vmlinux 0x18c98205 _lv1_destruct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x18ccc42c cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x18d96c88 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x191ac3d6 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x1923a9e6 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x198ce410 key_unlink +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19adf837 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x19b0891b kmem_cache_free +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c2fe0b bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x19c968d1 pasemi_dma_start_chan +EXPORT_SYMBOL vmlinux 0x19d2effa devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x19e63bd6 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x19e7cd15 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x1a030cac xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x1a1ebca1 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x1a1f8612 mount_bdev +EXPORT_SYMBOL vmlinux 0x1a1f90c8 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x1a205606 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x1a2857f1 nd_device_register +EXPORT_SYMBOL vmlinux 0x1a409feb ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x1a443127 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x1a484eb2 dev_deactivate +EXPORT_SYMBOL vmlinux 0x1a69ede4 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x1a8311f9 wireless_send_event +EXPORT_SYMBOL vmlinux 0x1a871709 napi_disable +EXPORT_SYMBOL vmlinux 0x1a91663d pasemi_dma_free_buf +EXPORT_SYMBOL vmlinux 0x1a99be74 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1acc4dd3 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x1ae9b312 pci_iomap +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b04aa7f swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0bab75 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b20389b tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x1b57c9ed jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x1b625d33 enable_kernel_vsx +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b64dad8 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x1b67b053 dump_align +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b95375f security_d_instantiate +EXPORT_SYMBOL vmlinux 0x1b96ed67 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x1ba5479c scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bbc02c4 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bcecaa3 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x1bd269c8 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c200a7d pasemi_dma_stop_chan +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c4dab93 _lv1_connect_irq_plug +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c7aa17c bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c913f10 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x1c9d6c17 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x1cb5707d blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x1cc7207e of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x1cfe969c iunique +EXPORT_SYMBOL vmlinux 0x1d076d55 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d1ffb62 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x1d2462a2 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x1d31f4fc blk_finish_request +EXPORT_SYMBOL vmlinux 0x1d3927aa __bread_gfp +EXPORT_SYMBOL vmlinux 0x1d3d861c try_to_release_page +EXPORT_SYMBOL vmlinux 0x1d4750bc _lv1_stop_lpm +EXPORT_SYMBOL vmlinux 0x1d487551 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x1d5819d8 current_fs_time +EXPORT_SYMBOL vmlinux 0x1d5b81c0 sys_copyarea +EXPORT_SYMBOL vmlinux 0x1d77e7b2 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x1d90a49e tc_classify +EXPORT_SYMBOL vmlinux 0x1da7ecf6 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcc7680 inet_frag_find +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd5e2c9 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x1df680c5 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x1df7c611 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x1e0f764e blk_init_queue +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2bd929 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x1e348d71 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x1e35c6bc dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x1e36df26 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x1e57b4fd tty_register_driver +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e886ca3 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x1e8fe7ce abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x1e960ab0 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb0a948 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x1f171a09 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x1f1a012c request_firmware +EXPORT_SYMBOL vmlinux 0x1f1bded4 abort_creds +EXPORT_SYMBOL vmlinux 0x1f2f18a3 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x1f382374 macio_register_driver +EXPORT_SYMBOL vmlinux 0x1f429c15 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f842317 nobh_writepage +EXPORT_SYMBOL vmlinux 0x1f92acfa inet_put_port +EXPORT_SYMBOL vmlinux 0x1fa3adde blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x1fa41388 put_disk +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd31d12 xfrm_garbage_collect +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 0x201494ee _lv1_net_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0x201ae4ff ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x2039ba75 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2058863a vme_irq_generate +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ac9703 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x20c3f3ea tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x20c54763 pci_enable_device +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d2a145 kernel_listen +EXPORT_SYMBOL vmlinux 0x20d2edf7 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x21120c4a rwsem_wake +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x212ed02f kfree_put_link +EXPORT_SYMBOL vmlinux 0x213603bf pasemi_dma_free_ring +EXPORT_SYMBOL vmlinux 0x21667947 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x2191edba blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x2196aab7 __ps2_command +EXPORT_SYMBOL vmlinux 0x21b0f96c cdev_del +EXPORT_SYMBOL vmlinux 0x21b2fdab param_set_charp +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e20a69 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2205142a vfs_symlink +EXPORT_SYMBOL vmlinux 0x220ce870 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x221694a4 pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0x22215221 netlink_unicast +EXPORT_SYMBOL vmlinux 0x2227fe71 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x224626c3 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x225ebee6 _lv1_destruct_lpm +EXPORT_SYMBOL vmlinux 0x2261e4c9 ps3_sb_event_receive_port_setup +EXPORT_SYMBOL vmlinux 0x226f345c ps3_sb_event_receive_port_destroy +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x227ba945 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x227c1308 macio_request_resource +EXPORT_SYMBOL vmlinux 0x2281d5ca simple_unlink +EXPORT_SYMBOL vmlinux 0x22853750 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x2288abd2 __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x228c1dfe scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x22acef9f compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22ea198c alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231fa03f mntput +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x234ca5fe elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2366698e sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x237f4950 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x2381656b bdev_read_only +EXPORT_SYMBOL vmlinux 0x23a1086e inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23d15159 param_set_short +EXPORT_SYMBOL vmlinux 0x23e248f6 bio_reset +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f92a89 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241db565 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242d1f1e sock_sendmsg +EXPORT_SYMBOL vmlinux 0x242d78b7 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x242e1cfe console_start +EXPORT_SYMBOL vmlinux 0x2431dff5 release_pages +EXPORT_SYMBOL vmlinux 0x243da693 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24550fd5 inet_accept +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x246e72cb param_get_ulong +EXPORT_SYMBOL vmlinux 0x24823643 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x24aff0fe downgrade_write +EXPORT_SYMBOL vmlinux 0x24b17ad1 make_bad_inode +EXPORT_SYMBOL vmlinux 0x24cfd438 _lv1_copy_lpm_trace_buffer +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x2524d7bc lock_sock_fast +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x254955fd twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x2565da96 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25ababb7 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25b6b8f7 _lv1_set_spe_transition_notifier +EXPORT_SYMBOL vmlinux 0x25e4f625 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x26031191 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2654198a grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x2691aa66 netif_skb_features +EXPORT_SYMBOL vmlinux 0x26ab2670 sock_create +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x27159916 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x2741a825 of_dev_get +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x274dd44d bdget +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x2764a170 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x2776a32f cad_pid +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 0x279ef30d phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x27aaadf7 ata_link_printk +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27fa7360 dev_set_group +EXPORT_SYMBOL vmlinux 0x280cba80 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281ff089 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x28235fd9 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x282e6e3a of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2846b703 init_buffer +EXPORT_SYMBOL vmlinux 0x284ff6a0 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x285a4d6a touch_buffer +EXPORT_SYMBOL vmlinux 0x28745feb page_symlink +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 0x28bdce89 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x28f47356 generic_update_time +EXPORT_SYMBOL vmlinux 0x290d864e consume_skb +EXPORT_SYMBOL vmlinux 0x29265856 get_cached_acl +EXPORT_SYMBOL vmlinux 0x292df214 dev_close +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2993d670 pci_get_slot +EXPORT_SYMBOL vmlinux 0x299b3b28 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x29a2c27f ata_dev_printk +EXPORT_SYMBOL vmlinux 0x29a5fcc8 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x29b4ea7d rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x29b85db9 km_new_mapping +EXPORT_SYMBOL vmlinux 0x29bcbab9 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x29e4df54 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x29f65665 key_put +EXPORT_SYMBOL vmlinux 0x29fc1236 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x29fd6e12 phy_device_free +EXPORT_SYMBOL vmlinux 0x29fe0c49 component_match_add +EXPORT_SYMBOL vmlinux 0x2a108410 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x2a22e992 kill_pid +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a36b190 bio_split +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3ad0ec scsi_register_interface +EXPORT_SYMBOL vmlinux 0x2a3da151 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x2a60edd0 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x2a6ae94c compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x2a8f974e follow_up +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2aaf0317 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x2ac49e70 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad14d49 fget +EXPORT_SYMBOL vmlinux 0x2adda86c security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b53066f always_delete_dentry +EXPORT_SYMBOL vmlinux 0x2b6b5c43 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x2b928a0d skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba00b85 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb05557 vc_cons +EXPORT_SYMBOL vmlinux 0x2bb7b022 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x2bf101ad __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x2bfaaa91 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x2c0960a3 arp_tbl +EXPORT_SYMBOL vmlinux 0x2c1942b8 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x2c1cd4a4 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c4c7997 _lv1_construct_lpm +EXPORT_SYMBOL vmlinux 0x2c501e96 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x2c5147c4 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x2c763a45 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c8a2866 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c9539f8 param_set_bool +EXPORT_SYMBOL vmlinux 0x2cc636c8 thaw_super +EXPORT_SYMBOL vmlinux 0x2cf67bf8 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d248e96 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39bd64 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x2d556d75 seq_pad +EXPORT_SYMBOL vmlinux 0x2d64d902 dm_put_device +EXPORT_SYMBOL vmlinux 0x2d6c3d06 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x2d7d2767 _lv1_set_lpm_group_control +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2dbdf891 seq_open_private +EXPORT_SYMBOL vmlinux 0x2de6bb2e fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e13f6b7 write_one_page +EXPORT_SYMBOL vmlinux 0x2e22b738 default_llseek +EXPORT_SYMBOL vmlinux 0x2e2af55b have_submounts +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3268c3 generic_read_dir +EXPORT_SYMBOL vmlinux 0x2e525f63 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x2e5930f3 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2e70bb5f mmc_erase +EXPORT_SYMBOL vmlinux 0x2e74b3bf fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x2e93495e _lv1_write_htab_entry +EXPORT_SYMBOL vmlinux 0x2ec904e9 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x2ede77db uart_resume_port +EXPORT_SYMBOL vmlinux 0x2ee4337f smu_queue_cmd +EXPORT_SYMBOL vmlinux 0x2eefb313 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f058436 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f19a630 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f3f062a xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5e883b tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2fa18c17 vme_dma_request +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fafd26a generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbf7672 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x2fc07e8d input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x2fc1ecdc remove_arg_zero +EXPORT_SYMBOL vmlinux 0x2fdb9dd0 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x2fdebf20 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x301606b1 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x303041fa pci_claim_resource +EXPORT_SYMBOL vmlinux 0x30479c3e get_super_thawed +EXPORT_SYMBOL vmlinux 0x304a58c3 inet_ioctl +EXPORT_SYMBOL vmlinux 0x3060341e __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x306a3a9f ip6_frag_init +EXPORT_SYMBOL vmlinux 0x306f0c63 param_set_invbool +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x3098843d sk_receive_skb +EXPORT_SYMBOL vmlinux 0x309b75d7 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30d96e0e abx500_register_ops +EXPORT_SYMBOL vmlinux 0x30db810a rfkill_alloc +EXPORT_SYMBOL vmlinux 0x30e8ee14 xfrm_input +EXPORT_SYMBOL vmlinux 0x30f6e76a vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31087c88 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x31101c68 block_commit_write +EXPORT_SYMBOL vmlinux 0x3116af5e kdb_current_task +EXPORT_SYMBOL vmlinux 0x312cfaf2 _lv1_disable_logical_spe +EXPORT_SYMBOL vmlinux 0x31367a6d neigh_seq_next +EXPORT_SYMBOL vmlinux 0x313aef59 vme_bus_type +EXPORT_SYMBOL vmlinux 0x313d549e abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315ef5cd neigh_for_each +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x319fc66d dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x31a6525a scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x31ab6d0e xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x31b7f300 _lv1_set_lpm_signal +EXPORT_SYMBOL vmlinux 0x31cd509a _lv1_net_control +EXPORT_SYMBOL vmlinux 0x31cd995b store_fp_state +EXPORT_SYMBOL vmlinux 0x31d3a0fd bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x3223117a mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x32261251 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x3231fed7 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x32332f7f frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x32802866 security_path_mknod +EXPORT_SYMBOL vmlinux 0x328aa505 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x328f74d3 elevator_alloc +EXPORT_SYMBOL vmlinux 0x32bab39b dquot_get_state +EXPORT_SYMBOL vmlinux 0x32bbcf09 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x32c65eee mdio_bus_type +EXPORT_SYMBOL vmlinux 0x32ce0587 init_task +EXPORT_SYMBOL vmlinux 0x32d5f953 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x32dee05c dquot_commit_info +EXPORT_SYMBOL vmlinux 0x32eb0e1c __break_lease +EXPORT_SYMBOL vmlinux 0x32f5b68b vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x32ff943f led_blink_set +EXPORT_SYMBOL vmlinux 0x33196427 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x33349a63 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x33380a16 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3349165b inet6_release +EXPORT_SYMBOL vmlinux 0x33503e36 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x3358ec19 mpage_writepages +EXPORT_SYMBOL vmlinux 0x3364db71 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x33702640 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x33950900 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x33ad1e8b posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x33b348fe dcache_readdir +EXPORT_SYMBOL vmlinux 0x33b75687 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d80897 input_close_device +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x3402434a pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x3406c2e4 dev_uc_del +EXPORT_SYMBOL vmlinux 0x340b2a02 pcibus_to_node +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x34219816 setup_new_exec +EXPORT_SYMBOL vmlinux 0x34240208 blk_free_tags +EXPORT_SYMBOL vmlinux 0x3435cc81 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x343e44ab tcp_prot +EXPORT_SYMBOL vmlinux 0x344609de tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x34532bfa of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x345b16eb sock_recvmsg +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347d5ad5 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x34988cda vio_get_attribute +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34cc3062 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x34df6676 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x34e7a2c7 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3512d4ab jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x355a8b03 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35809dae devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x35857b15 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x35a14724 fb_pan_display +EXPORT_SYMBOL vmlinux 0x35a68611 file_open_root +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b1b9f9 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35e387f1 input_inject_event +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x3649ebde seq_path +EXPORT_SYMBOL vmlinux 0x3652f9dc netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x365cba6d param_ops_ulong +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x367c6038 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x367c938d bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x36842a3c nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x36875cca give_up_console +EXPORT_SYMBOL vmlinux 0x368ca5e1 dev_mc_del +EXPORT_SYMBOL vmlinux 0x3694b812 kill_fasync +EXPORT_SYMBOL vmlinux 0x369da25a ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x369dc356 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x369f8487 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x371902e9 _lv1_get_lpm_interrupt_status +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374bab02 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x37718ce3 __getblk_slow +EXPORT_SYMBOL vmlinux 0x37adf316 fs_bio_set +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b24c3e deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e19a75 get_fs_type +EXPORT_SYMBOL vmlinux 0x37e4048e jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x37ee8cb7 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x380d1455 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x3813e9c4 register_key_type +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3824b5ad mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x382777ab _lv1_gpu_context_allocate +EXPORT_SYMBOL vmlinux 0x3833f46e free_buffer_head +EXPORT_SYMBOL vmlinux 0x383d0a1d km_report +EXPORT_SYMBOL vmlinux 0x386b9d51 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x38762954 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x387804e0 pci_request_region +EXPORT_SYMBOL vmlinux 0x387982cb tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x387ed515 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x387ed95c pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388d4c72 input_free_device +EXPORT_SYMBOL vmlinux 0x3891044b agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a920b9 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b010a6 blk_get_request +EXPORT_SYMBOL vmlinux 0x38b28029 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38bc866b sg_miter_next +EXPORT_SYMBOL vmlinux 0x38cf57fc sock_kmalloc +EXPORT_SYMBOL vmlinux 0x38f764d7 of_find_property +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x39176e1c check_disk_change +EXPORT_SYMBOL vmlinux 0x391aa662 scsi_device_put +EXPORT_SYMBOL vmlinux 0x391aba6a tcf_hash_check +EXPORT_SYMBOL vmlinux 0x3928028b ip6_frag_match +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +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 0x398d2d52 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x398e79ba phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a0f7e1 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x39b0587d down_read +EXPORT_SYMBOL vmlinux 0x39b325f7 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x39b3bf77 udp_del_offload +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d7a936 unregister_nls +EXPORT_SYMBOL vmlinux 0x39f604b5 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x3a07302a inet_offloads +EXPORT_SYMBOL vmlinux 0x3a339c51 skb_store_bits +EXPORT_SYMBOL vmlinux 0x3a4248ff cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x3a4f09d2 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x3a4feaa9 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x3a69de98 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x3a804cbe devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x3a95fbfd netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x3a9912d8 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9ce471 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x3ae8b882 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x3aed3d90 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x3af22a28 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x3b13592b con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x3b251743 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x3b354500 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x3b4b3cd1 d_move +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b737729 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x3bc9f358 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x3bd7ed49 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x3be915e0 node_data +EXPORT_SYMBOL vmlinux 0x3bf36d94 register_md_personality +EXPORT_SYMBOL vmlinux 0x3c1b3e8e of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x3c1f882c d_walk +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c7ccbe5 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c869d76 __register_nls +EXPORT_SYMBOL vmlinux 0x3cb6063f open_exec +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce6d38f xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x3d189be7 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x3d323888 bdget_disk +EXPORT_SYMBOL vmlinux 0x3d385fbd get_tz_trend +EXPORT_SYMBOL vmlinux 0x3d396afa scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x3d67ae1a __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x3d9f003a framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x3db5590b reservation_object_reserve_shared +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 0x3dd43a96 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x3dde66e0 pipe_lock +EXPORT_SYMBOL vmlinux 0x3df41aef tcp_make_synack +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3dfd0361 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x3e1173e6 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x3e135f41 param_ops_uint +EXPORT_SYMBOL vmlinux 0x3e286dca _lv1_get_rtc +EXPORT_SYMBOL vmlinux 0x3e2ca205 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x3e6e4542 tty_mutex +EXPORT_SYMBOL vmlinux 0x3e752d0d input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8e11d6 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ea632fe qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x3ee814fd key_invalidate +EXPORT_SYMBOL vmlinux 0x3eeb300c make_kgid +EXPORT_SYMBOL vmlinux 0x3eebe18b blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f06a656 _lv1_construct_event_receive_port +EXPORT_SYMBOL vmlinux 0x3f10acfb pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x3f1605f8 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x3f28d78e tty_throttle +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4b72c4 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x3f578b31 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x3f5cdf4d ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x3f66584c __netif_schedule +EXPORT_SYMBOL vmlinux 0x3f8195f4 of_translate_address +EXPORT_SYMBOL vmlinux 0x3f8471ce pskb_expand_head +EXPORT_SYMBOL vmlinux 0x3f89d83f neigh_xmit +EXPORT_SYMBOL vmlinux 0x3fbfd6ed _lv1_gpu_open +EXPORT_SYMBOL vmlinux 0x3fd69080 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x3fdec2d5 ps3_dma_region_create +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe1978b inet6_protos +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe87c4d kmalloc_caches +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff3d7f3 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x3ffebb6e uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x40581e73 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x405d9adf jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x405e2725 phy_device_register +EXPORT_SYMBOL vmlinux 0x4085b829 __get_page_tail +EXPORT_SYMBOL vmlinux 0x408f6f4a mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a1e7f6 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40be1d12 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x40befcec I_BDEV +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40ce4d7a fb_blank +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d04e9d seq_puts +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x410efe51 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x4114024f seq_read +EXPORT_SYMBOL vmlinux 0x4123c3d2 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x41361807 _lv1_get_logical_ppe_id +EXPORT_SYMBOL vmlinux 0x4141768a mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414d3855 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x416e17de dqput +EXPORT_SYMBOL vmlinux 0x417db012 down_write +EXPORT_SYMBOL vmlinux 0x41876844 input_open_device +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418945cb scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x41a68d5b kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x41c86112 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x41dbf4de _lv1_start_lpm +EXPORT_SYMBOL vmlinux 0x41e1cee0 try_module_get +EXPORT_SYMBOL vmlinux 0x41eaff00 mac_find_mode +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x421adaad dev_get_stats +EXPORT_SYMBOL vmlinux 0x42323ded d_drop +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424bb16e tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x424e278e peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425ad4d8 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x4268c287 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x426d60f0 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x427c119f ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x4285a76c of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a905b5 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x42dbbe81 dst_destroy +EXPORT_SYMBOL vmlinux 0x42e29da2 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4303af5f kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x43323d17 tcp_child_process +EXPORT_SYMBOL vmlinux 0x433522fc srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x43787d31 end_page_writeback +EXPORT_SYMBOL vmlinux 0x437cb662 mdiobus_free +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43861f64 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x439a6345 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43b48c4e free_user_ns +EXPORT_SYMBOL vmlinux 0x43b7b039 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x43dbe16c tty_port_destroy +EXPORT_SYMBOL vmlinux 0x43dd45c5 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x43ea2a09 filemap_fault +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43fde2ed pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x44029f41 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441d6505 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x4431b3fc netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x4431dfb6 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x4432e7c3 nonseekable_open +EXPORT_SYMBOL vmlinux 0x44399b87 genphy_resume +EXPORT_SYMBOL vmlinux 0x443a417e account_page_redirty +EXPORT_SYMBOL vmlinux 0x445727f5 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x447b4d84 write_inode_now +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x448ef03a blk_delay_queue +EXPORT_SYMBOL vmlinux 0x44ae9f39 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b7b29a vfs_mkdir +EXPORT_SYMBOL vmlinux 0x44d04102 mutex_lock +EXPORT_SYMBOL vmlinux 0x44d572d3 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44fb6a12 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x45038db1 blk_start_request +EXPORT_SYMBOL vmlinux 0x45061dc4 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x4508f8f0 cdev_init +EXPORT_SYMBOL vmlinux 0x451ffcbe generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x452ed0cd inet_listen +EXPORT_SYMBOL vmlinux 0x45313baf of_get_next_child +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x455ab57b dentry_path_raw +EXPORT_SYMBOL vmlinux 0x455beba8 filp_close +EXPORT_SYMBOL vmlinux 0x4564459b _lv1_set_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x458367e2 eth_header_parse +EXPORT_SYMBOL vmlinux 0x45a54e39 __inode_permission +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45ac48e9 pci_pme_active +EXPORT_SYMBOL vmlinux 0x45b7ef47 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x45cfe80b pasemi_dma_free_flag +EXPORT_SYMBOL vmlinux 0x45e2650a security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x4602040c inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x460a5da4 vfs_write +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4628cfec udp_prot +EXPORT_SYMBOL vmlinux 0x46303021 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466fa2ef devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46a7bde3 single_open_size +EXPORT_SYMBOL vmlinux 0x46afd532 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46f7e7e2 mpage_readpages +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4702029c pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x4703ccfc blk_make_request +EXPORT_SYMBOL vmlinux 0x470eb448 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x472224a4 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47530a34 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x47719ff8 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x477750ac cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x477ffb5c __ip_select_ident +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47e3efe0 d_alloc_name +EXPORT_SYMBOL vmlinux 0x48085572 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x4815f22b _lv1_gpu_attribute +EXPORT_SYMBOL vmlinux 0x482133c9 simple_empty +EXPORT_SYMBOL vmlinux 0x4825087c uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4843a1b9 _lv1_delete_repository_node +EXPORT_SYMBOL vmlinux 0x4843f829 __elv_add_request +EXPORT_SYMBOL vmlinux 0x4847d1b9 skb_dequeue +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486dbe09 param_set_byte +EXPORT_SYMBOL vmlinux 0x4872abf3 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0x48736be5 dev_mc_init +EXPORT_SYMBOL vmlinux 0x487b7ccf dev_addr_add +EXPORT_SYMBOL vmlinux 0x488053a5 __seq_open_private +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c41d6e register_filesystem +EXPORT_SYMBOL vmlinux 0x48e27d90 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4924a7bb phy_init_eee +EXPORT_SYMBOL vmlinux 0x4936b96a xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x4954692f pci_iomap_range +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 0x496fe102 __quota_error +EXPORT_SYMBOL vmlinux 0x49881915 bioset_create +EXPORT_SYMBOL vmlinux 0x4992d735 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49ce9349 sk_wait_data +EXPORT_SYMBOL vmlinux 0x49d93465 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a07adcb forget_cached_acl +EXPORT_SYMBOL vmlinux 0x4a125450 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x4a19a96f devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x4a1b5c55 mach_ps3 +EXPORT_SYMBOL vmlinux 0x4a1bcbdb __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x4a38b1dd vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x4a4a760d twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x4a58d01b twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x4a61b961 param_ops_bool +EXPORT_SYMBOL vmlinux 0x4a903f43 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac64da4 _lv1_select_virtual_address_space +EXPORT_SYMBOL vmlinux 0x4ac9084d of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad2a57a opal_event_request +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1060c0 __brelse +EXPORT_SYMBOL vmlinux 0x4b158e25 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x4b1c8e4d t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x4b20d167 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x4b287d24 dev_change_flags +EXPORT_SYMBOL vmlinux 0x4b3cb349 _lv1_destruct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6fcddc _lv1_set_spe_interrupt_mask +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb106ba inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x4bb9009c phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x4bd6f525 simple_write_end +EXPORT_SYMBOL vmlinux 0x4bdd6d95 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf7e784 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1fb5d0 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c4e76f0 phy_disconnect +EXPORT_SYMBOL vmlinux 0x4c587d98 __sb_start_write +EXPORT_SYMBOL vmlinux 0x4c834dec jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cbde036 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x4cbf31fd make_kprojid +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cfb4cbb netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x4cfd8813 dev_add_pack +EXPORT_SYMBOL vmlinux 0x4d0de664 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x4d2ed85a dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x4d4d6c6a bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x4d5ba98c d_prune_aliases +EXPORT_SYMBOL vmlinux 0x4d5f59bf macio_dev_put +EXPORT_SYMBOL vmlinux 0x4d5fcc79 finish_open +EXPORT_SYMBOL vmlinux 0x4d6c2140 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x4d713d8b tty_port_put +EXPORT_SYMBOL vmlinux 0x4d790475 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d8b5b63 inet_addr_type +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dbb4309 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x4dd0dd4a xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x4dd2f96b remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x4ddc6a53 md_check_recovery +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e03203e mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x4e0ff240 input_unregister_device +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e9678fe elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ea6d5dc dev_uc_sync +EXPORT_SYMBOL vmlinux 0x4eb0a772 down_write_trylock +EXPORT_SYMBOL vmlinux 0x4ecb60e0 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x4ecd527e of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ee12836 mmc_free_host +EXPORT_SYMBOL vmlinux 0x4ee27b53 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x4ee45b3f pnv_cxl_release_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x4ef719c3 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x4f09fd68 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x4f12aa44 kset_unregister +EXPORT_SYMBOL vmlinux 0x4f1a54aa fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f31844b pci_bus_put +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f50a4e0 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x4f59754d skb_seq_read +EXPORT_SYMBOL vmlinux 0x4f6179f6 padata_start +EXPORT_SYMBOL vmlinux 0x4f664db6 _lv1_insert_htab_entry +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f71f374 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x4f8a8b33 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x4f9abaeb sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x4fb177cb phy_register_fixup +EXPORT_SYMBOL vmlinux 0x4fc55bb3 genphy_read_status +EXPORT_SYMBOL vmlinux 0x4fc6eb0f datagram_poll +EXPORT_SYMBOL vmlinux 0x4fdc79a5 register_cdrom +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe8db93 mmc_put_card +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50102631 cdev_alloc +EXPORT_SYMBOL vmlinux 0x502c27e5 cdev_add +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50760b16 keyring_clear +EXPORT_SYMBOL vmlinux 0x50811777 devm_ioremap +EXPORT_SYMBOL vmlinux 0x508e2dae blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x509b6f5a mdiobus_write +EXPORT_SYMBOL vmlinux 0x509c1432 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x50a7dce0 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50afbc01 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50ba78a5 simple_dname +EXPORT_SYMBOL vmlinux 0x50c5b1d6 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x50cd3958 page_readlink +EXPORT_SYMBOL vmlinux 0x50cd60bb pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50f46633 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x51011bd3 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511d7f74 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x51277150 vme_master_request +EXPORT_SYMBOL vmlinux 0x514f0817 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x5174d2b8 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x5177e606 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x519ac925 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x519acd96 macio_dev_get +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a563c7 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x51e76215 ata_print_version +EXPORT_SYMBOL vmlinux 0x51f1449b netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520befcb lookup_bdev +EXPORT_SYMBOL vmlinux 0x52108149 simple_getattr +EXPORT_SYMBOL vmlinux 0x52119998 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x522145d1 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524e4cb1 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x528059e6 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x5295d9bf inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52af779b dcb_getapp +EXPORT_SYMBOL vmlinux 0x52b758f9 PDE_DATA +EXPORT_SYMBOL vmlinux 0x52ba5d5e pci_select_bars +EXPORT_SYMBOL vmlinux 0x52c74541 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x52d763f4 irq_set_chip +EXPORT_SYMBOL vmlinux 0x52db3083 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x52e3fa05 _lv1_allocate_memory +EXPORT_SYMBOL vmlinux 0x52e91fd6 vfs_statfs +EXPORT_SYMBOL vmlinux 0x52f303d6 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x52f66764 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x532f2294 mach_powernv +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5336074f inode_permission +EXPORT_SYMBOL vmlinux 0x5339f5f8 _lv1_read_virtual_uart +EXPORT_SYMBOL vmlinux 0x53599ec7 netdev_crit +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x535f6ebd dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x53636af2 pnv_cxl_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x53654529 phy_find_first +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x536da6fa inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x536fd1a4 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x537939f8 param_get_invbool +EXPORT_SYMBOL vmlinux 0x5395c2e9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a7e4d5 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x53bda4a0 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x53e82cb2 noop_qdisc +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53eeb468 __vfs_write +EXPORT_SYMBOL vmlinux 0x53f94ca0 file_update_time +EXPORT_SYMBOL vmlinux 0x53fd1cf3 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544a53dd mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x544c1355 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x545d43ac dev_open +EXPORT_SYMBOL vmlinux 0x54778c51 setattr_copy +EXPORT_SYMBOL vmlinux 0x54a8e9b1 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54abde4a tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x54b7701a mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54d1e61e scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5500f5e4 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554ab054 vga_client_register +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x55724a59 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557b3dd8 _lv1_gpu_close +EXPORT_SYMBOL vmlinux 0x55a69ea6 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x55c2d4c5 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x55f7ccbd jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x5613290f skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x56318f23 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x5632cd4f xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563b7646 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x56488213 dev_printk +EXPORT_SYMBOL vmlinux 0x56576e21 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x566429d6 pnv_pci_get_phb_node +EXPORT_SYMBOL vmlinux 0x568804ee _lv1_destruct_event_receive_port +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56b595a4 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x56bbd68c noop_llseek +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c721e5 __inet_hash +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d2ef0b blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x56d37151 dquot_resume +EXPORT_SYMBOL vmlinux 0x56ddd997 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x56f49492 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x56f6b579 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x572647d6 get_mce_fault_addr +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57628333 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577018dd mmc_add_host +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x57833a69 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579bab50 _lv1_gpu_memory_free +EXPORT_SYMBOL vmlinux 0x579d1d33 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x57bbaf42 netif_napi_del +EXPORT_SYMBOL vmlinux 0x57bbc62c security_path_mkdir +EXPORT_SYMBOL vmlinux 0x57e865fc gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x57e8a7a4 iov_iter_init +EXPORT_SYMBOL vmlinux 0x58083881 km_policy_expired +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x58387778 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584a7d0f qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58ab1a5c inet_frags_init +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58bd4631 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x58c453f1 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x58d2f4bf bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e82537 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x591dc32f devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x592301b9 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x5925fdae dst_alloc +EXPORT_SYMBOL vmlinux 0x59277d64 seq_write +EXPORT_SYMBOL vmlinux 0x5937eb06 of_iomap +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x597a621b fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x599f3d2d find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59ae3001 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59d4741f sk_filter +EXPORT_SYMBOL vmlinux 0x59e41c4e mipi_dsi_driver_register_full +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 0x5a13d4ad cont_write_begin +EXPORT_SYMBOL vmlinux 0x5a1858f7 note_scsi_host +EXPORT_SYMBOL vmlinux 0x5a277e69 nf_log_trace +EXPORT_SYMBOL vmlinux 0x5a2cda3e trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5a609f97 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x5a7901c6 f_setown +EXPORT_SYMBOL vmlinux 0x5a808a98 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a92762e mutex_trylock +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5ab52b8c agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x5ac97434 block_read_full_page +EXPORT_SYMBOL vmlinux 0x5aea674e vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x5af15901 generic_file_open +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b41094a scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4c4e3e __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b641170 register_qdisc +EXPORT_SYMBOL vmlinux 0x5b66df15 ps2_command +EXPORT_SYMBOL vmlinux 0x5b74f3a9 elevator_init +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bed7f31 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x5c0f2d36 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x5c21a179 proto_unregister +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c481018 mdiobus_register +EXPORT_SYMBOL vmlinux 0x5c4b80ef migrate_page +EXPORT_SYMBOL vmlinux 0x5c64bcb0 kobject_get +EXPORT_SYMBOL vmlinux 0x5c93e47f iov_iter_advance +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5ccc9045 _lv1_close_device +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf49f05 vfs_readv +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0b1862 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x5d359278 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x5d3a9fff xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5d4d79ef to_nd_btt +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d59490d vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x5d6961b1 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x5d8cc6b3 tty_vhangup +EXPORT_SYMBOL vmlinux 0x5d96d95f elevator_exit +EXPORT_SYMBOL vmlinux 0x5dafd4fc dm_get_device +EXPORT_SYMBOL vmlinux 0x5dba3125 blk_peek_request +EXPORT_SYMBOL vmlinux 0x5dfa33e4 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x5e1a2d9d security_path_link +EXPORT_SYMBOL vmlinux 0x5e34c2f2 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3af3bd generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x5e627e0b add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x5e712a36 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x5e83d120 user_path_create +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea9fc29 vme_slave_request +EXPORT_SYMBOL vmlinux 0x5eb1d5e8 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebac088 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x5ebba8d3 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5eddbe08 km_policy_notify +EXPORT_SYMBOL vmlinux 0x5ee6928e get_empty_filp +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f33b425 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x5f388268 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x5f65c499 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x5f6da23b pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f927946 skb_unlink +EXPORT_SYMBOL vmlinux 0x5f9d505d scsi_add_device +EXPORT_SYMBOL vmlinux 0x5fbf2eae dev_uc_init +EXPORT_SYMBOL vmlinux 0x5fcd3f2e sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe06533 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x5ffa3348 kill_pgrp +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600b314d devm_gpio_request +EXPORT_SYMBOL vmlinux 0x6019356b find_vma +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6034d0ea posix_lock_file +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603a762d vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x604de80a blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x60579a70 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x60628490 netdev_warn +EXPORT_SYMBOL vmlinux 0x606b6b5a ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6071ff6f i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x6074da09 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x607e1048 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x6086086d d_obtain_root +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609eb36e vio_unregister_device +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a3fe11 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x60bf3d2e iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x60c225af xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x60c29119 __breadahead +EXPORT_SYMBOL vmlinux 0x60c752c9 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x60c9f8bd unload_nls +EXPORT_SYMBOL vmlinux 0x60d2ea72 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60fc1cf3 giveup_vsx +EXPORT_SYMBOL vmlinux 0x60fcbd66 inode_init_always +EXPORT_SYMBOL vmlinux 0x6105986d ll_rw_block +EXPORT_SYMBOL vmlinux 0x61076134 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x61229b10 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x614a0f3b neigh_event_ns +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x614d8c1c abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x6156b67b __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x6156e436 param_ops_short +EXPORT_SYMBOL vmlinux 0x61602064 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x6175aea4 tty_write_room +EXPORT_SYMBOL vmlinux 0x6185ddc9 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a4487c _lv1_gpu_device_unmap +EXPORT_SYMBOL vmlinux 0x61b27cfe i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c2a2b5 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x61cbdf86 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x61d1bbfa swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x61d2d91c scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x61d9a5ab agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x61dcdcd3 _lv1_pause +EXPORT_SYMBOL vmlinux 0x61dcf24a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x61df799d send_sig +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61fe1942 kthread_stop +EXPORT_SYMBOL vmlinux 0x62098cbd file_path +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624b988c unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x62531497 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x628242ae uart_match_port +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a7d48b xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x62eddcfe vfs_rename +EXPORT_SYMBOL vmlinux 0x62f95355 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x62fee7f5 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631a2aaa ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x631a3f3f sg_miter_stop +EXPORT_SYMBOL vmlinux 0x63202948 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x632bc2b3 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x633af7aa set_wb_congested +EXPORT_SYMBOL vmlinux 0x6345c233 sock_no_getname +EXPORT_SYMBOL vmlinux 0x6360d639 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63b0d648 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x63ba2d81 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63db2f68 dst_release +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f75920 _lv1_construct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x63f93a29 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6410739f sock_no_listen +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x642b1a7e sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x6454119e invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x6454dcd7 irq_to_desc +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x6480a88b __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x64844a5f kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64d37e00 serio_open +EXPORT_SYMBOL vmlinux 0x64e9ce75 generic_make_request +EXPORT_SYMBOL vmlinux 0x64f373c3 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x64f4b918 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x65048f58 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6505ff8d neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651449bd tty_unlock +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651c7ade mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x65201c0c softnet_data +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6562bd72 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x656a827f __dst_free +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x6586972f d_rehash +EXPORT_SYMBOL vmlinux 0x658d734f wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x658fa50e put_tty_driver +EXPORT_SYMBOL vmlinux 0x659cb906 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x65b095d0 do_splice_from +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65cd2a3c __lock_buffer +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 0x65ecf439 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x65f0488f seq_putc +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fa3e19 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x65fb0744 done_path_create +EXPORT_SYMBOL vmlinux 0x65fc4a0f sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x660efc4d dma_async_device_register +EXPORT_SYMBOL vmlinux 0x6610bc11 d_genocide +EXPORT_SYMBOL vmlinux 0x6617d6f1 proto_register +EXPORT_SYMBOL vmlinux 0x6646467a __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x666f9a80 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x66789138 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x669d828a key_task_permission +EXPORT_SYMBOL vmlinux 0x66ad1cb3 _lv1_set_lpm_general_control +EXPORT_SYMBOL vmlinux 0x66bb188a mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66dd612d ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x66e6e0d6 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x670d1e9f alloc_disk +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6753c2f8 of_device_alloc +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67824f19 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d3c502 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x67eacf65 unlock_rename +EXPORT_SYMBOL vmlinux 0x67eb55cc pci_bus_get +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x68222b06 __check_sticky +EXPORT_SYMBOL vmlinux 0x6825716f nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x686aa894 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x6877f999 dquot_acquire +EXPORT_SYMBOL vmlinux 0x687823a6 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x689252ab mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x6892c896 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68b8526e inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x68c9366b mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x68cd32bb fb_show_logo +EXPORT_SYMBOL vmlinux 0x68de7e20 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x68e1ef51 smu_present +EXPORT_SYMBOL vmlinux 0x6912e634 srp_rport_put +EXPORT_SYMBOL vmlinux 0x693c3bec pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x694e0ec2 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x69659a7a get_acl +EXPORT_SYMBOL vmlinux 0x696be356 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x699b2b07 textsearch_register +EXPORT_SYMBOL vmlinux 0x699ccbf8 _lv1_deconfigure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a800a4 dup_iter +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b931ec __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x69c7ec51 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x69de14ad mmc_of_parse +EXPORT_SYMBOL vmlinux 0x69f4a390 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x69fd84dc fsync_bdev +EXPORT_SYMBOL vmlinux 0x69fe2d22 __skb_checksum +EXPORT_SYMBOL vmlinux 0x6a016ea3 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5f278b __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7c40e2 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x6a7cfbf7 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6afdbd68 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x6b06fc15 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1c4e5a dst_discard_sk +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 0x6b3ada09 del_gendisk +EXPORT_SYMBOL vmlinux 0x6b44c7d4 paca +EXPORT_SYMBOL vmlinux 0x6b510097 pci_find_capability +EXPORT_SYMBOL vmlinux 0x6b5668b1 netdev_emerg +EXPORT_SYMBOL vmlinux 0x6b589a6e _lv1_net_add_multicast_address +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b6f0c4b _lv1_create_repository_node +EXPORT_SYMBOL vmlinux 0x6b8379fa update_region +EXPORT_SYMBOL vmlinux 0x6b8d2d3a elv_rb_find +EXPORT_SYMBOL vmlinux 0x6b9863dd filp_open +EXPORT_SYMBOL vmlinux 0x6b9c5f06 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be15174 led_update_brightness +EXPORT_SYMBOL vmlinux 0x6beb73f4 of_device_register +EXPORT_SYMBOL vmlinux 0x6c024b1b simple_release_fs +EXPORT_SYMBOL vmlinux 0x6c08e1d0 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c253a70 __f_setown +EXPORT_SYMBOL vmlinux 0x6c2905ac __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x6c35ab2b sock_create_kern +EXPORT_SYMBOL vmlinux 0x6c3f8bf6 fb_set_var +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6bd16a key_revoke +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c78811d registered_fb +EXPORT_SYMBOL vmlinux 0x6c8b3afd netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x6c8d1a8c tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x6c8fb173 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x6ca276c1 udp_ioctl +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cc100d8 skb_split +EXPORT_SYMBOL vmlinux 0x6cc5439b d_lookup +EXPORT_SYMBOL vmlinux 0x6cfbd070 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1743eb _lv1_get_total_execution_time +EXPORT_SYMBOL vmlinux 0x6d18315d __lock_page +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2ef55a notify_change +EXPORT_SYMBOL vmlinux 0x6d4910fd sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x6d52981e tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x6d549477 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x6d557ee4 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x6d628f5a copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x6d666661 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d7d275e generic_file_fsync +EXPORT_SYMBOL vmlinux 0x6d95f06f scsi_execute +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dab02f8 generic_setxattr +EXPORT_SYMBOL vmlinux 0x6daffbd5 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x6ddf452f blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x6de13608 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x6ded1248 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e14c70c inet_del_protocol +EXPORT_SYMBOL vmlinux 0x6e153f9a inet_release +EXPORT_SYMBOL vmlinux 0x6e15af2c generic_write_end +EXPORT_SYMBOL vmlinux 0x6e32ba79 vfs_writef +EXPORT_SYMBOL vmlinux 0x6e390e2f __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x6e3e9798 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x6e5d43ab eth_gro_receive +EXPORT_SYMBOL vmlinux 0x6e6de098 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e84f3c3 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x6e8c7673 phy_device_create +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ebf21d9 fput +EXPORT_SYMBOL vmlinux 0x6edd64f7 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x6ee96b17 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x6ef14ca5 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x6f0a5ca7 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f281f8b generic_show_options +EXPORT_SYMBOL vmlinux 0x6f3bc467 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x6f5e2dc8 find_get_entry +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f9f123e jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x6f9fb71b ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x6fa331ed _lv1_construct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fbfa7e1 skb_make_writable +EXPORT_SYMBOL vmlinux 0x6fc3d12e bio_advance +EXPORT_SYMBOL vmlinux 0x6fc9bded tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd164e4 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x6fd729d7 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x6fe6c063 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x6fedf050 path_get +EXPORT_SYMBOL vmlinux 0x701699b2 _lv1_set_spe_privilege_state_area_1_register +EXPORT_SYMBOL vmlinux 0x7038d089 vm_insert_page +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705639c3 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70860b22 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x709c9702 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x70cfb42e xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x70d5d4a8 serio_close +EXPORT_SYMBOL vmlinux 0x70d60ffd cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x70dd4180 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x70ddf8ef skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x70e7df27 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x70f30f89 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70fb1d9f vme_slot_num +EXPORT_SYMBOL vmlinux 0x7108a173 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x711925ae vfs_writev +EXPORT_SYMBOL vmlinux 0x7119a97d fb_set_cmap +EXPORT_SYMBOL vmlinux 0x71218507 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x71223bc8 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71300b3d neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x7133cc73 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x713d114a nobh_write_begin +EXPORT_SYMBOL vmlinux 0x7158fc3a tty_unregister_device +EXPORT_SYMBOL vmlinux 0x715e8d3b unregister_qdisc +EXPORT_SYMBOL vmlinux 0x716fe7fa security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71791c81 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71aed3c6 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x71afba43 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x71b03983 inet6_getname +EXPORT_SYMBOL vmlinux 0x71b564df agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x71b56b77 genlmsg_put +EXPORT_SYMBOL vmlinux 0x71fad9b6 scsi_unregister +EXPORT_SYMBOL vmlinux 0x7212edb0 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x722d1a3f i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x724fd947 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x7250dfc3 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x72513b34 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x72799974 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x727a91f7 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x7280624c icmp_send +EXPORT_SYMBOL vmlinux 0x729b4a83 _lv1_get_spe_all_interrupt_statuses +EXPORT_SYMBOL vmlinux 0x72a10b62 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x72a4b006 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6d3cf starget_for_each_device +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x73038d64 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x730454a7 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x7304c548 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x7308bf14 md_error +EXPORT_SYMBOL vmlinux 0x7308c781 set_binfmt +EXPORT_SYMBOL vmlinux 0x730a9428 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x731e5004 ata_port_printk +EXPORT_SYMBOL vmlinux 0x73344603 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7353479e sk_ns_capable +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x738f309c param_set_bint +EXPORT_SYMBOL vmlinux 0x739573a1 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x73ad44a9 param_set_ullong +EXPORT_SYMBOL vmlinux 0x73b44147 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x73c00bca tty_devnum +EXPORT_SYMBOL vmlinux 0x73c9ebef ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x73ccc529 simple_rename +EXPORT_SYMBOL vmlinux 0x73efec10 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x740a19d5 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7415b665 tty_do_resize +EXPORT_SYMBOL vmlinux 0x744054e0 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x74563d58 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x745d0053 udp_seq_open +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x7493cb86 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x74955da1 genphy_config_init +EXPORT_SYMBOL vmlinux 0x74a66b9e register_gifconf +EXPORT_SYMBOL vmlinux 0x74b35d91 flow_cache_init +EXPORT_SYMBOL vmlinux 0x74bae571 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7544e0a5 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x754e486c agp_bridge +EXPORT_SYMBOL vmlinux 0x75500491 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x755b4747 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x756c786e _lv1_connect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0x75754995 _lv1_storage_check_async_status +EXPORT_SYMBOL vmlinux 0x759639c7 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x75972292 netpoll_poll_disable +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 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75dc3e6b blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x75e3f40a __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x75e4f5aa pasemi_read_mac_reg +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760e087c of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x7623d0ec mach_pasemi +EXPORT_SYMBOL vmlinux 0x76437d03 kmem_cache_alloc_node_trace +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 0x765d3b05 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x765d9749 vm_map_ram +EXPORT_SYMBOL vmlinux 0x765fac58 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x7669f199 dev_load +EXPORT_SYMBOL vmlinux 0x769ea870 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x76a85521 ipv4_specific +EXPORT_SYMBOL vmlinux 0x76ae9439 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x76cdba09 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x76cde5ff generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76fe131c udp_proc_register +EXPORT_SYMBOL vmlinux 0x7713d312 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x77144936 _lv1_disconnect_irq_plug +EXPORT_SYMBOL vmlinux 0x77192cd9 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7748c625 devm_free_irq +EXPORT_SYMBOL vmlinux 0x7761d34c pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x776353a9 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x778640d3 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x778c6634 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x7798eb60 pci_clear_master +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a1f133 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x77b2a856 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x77b3e4ba tty_port_close +EXPORT_SYMBOL vmlinux 0x77b4b4a0 get_gendisk +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c1a804 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x77c4d5c1 tty_hangup +EXPORT_SYMBOL vmlinux 0x77c7dbc5 giveup_altivec +EXPORT_SYMBOL vmlinux 0x7815d6ce iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x7826424a vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7843874b kobject_init +EXPORT_SYMBOL vmlinux 0x7845e5f6 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x7874760f tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x7877401c nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788c3e62 inet6_bind +EXPORT_SYMBOL vmlinux 0x78941585 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x78950be4 jbd2_journal_load +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 0x78ab8fa4 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x78c601d1 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x78dcf1f2 dev_mc_add +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x791e4fcd phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x7922e99e sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x792315ba mmc_register_driver +EXPORT_SYMBOL vmlinux 0x7927ac67 blkdev_get +EXPORT_SYMBOL vmlinux 0x7957a728 d_alloc +EXPORT_SYMBOL vmlinux 0x7958c425 skb_queue_head +EXPORT_SYMBOL vmlinux 0x7959f607 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x79676bf0 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x796a6d3f pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x796c6156 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797d480e ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x79922c4e mount_single +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79a5ba05 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b6e0c9 phy_detach +EXPORT_SYMBOL vmlinux 0x79c25353 fb_get_mode +EXPORT_SYMBOL vmlinux 0x79d4afc0 prepare_creds +EXPORT_SYMBOL vmlinux 0x79e57dac vfs_setpos +EXPORT_SYMBOL vmlinux 0x79fb1460 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x7a082cce nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2b24d7 pci_dev_get +EXPORT_SYMBOL vmlinux 0x7a3b0eff revert_creds +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4f8ab7 bio_init +EXPORT_SYMBOL vmlinux 0x7a539941 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x7a5696f7 dev_uc_add +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a76c9cf ihold +EXPORT_SYMBOL vmlinux 0x7a792c37 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x7a7e4e04 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9d2cab pci_reenable_device +EXPORT_SYMBOL vmlinux 0x7a9e435d dev_uc_flush +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa24f2f max8998_write_reg +EXPORT_SYMBOL vmlinux 0x7aa9e259 _lv1_map_htab +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac9a5bd tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7addf140 commit_creds +EXPORT_SYMBOL vmlinux 0x7adf41a9 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x7b0dc7df eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b23ebb2 mapping_tagged +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b4f8264 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x7b9aad3f md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x7ba4bc33 vfs_getattr +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c09fe94 dev_addr_init +EXPORT_SYMBOL vmlinux 0x7c0b57fd xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x7c0ef6f5 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x7c0f2c97 generic_writepages +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c27156c rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x7c2b89b3 read_cache_pages +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c390773 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x7c4089dd __scsi_add_device +EXPORT_SYMBOL vmlinux 0x7c45f55e rtas +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c78a4ec elv_rb_add +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c9430a0 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb88357 key_alloc +EXPORT_SYMBOL vmlinux 0x7cc5932b of_parse_phandle +EXPORT_SYMBOL vmlinux 0x7cdf7c81 keyring_alloc +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce51fd9 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf83fda neigh_direct_output +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d19fc67 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x7d1af9ec unregister_netdev +EXPORT_SYMBOL vmlinux 0x7d395c3e register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d74f3fe cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x7d85efe0 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x7d8820e7 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x7dae7f41 phy_start +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dd24fc6 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x7ddced34 __pagevec_release +EXPORT_SYMBOL vmlinux 0x7dde857f inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x7de6a6e4 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfefe26 up_write +EXPORT_SYMBOL vmlinux 0x7e197e9f cfb_copyarea +EXPORT_SYMBOL vmlinux 0x7e20a049 __neigh_create +EXPORT_SYMBOL vmlinux 0x7e652931 blk_complete_request +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e8be20a scsi_remove_device +EXPORT_SYMBOL vmlinux 0x7e98ff45 iget_failed +EXPORT_SYMBOL vmlinux 0x7e9bdc06 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x7eaf1c7b zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x7eb4be0e find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x7ebe8b90 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x7ec5de42 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x7ec98ccd generic_getxattr +EXPORT_SYMBOL vmlinux 0x7edc708d input_register_handler +EXPORT_SYMBOL vmlinux 0x7ee12a55 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ef6cd47 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f0b4dfc netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f37f346 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x7f41277c netif_napi_add +EXPORT_SYMBOL vmlinux 0x7f47e8d9 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x7f5f840e skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f7c1e34 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x7f7f763b inode_dio_wait +EXPORT_SYMBOL vmlinux 0x7f82a101 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x7f839bc3 param_get_short +EXPORT_SYMBOL vmlinux 0x7f854140 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x7f90990c pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x7fa4d612 tcf_em_register +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fd6cdf5 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x7fd79a13 pci_dev_put +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 0x7ff84a43 input_set_keycode +EXPORT_SYMBOL vmlinux 0x80125c49 sock_from_file +EXPORT_SYMBOL vmlinux 0x802f4221 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x80843ce7 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x80a24e83 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x80bcb19b max8925_reg_write +EXPORT_SYMBOL vmlinux 0x80bd4cd5 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80ff4f6a remove_proc_entry +EXPORT_SYMBOL vmlinux 0x81055b77 read_code +EXPORT_SYMBOL vmlinux 0x8108c0da blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x810c5e48 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x811476ed audit_log +EXPORT_SYMBOL vmlinux 0x8118de1d __napi_schedule +EXPORT_SYMBOL vmlinux 0x8140607b igrab +EXPORT_SYMBOL vmlinux 0x8148c54d nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x814bae19 blk_sync_queue +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 0x81637158 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x8165e8e0 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x818af565 bioset_free +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81af18c2 kvmppc_hv_find_lock_hpte +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81d68ef2 _dev_info +EXPORT_SYMBOL vmlinux 0x81d9f7f2 _lv1_put_iopte +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e9c027 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x81f75dc0 simple_setattr +EXPORT_SYMBOL vmlinux 0x82053ef2 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821959bf i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x824703a4 audit_log_start +EXPORT_SYMBOL vmlinux 0x826d2ad4 write_cache_pages +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x82703f04 km_query +EXPORT_SYMBOL vmlinux 0x827b8866 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x827f124c blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8284ec56 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82a411b9 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82bfceb7 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x82cebab8 blk_put_request +EXPORT_SYMBOL vmlinux 0x82d7506c mmc_detect_change +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82f8416e blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x83171632 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x833f01a3 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x83675032 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x836bf759 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x8371b9d9 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x8373c6a0 vfs_link +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839b8dc0 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x83a5bee4 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83dfa409 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x83e3a025 complete_request_key +EXPORT_SYMBOL vmlinux 0x83f2ebe6 param_set_ushort +EXPORT_SYMBOL vmlinux 0x842b7c26 register_framebuffer +EXPORT_SYMBOL vmlinux 0x8447f65f scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x845124e0 ps3_mm_phys_to_lpar +EXPORT_SYMBOL vmlinux 0x8478675d do_splice_to +EXPORT_SYMBOL vmlinux 0x847dfb20 locks_init_lock +EXPORT_SYMBOL vmlinux 0x84826e3a iput +EXPORT_SYMBOL vmlinux 0x8482d323 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x849a05d7 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x849d2fd8 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x849e91f5 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84def4ee twl6040_power +EXPORT_SYMBOL vmlinux 0x84f5c57d of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x84f63867 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850dc668 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x852c2259 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85796679 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x85812ce1 d_make_root +EXPORT_SYMBOL vmlinux 0x85958be8 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85ae6052 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x85afae10 get_super +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85eb1d66 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x860f2d73 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x862aee7f __free_pages +EXPORT_SYMBOL vmlinux 0x864088cb sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x8642374f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86593c7f deactivate_super +EXPORT_SYMBOL vmlinux 0x8661df86 free_netdev +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869089b5 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x86a59973 locks_free_lock +EXPORT_SYMBOL vmlinux 0x86b8ab7e __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x86bf4c96 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86deb630 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x871b73c6 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87275c27 dump_emit +EXPORT_SYMBOL vmlinux 0x8733ea9b alloc_file +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x873b2893 sk_dst_check +EXPORT_SYMBOL vmlinux 0x873f13da elv_rb_del +EXPORT_SYMBOL vmlinux 0x87543726 neigh_destroy +EXPORT_SYMBOL vmlinux 0x875d66b0 pci_release_regions +EXPORT_SYMBOL vmlinux 0x877c22f7 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x8783be92 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879a36d0 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x87a636ca dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x87b1bed6 tso_build_data +EXPORT_SYMBOL vmlinux 0x87c0a080 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x87e1bdbd drop_super +EXPORT_SYMBOL vmlinux 0x87e2e9ce param_set_long +EXPORT_SYMBOL vmlinux 0x87ec4404 sk_free +EXPORT_SYMBOL vmlinux 0x87f38855 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x87f67a70 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x880da1b1 _lv1_get_logical_partition_id +EXPORT_SYMBOL vmlinux 0x88126e55 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x8841aedd netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x8848278c vfs_unlink +EXPORT_SYMBOL vmlinux 0x8849b337 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x88636c82 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x8864e838 ns_capable +EXPORT_SYMBOL vmlinux 0x887a95d0 netdev_update_features +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88876c7b __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x88879f59 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x88991c6f d_splice_alias +EXPORT_SYMBOL vmlinux 0x88996426 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x88a1fc10 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x88b70c7d __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x88bdbcf5 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x88e450b2 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x88f1f273 dm_register_target +EXPORT_SYMBOL vmlinux 0x89026552 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0x89042022 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x890a02bb freezing_slow_path +EXPORT_SYMBOL vmlinux 0x891b83bd pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x891c0d83 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x892246c6 blk_run_queue +EXPORT_SYMBOL vmlinux 0x893172a2 generic_readlink +EXPORT_SYMBOL vmlinux 0x8932d783 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x893dd390 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897fecc2 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x898d385c flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x898d4e2a register_quota_format +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89be846c filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x89c5a8be smu_get_sdb_partition +EXPORT_SYMBOL vmlinux 0x89c7ecd9 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x89cdcbf8 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x89d24094 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x89d31aa5 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89f726a8 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x8a09dd76 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2d421f of_create_pci_dev +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 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9cef2a _lv1_allocate_device_dma_region +EXPORT_SYMBOL vmlinux 0x8aaa8543 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x8abcece3 inode_init_owner +EXPORT_SYMBOL vmlinux 0x8ac8528e dput +EXPORT_SYMBOL vmlinux 0x8ac9cda2 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x8ad46d55 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x8ae7ead1 nf_afinfo +EXPORT_SYMBOL vmlinux 0x8aecf6b6 to_ndd +EXPORT_SYMBOL vmlinux 0x8aedf0f5 ps3_dma_region_init +EXPORT_SYMBOL vmlinux 0x8af486ce dma_pool_create +EXPORT_SYMBOL vmlinux 0x8b192e1c sock_no_mmap +EXPORT_SYMBOL vmlinux 0x8b34b264 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b3a75a3 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b44da80 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b794e83 soft_cursor +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b92fdd9 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x8b935ab6 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x8b957d5f kill_litter_super +EXPORT_SYMBOL vmlinux 0x8b9bf90d nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x8bad7678 sock_wfree +EXPORT_SYMBOL vmlinux 0x8bc976da pcie_set_mps +EXPORT_SYMBOL vmlinux 0x8bd689fc bio_chain +EXPORT_SYMBOL vmlinux 0x8be3e70a sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x8bece2f4 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8c04a2ea netlink_broadcast +EXPORT_SYMBOL vmlinux 0x8c121cd7 devm_iounmap +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c20907b kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x8c2d91b2 set_bh_page +EXPORT_SYMBOL vmlinux 0x8c4a91f7 get_io_context +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6b8e12 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x8c8a9320 override_creds +EXPORT_SYMBOL vmlinux 0x8c8c6dde led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x8c8d79c0 _lv1_gpu_context_iomap +EXPORT_SYMBOL vmlinux 0x8c97eed2 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x8cb835da tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd64555 sync_inode +EXPORT_SYMBOL vmlinux 0x8ce66242 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x8cf9315d vc_resize +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d14750e param_get_byte +EXPORT_SYMBOL vmlinux 0x8d248de7 mount_pseudo +EXPORT_SYMBOL vmlinux 0x8d2d5ee9 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x8d41ae06 inet_bind +EXPORT_SYMBOL vmlinux 0x8d44f54e inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8bfcff arp_send +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8dbcb98a set_blocksize +EXPORT_SYMBOL vmlinux 0x8dbe3859 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x8ddcd2d3 ppp_input_error +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2fbc5 _lv1_get_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x8de6bbd4 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e3dbaff kobject_del +EXPORT_SYMBOL vmlinux 0x8e6d7843 __bforget +EXPORT_SYMBOL vmlinux 0x8e6dcd56 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x8e70d33f da903x_query_status +EXPORT_SYMBOL vmlinux 0x8e7d8789 path_is_under +EXPORT_SYMBOL vmlinux 0x8e91f12e __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x8eab4563 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x8ebd1d58 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ec9c981 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x8ed52216 iget_locked +EXPORT_SYMBOL vmlinux 0x8eea1bc9 smu_poll +EXPORT_SYMBOL vmlinux 0x8ef49405 ppc_md +EXPORT_SYMBOL vmlinux 0x8f225183 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x8f719105 sock_no_bind +EXPORT_SYMBOL vmlinux 0x8f71a1fd set_nlink +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f99a714 sock_no_poll +EXPORT_SYMBOL vmlinux 0x8fa58db1 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x900a7b69 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x901a6b0a misc_register +EXPORT_SYMBOL vmlinux 0x9023f52e padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x903406fd insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x903e844d mmc_remove_host +EXPORT_SYMBOL vmlinux 0x90423ff8 padata_stop +EXPORT_SYMBOL vmlinux 0x904363e4 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x9043665b xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x9087d7f8 single_open +EXPORT_SYMBOL vmlinux 0x90a41534 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x90a9fda3 __sb_end_write +EXPORT_SYMBOL vmlinux 0x90b7c10a pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x9107b354 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x910bc1c6 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x9116406a scsi_ioctl +EXPORT_SYMBOL vmlinux 0x91201cef _lv1_enable_logical_spe +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x9125ae51 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x912de329 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x913011c4 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168366a nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x916836a3 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x916b3cc4 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91c27832 mount_subtree +EXPORT_SYMBOL vmlinux 0x91c4feca _lv1_unmap_htab +EXPORT_SYMBOL vmlinux 0x91c6b77d poll_freewait +EXPORT_SYMBOL vmlinux 0x91d5be91 free_page_put_link +EXPORT_SYMBOL vmlinux 0x91ea1a8f end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x920ee550 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x9213a846 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x92155386 fb_class +EXPORT_SYMBOL vmlinux 0x92370d19 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92489713 kern_path_create +EXPORT_SYMBOL vmlinux 0x92499746 pci_choose_state +EXPORT_SYMBOL vmlinux 0x9258790e tcf_register_action +EXPORT_SYMBOL vmlinux 0x92823477 ip_options_compile +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x929ec6f8 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ae5460 tty_register_device +EXPORT_SYMBOL vmlinux 0x92b2892a set_create_files_as +EXPORT_SYMBOL vmlinux 0x92c9dc5d simple_transaction_release +EXPORT_SYMBOL vmlinux 0x92d0d722 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92f17d4d tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930684a9 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x930e6232 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x93286868 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x932d910a d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93507f1c _lv1_gpu_memory_allocate +EXPORT_SYMBOL vmlinux 0x9358f479 register_netdev +EXPORT_SYMBOL vmlinux 0x9369ca92 udp_add_offload +EXPORT_SYMBOL vmlinux 0x9374fd46 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937e68dc scsi_register +EXPORT_SYMBOL vmlinux 0x938dc63d __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x939b58b4 netdev_alert +EXPORT_SYMBOL vmlinux 0x93a2ba1d stop_tty +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93ca75d1 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x93da6051 input_reset_device +EXPORT_SYMBOL vmlinux 0x93e31667 dquot_alloc +EXPORT_SYMBOL vmlinux 0x93f9270a dquot_file_open +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x9406a1a8 mach_pseries +EXPORT_SYMBOL vmlinux 0x940903dc __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x9422d914 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x943e8cbb nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x9446c85e mutex_unlock +EXPORT_SYMBOL vmlinux 0x94490603 pnv_phb_to_cxl_mode +EXPORT_SYMBOL vmlinux 0x946f452a __frontswap_test +EXPORT_SYMBOL vmlinux 0x9474c926 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949c8cc0 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x949e2ff2 sk_alloc +EXPORT_SYMBOL vmlinux 0x94a0c527 param_set_uint +EXPORT_SYMBOL vmlinux 0x94b6f3dd vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x94bf5a92 set_groups +EXPORT_SYMBOL vmlinux 0x94c2f2b9 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x94c7eaf7 inet_add_offload +EXPORT_SYMBOL vmlinux 0x94cc9c4b dquot_initialize +EXPORT_SYMBOL vmlinux 0x94d977a1 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x94e5781d vga_tryget +EXPORT_SYMBOL vmlinux 0x94e99717 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x95033416 netdev_change_features +EXPORT_SYMBOL vmlinux 0x951132c4 inode_change_ok +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951f5832 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x95282874 get_user_pages +EXPORT_SYMBOL vmlinux 0x952ee16f abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x953581ec __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9561ad3d vm_mmap +EXPORT_SYMBOL vmlinux 0x95865746 km_is_alive +EXPORT_SYMBOL vmlinux 0x95923e1a vme_irq_free +EXPORT_SYMBOL vmlinux 0x95a65342 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x95ac71e2 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x95afbc7f sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x95cdf654 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x95ed6ea3 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x95f0624a mmc_start_req +EXPORT_SYMBOL vmlinux 0x96090bae sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x960c839d netif_device_attach +EXPORT_SYMBOL vmlinux 0x96145f4a of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x9625ef05 filemap_flush +EXPORT_SYMBOL vmlinux 0x962b4785 __destroy_inode +EXPORT_SYMBOL vmlinux 0x9639a9c5 d_delete +EXPORT_SYMBOL vmlinux 0x966b8417 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x96764852 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x9689bb77 dump_page +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96ac9942 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b2bc94 seq_file_path +EXPORT_SYMBOL vmlinux 0x96c57cf8 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d16c51 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x96d57ffa md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x96e356ff dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x96f802f5 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x9710c2ea eth_header_cache +EXPORT_SYMBOL vmlinux 0x9739dfb9 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x97474f73 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x97478fe4 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9752baea vfs_iter_write +EXPORT_SYMBOL vmlinux 0x9753401b tty_name +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97618252 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x976e014f _lv1_map_device_mmio_region +EXPORT_SYMBOL vmlinux 0x976faa77 key_link +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x9798aac7 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979cfb9d vme_register_driver +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97aff62c splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x97b78d7f pci_set_master +EXPORT_SYMBOL vmlinux 0x97b83202 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x97ba1af0 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x97d69f58 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x97e18a1a unregister_quota_format +EXPORT_SYMBOL vmlinux 0x97e25747 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x97e7644f dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x980059ea __blk_end_request +EXPORT_SYMBOL vmlinux 0x98177648 _lv1_set_lpm_interval +EXPORT_SYMBOL vmlinux 0x981d2019 __get_user_pages +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982f2ade pci_match_id +EXPORT_SYMBOL vmlinux 0x983675bd jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x984aabbd copy_from_iter +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9881a27c inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x988c7ad4 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x98a2067b seq_release_private +EXPORT_SYMBOL vmlinux 0x98ad9b8b inet_csk_accept +EXPORT_SYMBOL vmlinux 0x98c20b63 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98e19eb2 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x98f41e17 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x9915634b kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9929cd42 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x993552dd pnv_cxl_get_irq_count +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993d8a09 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x99435bd5 macio_request_resources +EXPORT_SYMBOL vmlinux 0x99475605 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9979c950 __find_get_block +EXPORT_SYMBOL vmlinux 0x99832fdd key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x9997b611 submit_bio +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a769c9 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99c24cfe _lv1_free_device_dma_region +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d204a0 sock_efree +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99d6172c rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f382a3 d_instantiate +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a1ffb92 _lv1_clear_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0x9a2c34f3 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x9a43d93a tty_set_operations +EXPORT_SYMBOL vmlinux 0x9a481b6b skb_free_datagram +EXPORT_SYMBOL vmlinux 0x9a503b60 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x9a57dd76 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a6c2531 pasemi_dma_init +EXPORT_SYMBOL vmlinux 0x9a7797e0 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x9a9acbbe xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x9aca4473 padata_free +EXPORT_SYMBOL vmlinux 0x9ae38a13 md_update_sb +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9af0d876 sock_no_accept +EXPORT_SYMBOL vmlinux 0x9b2bbec7 nf_register_hook +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b44bbce lock_rename +EXPORT_SYMBOL vmlinux 0x9b5b6b71 genl_notify +EXPORT_SYMBOL vmlinux 0x9b767367 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x9b85be5c xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x9b871700 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bc027cb param_array_ops +EXPORT_SYMBOL vmlinux 0x9bc78ad2 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4d93ff sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x9c5e3047 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x9c69d6c1 input_grab_device +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cad1300 page_put_link +EXPORT_SYMBOL vmlinux 0x9cb8061d blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x9cc65172 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x9cd27d6b scsi_remove_host +EXPORT_SYMBOL vmlinux 0x9cdc4610 tcp_req_err +EXPORT_SYMBOL vmlinux 0x9ce67890 keyring_search +EXPORT_SYMBOL vmlinux 0x9cf4a138 user_revoke +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 0x9d4c2cc9 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x9d53043d padata_do_serial +EXPORT_SYMBOL vmlinux 0x9d55b904 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d7f838c genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x9d81a5d4 security_path_chown +EXPORT_SYMBOL vmlinux 0x9d898aac pci_set_power_state +EXPORT_SYMBOL vmlinux 0x9d94f404 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x9d9a0225 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x9d9dfc18 load_fp_state +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dc0bc00 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x9dc90045 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x9dde7e7e inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x9deb657c iterate_mounts +EXPORT_SYMBOL vmlinux 0x9df0bcc5 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e3218c7 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x9e37aabf blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x9e3bf4cd replace_mount_options +EXPORT_SYMBOL vmlinux 0x9e3f3d7a invalidate_bdev +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e597a35 brioctl_set +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e716b6e __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed484a0 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x9edfccc8 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x9ee78669 _lv1_write_virtual_uart +EXPORT_SYMBOL vmlinux 0x9f1b0a2a km_state_expired +EXPORT_SYMBOL vmlinux 0x9f2106da twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x9f2cb37d netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4aba9f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x9f4d9d02 set_cached_acl +EXPORT_SYMBOL vmlinux 0x9f6a0ff5 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9f6fae11 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f809383 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x9f89498d tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f983d54 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa2d7d8 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x9fb574f8 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x9fc029bd __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe0ecb5 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00f2025 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xa01ebcc7 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xa02d51c7 netlink_ack +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04e4db4 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xa055812b tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa066c01f udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xa06a5f87 nd_iostat_end +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa086bbf7 send_sig_info +EXPORT_SYMBOL vmlinux 0xa0a734ce scsi_print_command +EXPORT_SYMBOL vmlinux 0xa0aaf7f9 blk_end_request +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c0dd63 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xa0c58e5a poll_initwait +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 0xa1089266 sock_no_connect +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11e20c2 kernel_accept +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa182696d nf_register_hooks +EXPORT_SYMBOL vmlinux 0xa189c0ee eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xa195739a xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1d7ec16 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xa1de3cfa kernel_getpeername +EXPORT_SYMBOL vmlinux 0xa1f06be3 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xa1f45fca generic_pipe_buf_get +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 0xa2104291 dentry_unhash +EXPORT_SYMBOL vmlinux 0xa2127cdc pasemi_dma_alloc_flag +EXPORT_SYMBOL vmlinux 0xa2465322 _lv1_get_version_info +EXPORT_SYMBOL vmlinux 0xa27a5ed0 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2876dbc i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xa29b64bd do_splice_direct +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +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 0xa304141b writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xa30f7b11 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xa310f94e of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xa3124bff bmap +EXPORT_SYMBOL vmlinux 0xa31538ec mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xa31a2560 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa32ebba4 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xa3564a63 inet6_offloads +EXPORT_SYMBOL vmlinux 0xa36ae23d netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xa389b8c3 input_set_capability +EXPORT_SYMBOL vmlinux 0xa38fcac6 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xa3920635 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3a9e0b5 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b4d2d7 sock_create_lite +EXPORT_SYMBOL vmlinux 0xa3b4e946 validate_sp +EXPORT_SYMBOL vmlinux 0xa3b93b30 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xa3cbeb5e elv_add_request +EXPORT_SYMBOL vmlinux 0xa3d9367b of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xa3f04506 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa44f24fc module_refcount +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4542cb9 udplite_prot +EXPORT_SYMBOL vmlinux 0xa462f295 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa480c04b _lv1_gpu_context_attribute +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4a9910c generic_delete_inode +EXPORT_SYMBOL vmlinux 0xa4b242c4 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c8b29a pci_bus_type +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d96e79 lock_fb_info +EXPORT_SYMBOL vmlinux 0xa5172f9f dget_parent +EXPORT_SYMBOL vmlinux 0xa530801b input_allocate_device +EXPORT_SYMBOL vmlinux 0xa54e4de5 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa56f69c9 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xa57afa47 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b2f006 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xa5cf6338 vio_find_node +EXPORT_SYMBOL vmlinux 0xa5d26290 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xa5f28c8d input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xa5f44eb5 freeze_bdev +EXPORT_SYMBOL vmlinux 0xa5ff5e66 nf_log_packet +EXPORT_SYMBOL vmlinux 0xa6145dce crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xa62fc43c ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa6441cd8 ps3_dma_region_free +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68f81ff dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa68fbccc netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xa6996502 dqget +EXPORT_SYMBOL vmlinux 0xa6afb101 kernel_param_lock +EXPORT_SYMBOL vmlinux 0xa6b28eee gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xa6bb4556 tcp_poll +EXPORT_SYMBOL vmlinux 0xa6ce472f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xa6d69046 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xa6dadcbc mmc_request_done +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7219f6d pci_get_subsys +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7456be0 neigh_lookup +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa757607a giveup_fpu +EXPORT_SYMBOL vmlinux 0xa76ae752 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0xa76cd54a mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xa77c2ac9 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xa78d0053 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7b42be3 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xa7c98080 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xa80b5190 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa838e013 security_path_unlink +EXPORT_SYMBOL vmlinux 0xa842ba1c iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa843c6fe of_device_is_available +EXPORT_SYMBOL vmlinux 0xa84dcb6f proc_symlink +EXPORT_SYMBOL vmlinux 0xa84ebaf5 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xa853932e inet_del_offload +EXPORT_SYMBOL vmlinux 0xa85e94e9 __vio_register_driver +EXPORT_SYMBOL vmlinux 0xa862c7e0 macio_release_resources +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa897771f scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xa8a24376 param_get_long +EXPORT_SYMBOL vmlinux 0xa8b7e8ed jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xa8c9190d cfb_fillrect +EXPORT_SYMBOL vmlinux 0xa8c94faa request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xa8ced546 _lv1_net_set_interrupt_status_indicator +EXPORT_SYMBOL vmlinux 0xa8f09c8a d_invalidate +EXPORT_SYMBOL vmlinux 0xa8f45332 of_node_get +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91c77b6 _lv1_end_of_interrupt +EXPORT_SYMBOL vmlinux 0xa926d89c try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa929739b param_set_copystring +EXPORT_SYMBOL vmlinux 0xa93505cb setup_arg_pages +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa952da1f dev_mc_sync +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9967afd ip6_xmit +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9b254cf linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d4aac4 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xa9d84a3f bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa9df6821 inc_nlink +EXPORT_SYMBOL vmlinux 0xa9ebf9c5 put_io_context +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa059289 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xaa0edca8 pasemi_dma_alloc_fun +EXPORT_SYMBOL vmlinux 0xaa1e1d6a phy_init_hw +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4eca05 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xaa55dbbd ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xaa5a9846 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xaa684e77 rtnl_set_sk_err +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 0xaa719157 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xaa71e2e4 inet_shutdown +EXPORT_SYMBOL vmlinux 0xaa8f4a21 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xaa93a8ec mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xaaa29f7c update_devfreq +EXPORT_SYMBOL vmlinux 0xaab3db68 init_net +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae6c47d __kernel_write +EXPORT_SYMBOL vmlinux 0xaaf53f18 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab0f3236 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xab3b9011 down_read_trylock +EXPORT_SYMBOL vmlinux 0xab490dfe pid_task +EXPORT_SYMBOL vmlinux 0xab5e0b26 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xab62c22b sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xab66f611 _lv1_set_lpm_trigger_control +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6f9137 dquot_release +EXPORT_SYMBOL vmlinux 0xab74458c blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab84b1c1 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xab99afea serio_rescan +EXPORT_SYMBOL vmlinux 0xabaef627 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xabaf4e6e kfree_skb +EXPORT_SYMBOL vmlinux 0xabbdb433 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xabc2338a empty_aops +EXPORT_SYMBOL vmlinux 0xabc52890 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabc806b5 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd37335 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1ae240 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xac233d56 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac43312f should_remove_suid +EXPORT_SYMBOL vmlinux 0xac540b58 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xac7d27fc tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xac7da210 __register_chrdev +EXPORT_SYMBOL vmlinux 0xac846ba5 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xac9f8a07 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb9ebce ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xacbfce1d jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xacc9a961 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd14ab8 _lv1_construct_logical_spe +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf1c762 of_match_node +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad10fac7 sock_i_ino +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad1a22cb pnv_cxl_alloc_hwirq_ranges +EXPORT_SYMBOL vmlinux 0xad2c2af9 simple_readpage +EXPORT_SYMBOL vmlinux 0xad2e9a40 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xad444b2f sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad6ffab9 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xad7831a8 bdi_register +EXPORT_SYMBOL vmlinux 0xad80020b udp_poll +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad87ff1c mdiobus_read +EXPORT_SYMBOL vmlinux 0xad8d2a35 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xada65414 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xada6e88e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xadb16ea6 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xaddd77f7 register_netdevice +EXPORT_SYMBOL vmlinux 0xadeebac3 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xadeffe25 _lv1_gpu_context_intr +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae18eabe devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xae200e2f mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae3910c8 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae5699da xfrm_register_type +EXPORT_SYMBOL vmlinux 0xae5ddee1 input_get_keycode +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae779a96 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xae83454c reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xae94fb49 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xaeb7a6aa security_path_truncate +EXPORT_SYMBOL vmlinux 0xaeb8b23f dev_alert +EXPORT_SYMBOL vmlinux 0xaeba2e2e param_set_ulong +EXPORT_SYMBOL vmlinux 0xaecf86f1 kset_register +EXPORT_SYMBOL vmlinux 0xaed46ef8 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xaeff579b jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xaf031047 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0879e9 freeze_super +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4dae66 security_mmap_file +EXPORT_SYMBOL vmlinux 0xaf503c61 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xaf62a74a blk_get_queue +EXPORT_SYMBOL vmlinux 0xaf66135d bio_copy_kern +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6e8ea5 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf9cd4c1 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xafc7b338 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xafd6c3c2 put_page +EXPORT_SYMBOL vmlinux 0xafe15215 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xafeb8b6e proc_mkdir +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb00821a8 srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0xb0205e39 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xb0352ad4 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb077455d pci_disable_msix +EXPORT_SYMBOL vmlinux 0xb0871edb bdi_destroy +EXPORT_SYMBOL vmlinux 0xb09b8494 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0cb7f16 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xb0d39ba8 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xb0dcdad5 km_state_notify +EXPORT_SYMBOL vmlinux 0xb0df9610 pnv_cxl_ioda_msi_setup +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f37c33 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xb101c20b pagecache_write_end +EXPORT_SYMBOL vmlinux 0xb1220b77 of_get_parent +EXPORT_SYMBOL vmlinux 0xb1297a0e security_file_permission +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +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 0xb16ffc57 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xb1af6a76 unregister_key_type +EXPORT_SYMBOL vmlinux 0xb1bf123c block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cc2ba4 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1e97b75 param_ops_int +EXPORT_SYMBOL vmlinux 0xb1f189f4 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xb245f54e generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2ac91d2 skb_tx_error +EXPORT_SYMBOL vmlinux 0xb2ae593f flush_icache_user_range +EXPORT_SYMBOL vmlinux 0xb2b05894 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d6fe2e seq_escape +EXPORT_SYMBOL vmlinux 0xb3080228 mntget +EXPORT_SYMBOL vmlinux 0xb31855c0 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb3313bfc inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb36a0139 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xb3b08c2f __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xb3bf73df cpu_active_mask +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +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 0xb42f41e2 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xb447a465 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xb44d0543 nf_reinject +EXPORT_SYMBOL vmlinux 0xb4680b43 vm_iomap_memory +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 0xb477d0dc mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xb48b694f __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xb49846f1 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xb4cf3eb5 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0xb4d4ef1e bio_phys_segments +EXPORT_SYMBOL vmlinux 0xb4fe338d dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xb4fe3eb1 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xb52e9daa debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xb53b0759 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xb56bfd9e smu_spinwait_cmd +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57aa910 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xb588321a md_reload_sb +EXPORT_SYMBOL vmlinux 0xb59562be pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xb5982dca __module_get +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ac301e console_stop +EXPORT_SYMBOL vmlinux 0xb5ac667f padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xb5af0e61 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xb5b6eebe vlan_vid_del +EXPORT_SYMBOL vmlinux 0xb5c27a86 param_get_ullong +EXPORT_SYMBOL vmlinux 0xb5c69764 inode_set_flags +EXPORT_SYMBOL vmlinux 0xb5daa4e6 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb5ed48af sys_imageblit +EXPORT_SYMBOL vmlinux 0xb5ef19ce dquot_drop +EXPORT_SYMBOL vmlinux 0xb5fe893c may_umount_tree +EXPORT_SYMBOL vmlinux 0xb6220b36 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb628a968 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xb65244a1 inode_init_once +EXPORT_SYMBOL vmlinux 0xb6755b5d eth_header +EXPORT_SYMBOL vmlinux 0xb6778ff3 sock_release +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67a80f6 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xb68393b8 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6919b97 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a30c0b dev_trans_start +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b59a96 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xb6ce7d72 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xb6da08b4 param_get_string +EXPORT_SYMBOL vmlinux 0xb6f6dfd5 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xb73d85ac blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7754ce9 devm_release_resource +EXPORT_SYMBOL vmlinux 0xb7a6d87b inet_sendpage +EXPORT_SYMBOL vmlinux 0xb7a837d1 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7da6fd7 clone_cred +EXPORT_SYMBOL vmlinux 0xb800b0ff dm_io +EXPORT_SYMBOL vmlinux 0xb8057291 tcp_close +EXPORT_SYMBOL vmlinux 0xb806b8b2 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xb80a1170 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xb80ae701 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xb8324529 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xb84a89d9 pci_restore_state +EXPORT_SYMBOL vmlinux 0xb86123be _lv1_write_repository_node +EXPORT_SYMBOL vmlinux 0xb862e28d set_disk_ro +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb89b29c4 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xb8a30c7e _lv1_add_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0xb8e6c864 qdisc_reset +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb91abd59 up_read +EXPORT_SYMBOL vmlinux 0xb965c36c devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xb9afaedb blk_register_region +EXPORT_SYMBOL vmlinux 0xb9c889fa __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xb9c8e4d9 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba122a2c smu_done_complete +EXPORT_SYMBOL vmlinux 0xba2ffec2 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xba34c7f7 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xba456743 input_release_device +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba5fe2a9 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xba69465a loop_backing_file +EXPORT_SYMBOL vmlinux 0xba6af16b simple_rmdir +EXPORT_SYMBOL vmlinux 0xba7647a0 security_inode_permission +EXPORT_SYMBOL vmlinux 0xba8b9b43 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xbaac087c sk_reset_timer +EXPORT_SYMBOL vmlinux 0xbabb2a38 simple_link +EXPORT_SYMBOL vmlinux 0xbad4b869 get_agp_version +EXPORT_SYMBOL vmlinux 0xbadb9c8a input_event +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb06d87f agp_generic_enable +EXPORT_SYMBOL vmlinux 0xbb113262 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb40e77b dev_get_iflink +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb65725d sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xbb983375 file_remove_privs +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9e67dd clear_user_page +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbc484cf __block_write_begin +EXPORT_SYMBOL vmlinux 0xbbce1fcb proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xbbd1faef kernel_connect +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbc275b71 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xbc283904 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc34bc9f in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xbc37e33a __frontswap_load +EXPORT_SYMBOL vmlinux 0xbc3a639c generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xbc4f3e9f __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xbc593c05 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xbc80a72b of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xbc80dfb5 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xbc8c1077 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xbc982b06 eeh_subsystem_flags +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbca7d5c1 sock_i_uid +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbce05d1f __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xbce86da6 set_page_dirty +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd0ee0cc __scm_send +EXPORT_SYMBOL vmlinux 0xbd19796e blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xbd209837 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xbd22c439 tcp_check_req +EXPORT_SYMBOL vmlinux 0xbd276e16 skb_insert +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4b32f9 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xbd642de2 nf_log_unset +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd84de3d t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xbd854b81 acl_by_type +EXPORT_SYMBOL vmlinux 0xbd8cfa15 pasemi_write_mac_reg +EXPORT_SYMBOL vmlinux 0xbd8e7b8b tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xbd8fc343 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdaecd92 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xbdaf46b9 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xbdbae73e block_write_end +EXPORT_SYMBOL vmlinux 0xbdd39eb0 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xbdd4896f vme_lm_request +EXPORT_SYMBOL vmlinux 0xbdd8c552 mount_ns +EXPORT_SYMBOL vmlinux 0xbddd37d8 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xbde5ace8 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xbde8f4b8 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xbdec6729 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xbdfc6d72 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xbe062f0b bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe36e57e simple_write_begin +EXPORT_SYMBOL vmlinux 0xbe4de909 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xbe59aa4e devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xbeb89b53 vfs_mknod +EXPORT_SYMBOL vmlinux 0xbed33e79 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xbef3601c mount_nodev +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef5e6da blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xbf175f87 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xbf1b5680 of_get_min_tck +EXPORT_SYMBOL vmlinux 0xbf5cd1be __serio_register_port +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8097c1 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xbf80aa5d xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xbf84e3db bio_put +EXPORT_SYMBOL vmlinux 0xbf85c276 __set_page_dirty_buffers +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 0xbfbded24 of_dev_put +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc24051 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xbfdf4061 pci_save_state +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff6f110 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xbffa4383 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xc02afe0a udp6_csum_init +EXPORT_SYMBOL vmlinux 0xc05ee6b8 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a1c7f8 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b7db1f dev_crit +EXPORT_SYMBOL vmlinux 0xc0e99e4b mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xc1075282 add_disk +EXPORT_SYMBOL vmlinux 0xc10d0594 lookup_one_len +EXPORT_SYMBOL vmlinux 0xc13511d7 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc1413aef scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xc14753de start_tty +EXPORT_SYMBOL vmlinux 0xc14ab0e2 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc15f6508 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xc19a8689 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xc1b0b134 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xc1b542b3 block_write_full_page +EXPORT_SYMBOL vmlinux 0xc1c7b562 __vfs_read +EXPORT_SYMBOL vmlinux 0xc1cbeddd cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xc1d443bd __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1de3c4f submit_bh +EXPORT_SYMBOL vmlinux 0xc1df6da2 register_console +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f00967 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xc22304fd swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xc223be9d truncate_pagecache +EXPORT_SYMBOL vmlinux 0xc236ca1a vmap +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc248cee4 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xc24e7a83 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xc24f2f73 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0xc255cd0f key_type_keyring +EXPORT_SYMBOL vmlinux 0xc26882d7 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xc299350a swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2c787b8 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xc2c9379e ip_setsockopt +EXPORT_SYMBOL vmlinux 0xc2c9e853 noop_fsync +EXPORT_SYMBOL vmlinux 0xc2df3976 lro_flush_all +EXPORT_SYMBOL vmlinux 0xc2e0e9a1 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f1c5ef jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fb9ee1 _lv1_shutdown_logical_partition +EXPORT_SYMBOL vmlinux 0xc301dc54 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc318b7a5 kill_anon_super +EXPORT_SYMBOL vmlinux 0xc3277e16 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xc3468d32 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xc3543a0f input_unregister_handle +EXPORT_SYMBOL vmlinux 0xc3847483 security_path_chmod +EXPORT_SYMBOL vmlinux 0xc394973b max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xc3a8e8d3 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xc3bf4d06 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d9d1b3 backlight_device_register +EXPORT_SYMBOL vmlinux 0xc3e081da ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xc3f7f1a8 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xc4051bf9 generic_write_checks +EXPORT_SYMBOL vmlinux 0xc409c047 generic_removexattr +EXPORT_SYMBOL vmlinux 0xc4187e75 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xc41f1696 _lv1_configure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0xc4200cab md_register_thread +EXPORT_SYMBOL vmlinux 0xc4278986 phy_driver_register +EXPORT_SYMBOL vmlinux 0xc435d37b eth_validate_addr +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc465e539 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc481e0ef of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc4914ba7 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49ef353 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xc49f89be skb_copy +EXPORT_SYMBOL vmlinux 0xc4a184f5 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xc4a2ffef pnv_cxl_release_hwirqs +EXPORT_SYMBOL vmlinux 0xc4a940f2 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xc4acf8ea blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xc4ae7a57 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xc4bacaa6 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0xc4c1cf27 copy_to_iter +EXPORT_SYMBOL vmlinux 0xc4c8bafe i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xc4c9ae4c inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xc4d73461 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xc4e7cf68 rtnl_notify +EXPORT_SYMBOL vmlinux 0xc4f008ba xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xc4f97a6d agp_backend_release +EXPORT_SYMBOL vmlinux 0xc4fcbb99 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xc4ff1557 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xc4ffd5b8 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xc5089620 _lv1_stop_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xc52fb113 dquot_commit +EXPORT_SYMBOL vmlinux 0xc53cd6dc pci_disable_device +EXPORT_SYMBOL vmlinux 0xc5419a33 agp_create_memory +EXPORT_SYMBOL vmlinux 0xc54f6f77 param_get_bool +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc567deb2 dquot_destroy +EXPORT_SYMBOL vmlinux 0xc586e5f8 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xc58b15db of_node_put +EXPORT_SYMBOL vmlinux 0xc58ebc2d udp_set_csum +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59feddf genphy_suspend +EXPORT_SYMBOL vmlinux 0xc5d418f1 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5db0d89 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63ad71c __scm_destroy +EXPORT_SYMBOL vmlinux 0xc63d1230 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xc63e8647 __mutex_init +EXPORT_SYMBOL vmlinux 0xc64fe973 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xc6507080 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0xc6599060 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc661d846 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc674018f set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc67ba0b0 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xc68587ea __dax_fault +EXPORT_SYMBOL vmlinux 0xc68d212b xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xc68e2fd3 elv_register_queue +EXPORT_SYMBOL vmlinux 0xc6909b4e tcp_parse_options +EXPORT_SYMBOL vmlinux 0xc6a086cb generic_setlease +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6be502d vfs_rmdir +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6cbc145 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xc6dfb5c5 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc6ec7e26 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xc6f96b5b pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72497cf seq_vprintf +EXPORT_SYMBOL vmlinux 0xc7261219 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xc72c80ad from_kprojid +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7448d5d t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xc7556994 dev_get_flags +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +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 0xc78b3c91 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7cc1ea9 skb_append +EXPORT_SYMBOL vmlinux 0xc7e002fc mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xc7e7929e netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xc7e89212 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xc7e8c8e2 of_get_pci_address +EXPORT_SYMBOL vmlinux 0xc7f39b15 irq_stat +EXPORT_SYMBOL vmlinux 0xc7fbe442 skb_find_text +EXPORT_SYMBOL vmlinux 0xc80b35f0 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xc811197c remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xc81af46b udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xc82cc1f0 simple_statfs +EXPORT_SYMBOL vmlinux 0xc82ea6b0 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xc8373ec7 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xc8396997 kernel_getsockname +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 0xc8501530 phy_suspend +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc85b2232 netif_rx +EXPORT_SYMBOL vmlinux 0xc86b60d4 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc888f07a __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89c12c3 vfs_readf +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d0d8d1 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xc8da61cf skb_clone_sk +EXPORT_SYMBOL vmlinux 0xc8e31d75 _lv1_configure_irq_state_bitmap +EXPORT_SYMBOL vmlinux 0xc8f4a639 of_get_property +EXPORT_SYMBOL vmlinux 0xc8fc30f0 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xc902a620 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xc90bb29d redraw_screen +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91c8837 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc942d801 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xc9573845 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96fe8b9 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xc970bb17 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc98bd722 tso_count_descs +EXPORT_SYMBOL vmlinux 0xc9923c0a get_disk +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b1f3de dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xc9e51d21 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xc9fbb3e5 neigh_update +EXPORT_SYMBOL vmlinux 0xc9fc598d pasemi_read_dma_reg +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca210ff1 vfs_read +EXPORT_SYMBOL vmlinux 0xca27727a dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca3135c1 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xca370163 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca4eae91 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xca59591e __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca602357 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xca79718c simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xca7ab062 nf_unregister_hooks +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 0xcac35ff8 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad0b660 macio_release_resource +EXPORT_SYMBOL vmlinux 0xcadf98c3 param_get_ushort +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafc1a57 vfs_fsync +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb1c89f4 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xcb26404e skb_queue_purge +EXPORT_SYMBOL vmlinux 0xcb27919c fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xcb660f45 of_phy_connect +EXPORT_SYMBOL vmlinux 0xcb755a6f iterate_dir +EXPORT_SYMBOL vmlinux 0xcb8be652 sys_fillrect +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcba6595f sock_rfree +EXPORT_SYMBOL vmlinux 0xcbaefd99 scsi_ioctl_reset +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 0xcbe8b038 _lv1_configure_execution_time_variable +EXPORT_SYMBOL vmlinux 0xcbf70919 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xcc161cb4 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc3817a3 skb_put +EXPORT_SYMBOL vmlinux 0xcc39b344 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc693bf8 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc7e6ed1 dma_set_mask +EXPORT_SYMBOL vmlinux 0xcc89c246 pasemi_dma_alloc_chan +EXPORT_SYMBOL vmlinux 0xcc8b39b9 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xcc976273 napi_complete_done +EXPORT_SYMBOL vmlinux 0xccac88c9 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcce6e60c dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xccea9ee2 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xccf68375 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xcd0359d6 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd197b02 pipe_unlock +EXPORT_SYMBOL vmlinux 0xcd1e0062 put_cmsg +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd4c1f85 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd742580 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xcd749720 elevator_change +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 0xcda03ff6 kern_path +EXPORT_SYMBOL vmlinux 0xcdb2f99f agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xcdbf5817 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xcdbf85c5 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcde64a06 __devm_release_region +EXPORT_SYMBOL vmlinux 0xcded0fb7 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xcdf14b57 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xcdf91fbe posix_test_lock +EXPORT_SYMBOL vmlinux 0xce071bbf blk_end_request_all +EXPORT_SYMBOL vmlinux 0xce13e2a4 bd_set_size +EXPORT_SYMBOL vmlinux 0xce161cca tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xce1e27cd simple_lookup +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce299072 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xce2a04a9 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xce2d1017 bio_add_page +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce4d23e3 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce59f5cb unregister_cdrom +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce7faa15 devm_request_resource +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xceed26e3 sg_miter_skip +EXPORT_SYMBOL vmlinux 0xceeed554 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xcef0d445 __kfree_skb +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef8e09c ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0192b7 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xcf0a498c buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xcf139caf inode_get_bytes +EXPORT_SYMBOL vmlinux 0xcf1dd5e1 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xcf582383 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xcf5882cf skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xcf7799ef release_sock +EXPORT_SYMBOL vmlinux 0xcf819d3c machine_id +EXPORT_SYMBOL vmlinux 0xcf81c15f sk_capable +EXPORT_SYMBOL vmlinux 0xcf864e8d inet6_add_offload +EXPORT_SYMBOL vmlinux 0xcf87b81b mark_page_accessed +EXPORT_SYMBOL vmlinux 0xcf96a17b inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xcfaec676 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xcfb7d5a0 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcfcac743 finish_no_open +EXPORT_SYMBOL vmlinux 0xcfd760f8 dquot_operations +EXPORT_SYMBOL vmlinux 0xcfff4491 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xd00e1bef netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xd00fa223 netdev_err +EXPORT_SYMBOL vmlinux 0xd01738fc blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xd03dfd4c pci_scan_slot +EXPORT_SYMBOL vmlinux 0xd04df0ea udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xd05931ec _lv1_set_lpm_counter_control +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd09edf6d i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a8f77d kmem_cache_size +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0c9935c fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xd0d1bb7d tcp_sendpage +EXPORT_SYMBOL vmlinux 0xd0dfee81 netif_device_detach +EXPORT_SYMBOL vmlinux 0xd0e07df9 skb_pull +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 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd133f5dc vfs_create +EXPORT_SYMBOL vmlinux 0xd13da86b generic_listxattr +EXPORT_SYMBOL vmlinux 0xd17e1e20 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1939090 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xd1b80e86 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xd1c92649 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xd1cd3297 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1fe8ebb _lv1_get_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0xd1ffb5ac vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xd1ffe69f netdev_notice +EXPORT_SYMBOL vmlinux 0xd2007456 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd2264044 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xd2517ace call_netdevice_notifiers +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 0xd2699822 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xd26b9b6b xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27d07c4 blk_start_queue +EXPORT_SYMBOL vmlinux 0xd2977c1c __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xd2982d0e __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2bc1b75 flush_signals +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e8563b i2c_transfer +EXPORT_SYMBOL vmlinux 0xd2ef2638 smu_cmdbuf_abs +EXPORT_SYMBOL vmlinux 0xd30bebed compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xd30f1a85 do_truncate +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32ceb7c gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd32d0693 of_root +EXPORT_SYMBOL vmlinux 0xd34d4cf1 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd36fbe13 backlight_force_update +EXPORT_SYMBOL vmlinux 0xd377a1a9 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xd39c769c md_write_end +EXPORT_SYMBOL vmlinux 0xd3a2c534 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xd3a72d14 agp_enable +EXPORT_SYMBOL vmlinux 0xd3b1712d scsi_init_io +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3bf6a74 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xd3ce6d51 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xd3d54b77 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xd3e7bc30 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xd3f92fe8 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xd402ed72 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd442b450 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd44d6f53 truncate_setsize +EXPORT_SYMBOL vmlinux 0xd45317c8 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd468ee61 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xd4791bfc xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4a9144c max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xd4b50ba8 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xd4d3bdb2 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xd4e7524f zero_fill_bio +EXPORT_SYMBOL vmlinux 0xd52cd059 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xd52d0e7b i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd58f74bd jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xd591888d tty_kref_put +EXPORT_SYMBOL vmlinux 0xd598031c bh_submit_read +EXPORT_SYMBOL vmlinux 0xd59e093b blk_rq_init +EXPORT_SYMBOL vmlinux 0xd59e277c write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xd5a5b135 simple_open +EXPORT_SYMBOL vmlinux 0xd5b2f92d bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xd5b42605 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xd5e1d719 _lv1_set_ppe_periodic_tracer_frequency +EXPORT_SYMBOL vmlinux 0xd5f0172c pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xd613645e compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd623aa41 search_binary_handler +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6301cbc release_firmware +EXPORT_SYMBOL vmlinux 0xd63763c0 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65e9d47 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xd670b36b __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68a5412 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xd6a95bb9 vga_get +EXPORT_SYMBOL vmlinux 0xd6b0cd96 vme_irq_request +EXPORT_SYMBOL vmlinux 0xd6b14f9b sock_update_memcg +EXPORT_SYMBOL vmlinux 0xd6c478c6 invalidate_partition +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6da5633 generic_fillattr +EXPORT_SYMBOL vmlinux 0xd6e5bae6 udp_disconnect +EXPORT_SYMBOL vmlinux 0xd6eaa9d8 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xd6edf811 _lv1_release_memory +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6ef8fdc of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xd6f38aa3 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd727a4fb of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xd72e1cfc _lv1_set_lpm_spr_trigger +EXPORT_SYMBOL vmlinux 0xd7391901 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xd75b7651 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd76a7b60 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xd7838c4f vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7994ae2 dev_activate +EXPORT_SYMBOL vmlinux 0xd7d2bfe9 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7ef33d0 vfs_llseek +EXPORT_SYMBOL vmlinux 0xd8339eeb skb_trim +EXPORT_SYMBOL vmlinux 0xd8598fd8 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b81423 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xd8d098ef compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd8d61c8d tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f9bfe3 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xd8faac44 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd8fcad68 pci_get_device +EXPORT_SYMBOL vmlinux 0xd91b49b6 module_layout +EXPORT_SYMBOL vmlinux 0xd91d90d2 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xd924c79a rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xd92bc65d dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xd958f6e4 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd994e114 bdevname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9bd7474 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xd9d4d09d _lv1_release_io_segment +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xda072563 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xda0f5234 rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0xda1d95a3 i2c_release_client +EXPORT_SYMBOL vmlinux 0xda256a22 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda6dd3a9 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xda777aa9 generic_permission +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7f0ebb swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xda7fbe0b unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xda84ebf8 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda93554a mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xda955602 iget5_locked +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 0xdae47f7e mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdafa9e72 vfs_whiteout +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb094234 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xdb19cb91 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb3e56e1 sync_filesystem +EXPORT_SYMBOL vmlinux 0xdb6375e6 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb70b384 set_anon_super +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7661a1 bio_copy_data +EXPORT_SYMBOL vmlinux 0xdb7ac3cf dm_kobject_release +EXPORT_SYMBOL vmlinux 0xdb8f7a8f from_kuid +EXPORT_SYMBOL vmlinux 0xdbb02af0 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xdbb80932 save_mount_options +EXPORT_SYMBOL vmlinux 0xdbc398e8 proc_remove +EXPORT_SYMBOL vmlinux 0xdbd06dd0 set_device_ro +EXPORT_SYMBOL vmlinux 0xdbef84d6 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0521e8 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xdc125886 dev_add_offload +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1fe690 get_phy_device +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4de059 dcb_setapp +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc88c724 __init_rwsem +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9997fc netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xdca57969 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcbc7a5f find_lock_entry +EXPORT_SYMBOL vmlinux 0xdcd041bc tty_port_open +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd2e65ba netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xdd361587 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xdd6d2e22 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd9df11a __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xdd9fc0c2 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddbc516f free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xddc66b80 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xddf3bc12 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xde0c0797 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xde1ada50 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xde396df3 address_space_init_once +EXPORT_SYMBOL vmlinux 0xde3a6420 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xde3caab3 inet_getname +EXPORT_SYMBOL vmlinux 0xde41e4fc __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde783883 pSeries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xde7a71fe jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xde819e81 __mod_zone_page_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 0xdebf449e put_filp +EXPORT_SYMBOL vmlinux 0xdec6fd06 skb_push +EXPORT_SYMBOL vmlinux 0xdf1cfd4f phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3d16ef nd_btt_probe +EXPORT_SYMBOL vmlinux 0xdf48884b prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xdf4c9dbe passthru_features_check +EXPORT_SYMBOL vmlinux 0xdf51e85b scsi_verify_blk_ioctl +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 0xdf6adc4a dquot_quota_off +EXPORT_SYMBOL vmlinux 0xdf89bba5 new_inode +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9a937c blk_stop_queue +EXPORT_SYMBOL vmlinux 0xdfd4952f serio_reconnect +EXPORT_SYMBOL vmlinux 0xdfeba6ab ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffecd49 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xe0162ae9 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xe01bf31c eeh_dev_release +EXPORT_SYMBOL vmlinux 0xe022e153 clear_nlink +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05d97f4 vme_bus_num +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe062caf5 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08a09e1 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xe095a69b __genl_register_family +EXPORT_SYMBOL vmlinux 0xe0a5a789 i2c_master_send +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe113bfec pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xe127bb48 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xe15775e9 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe17ce502 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xe1946077 of_get_address +EXPORT_SYMBOL vmlinux 0xe1a235c4 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xe1c383aa build_skb +EXPORT_SYMBOL vmlinux 0xe1c72d70 agp_free_memory +EXPORT_SYMBOL vmlinux 0xe1d65fcc page_waitqueue +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 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe225f981 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xe22c2f6c blk_integrity_register +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23d56bc d_tmpfile +EXPORT_SYMBOL vmlinux 0xe247ae69 touch_atime +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2518585 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xe253a0ea tty_free_termios +EXPORT_SYMBOL vmlinux 0xe2579143 mpage_writepage +EXPORT_SYMBOL vmlinux 0xe26cb8cc pci_enable_msix +EXPORT_SYMBOL vmlinux 0xe286f06c ps2_drain +EXPORT_SYMBOL vmlinux 0xe287b26b scmd_printk +EXPORT_SYMBOL vmlinux 0xe2952902 led_set_brightness +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a1f49c set_user_nice +EXPORT_SYMBOL vmlinux 0xe2b59558 dev_err +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2c7ab76 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xe2cd971a __put_cred +EXPORT_SYMBOL vmlinux 0xe2cf4cf9 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe30574dc mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xe3112174 dev_addr_del +EXPORT_SYMBOL vmlinux 0xe31b08c4 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xe31d6ce4 ping_prot +EXPORT_SYMBOL vmlinux 0xe342b211 param_ops_string +EXPORT_SYMBOL vmlinux 0xe3547304 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xe365a360 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xe36f8bb6 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe388397b arp_create +EXPORT_SYMBOL vmlinux 0xe3a1884d bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3ae28c6 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xe3c4259b __ip_dev_find +EXPORT_SYMBOL vmlinux 0xe3c7b9dc phy_connect +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3f6f9ae __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xe417885b install_exec_creds +EXPORT_SYMBOL vmlinux 0xe44e7b0c max8925_reg_read +EXPORT_SYMBOL vmlinux 0xe4753624 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xe47f5fda jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4adc536 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xe4c2ffe2 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xe4dde5bd seq_open +EXPORT_SYMBOL vmlinux 0xe4e9bf05 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xe4f4775f skb_pad +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe54f7548 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xe56229f1 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xe56ca8af block_write_begin +EXPORT_SYMBOL vmlinux 0xe570045a generic_ro_fops +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59b3d13 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cfcd31 netdev_state_change +EXPORT_SYMBOL vmlinux 0xe5e9fcad read_cache_page +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fdee1f icmpv6_send +EXPORT_SYMBOL vmlinux 0xe60988ac _lv1_query_logical_partition_address_region_info +EXPORT_SYMBOL vmlinux 0xe60dc2b7 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xe6310526 tty_lock +EXPORT_SYMBOL vmlinux 0xe633549a param_ops_charp +EXPORT_SYMBOL vmlinux 0xe63e7a5d request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xe64133fa pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xe66f185d block_truncate_page +EXPORT_SYMBOL vmlinux 0xe66f3f1f generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xe6763153 tcp_connect +EXPORT_SYMBOL vmlinux 0xe67f7cea param_ops_ushort +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6ab4a0d phy_resume +EXPORT_SYMBOL vmlinux 0xe6b0930d bdi_register_dev +EXPORT_SYMBOL vmlinux 0xe6b161c7 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xe6bc8157 mach_powermac +EXPORT_SYMBOL vmlinux 0xe6dbcf7c sock_edemux +EXPORT_SYMBOL vmlinux 0xe6e1deeb skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xe6f41359 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xe6f479a8 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7182d20 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xe71c3b6f pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xe7221ec0 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xe72991e4 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xe73896bb clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xe74aa406 _lv1_set_dabr +EXPORT_SYMBOL vmlinux 0xe753f6f7 uart_register_driver +EXPORT_SYMBOL vmlinux 0xe76f827d kernel_read +EXPORT_SYMBOL vmlinux 0xe76ffe06 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xe77a7707 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xe77e45d0 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b88407 sg_miter_start +EXPORT_SYMBOL vmlinux 0xe7b97f82 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xe7c6a6e3 netlink_set_err +EXPORT_SYMBOL vmlinux 0xe7cd99b7 smu_queue_simple +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7de615d scsi_device_get +EXPORT_SYMBOL vmlinux 0xe7dfe640 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xe81ed0d0 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe8275730 seq_dentry +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe858cacc load_nls_default +EXPORT_SYMBOL vmlinux 0xe860528f scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xe86ae980 ps2_end_command +EXPORT_SYMBOL vmlinux 0xe880e9bb inode_add_bytes +EXPORT_SYMBOL vmlinux 0xe8912a32 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xe8930ad5 kernel_write +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8acb5ff mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xe8b11a3c make_kuid +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8c78f65 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xe8cde675 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe934cf92 macio_enable_devres +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe93bd17d get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xe93d13f9 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xe9427315 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe97bc7d3 unlock_page +EXPORT_SYMBOL vmlinux 0xe9cda337 dev_warn +EXPORT_SYMBOL vmlinux 0xe9e21868 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea14ef72 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xea164abe bdgrab +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1f895a sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xea3250d6 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xea365048 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xea36f3c8 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea8666c0 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa0cb01 __alloc_skb +EXPORT_SYMBOL vmlinux 0xeaa36899 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xeaa73fab arp_xmit +EXPORT_SYMBOL vmlinux 0xeab06cf2 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0xeab24bf3 sock_wake_async +EXPORT_SYMBOL vmlinux 0xeadd1c6e skb_checksum_help +EXPORT_SYMBOL vmlinux 0xeb0f5994 param_get_int +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb51deef jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xeb666a3f may_umount +EXPORT_SYMBOL vmlinux 0xeb682cb4 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xeb82c6e2 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xeb8c7b7b cxl_use_count +EXPORT_SYMBOL vmlinux 0xeb8d048f sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xeb90c0d5 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xebb05a9d security_task_getsecid +EXPORT_SYMBOL vmlinux 0xebb3adcc __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xebc5122a cdrom_release +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xebd46467 generic_perform_write +EXPORT_SYMBOL vmlinux 0xebef7032 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xebf3282d bio_endio +EXPORT_SYMBOL vmlinux 0xec30765a _lv1_allocate_io_segment +EXPORT_SYMBOL vmlinux 0xec424071 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xec4e8989 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xec70c411 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xec71334a ip_getsockopt +EXPORT_SYMBOL vmlinux 0xec81441b fd_install +EXPORT_SYMBOL vmlinux 0xec832df8 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xec8b498c blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xec979a27 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xec9d82a3 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecbf1624 __register_binfmt +EXPORT_SYMBOL vmlinux 0xecd314d3 param_ops_bint +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xece21d52 security_path_rename +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecea520e agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xecee4e5c pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xed125b26 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xed34b295 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xed3aa499 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed652427 _lv1_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0xed78dfbb pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xed7ef486 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xed82460d agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xed8eb857 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xed8ebcd2 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda26cf4 fb_find_mode +EXPORT_SYMBOL vmlinux 0xeda7cfa9 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xedacd414 drop_nlink +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedd2f858 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xeddf715e i2c_use_client +EXPORT_SYMBOL vmlinux 0xedea6d33 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xedf0b48c _lv1_storage_get_async_status +EXPORT_SYMBOL vmlinux 0xedfc2255 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xee11f711 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xee220ed4 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee367415 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xee402260 do_SAK +EXPORT_SYMBOL vmlinux 0xee5bb20b _lv1_panic +EXPORT_SYMBOL vmlinux 0xee5cabff dev_remove_offload +EXPORT_SYMBOL vmlinux 0xee5fd5f6 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xee6ffe20 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xee85388c would_dump +EXPORT_SYMBOL vmlinux 0xee8aebbe jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xee8b8221 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xee8d9e67 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xee8e7d70 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xee9174c5 _lv1_storage_read +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee940085 of_get_next_parent +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeaf72ae tcf_exts_change +EXPORT_SYMBOL vmlinux 0xeeb2273f i8042_install_filter +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeec8bdd2 d_add_ci +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef33c5f sk_stream_error +EXPORT_SYMBOL vmlinux 0xeef5b71e rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xef013155 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xef034655 misc_deregister +EXPORT_SYMBOL vmlinux 0xef0c27a5 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xef38ef56 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xef411ac2 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xef4a0647 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xef6dd016 from_kgid +EXPORT_SYMBOL vmlinux 0xef7e70fa is_nd_btt +EXPORT_SYMBOL vmlinux 0xefa97c68 tty_port_init +EXPORT_SYMBOL vmlinux 0xefc2152a clear_inode +EXPORT_SYMBOL vmlinux 0xefc2e54d _lv1_storage_send_device_command +EXPORT_SYMBOL vmlinux 0xefcaadce is_bad_inode +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd38b43 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xefd9e732 qdisc_list_del +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 0xf006c13d bprm_change_interp +EXPORT_SYMBOL vmlinux 0xf00cea12 ps2_init +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf01ffae7 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xf054b9f0 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xf0557cc4 fget_raw +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065be97 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf07e8ed2 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf08575cf pci_pme_capable +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a2ef5e kmem_cache_create +EXPORT_SYMBOL vmlinux 0xf0a43a7d vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0bd78f3 rt6_lookup +EXPORT_SYMBOL vmlinux 0xf0d2f84a _lv1_gpu_context_free +EXPORT_SYMBOL vmlinux 0xf0e68556 thaw_bdev +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf106438b mark_info_dirty +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf10fed5b md_flush_request +EXPORT_SYMBOL vmlinux 0xf116ea58 kthread_bind +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1259583 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf13782b8 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14e06d4 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xf15d1fa7 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1a58267 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xf1a76e1a blk_init_tags +EXPORT_SYMBOL vmlinux 0xf1aa890f tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xf1b05120 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xf1da9200 phy_print_status +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1db87b2 follow_pfn +EXPORT_SYMBOL vmlinux 0xf1de984e serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf207ffe9 netpoll_setup +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2177ce9 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf233cb3a simple_fill_super +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24d96b1 __page_symlink +EXPORT_SYMBOL vmlinux 0xf24dcaa8 _lv1_net_stop_rx_dma +EXPORT_SYMBOL vmlinux 0xf2561f98 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xf26b5152 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xf2772181 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xf278b064 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2bb962a __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2cc8584 pci_get_class +EXPORT_SYMBOL vmlinux 0xf2d3f370 netdev_printk +EXPORT_SYMBOL vmlinux 0xf2d51c2b dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xf2e5d92f blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xf2e8d609 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xf2fa30af blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xf2ff5263 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xf30bfb76 of_match_device +EXPORT_SYMBOL vmlinux 0xf30d1036 _lv1_start_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xf3123754 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf33691d2 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf356bf5e security_path_symlink +EXPORT_SYMBOL vmlinux 0xf357db8d pasemi_dma_set_flag +EXPORT_SYMBOL vmlinux 0xf37a8a3c scsi_host_put +EXPORT_SYMBOL vmlinux 0xf37d7c74 no_llseek +EXPORT_SYMBOL vmlinux 0xf389f462 seq_printf +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3a930d2 __napi_complete +EXPORT_SYMBOL vmlinux 0xf3ceddae blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xf3d2b338 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xf3da3338 tty_check_change +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf4058f3c md_write_start +EXPORT_SYMBOL vmlinux 0xf413cc8b dma_find_channel +EXPORT_SYMBOL vmlinux 0xf423b90f skb_clone +EXPORT_SYMBOL vmlinux 0xf43ba162 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44217ca param_get_uint +EXPORT_SYMBOL vmlinux 0xf451d5c7 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xf454ccd4 ip_defrag +EXPORT_SYMBOL vmlinux 0xf4607349 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xf46de73b dentry_open +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47be054 dev_notice +EXPORT_SYMBOL vmlinux 0xf47fc19a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xf4a5f4b3 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xf4aece34 genphy_update_link +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c02c78 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f6aba2 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xf505454b blk_put_queue +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 0xf52a462e module_put +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53df0a5 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf57b0acf __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xf5866a29 flush_old_exec +EXPORT_SYMBOL vmlinux 0xf58c65be xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xf58f17d8 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xf593a535 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xf59e6da8 follow_down_one +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5a663c4 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c3221f single_release +EXPORT_SYMBOL vmlinux 0xf5dd1798 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f9c306 netlink_capable +EXPORT_SYMBOL vmlinux 0xf60aacec eth_type_trans +EXPORT_SYMBOL vmlinux 0xf6213e12 pasemi_dma_clear_flag +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf658bfd7 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf69e7962 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xf69f83af xfrm_state_update +EXPORT_SYMBOL vmlinux 0xf6ab2b90 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c1dacf netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ecb763 _lv1_send_event_locally +EXPORT_SYMBOL vmlinux 0xf6f5579c simple_follow_link +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fcd7d7 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xf70981ab ps2_handle_response +EXPORT_SYMBOL vmlinux 0xf72697de try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf75759a0 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf762899e sync_blockdev +EXPORT_SYMBOL vmlinux 0xf77eabd0 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xf7a94b86 iterate_fd +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7b44e44 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xf7b8afef generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xf7b9155c proc_set_size +EXPORT_SYMBOL vmlinux 0xf7bac0ec _lv1_set_lpm_counter +EXPORT_SYMBOL vmlinux 0xf7debf2d netdev_info +EXPORT_SYMBOL vmlinux 0xf8004bfd _lv1_disconnect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf821e0a8 agp_copy_info +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf84d664f dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf8620de5 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xf86a74a2 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xf86e03f8 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xf87fb23b ilookup5 +EXPORT_SYMBOL vmlinux 0xf884fd26 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xf899bc8d seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf9408039 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xf94d2cf2 flow_cache_fini +EXPORT_SYMBOL vmlinux 0xf96ff396 dev_emerg +EXPORT_SYMBOL vmlinux 0xf972db13 scsi_print_result +EXPORT_SYMBOL vmlinux 0xf98a6d57 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a96f3e mmc_can_erase +EXPORT_SYMBOL vmlinux 0xf9a9c0e3 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9e81d02 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xf9eff415 bdi_init +EXPORT_SYMBOL vmlinux 0xf9f431b6 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xfa2cab92 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa5ca547 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xfa9106b2 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xfab2c409 secpath_dup +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad23332 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaeda58b xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xfafad09a pci_request_regions +EXPORT_SYMBOL vmlinux 0xfb0388aa locks_copy_lock +EXPORT_SYMBOL vmlinux 0xfb0cecfd vm_event_states +EXPORT_SYMBOL vmlinux 0xfb232557 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xfb3191d4 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xfb47af47 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xfb514967 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xfb5c43df pci_find_bus +EXPORT_SYMBOL vmlinux 0xfb61e5d6 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb70812d fasync_helper +EXPORT_SYMBOL vmlinux 0xfb8d0c8c from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb95c6d6 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xfba9d409 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd21e32 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xfbdcd895 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc10c1c1 kobject_set_name +EXPORT_SYMBOL vmlinux 0xfc2196bf pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xfc25ef5d bio_map_kern +EXPORT_SYMBOL vmlinux 0xfc37af7e vio_register_device_node +EXPORT_SYMBOL vmlinux 0xfc387f49 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc56e0ed xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xfc5fbb00 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xfc77f115 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xfc86642f key_validate +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc79001 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xfcda20d8 unlock_buffer +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfbc461 file_ns_capable +EXPORT_SYMBOL vmlinux 0xfcfe7264 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xfd0b93de md_integrity_register +EXPORT_SYMBOL vmlinux 0xfd167fe6 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xfd18f604 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0xfd41fdbf tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xfd679fc3 sock_register +EXPORT_SYMBOL vmlinux 0xfd88e042 tso_start +EXPORT_SYMBOL vmlinux 0xfd98c9bc phy_attach +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdad4a83 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xfdb0c9cf phy_stop +EXPORT_SYMBOL vmlinux 0xfdb1f7ff tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc7cef7 alloc_disk_node +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 0xfe17326b lease_modify +EXPORT_SYMBOL vmlinux 0xfe1d1ed2 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xfe1ee4f8 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe29bab6 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xfe3e3786 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xfe3f29f4 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xfe4cb4b5 _lv1_storage_write +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe776b41 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfea246fa param_ops_byte +EXPORT_SYMBOL vmlinux 0xfea6fc8e request_key +EXPORT_SYMBOL vmlinux 0xfed221d9 pasemi_dma_alloc_ring +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xff0f6402 md_done_sync +EXPORT_SYMBOL vmlinux 0xff1269d2 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff24a76f tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xff371c7c neigh_app_ns +EXPORT_SYMBOL vmlinux 0xff4b5cff inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xff6787b3 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffc5fa12 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xffcab3d3 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffddfc39 scsi_host_get +EXPORT_SYMBOL vmlinux 0xfff60ffa fsl_lbc_ctrl_dev +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0146003b kvmppc_h_logical_ci_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x03ac905e kvm_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x07aa01ae kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0936d509 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0fdb9a9b kvmppc_core_queue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x11f08145 kvmppc_ld +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1481c41c kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x16b932ef kvmppc_load_last_inst +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x17475a3a kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1a928b21 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1c4ad4b5 __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1e5a24d7 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1e6d8f4f kvmppc_unfixup_split_real +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20c518ce kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2399a23f kvmppc_set_msr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x24d2830e kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2525afde kvmppc_gpa_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x266eec28 kvm_gfn_to_hva_cache_init +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 0x2b9c8a97 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x330d1709 gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x34b1574f kvmppc_sanity_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x35f1ac03 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x380b1cf7 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3d1b245e gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x42c38041 kvmppc_pr_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x48b09b89 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x492f2efa kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x542ce34c kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5521fe28 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5559d88e gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x56d21e00 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x57b62ae4 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5a9d8bc3 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5e55a37e gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5f68b8bf kvm_unmap_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x68be5c7e gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x76b12382 kvmppc_core_pending_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x79c3a86a kvmppc_kvm_pv +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aec65c6 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7dbf637b kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x816c33eb kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x81f875d9 kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x84daa765 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x85a5a4b2 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8c264a28 mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8d0a1c24 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8d6310fe kvmppc_hv_ops +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 0x932529d6 kvmppc_rtas_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x944dbe75 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x94c677ad kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9bc2b7b9 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa0de4e73 kvmppc_core_dequeue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa45ecb83 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa6946caa kvmppc_st +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 0xabab14e4 kvmppc_core_queue_program +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xaf241da5 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb8dd824c kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc0802096 kvmppc_handle_store +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 0xcc84021b kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xceee6f74 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcf1170b1 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd0ad4ab8 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd77ee20d kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xda3997b8 kvmppc_xics_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdeb150c1 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdf3dbab9 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdf8aa14e kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe3031e89 kvmppc_h_logical_ci_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe8217ab6 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe8599453 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe9c7395c kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xebd4c7b7 kvmppc_core_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xebf39c7b kvmppc_book3s_queue_irqprio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4c2860e kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf84885c1 kvmppc_handle_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-pr 0x6cc66209 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x572d82b6 spufs_context_fops +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xea3ec0af spu_restore +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xf322f9dd spu_save +EXPORT_SYMBOL_GPL crypto/af_alg 0x1342d760 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x1f54db12 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x4cec40fc af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x585ef674 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x5bee38d8 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x7fa111c3 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x974e08ea af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa8eee59d af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xaa77caa3 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xcd134659 af_alg_register_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 0x4ff82de3 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x5f390106 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb2a04bc6 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x1cf8a510 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x273d50f1 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5320f996 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9f3bf192 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb7a3a76e async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb8d41e45 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xe31c3298 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xffedafbc async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xbe6cee77 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 0x64a424a3 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 0x6e39363e 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 0x0ae60a6d cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x13d4287c cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x1773aebc cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x2db4c6cf cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4f7bad10 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa1875875 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xcedfee06 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xde81e7e5 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xe8c4733f cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xefa5d35a cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0xbb924cdb 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 0x8ea7e890 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x86e0c5a7 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbb2d025f shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbd26d020 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbf3c9942 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc5c92452 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd609980b shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdd1b594c shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xfa75c030 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 0xb800878c serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xdb7e880b twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xde5ba39b xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x440d0c4f ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4499582e ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x491879f5 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5856d991 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c5f819f ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x60d26e63 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6cc0feaa ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6d357ca7 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7ce55108 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8283690c ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x950b2b08 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x99efb724 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbf9c90c6 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4243744 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc5cfa30a ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcf29f464 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe2d7da9f ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe30e3577 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe512590b ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf3ed49b9 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf73244fa ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf7cf1724 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x22aa6eb1 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x30864c57 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x318da83a ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3814e5d0 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4402a202 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x47e574bb ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x56d35eae ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x60b91db8 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x98e7221e ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb2dfc433 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xca4aa364 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xec860e4b ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xfc76ba37 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x148e135f __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xab0d8e58 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 0x36e4d524 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x5112299f devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x8f334137 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xee37df96 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0a120534 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0bf905b1 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0eccae2a bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x189c1bbf bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x23bb3b9c bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2bb11612 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2cb43462 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3ffc8935 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x61d2f4b3 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x691f8a38 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6dcc3d3b bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x72ab20b7 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7b2d92b4 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7e5cbe1a bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7f9af0be bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x82216cbe bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x90da0f1e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa247c178 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe69336e9 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeab67d6f bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf21454fd bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf3e4750b bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf4a053c0 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf981bac4 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x1451f942 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6578a1f0 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8ce2d67e btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd6c30313 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe71eeb25 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xfdec1638 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1d8d6091 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x772e3905 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x07d9c988 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x21f6d690 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x23c70070 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x448cf193 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x555456e7 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x58a0c9d3 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7b477b94 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x97295e7a btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc81fe6ad btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd69fa97b btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd7792037 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xeee92dd2 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x04d281c8 nx842_crypto_init +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x6ed05dcb nx842_crypto_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x7f224f19 nx842_crypto_compress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xef9608bf nx842_crypto_exit +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x038aa588 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3348774f dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x86f07677 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd2a968a1 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe63f4fec dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x1492f95a hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xb8035b62 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xf5765441 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x6debda62 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x6df7e865 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x6e29bfea vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xa0344618 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1235d2cf edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2a05547b find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x37d095b9 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x37ed2815 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x395b4d7d edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x463a5dfe edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4d34a7bd edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6753edc1 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x987f144b edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9ff18697 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb13353a7 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb1a605f0 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb8a5f597 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb9f88b35 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbc672e80 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc37c325b edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcd97c814 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd82140c1 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd8f7aca6 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdf82d1bd edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe3bb45e9 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xef37b826 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfe560c86 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x4583bccf bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xb870fe71 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xa3e4209a __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xa4bad017 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x67b595bd drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7bcbf60f of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xaa1ff844 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb56a1130 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdd9a899c drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf9db58f2 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x73080480 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x9e7166ee ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xb92d59d5 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 0x22d1b787 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2ec65051 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e05c62d hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4b5767d9 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4b7d7893 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4bd3458a hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x506c1782 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5138017b hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5d624364 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5e76d824 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x60e2dd01 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x69e4ffe0 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x716da082 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7dd7ea72 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7f643e18 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x85804128 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x935e580d hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9427d20a hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x98bd398a hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9e651075 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9ef212b6 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb38a4dcb hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb7331a4f hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb8b8a574 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbcdaae18 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc53eb712 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5e0b36f hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc6873efc hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc8785b64 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xccc87a11 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd13eee81 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdfbd2c49 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe759470a hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe906d586 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfb51414c hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfdfa1590 hid_dump_device +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 0x8d5a96ec roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x046483d1 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1661a362 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x4d95185d roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6ee85628 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6f3e5f89 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdb6ee966 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0cb992a2 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x12390f66 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x239f5a2f hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x242ba473 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6b040d89 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x76aa9091 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8b25432a sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe396ac04 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xfeeaab40 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x7eab7e51 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x01f9718b hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x05e25def hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0e940583 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x17904c7d hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1ce9e454 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x35f40425 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5435e6bb hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5cd84912 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6ba3eaab hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x87953aed hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9ab6649e hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9cac1da5 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xaeb756e9 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xafcde9ec hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc30d5c52 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe2632ff5 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe9a242b5 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf4ad4ea5 hsi_event +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x68fb6f86 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x7273c270 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf31db1d2 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0e19262e pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1c7351dd pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1e9f9a8d pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3d4b3791 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x491a23ea pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4ec278c7 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7901ccef pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x81d0a3f9 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x96ba7c57 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9b57d309 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xacfddc65 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc2593f81 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd1d8049f pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd28c93b3 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfe37916f pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3887f6b3 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x46c8b842 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x611be84a i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xade8221a i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb04ff09d i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbb6137b9 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc81af07f i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xead80d00 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf643e2a3 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x8e75dae6 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xbbe82ecc i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x208bd0c3 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xb2dfa4ba i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1311c512 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1de26055 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x413146db ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x713ceec2 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x913df24d ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb440c4a7 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcd2d7334 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdc7bb0f5 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf155de20 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 0x1f8835c9 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x336c5e5b adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3b514a47 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3fa5fd14 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4690d439 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8e007e01 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x97864539 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xab555a02 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb31f5b08 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd336538c adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd9b420dd adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe0005ec5 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x06de465e iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x06ded0f6 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1b9a4ef2 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1fd6152a iio_enum_write +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 0x322c3cc8 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3c7c2230 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x46ce208f devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50cfa0e6 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50e3cc17 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x533cf9d6 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x54500dca iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61057e1e iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x647598cb iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6e3aa5b7 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6fc3037b devm_iio_device_free +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 0x84552c09 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x87a749c3 iio_enum_read +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 0x9376fa09 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9a5e71b5 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa1bdd9b7 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb24f9fb1 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3f5c383 iio_read_channel_processed +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 0xdafccd9b iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4efba69 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xebadfad2 devm_iio_device_alloc +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 0x434c569f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x382977d6 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x4d90cc71 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 0x1b5d7663 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x1f48b073 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x9147d0ef cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x542ea55a cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x739a2d8f cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xe03891da cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xa20892ba cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xcfa5e37c cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x14cdd497 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x20acf7ec wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x381815d7 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4a2c6627 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x52f0ac8f wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6c537771 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x71ed6a2b wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7eca2985 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8e71134d wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa0f977ef wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd62b0b17 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd850df1c wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x230bd29d ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x684e1b40 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x75af1017 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x78febcc9 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x85eb89d5 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc93b487c ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcc82e6c7 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd4705e0a ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf8403a87 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 0x060d3ae0 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x10d78ce8 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x14d1dd1b gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2aadc510 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3403f14d gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x55da9ec8 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5c95bd3b gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6e86445c gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x85a70e93 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbbba791f gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc41e2b46 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4ff54f6 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe7bef8cc gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xef45ad25 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf513a451 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf5ebdb94 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfdf1802e gigaset_start +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1b13cc4f led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x78325be8 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x93c2990c led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xbb623fd2 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xc0ad8b90 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd0966030 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 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x1f103b5c wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x2629c004 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x41b4b090 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x525f2d1d wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x5cd5ef38 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x69453499 wf_register_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 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xc1526d37 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xcf2f1ff9 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd9ff4692 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe0cbbd08 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +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 0x0f173366 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x21e5a488 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2d84700a mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6b2e6fda mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x72acbd16 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x77cd2d43 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x85566556 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 0xa5366421 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xae9d4d36 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb3c4c096 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf7cbe8dc mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf92a4a19 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 0x01124fca dm_cell_release_no_holder +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 0x5bc38258 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x74612901 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 0x85f4435f dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x99f65560 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xac066df8 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 0xc73ebf36 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd207e9f3 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfccc7cc7 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 0x80ff1144 dm_bufio_client_create +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 0x11b3cd9f dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x79ac41cc dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x90951e06 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc91654e4 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcdd477ae dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xec9a2882 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf3753f4e dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xb50d2266 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xbae7c50f 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 0x126aa977 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 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x444bb433 dm_rh_bio_to_region +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 0x85c55ed3 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x99bdc281 dm_rh_mark_nosync +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 0xb93623cf 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 0xc5d516dd 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 0x42d1207a dm_btree_lookup_next +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 0x4dee8551 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 0x01d31e83 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1554eca2 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1b926122 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2203e4c4 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x61875857 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x66fc6be4 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x94698c9e saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe0099f2d saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe42a03ed saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xeb1aae6f saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x34e15b4f saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6a94ed8d saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x71cd5609 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8c59e7bf saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xaf5fd94e saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb83675b4 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe08d5617 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x13f0c614 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x157ce457 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1e4244ec smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2bc84712 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x39d8e4cf smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x463810d2 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x693cefdc 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 0x7e242eec sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x963c6d3f smscore_get_device_mode +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 0xb2d27385 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb61c5a55 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbf7e1d3 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xca683fd2 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd41872af smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xed9c5710 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf3056fb3 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfb6d7ef0 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xce009f18 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x22b8597d cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x21d45a96 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x1ff751d2 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x216b23b2 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x22b7e787 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x2da842f9 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x413463e1 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x5281d317 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x530d14db media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x5d8c4b94 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x6756d0d2 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x6df9deb7 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x7a6328a8 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x7cc307a0 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x94d4d7a2 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xb823ad82 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xbe212a2d __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xf3005447 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0xf5930fd6 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0xfecb1861 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xcac9bc55 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x19f4b94d mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2e45fad5 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3da438e3 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4d9475db mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5ff19399 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6305d2de mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x680b79ea mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8fd53826 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa418b7e6 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaeda409c mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaf161cd2 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbe13870b mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbe14731b mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbfc3a8d3 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc8a379cb mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd5e77741 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd862c6af mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe24f028d mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf3a40576 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x18e22b16 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3b985766 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3eabe965 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x40f86398 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x74be8232 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7c11ca1b saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9532b360 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x97b0e3f9 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9f845f8f saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa2bc2f47 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa8ef498d saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb66c7595 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc81b36fe saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdd64a9a0 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe9396555 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xeb84a8a8 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xebc9a48d saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xeeb6492e saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfad5a1fc saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x09943b15 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x36bb4093 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x58383860 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x68e6f757 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 0xd42b7407 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe2d7fd63 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xef062fe6 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 0x0ca00ec5 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x379570aa 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 0x6b2f83db xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xc0da92b7 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xdd6c65ce xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe5082e38 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf26e23e6 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3ac6c57d 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 0x5e58d3f7 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xbdaf4146 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x365eccf2 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3930d114 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3b1c14af ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x42c4e7a2 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4d678cb9 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8bcbbfb6 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9e033b09 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa212c45a rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaf705759 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbc6a27f2 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbfd7d91d ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc6ab262d rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd0eb4123 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd1dbec95 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe285c963 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeeb96e4e rc_open +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xe46f3f31 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x5ca24001 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xf618db98 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x65b7e662 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x3306f946 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x3e9422bf tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xacab1d41 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xf4f77a17 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xa4983ec9 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x11f2f30a tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x6123742b tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x14491cc6 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xf87c5954 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xfac75371 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x011f6e14 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x07447228 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x13b48f73 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x14d618ff cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x19169c86 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x31f014fe cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x33e0d872 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3623e66a cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x36bdf4a0 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x44f6c2ac cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x50663963 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5b36748f cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6596e882 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x74ad4411 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7a7c6384 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7fb75c1e cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9caf4141 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa0ae15cb cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa498bae1 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe6e85cc0 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x9645ae1c mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x3b5fc36d mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x006b8ccf em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0ebe9d6b em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1d08e981 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x414ff27a em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x42600d86 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x797c0530 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8046675d em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa0689717 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa59ea832 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc3be9cb6 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc99d8024 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd4ab1ff9 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd5209304 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd52efdc8 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xde649c71 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe9bd629e em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xff380c1e em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xff9baf11 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x198a005b tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x67712603 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd2eb0914 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd66df13b 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 0x2e4dc0cc v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x37a6d10c v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x4d5ad6e4 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7c3be623 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 0xb45deae5 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 0xf6f1ab27 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 0x498f97b5 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xb44daf03 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x064fb3de v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2b285018 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2d45ad7e v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2e48b958 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4a4a0be6 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x555c5909 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5a1b7941 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x67d4ec16 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6a5533b3 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7111ff9b v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x76518a3f v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa2653b7f v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa7d4a7b2 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa93fad43 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb2881e1b v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb6112bb5 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbe6c9f63 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc86aefe0 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcba5232b v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcdb28013 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd1f64795 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd2d1dd5c v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdaa4b685 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdd8f0e8f v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe0571463 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe5bd9ecb v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeee88b86 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0361408f videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x06a4070e videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x20fcd882 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x26fc7b87 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2f28959d videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3c5718c8 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x468adce5 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4862b7e5 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4f4dfef2 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x57026b66 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x58670665 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x819f43d0 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x92d7ac00 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9c7a7bc9 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9cc4bb97 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa46dcf28 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa972c6c8 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xad6134fc videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd6b2ec6d videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe600037a __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe700171e videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeaf269a5 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf0157a7d videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfe65de21 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3709c30e videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa805af52 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd6030427 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xdcde59b2 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x3e03e2b4 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9f6bc898 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xb44b90b8 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x049caaa2 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x05fc28ec vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x09d5dfbf vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0c6e9ab6 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0ed28dca vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x12eb9038 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x17a91fc5 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x29416b53 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x377642fa vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x393921ab vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3c4ed976 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x556b16b4 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6b60bd1c vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7e49b558 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x86a45490 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8a09c446 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8ada6e54 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8f856d1d vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x94e336ed vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa2688e13 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaefc71d0 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb0658067 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb4e27271 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbe5c8fea vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc01b2853 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc2afc8eb _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc76a1a39 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd1133ed0 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd6831394 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdac35546 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdff5d225 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe098ebba vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe255119a vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe7958f5c vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeabf5beb vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeb1f083a vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf42a1822 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf5165fa1 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfb299a60 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x00d57557 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 0xe74b4ff4 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x62b383ea vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x7f4bb6de 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 0x6a2c9cad vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x85d8908b vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xbaa3a9d2 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xe731f5d5 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x3960c2d8 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0329b798 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a7ee6b0 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ad88e32 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2e97b74e v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x306d41d7 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3ad631e9 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44c92553 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4dac9945 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x506763bd v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x506ca0ef v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x51ce3ad0 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x582b2879 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x595df152 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x59794a6a v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5ea60fe6 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x61425701 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x82331d4d v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8d7952f9 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa6e20e31 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb3fb12c7 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb7ccc680 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb81ee4a3 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbde9049e v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc1a7924d v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6b0125d v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcaa81454 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe5186264 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf77c6d36 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x2d3655dc pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x54aeffa4 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x6421e531 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x25705326 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2b614d1f da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2c8dd67c da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2dfccc79 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xdc792272 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0861093e kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2ca55ce3 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3381bd7b kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7cfc99d1 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9d537a00 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd6621c19 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe5d33455 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfaea8437 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x7c895fdf lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x81013831 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xfe0fb45b lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x21416023 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2ec7ba16 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa39b11a9 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xafc91a22 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd50263b6 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe48961d9 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xee1825fc lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x0fa391f0 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x544e1ed0 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x740cb3d9 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x243a3269 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2b9818a3 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x61c20a8b mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x64807949 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x768f8c21 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf2c03a09 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x35713d90 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3724ddd5 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x47082142 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5bd8ca96 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x734e064f pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x948745c0 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9ef4917a pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa2e698fa pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa7b85c9c pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd967d2a5 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfa9a8756 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x943ee36a pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xd743f9f6 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1f40853e pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8718a65e pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb51e1103 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb5bb0935 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xbbeb8ba7 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 0x1492e4c1 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x189358d0 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x20658dd1 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x28a86a8d rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3a11f490 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4734770e rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4929a27c rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x58fc9f43 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7f8479c4 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9114be9a rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x919f30df rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x96c08847 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9c5ac3dc rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa55eddc7 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbba4b072 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc11e058d rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcbaa8c5e rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xde32d1ef rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe8407835 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe872bda6 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xec8724ca rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf335ab6c rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf5bc2b55 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xff83f86d rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x02bbb30f rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x38403f15 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3ac7cbcd rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x404b0f4b rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4e433534 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6da796a0 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa21e7bc9 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb7d4dbd2 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xcd00217b rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe3f70543 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xea1e6a1c rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xefb6ea63 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xffd239a8 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0d5f23ca si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1a548526 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1d12bc94 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x35803bc9 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x358e7ca8 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x35d54fdc devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x39a80fc7 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x45591cc1 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e162e29 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e747cf5 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x62840602 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x65554dc7 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6555bce6 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x66bac57a si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6ba5209c si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6c5bad1e si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7f5329d6 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7fea45ae si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8781f113 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8f679f54 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa51562e6 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaae98e58 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xad073d47 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xad4cbba6 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbfefaa5d si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc3bf04f1 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc3e98e72 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd08da63e si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd119dbbf si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd6d24408 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf0af8314 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf3dd24d1 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf3e0a019 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfe2feb47 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x556f2170 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x895f958d sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9d5c4a8e sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xbc888a06 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcd27045e sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x2efcffd4 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x513759ac am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x830c6b0b am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x91e41386 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x368f019d tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x428cd5e4 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x5e4c0985 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa1b2e0d6 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x745d9d74 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x81333d86 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xa844384a tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xd6ef09d3 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xb426c709 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x74f5cf7e cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x90de8fcb cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9569e53c cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe9a2040b cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x020ab62e cxl_fd_mmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x036ed7ae cxl_set_master +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x054614ce cxl_start_work +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x07d40ef4 cxl_get_fd +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x181d2927 cxl_free_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x23d7a812 cxl_afu_reset +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x25820a1f cxl_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x25a33eda cxl_pci_to_afu +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x37729254 cxl_process_element +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x3fba7f73 cxl_fd_release +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x511ae06d cxl_get_phys_dev +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x54803e8d cxl_allocate_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x56e5b49e cxl_pci_to_cfg_record +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x57ad8f56 cxl_stop_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x5b337cc6 cxl_fd_read +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x781a95a2 cxl_fd_poll +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x85d480b9 cxl_start_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8740bc47 cxl_psa_unmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x96e6ae36 cxl_fd_open +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x9b103dbe cxl_unmap_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xb16dcf14 cxl_psa_map +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xbf2152e9 cxl_fd_ioctl +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xc4235ce3 cxl_dev_context_init +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xc53b8b56 cxl_fops_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xdf4d46d3 cxl_map_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xeb86e6ee cxl_release_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xf2d4988c cxl_perst_reloads_same_image +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 0x1239b862 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x19989848 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1daaf699 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x524d6c22 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6776a72a enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x85568e51 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xef89f15a enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfa3ad437 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x22d3e8fa lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x412c7e3b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x99ef59b4 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa6d42611 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc2554c96 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc4d258a9 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xddbe78f2 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf6815110 lis3lv02d_poweron +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 0x1d2caa12 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x209d44d9 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2af59ec3 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2c605222 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3b60d2e2 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x54ea7dbd sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5f7a4eec sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x625f46e5 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x64eddd0e sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x82988e7c sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8496f951 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x99120847 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdc49539d sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xff444aef sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4ea9fab0 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x53ee080c sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6336c99b sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xaadcd716 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb202c197 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc21ba376 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe069c7ea sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe2aab5b1 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe3611f37 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x19e1f76a cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x26c8d282 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xdbd6f714 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x04a4e34a cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7af6a89a cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf75d2ccc cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xa89b26f1 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x24ebdb46 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x97f5f7db cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xeff3d16e cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x06d085fb mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0816dec2 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x08513699 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0aedb8ec mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x11fbda63 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x16b4c908 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1f36977b deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x23b2dc4a __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x23f60037 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25d36b2f mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2781552b get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2bb148c1 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2d124902 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2f0dbb59 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3d50ea20 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4209fd31 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x437b85c2 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x54837485 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6a350929 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x77166234 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x80a107be mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b4d86ca mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9b743233 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c0ef8de mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa0b0d9f3 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa25b9fa0 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xad03a2a0 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaf8ad0d2 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbda73fa7 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbed26401 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbf4a68ab mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc198fd30 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc4702895 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc68ee990 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc7ddaefd get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd0f8464 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xde4cc552 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe31c38a1 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe41a035d mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeea5e36e mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0c31c7e mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfbf78378 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x09b15d1b add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x634f3fcc register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8594eab0 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x86398745 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xcff0b7bb deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x04f73c5c nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xff847de5 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x26136988 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x4f72f51d onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xae7cbf12 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x615fcfd8 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x059779d7 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x064a74be ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x068fbceb ubi_close_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 0x43508ad5 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5317c4dc ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5d2eb8e3 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x74c5d0c0 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x95ceedb3 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa1a27f9b ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc20b72d7 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd2903c24 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdbcc6c90 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf283add3 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf888408a ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x075d77b9 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x208a6bd3 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x56f31e2e free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x69f7b19a c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x9f2b6cc4 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb18b32cb c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0028648e can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x254f0b3d can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2fc14a04 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3297abd2 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x467a58f7 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4aa6cc45 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4d9c5c7e unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x548f3dbc alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5e681832 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x70e740ea can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7ed25de4 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x854b5759 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8a178a0f devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9ef779e4 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa677c587 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcdbb94b7 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xde977bac alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf77c7371 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x007e8c89 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5a2ca832 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe3e9efc6 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xf675518a register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x1d9e6df9 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3f411cbd alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6d8be6e7 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x85f624b6 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xc6c3bc66 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xd5d8c76e arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x017f2959 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x026a77d9 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0305ccd4 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03e4feec mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x050cbd21 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07983b69 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c9cddde mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ebd4e24 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x123bc864 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x130965e1 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14961a12 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14e207fc mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a279dbe mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a96b8be mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x212f5b54 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21bffed9 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x254fae76 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2566ded6 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26faee0e mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28213327 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2850f565 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28ce82b3 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2dc41674 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e92a095 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2eb6a556 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3058c21a mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32725978 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32de3570 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a776bc4 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d0f8e8c mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e3841b5 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f1a9e77 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f86761f mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44645ea7 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44f2b2e8 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4566e59c mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45e010de mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47fbc277 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49fc6042 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bd8f04a mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e4352cb mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51c882cf mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x542da5f1 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59f5cc8f mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b49da87 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c305985 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c795559 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f3ade63 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f71cb51 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6066f1ca mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60d525bf mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x623b6cba mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x678f6e7b mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b19fda4 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c2fa502 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e0b0c6a mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ed98a12 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ee3baf7 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7434719f mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76e9011f mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7895599f mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79927c69 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c041901 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e7c20b1 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8bb2f301 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d3e6496 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dbff72a mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ec759b3 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9791a7cf mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97e65717 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b0c781b mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e666074 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f5caa2f mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f8b0573 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0698116 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4471b4e mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa569e233 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5dcc333 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad9a175e mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xade9a25d mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0658f76 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0aca218 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5dc4a54 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8b3ed67 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9273b50 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb94392ee mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba2519fc mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb03ab66 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb548dca mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbb1d321 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc708092 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbca0fed4 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0100b91 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2d565c8 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2f9938e mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc439ace7 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc53534da mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5450c31 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc6cf7656 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbf41151 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf694287 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd488fce6 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd58b5cb4 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7839b40 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8e0dee3 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9661f23 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb76b1b2 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd372561 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdde27a60 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfda4046 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0f50cdf mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4bbb2a7 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5cd3c5d mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea899c9b mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1a449b2 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1ea81e5 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2668b52 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf592cfb7 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6d11aa5 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6f69017 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf786caa4 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf94f3cc5 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffef6d4b mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05b9d7ef mlx5_core_xrcd_dealloc +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 0x0a8da6fd mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b6831e0 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d4cdd22 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f5f594e mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26f5dc33 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x274d7994 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28108eff mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31722420 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31c88647 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ef903a7 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x425ae1de mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x479e2cf2 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50af6671 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53dea0a3 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c8223ce mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x646e0721 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x656fbbc0 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67b03d85 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6924c9a8 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7fb599cd mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x851c63df mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e724d9e mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9fe1afd7 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1a7a079 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb50fe2ae mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb62eaea3 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6b60ee6 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc67cf31 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc19e9056 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc278fee8 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd5e0cb05 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe907d7c1 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf40b1a6e mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf9ba074f mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x0ff8d9bc stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x74f0a567 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xabe48d59 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xbf15de8f stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5edf8250 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x8e1a72d7 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x8e9fd049 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0550b2c8 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x06b83690 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x17f2d122 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x252b36bc cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x417ca5ac cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4a8d77a3 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x54e1228c cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6c9feecb cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6cf7459d cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7c752868 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9a0b774e cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa149a4e9 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb232ef95 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xbf31a5b0 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xec18b5c4 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00a8c9c9 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x536ffc34 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc443dd51 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xf63ddca6 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x0ba061c1 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xb7cb55d4 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0f3ab31f usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x1fc2eb1d usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x2bda5c23 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe2020646 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1af971d7 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x294e8a47 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x31406fba cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x31458cc5 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x86581900 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8fe107ad cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9b7d09de cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xccc0dbb8 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd72b2709 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x048a4542 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x349be229 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x568728ed rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x73cbf5ec rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xdb50fb05 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xefcdcea1 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x183bc861 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x20c33169 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x20fd55df usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2ce446f7 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3c61eb14 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4cd3edb6 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4f0970ab usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x597a2e00 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x61eea8d0 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6d4095da usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6fe45bc2 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x73c01340 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x752bcb18 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x78e57673 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7fe35fac usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x805b601c usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89f6ee50 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e151f34 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x99b9970d usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9a041db5 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa807dcc5 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xabec653d usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb39ba3cd usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbb86b014 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbbb508ae usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc0080f2c usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe54ffa5e usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe8d51a85 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed0d1259 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf3e00283 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf4efeebe usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xffed7aaf usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xaac09e55 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xca1f83e0 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xe43ba8e6 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xe731e132 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x008890ac i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x06ecd7ba i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2f7ab8d3 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x32e9ea4e i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x42acd9a9 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x477b1ee1 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5ffa1782 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7fd6b128 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9cb03128 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xadb26dba i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb098e171 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xca24531f i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd643b95e i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe3703c5a i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xeb24ce59 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xee1a2ead i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x22aa314c cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x88375285 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x90b13961 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc8fe98cb cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xf5ca32ab libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x263f23ea il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x49a8e47e il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x83a73f88 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb605aa3e il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xccf563ea il_prep_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 0x175c802e iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x197d61cc iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +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 0x44899698 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4ff680b4 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x50d37599 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x57f1896c iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5cd60c15 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x65ccf91e iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7a55bf27 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7f1b1b10 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x86605e90 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x87949dfd iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x97ed6d70 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa59e12f4 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa90887c6 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa98c3a6c iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xacf87d66 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8c346cb iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc5e7cb74 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 0xcd9eaa0a iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe15b7288 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xec4eaa11 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x20a42124 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x280cba82 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6ae7f24e __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6e0743ba lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x85bd88cf lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa942101b lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb9896aab lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd4099f52 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd6e8bdf3 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe6b2018b lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe95f7ca7 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf06ab62e lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf2d6c202 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf9205a1e lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf9f9599f lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfdb91c71 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x08bbe939 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2d7fd9bc lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5baacbe4 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x75cada0e lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8a614a04 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xba186c9e lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc186e8a1 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 0xc8739028 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2bdaafa5 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2daf6619 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x30f6f021 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3295af85 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3bcb41d1 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x711b554e mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x712e88bd mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7a3adf3d mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x89317737 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8a6b465b mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8f5b934c mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9e7bf4f9 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa32ab025 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb1449d61 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb9c70ca3 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdd9c2d3f mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe060890e mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x27b6fe29 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3400e14b p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4e7ff13b p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7e283523 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb32b0b37 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb9faa6f2 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbb8d4d48 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd4939999 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xec77082d p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x12f754c7 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8453ded6 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x932f0cc1 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd1b57503 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x04c46762 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x076ce1e2 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x091f46cd rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x13bbd730 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1a852600 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1ee60af8 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x21262c42 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24a91637 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x287e6375 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x294aba5a rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2cf03469 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x36a46e58 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e7c1e88 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4f8a9b96 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x50e70aeb rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x54007ea4 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5a6b22f3 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f82be87 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x65536a4a rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6e5635d4 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x76c93c9e rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x79eba9d9 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8de16188 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa3061fab rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa31fa429 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5e2ea39 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa84067e5 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae50aef8 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbd87574d rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc7fc944c rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd310066f rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdc1feb2b rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf977202 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdfa1dc0b rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeed07bdd rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf11ddf2f rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf9e3d328 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfe97c9d9 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x12e9d691 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x27c46ec4 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3080ac10 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x47d56b85 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x54511869 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7c078376 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x85a7d883 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb5c1c197 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc4b3bd7c rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcaa24abe rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcb8474a5 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcea740d7 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfaeb3642 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x01e0d15b rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05eb9ef5 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0793c43e rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0c20fc2c rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1498bf2a rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1dd41495 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e801f98 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2050bc81 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25f9bf33 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x28f70070 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f3d9a2d rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3f90f35b rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x41760acd rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x489cd8d4 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x58970ee0 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x591891a2 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5c1e0516 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7af6fb67 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f1969ce rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x823841fd rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x831974e6 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86e20d7a rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8b2b9f3b rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x90e14e73 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9375a52d rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9bf8e59a rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0ec01ea rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa30e51b3 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad714ae6 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb23d50b1 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc221441c rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc7706f3e rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd0fc1419 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdd5e8470 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdee0a5f5 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe55a9563 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xea55f477 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee2db23d rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeee8dd83 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0365621 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf2efc61e rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5d574e0 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf626d4d1 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf8c8f88c rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa7ddf0f rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfb6a6c8b rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x1de5ae06 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x351e16e4 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa6b4e1f0 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xb29b77f9 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xed8432a3 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x0018b35b rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6f877c0b rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa844925f rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xfd3b2743 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x09ee36e3 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x169bffb8 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1bb29e54 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x24c174c3 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x677c2bb5 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6e96e030 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x810c061f rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x82135de2 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x95e23b2a rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa2e69aa4 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaaa774d8 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb5128b45 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc575b17c rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdd2569c4 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xddfa60af rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xece3a083 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x39e873bb dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x56d5bea6 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c3229a1 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc93b30b0 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0e21df3c rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x18fc6567 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x35285c51 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x38c731fc rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x38d3d72e rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x478100f3 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x55439300 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5b16760e rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6594d6d7 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6c92951b rtl8723_phy_mac_setting_calibration +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 0x74953daf rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x76e62281 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x79ee7452 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x836557b8 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x843c0144 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8b900a5c rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8f12809d rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x95519651 rtl8723_write_fw +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 0xb3c15240 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc178d222 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc978ae9e rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcb214edd rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd5d9feae rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe3ab04e8 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe88b6fb9 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf2c26d91 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf7bd7e07 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0b60efb6 rtl_beacon_statistic +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 0x27f66b00 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2a7e4972 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4309a9f4 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5e888ede read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7b2101e0 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x932bb5a9 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9608e647 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaf5a7529 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb10cb343 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbc1dd149 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbea53b04 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc5d000e3 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcb4855c0 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcbf13347 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe48ba47d rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xee3b1308 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x06ed1290 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1033076d wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x4245f7a4 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06f6d433 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e1def74 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x17ad1f63 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x18399aa3 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x23e0b8ea wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2be08cc7 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2d527924 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x313c4fae wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3471fab6 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x381f8757 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3b442d38 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3c707875 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4132fefa wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4aa8fa5e wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53de26ea wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x556d3e3c wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x586d1af1 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x59851a5a wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e52a748 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5fffb0ce wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6befb62f wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x70f2315e wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x756b3b94 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8a337bef wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ede7ff0 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x97a38924 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa2665932 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3da622a wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa4bf229d wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa4f0411f 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 0xbc56e9b4 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbcccc54b wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbe4e3ac3 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbf848a98 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc061aeef wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc4c013d2 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0969145 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd124db5e wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5b694a3 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe1da059e wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe9ce5d53 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf50d5c6e wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfd16c09e wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x00be16fe nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x0e31f27f nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x34241018 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x7d2dbfcb nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1dc9b844 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x27b9a2a8 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x61104207 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7eeba66e st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8561cb9e st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x99ae586a st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xaba4a1df st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xf351a066 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 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x97a4b649 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xa331acd1 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xa52f4d22 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/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x887f3701 rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xe863710c rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xf913d29f rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x3e46e3d0 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x43a5c5d9 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x7c2a3cea pcf50633_mbc_get_usb_online_status +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 0xcbf0ce6e ps3stor_setup +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xdaeb2733 ps3stor_read_write_sectors +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xe2b8713f ps3stor_send_command +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xec9dee3a ps3stor_teardown +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x0bbfb3f4 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3734ff94 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x432d447b mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd7a9680b mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xffcc7095 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1f9c8bd5 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5239db8c wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5603014b wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x689e20cd wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd14d9d38 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf12cf7b5 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x5a014236 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x044fe9f3 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x15f5f0b3 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2217638f cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x295299fa cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2a41e25a cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c12a0d8 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3cb625b6 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3d9b5a06 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x47b5a33c cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x48958e9d cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d337cf6 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5c1b9fe6 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x67adfa5b cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x69190354 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6bedd028 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cddadf4 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6e87859f cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7069b148 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7799e98d cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b68e837 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7c0e928a cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8985b333 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x92c2e701 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9aa59fca cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9cdf0c44 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f4d8869 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7eb1ff5 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb673523b cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe13c8d1 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc67f0f68 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc9f5f421 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcf3667d7 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd5644db0 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd8847158 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd989ef34 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xda82a6d1 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xda8b0a7f cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe131b0ea cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4bfc66f cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe60f422e cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea73b7ab cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf60f5f32 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf76db8ff cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf798c0a2 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf83b3d2d cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xff2f9fc2 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x01cd8b2e scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x13d9ba05 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x42d4e620 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 0x72a020d2 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x758924d7 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdaa46c7d scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdde5e2f4 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x07dfd01c fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x20c7ed61 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2acb2b0f fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x31f297a0 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4816e60f __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x49df1c73 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4aa9c438 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4c3b43ed fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6658bbcb fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x87b283bd fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8dbaaaf8 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb1b82703 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb70fddf2 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbb3f572e fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdfdcea72 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf41af2c3 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x097ceccb iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1317b14f iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x145a845a iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x538bafb8 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb39e5729 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd4e33f9a iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00ed72a1 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0477cd24 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x068662c9 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x071d8834 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x093d25ad iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0c3fec5b __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0c817e63 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x14fb5c4a iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17dd87bd iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x359bfea2 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x442a7b99 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4762c7bf iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a5c3a43 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x589d0b84 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61da6302 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x62af7d87 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x77481e82 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82cf1d9e iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8cd3b6a2 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f60bd94 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3daee7d iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaae1fb94 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacc40907 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb8a0c77c iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbdbcb27f iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe6d1813 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc626dcfa iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6824188 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc835caf2 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcd22b020 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd1560346 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd4acc9c9 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5547a7a iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdf91fecf iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe0965777 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe106758d iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe301c4be __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8b09bfe iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8bbd122 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xece72414 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff994b10 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfffd762f iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x12e118f7 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x346390cf iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4065c4a4 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x435e2aed iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x44152540 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x54145048 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5e141c41 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7c894b9b iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x81dd0ee0 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x944a1a77 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbafdcc91 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbc028390 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc8fb6b93 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcd0b2f22 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcd5b1ca3 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcf599a0e iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe9adbf9e iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x05b741b6 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x084600b5 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x112b3c2e sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1c27757a sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2106a55c sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3eb9a0d1 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4a7a82cb sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x53a063be sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6531e5f8 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x68dc074f sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7445d39d sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x75396e85 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7ac7899b sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7e452687 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8359a8dc sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x968debc6 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x998a6a48 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9a49efa5 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa31aa893 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbbabe0b5 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbc4afd44 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbcd5aa68 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbf6edea8 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeef7570c sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x09dbe2f6 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0b8fa5d1 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1732a3e9 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x20451e6e iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24dd6732 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2bcdd6f0 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a0e0748 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a422456 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50e2be73 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x538bfd57 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5abdb995 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6718b1fd iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x67955581 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6e13ec4d iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x718d18dd iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77b849cc iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f0e74cd iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f56d6de iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x86d5703b iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x979d5220 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9b0fc332 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9e88f1da iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9f6d502e iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa184146f iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4e6ad83 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb83110ae iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbb1f27ab iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc887490 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd073c161 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2e0e7c8 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7c330d2 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdd97882f iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe1945585 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe59ac7dd iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf146e1db iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf196a55d iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf38187bb iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5bb7454 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf714c8f7 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff168583 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4d664e07 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6c2bba8c sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x90c15ed3 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x9f0fa594 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x36ab5d08 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 0x7b4cd9c4 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8fd2c60d ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb5d38c96 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xfb2d8d44 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x435ca8e4 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x53d2379c spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x73612073 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x753ece87 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x975b21fa spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6edcbbe1 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x7204a2f7 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xab89063f dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe3c3d0f9 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x23e28c39 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x26f70111 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x278535a6 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x340f10f1 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x39dbe084 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3edf97c9 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3f71a319 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4c706d8a spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4e923b9c spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x599fd3f9 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5c130192 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x91b51195 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xabfe473b spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xad1241ce spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbdec7b93 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbff34abd spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd7ad8a46 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf0377108 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xfe96feb8 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b393e89 comedi_dev_put +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 0x10865d23 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x255cc4dc comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2b20dc7f comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3dc830c4 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x40d8d382 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4375ec98 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fa82456 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fab6b5d comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x567bd335 comedi_set_hw_dev +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 0x675ad5ab comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a8722c9 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6ffb78a8 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8351d2af comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8e1ee17c comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x959a9d1e comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x971fe011 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb0c3b0ab comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb0f32e17 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb2e4b27e comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb64110ac comedi_alloc_subdev_readback +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 0xca0138b1 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcccc1395 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd425da9d comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdd8976f0 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe667b605 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeacbc72c comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xecab222f comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xed406ffa comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf2587385 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf2df8525 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xff552c5e comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0162a5af comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x08a261a6 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1cf01093 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x384d5428 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x830f3eb9 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x88ae631b comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb9dec4b9 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xbc59d79e comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x4fb67e9c comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x554d276f comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x59cee677 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xb0ee9bdc comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xde324f01 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xf1337279 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xffb2268e comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x16bde8c1 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x63b0d4a4 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7fa6751c comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x815dd80d comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xcd69b2d6 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe85e6bdd comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xa404436f addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x39a1cb92 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x9225e6cc amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xedf4aaee amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0ad91fd1 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0c303f2e comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1b8b994f comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2ccdd224 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2ff9cbb8 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x58393998 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x601186df comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6071a820 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x767aed6a comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7f3584d9 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8701ac6a comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb6cfd4e4 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbca35767 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x38a25cd7 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x6aa2cf6d subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x706bb4f5 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 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 0x87454495 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 0xc8f2db28 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x033f4497 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x03c810ac mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0e3d57b2 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0ed12e3d mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x38873ca2 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4781ada0 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5fe025d7 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x66cbef25 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x727e8c4d mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x72b6ca0d mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7674ae2f mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x911db710 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa860aeaf mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xad196f52 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb13817e1 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbda2e3f0 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc9c3ebec mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd7f5caf2 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe3f50760 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe45d4276 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf3c98812 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xa80f40a3 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xc45be928 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x0c241924 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x4d7777b5 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x6471382b labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x85342838 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xa1d6e31b labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x361a91ac ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x59aee7fd ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5e551b1f ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa932362b ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xafc5c6ea ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb64dfc93 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc4ae01a5 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcc0664e8 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0d81605e ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x57f4320a ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x84265007 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xa6f47299 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb03ba68a ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfcffa7c1 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x31cb7535 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x45078229 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x71260352 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x769a4af0 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x956d889c comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb9e62abd comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd07987ef comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xaae76da5 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x283cfa62 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e720a28 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x89edfb13 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2866c6b debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xf84ba90d 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 0x11bb7b31 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1c181327 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2bf7d527 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x325d766b spk_var_show +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 0x4f576644 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x688e3e57 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x903f00ef spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa639a4d8 spk_synth_is_alive_nop +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 0xb65a5b05 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 0xdadb1305 spk_var_store +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 0x1f0d2566 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x4620ec87 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x5938f382 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x6ab06139 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xb49091c4 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x937242cb ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xc50a8a4e ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x3601be72 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xd17b505b imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xf182b2d5 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1614b883 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x4077f58e ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x4ac7cc25 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x84be06cf ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9a4b373e ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf455fd0c ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x04cf61e4 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x27660416 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x32c48189 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3a9422d5 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x493b3b42 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x61efad01 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x79ff24e7 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x850efbfd gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x923a84c6 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9ffe17db gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa8c9f7db gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb4fcc26f gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc080d4e0 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd62fcb06 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe12e0573 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x496fa418 gserial_connect +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 0xd03cfb2a 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 0x067f65fd ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x3481561d ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x9985d1cb ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x09c23187 fsg_lun_open +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 0x11d7cdf9 fsg_common_set_cdev +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 0x15b45bd7 fsg_show_ro +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 0x2bbc0fc8 fsg_store_cdrom +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 0x4b696657 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 0x567eae59 fsg_store_nofua +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 0x774b92e8 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7d750970 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 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 0x9d4c10ca fsg_store_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 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 0xab91df62 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb056ad2a 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 0xbe101dde fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc324a29c 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 0xe0544a75 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe36da389 fsg_show_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 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1cbcc8a9 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1cf24e04 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2e3a1586 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x30139963 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3290693d rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x39a52fcf rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x714abe3a rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x82ba7044 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9c757b2e rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa237c2c9 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa447ade0 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb601c487 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc4632337 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd8201540 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xec4c7c7c rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x08c85ffa usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x160244eb usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x242212c6 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x27ff8c9f usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2bf0bb4b usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2ed8ab19 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x34817f93 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4c3c5962 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5caf26a6 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5f68b45d usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x66bf7bfd unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d062fd6 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7b4f4582 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7d526a78 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x86decffc usb_composite_setup_continue +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 0xa9f8da49 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb2cdfdc7 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb3acd732 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb6d84b50 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc2ec2279 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc5fd6cf7 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc6ce57c2 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcb471560 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe0897595 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe2694fe8 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe89cafb8 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xec469dbb usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf15dc2b5 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x16938c47 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1a62d83b usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1e76b11b 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 0x35fbe7b6 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3ae6fe35 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3ef49493 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x42ec8fbe usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6421401e usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6bdfc5d7 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa2ee91a4 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd3acd893 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x748b23ee ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xfc79af97 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0444d38e usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1a9c3a03 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x426380f5 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6ed00656 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x79378262 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xad05cdf0 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb9060eba ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbcd63add usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xdd2b2812 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 0x9e0c3145 musb_interrupt +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 0x4ccdab36 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x16eb07dd usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x18606aa8 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x19ce902d usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1d35ff2a usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x27aac3d8 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x27d2ac2b usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3cf2f6ae usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x427aa135 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x43ff6841 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49645428 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4c1dc17f usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6187ae01 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x67187cbd usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7d625736 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8719dd6b usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa0769faa usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa1164477 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb89ffa4d usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbaae96c9 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcf75b0aa usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd1bffb36 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xedde8f5d usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x084394ea usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1493ae51 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1b5fba76 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2894145d usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x29dda67c usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2ae5442a usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2fef4393 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x388950b3 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3cce23d7 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x46ea70b7 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5ba78ddb usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x61fe7b4c usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x67f18559 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x803f6d95 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x82f7d0dc usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x85d2c8f3 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8cb397d8 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9af151b5 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc3e8386c fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd59b90e3 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd6095f7b usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd6ab9d74 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xde8865c9 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe42d12a7 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0217e8a2 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x24b8bd17 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x279ed7d3 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2e064df5 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x32addae3 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6b5b37e9 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6e93a016 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x822b7cf4 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x85d816c7 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x91dcab22 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb8d316e1 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xeb43dd5e usbip_start_eh +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 0x338d133b __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x59054d08 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5d29a1df rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc1170ed2 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xddbcf41d wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf2d59610 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf452b7a1 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x08271342 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x085e99dc wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0ee389de wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1787b30b wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2bfcf2d3 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x39ec6afa wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4c040815 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x858e7b48 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x86bfd83e wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x93b64d50 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9d2b4aff wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbdf4a2ce wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe50adc1a wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xeebbbc50 wusbhc_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 0x4f3e611e i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xa5ddd88a i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xc78cc663 i1480_cmd +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 0x3eefe9e0 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x58c1686d umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xbb5791b3 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/umc 0xf86ad24f umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x03be554a uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0891d66d uwb_rc_put +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 0x1fc40460 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x24ca0aba uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2bc9f399 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2bd98e95 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x327f8abc uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x346773ce uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x43f365e6 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d2adf14 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x51484911 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5c43b4d2 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x63e7a012 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7bcce727 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8a3f88a8 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8b2044c0 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x908316bb uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x91460c7e uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9218c8ce uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9327f8e3 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x95cb9b66 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9b5de2da uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9ec15ab2 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaa3da54f uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xab71b547 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xadb4eca5 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb1dd7839 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb431c722 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcfb42af5 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd766f3c9 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe248970b uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe431fa1b uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe5ec2a62 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xecf023d8 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xefc2dc40 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc77f24d uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfe8e836b uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x2d25a9b8 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3600ce37 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x47979e0c vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x57f467a3 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6f3a6a26 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 0xbb437565 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 0xf7aafe05 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0x6ad20b88 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 0xd2719383 vfio_spapr_pci_eeh_open +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x1cb9007e vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xcfb61002 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x007e5966 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1b3a6a24 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e55f5cd vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1edd0342 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2a420fa5 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2f26d7ab vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x381acb37 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4a53a02c vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x50b09c0c vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x63d42254 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7e5436d2 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x80c74b6e vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x844debea vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9bce39cd vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa1ff7f30 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2780ea7 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2e05601 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb427d017 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb4313d3c vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc8d6c169 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcd5847d4 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd0435f27 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdc8633cb vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe69c51cd vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe9e8f704 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf18d0525 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf3277e0d vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf73ce601 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xff03725a vhost_poll_init +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x046420f4 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3dbfade3 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3ee64fdf ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7f4cc532 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa2a79378 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbbf26f6c ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc1e5fa1b ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1c5d9625 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x325f56e1 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x352c591c auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x48fb1f00 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x7a6ee68a auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xaac6ed23 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb7f16ea5 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc4a5f930 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xdd750245 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe6bab305 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x58875cd3 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x138e25e5 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xc3093910 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x07f1c180 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x256e49e2 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2de5819d w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4c7ede82 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x608fa9bb w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x85b880d8 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa2e45f17 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xea03cf71 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xed614733 w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x1f0b641a dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xaaa1a0fa dlm_posix_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 0xd1b59568 dlm_posix_get +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 0x203b1515 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x28779543 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x67d4ebee nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x733ac843 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd1306d39 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe216b880 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xfab74f89 nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x006281b5 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03860077 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03d6469a nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0607553a nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07a014b4 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a4d9ba2 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a53fdef nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ef4282f nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x108e32dd nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10e106e9 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x119aac5c nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14854f8b nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14f50bab nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15286269 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1598e5e7 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x177483d6 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c6a92a1 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ccb839b nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1eb4a776 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x209e896b nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20ff8921 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21cdca16 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23c27baf nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2864e2d4 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a225cb9 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ecbc2ea nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33f929cb nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x371928d3 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x381f5671 nfs_show_options +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 0x3dd34442 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41047fae nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42c77fb0 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44d965e5 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48c5d37a nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d742564 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ffd4fe5 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52e5058f nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5312fb3b nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5343f112 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54697e67 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5489a87a nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x570c45f3 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58587997 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b3f5999 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c037874 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d100553 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e66501c nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x656408fb nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66e6a481 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x671b040b nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c525727 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d53be43 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70dbd49b nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72fc86db nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x755265a0 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7618c5a8 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7634223b nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77463616 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a58b9bc alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b0755f6 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c8589da nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7da43469 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e3f894b nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x833446f6 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83787f90 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85316896 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85af3e16 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86c1427e nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x884d92d8 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88750efb nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88a4cd07 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a637872 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c19b5c9 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d559919 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8da0758b nfs_mkdir +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 0x9222c951 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9437545e nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94cab0e8 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x972c686d nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98d1e9a6 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4923c24 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6e24776 nfs_try_mount +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 0xa9753578 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9b7692d nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa370faf nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab5bfc09 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac307d69 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xade41bd2 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaed51dff nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3513bb5 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb53d9ea7 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb654dc5e nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6fd4d20 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb83896c5 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba4d5253 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba78d427 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdaf6639 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe37b462 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc07c9323 nfs_alloc_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 0xc77651ec nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc80d87f0 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9c0a8e5 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb151bec nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce30a5ec nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0e66981 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd10dfeec nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd14bcaa7 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdea3dd7f nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdec69796 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xded092c3 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdeda805a nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdffa0cda nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0ea5252 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe240bcd5 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe26f3233 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe278ec87 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb5fb334 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed628664 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeedaf378 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf009ece0 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4663d5d nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf90bb85a nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf997521d nfs_pageio_init_write +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 0xfea94584 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x7e16782c nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0395fb98 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03a47bb6 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x059dbb77 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x062bef5f nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07dad70e pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b86a998 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e17fe5d pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x109f9c6f pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11e83d87 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1389cf35 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x14b97af5 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x26ee00bd pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2773f412 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x294d2f65 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c5f768d pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x356306a4 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3a7a93c3 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x452c7d81 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f80ff84 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4fbc5990 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5290fea6 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5349732c nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x639aeea3 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63b5143a pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6cbececd pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7aa3f33d pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x81431dc7 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83a17af1 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x86d8ca3a pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x885e65ce pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d39c918 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d44f92c nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e20b3ac nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ed49fc9 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9301e8ca nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9cc03419 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9ccd9e06 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa179dfc7 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa18a46fe nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa96e9bd9 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf8644fc nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb351b362 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4e75ff2 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb570ebb0 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6e64463 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8272553 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb94a4cc6 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbbfa6ab8 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc5ac10b2 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc60a45cd pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcae8299c pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd73c3828 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe62e5257 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef2c13ec nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf01bb6cd pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf31fa3ec nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff28bdb0 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x00a858b6 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x7588d031 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x125c3c04 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xff44ed61 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x15b8e011 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 0x35f698c4 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 0x41cd6aeb o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5670c1a9 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6815fec5 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa00dcf17 o2nm_get_node_by_ip +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 0xc8b65e3e o2nm_get_node_by_num +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 0x0fd7758e dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3e0a6538 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8e96a6db dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xdbff9708 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf4f0e9c6 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf6c70040 dlm_register_domain +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 0x4916b74e ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x513c196f ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x73c4a5c6 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 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x225af580 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x49f1cc80 torture_shuffle_task_register +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 0x8c613886 _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 0xfa1de0cf notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xfd68ba2b notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 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 0x9b2f4b83 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xbeb49647 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x16655236 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x7068c803 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa56f1032 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xa8ab352e garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xe8662180 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xfb8784bb garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x55b24401 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x7528d0e8 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x9173f420 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x9f5b1605 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xa2d17e0e mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xe51da015 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x6589830f stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x856af917 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x192ff287 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xbd09663d 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 0xc9ab018b ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x28e5a526 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x2b415057 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7d7bd752 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x87177b8c l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xad82988b bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd49f6c0a l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf3986d27 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf51bee4b l2cap_chan_create +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0fc268f3 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x12274852 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5b386394 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6a471760 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6bfa95ab br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe45ad4ca br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf0dced3b br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xff4b0cca br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x7a719de6 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xa27c4cdf nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x026cf630 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14bd2784 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a994d40 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1df6e24b dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1ee7b066 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x283321dd dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x28dbb311 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x294b9bca dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x38e16e90 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3abd494b dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3b7506d9 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x45aa8cdf dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4a45a98d dccp_parse_options +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 0x4f4e7b60 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4fdc22c3 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x537f7a24 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6c8ae813 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74c3f729 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x76b7ea0e dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x77cb8076 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7db4b5b1 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7eb6eb21 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa08f7818 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa0b12b5d compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaa70c5cf dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc805ff92 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc9b518c8 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcaba0659 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd79dacf6 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdc2032a3 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xde753c7b dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5256155 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xedec02ad dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf2e9ddf4 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5c0aba6 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5d29b33c dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x67858ca5 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb44647d9 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd0e1e738 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xebd88057 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xeeedac67 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x1182a64a ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x3756d373 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xf09fcd89 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xf42082b6 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x1d430b8c geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x3ed5643a geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xfc702768 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1d1f5fae gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa5f7ad3d gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd38c0184 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd708fde7 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd73bcacb gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0a198723 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x55153656 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8544dbc3 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9a1e370f inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa8eaeb76 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa999cff2 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1088c66f ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2dc7683c ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x59f69231 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6f300c90 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7516583d ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8b7e17d5 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8da4f649 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xacc586d1 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xca50745e ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcd4b4121 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcf15c9d5 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd1472d72 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xde21d121 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf8f2348e ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x22dbfba0 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x73666650 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 0x1830de87 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x3a3af338 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x41933c74 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x7736c2d8 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xae57affe nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x2745f0e9 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 0x55de724c nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xaf7b09b5 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb65a4f52 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe044565f nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf63a7ff8 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xb413deef nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x41a1c3e7 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x69d0b642 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb596c052 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcfab89a8 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe4f44252 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8f163dd4 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xbaebedee udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xecfa85a3 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x49baa626 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x583edbef ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xafdef6db ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe00c2949 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf180b532 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x461a8b60 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x533d1e19 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x5833af36 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 0x13264ea4 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x1b381933 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x41f7d7e8 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x7b9e62b1 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xc98672ab nf_nat_ipv6_out +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 0x4cc84592 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3f307fec nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3f96c54a nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x6eefae2e nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe4dc24d3 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf20fdaca nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xe8298ecc nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x092996de l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1aa09f45 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x37fb8f53 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x55a05606 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x638637e1 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x96ac4063 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaf6ced2d l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbbcb531c l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbbe3ade3 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc752bb14 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd11d4a3e l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd88c1cc9 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd8a9117b l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdb0d68f0 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe46672f8 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf3ac50be l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xaebf988a l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1d5872de ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1e5ae68e ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x35e76af4 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4cccc537 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7702d4a6 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x77af4347 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7d38013b ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8d8f3e61 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9e8165e5 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaeb8c5aa ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb225b3e4 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc0823424 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcd4be33f ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd98b323f wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xddb58f82 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xee1f155f ieee80211_napi_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x26a2daf4 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2b705c07 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x38522722 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3a38bf8f ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3a5a99e2 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x44feff16 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x45ad4fc2 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5afa851f ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5e8f1f51 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6765e1a4 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9231c7a6 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9b891e48 ip_set_put_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 0xbd151daf ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xca95df66 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 0xe29cce30 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfedc2dd5 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x2ab51970 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5fd855e6 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8d5ed853 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb7fefcf6 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 0x0f640fe8 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x10861ea8 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x111ccf19 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1189b8bf nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1451c8dd nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x195c928c nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19c5ae42 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x22f6fa08 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26854d64 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2da7d794 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x333072ea nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39ce67b9 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3cdf0805 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ea76898 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4088f5cb nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40a26705 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42a3b440 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x432f4924 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4861e6d7 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x490fb764 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a1cde7b nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5045078d nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x523fe2c5 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52b66de3 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x538464b8 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5b177fcd nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6020ee70 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60da421e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66207634 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x663955f0 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6740e0d1 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67ef473f nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69168156 nf_ct_get_tuplepr +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 0x72be9749 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7cf3c260 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d2a4ea7 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8266c076 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83782036 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x843c4903 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b030d43 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ce011f6 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e8f66d7 nf_ct_expect_register_notifier +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 0x9563eba3 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x972785ef __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9877325a nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a43548e __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9bb7a1af nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9fae05f2 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0174a07 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaaa8aedb nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xace2a8b4 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2748b5f nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4e25136 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb968c149 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc626470 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe623c6e nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6933afc nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce748673 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf09a9d3 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd000f084 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2a7b526 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3272ace nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd53c5991 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda414174 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda41f399 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdaacc73c __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdba4b361 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbcafa6a nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2369206 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe724def2 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec92e3a4 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed24e34b nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf42d78ec nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5356e55 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9b4e4d2 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9ef8216 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x2d9f26a5 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x8a28f84e nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xcdd74fd6 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1d76002a nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2407c95b set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2c2d71be nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x33876f6c set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x403261b9 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4445e1fd get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x60d96bb4 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8d022e12 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa68f53d1 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xabc83acb set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x0e5f07db nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2a3382eb nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2a3cd504 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2c75972c nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xee669266 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x05beb87b nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xee9aaa54 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x035eff8c ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x60af6759 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x668ef29c ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6bec0497 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7b2d8b66 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x90b86b56 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcf801eb4 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x366c90f3 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xfb7e15f0 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x5844c50d nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9f71128d nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf21d03b0 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xfac45d07 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x04b7904e nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x075049f4 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 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x25d9e910 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2ab6a172 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2dde0d01 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3312b552 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7a3f7968 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x89562da4 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfd403cf0 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x380dc5a6 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xa54b2d90 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 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 0xac55cd21 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xe05e17be synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x086e4132 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x168b3a71 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x417c8d1c nft_dump_register +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 0x6957903e nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6ab329d3 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x80c9bf8c nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x819e3446 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8252b76c nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8acd75bc nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8fef2e27 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9b037d3c nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9faf2852 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaa480aa2 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc576d870 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcee0eba0 nft_unregister_expr +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 0xe6d33476 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf29735ad nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x162e2375 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2a314cd1 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3dd8723c nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x465fa117 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x916b0fca nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x977f46db nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb92de6a9 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x00bedebe nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbab541c3 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x66cdcc7a nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x117f36a3 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x8720c856 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xc8bce8a9 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x3a575cba nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x4c36164a nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x4d09258b nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x9d780f8c nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf5ec11bf nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xfe648593 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x22ca7643 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xb188bad2 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc44c72b3 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x069182b7 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x06aa213d 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 0x00df3f34 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x06d8b980 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0c7fa288 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x16c08dc8 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1afe89c9 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2a778755 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x46c5a281 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4dfd1e5a 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 0x6c296980 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x76077c68 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7aeec035 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x83ba70ad xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x84ae8766 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa4e8b821 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xad4333e7 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbdd4efb6 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd05f6c48 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe76b0ed8 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xef5d7d98 xt_request_find_target +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 0x46a0b226 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xba449d4b nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xdb19148f nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x27120ff3 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x88e2ccc5 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x8f4d4994 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x087366ed ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0cdff2f3 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4da60c32 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x6361286c ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7c20ef71 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc7f12e5f ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd1ceaa68 ovs_vport_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 0x03a7bb48 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x05cf8b7b rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x07dbd9a9 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x17236aa5 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x178cec10 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x21049eda rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x2556ecb5 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2fc8a943 rds_inc_init +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 0x41154eb7 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x439cb8c7 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x46262132 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x47172cc3 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5603750d rds_rdma_send_complete +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 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x884c2c60 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x8c4ffd68 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x8fe7ced3 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xa5013e32 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xab3d1e99 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xab6dc67d rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xade11e80 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xc038c62f rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd11f7059 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x39b5e927 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xcbb0e218 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 0x14e0f1a3 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x548eed68 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 0x91b8f9a1 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 0x02768df2 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x037dbbcb xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05cd7c4c rpcauth_cred_key_to_expire +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 0x0957be96 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0989b4d0 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ae3147e rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d3414d3 svc_set_client +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 0x103122a8 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1081c570 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1184c820 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1285d3e5 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x129b6038 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1367a46a svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14a9d107 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14fa6eb1 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1771ecf0 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a21531b xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ae2136d svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b37e57a xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b5adf8e write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c48a4dc rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1efb2497 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x208c710a svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x214a517d rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21a5dfc0 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24c478be xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25697d6e rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x262b8db5 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x269c5734 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2884bf86 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29365648 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x296e453d svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29dda5a3 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b53adbc xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cf3c54a rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x309400b8 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32ceac08 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x342268dd svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x344d3ae6 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x362c5040 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3962289e rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39da8a2b csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39e336d5 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a943ea7 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b6134a9 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d143a06 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d99284a sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f126360 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42cc93c6 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44e57c1f rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47a983f9 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48fbf888 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a5fa100 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a8fadef rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b17588c xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ecced1b svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fc58384 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fd54ed2 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x503454ce sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5220793b rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x530862ab gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53cdeb29 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56db1742 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x579b7905 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5abb8be0 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5acab71f xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b0047a7 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c09eb82 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c338c25 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d325a7e svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d736aba rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f3e6ce6 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x618da9f4 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6547d566 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x654e4125 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65532648 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69f5ae1a rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c14b3b0 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d83243d svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71f03d90 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x760d5009 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76faa449 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77519880 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x777052fd svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7773b524 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78bc86d6 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a3fa7fd sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a4d9e93 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c2e8aa5 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c2ea058 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c583808 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c9779ac rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f8920e6 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x815dc011 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x816cfe99 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x829c61ec svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x866e0e0e xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x869c5f59 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87153582 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87462d28 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87acd275 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88c65346 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89752cae rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a7f0017 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8beb1538 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d45c84c xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8de3b642 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9208d0e1 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92aee5ba rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x937db6d5 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93e17a1e rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95d85b25 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95d9afb2 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9659ec0d xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9818f3fe rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x986aade7 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9935b33e xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9eaa8ea3 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa153a882 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1f8f1a0 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2c5f051 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4d50cf7 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa80bc72e rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8a4bc4c rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8d4654c rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9ad1dd8 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf81595d xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb104cf8a rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb146c404 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb19f613c xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb29832f5 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2a8e8c0 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb404c87e xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7367046 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8795e5a svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb90efb9d rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba0190b5 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba14d31b svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba2e25aa rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc18b25bf xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4133774 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4318bf4 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc52f1ea5 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc55e94a9 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc681f9fe xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7554999 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7ff73e7 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8b4d110 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc98b77b7 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb3e3f8d rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd84a769 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce5c4494 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd251e952 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3941b63 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd43f116c cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6e583f5 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd815378d svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd94713ae xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda73db8b svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb454941 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdba2a694 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc266bbd rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc32cc58 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc624597 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd9c3664 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdebf08ee rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0d9392e xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe16d55de rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe39dafcb svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe644e9d1 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb8614d8 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec8b8f0a rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecd31c09 rpc_find_or_alloc_pipe_dir_object +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 0xef12b03d rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef69aa12 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefa19e9e rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf052f16e bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0963aa4 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1e98d29 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2e90774 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf36f4f90 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5458899 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6c3b65b svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf76de3b4 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbce2097 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc594983 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffa284db sunrpc_cache_lookup +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 0x28b57bb6 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x48b51689 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5488b780 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x56e09459 vsock_stream_has_space +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 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x82968cc0 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9d003cef vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xad8ad812 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb5d66789 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc8a7f850 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xca2dbd94 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcaf01b19 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeae4fd05 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf1368747 vsock_remove_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x059286c9 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x136c047d wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x36090645 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x40bc0dea wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x44033e50 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x78a41f55 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8847995b wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9fffa919 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc54e999c wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd9cdd61b wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe45d1a0f wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfbbe3e68 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfda15801 wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0fba3cbe cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0fdf40f9 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x203b7997 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x74c504f4 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x79220021 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x85fa905b cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8a2418a5 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x91d2d5d8 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa028664b cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb34844ea cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb8222a66 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xde1b32c3 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf8d23aeb 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 0x407c588f ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb5bf27d8 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xbb234fd1 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xdced5b39 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x358d6b2a pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x4a4f7ac7 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x63bebdf7 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x70aa8f33 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x7ea4bead aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xb2452b05 aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc25d5009 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xcfbb69b2 aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xd82609dc aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xee231f41 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x1f330bdd soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x5cec1bde soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xa96f7ad9 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xadd363d8 soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xd26012ef soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xe6ff0c9b soundbus_remove_one +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x6db92acb snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x8a9a8b4e __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x065791b0 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x36b7e1d0 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x46a299f4 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x476521db snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xca6d4a8f snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xd21d4271 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xd8ee8957 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x6276362d snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x83f162bd snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xbc88e80a snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x092f772e snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x0fa9f01c snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1cf124b0 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x39d59dcb snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x55bc9fb7 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8440af12 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x98ef1e0d snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa766f120 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab4d5e80 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2d693d16 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x38ee20ca snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x47462433 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x67506a3a snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6790c949 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x74bb8019 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8eb63052 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb62f3ee3 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd0f1efea snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf1656585 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xfba9da28 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0c09dfe2 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d04c88e snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1436fe84 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1465abb3 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x176fc2ec snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1eb8ce96 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f3809c1 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x208d4a6a snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2d2c4de1 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f75e930 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x31273015 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x35b09f7e snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x398fe9c9 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4043b618 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40e68eeb snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x426d13a0 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x44901907 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x46b6ce97 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4bfce5d8 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c32c52a snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x56b12879 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b67fed6 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5e3d1b76 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f2f130b snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7009408c snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x72d4f4c8 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x767aa4c7 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7d992782 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7eb502f3 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f7453ad snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x825b5d50 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x888bd468 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89774030 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a5d425d snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8c026528 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8d74de5b snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8fca2a4d snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x93622736 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x95654fcf snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9c8767aa snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xab70e67f snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb06b7a37 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb142aa5a snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb3801236 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbdd44238 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc16937df snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc57146e7 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc7510dcc snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc9b9879a snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcab42f5c snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcf250736 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1fd9555 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd5ca05ca snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb704e19 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde4d3df6 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde823bcf snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdf128009 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe22cca53 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3e61425 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4062b22 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4867e5b snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe8a880f4 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf0907114 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf13f73d5 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x57d1e52b snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x851f0cab snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9bab6ba7 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa8b86331 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb7ea8247 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf73c22be snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x039a7ea1 snd_hda_codec_load_dsp_trigger +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 0x08463ff6 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08759a8c snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0bad6676 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1124a685 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11da97fe query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1360457a __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14f8f94b snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x150b41a3 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x186cb404 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x193a4b81 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b3cece3 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d184f60 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d3bcc27 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d683bfb snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20c52435 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21e3cb4a azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x256eb344 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25eee57c snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x266dbea8 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27da0ea8 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x280b0858 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28fcc739 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bab9792 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d0ddd59 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2db4504c snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e2e8848 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3125fbb8 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3368db1a snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36fe280b snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375a5173 snd_hda_jack_detect_state +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 0x38df0f46 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x390a3262 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b03b51b snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b1b5c57 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b709e30 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c1e2c2a snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cb0837f snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ef81303 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f506b10 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4047f0c3 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40e95f96 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44e680d0 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45d0834b snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48ddeb36 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a143d73 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bbf6a6c snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e4b979f azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53597b24 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x539af40b snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x57da2e4a snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58bfb5f0 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59a8f4a0 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a9df8d7 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6037412e snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x617c0c9e snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62423cd6 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6741d640 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ee42eec snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x756abdfd snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75b7d89e snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75e7fbbd snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7630f686 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x774af924 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7972fdd0 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7abc42ae snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f5ef10c snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83112349 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8596ad5b snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86e327d9 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8830dab7 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89338587 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x899f6bd9 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d77ad56 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97c42407 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9851f2cc snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b155ec6 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c84d70d snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e0504c3 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0ba966d azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1a0b9b5 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9b521c2 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9c595ee snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaac405d7 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf9abe53 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb07cd39c snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb18ca7ec snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2d8e512 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb364d9b4 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3a9a7ac snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3ca76e1 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb4bbfcee snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc6c611f azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe126680 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf072944 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0e5e09c snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc11d056a snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4cf2b00 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca2a085d snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb85be6d snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd2b6d39 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd866a9f snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd13b01cd azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd43c93d4 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9d71b4c snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdade79b3 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd8ecd04 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde4e36fe __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe20c3e4d snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4b27fe1 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4be4e97 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5a0f418 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe610b362 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6aaabf1 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe752ffb7 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7abfad3 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9ab5fd5 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xedb64a58 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeea124cf snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef4f6564 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1313cef snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1837729 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf300dead azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5681865 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7ffe142 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x05545714 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0a712833 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2572ca13 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x31a6cb7b snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3c80fa45 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x402a5999 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x45c7815a snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4f184c54 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x51fd2fe6 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5bea40bf snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x627f30ad snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x65892be7 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 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9684dbc8 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa7868309 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xccbc2c84 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe259dd1d snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeec55fb3 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf1809426 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf78eec39 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf829fca8 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfb9499e3 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x6be9694e 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 0xd6ec924d cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x1f3a8dc5 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xaf1b938e cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x499c6a0a cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x719c1e24 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xad13e8a3 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x8f9556d2 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xbb9a285c es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xa235b11d pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xe0142d7f pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf5d7ae8f pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xfd318eee pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x36289a5a sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x59fba7dd devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xdf7fcd37 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xf0f7ff14 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xf731756e sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x2e119ad7 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x6c15e7a7 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xc523b68a ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x32aea552 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x6640d902 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x8de27a3f ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x634debee wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x87808d2d wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xae85d6a7 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc7cca92d wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x5dd335b9 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xab624618 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x67414403 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xfbbdf474 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 0x01b624cd snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x054eb4a8 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x082d5471 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x084596ae snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0904dbdb snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a0a22bd snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a1a7700 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a221eed snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a50584e snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x101a146d snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1581d25f snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x15b064c3 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1941060b snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19ee727a snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a0b8b74 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d575617 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e5a57e3 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20274f44 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20c9bb5f snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22467853 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2246b2b0 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23223bf7 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x248ab0a1 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27c60393 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2812e334 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29ce9823 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bea506e snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e4e35f7 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x364e1230 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x367f38c5 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c9ad83b snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x450c5abb snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45c69185 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x489092be snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48a38211 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4938e4b4 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c21cc82 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x501bcd23 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5087db75 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51ab49b2 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x551cd014 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x567a7044 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57c0ad81 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59128390 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59128780 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d397422 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e000099 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61dd61b3 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x623d1cba devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6251c8e8 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62ae7903 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x640a7daa snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64dacec8 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64e6829e snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x654088c7 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67b9e5f8 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67e0dfb3 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69190180 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c0a7957 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c17e0ef snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d5b1217 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f7d4302 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7119d939 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x756c21f5 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7799f1a9 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x792be6f2 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7aaa42b5 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7bc20226 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d0d554d snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d35bc06 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d379101 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7dd4f5ad snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e4c1b56 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fcaea0b snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81ede719 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8269f94a snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86ce4a60 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x886bcf8e snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89f89dd9 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a1bc596 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8adcfd7c dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8cc8bbdb snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ea11acb snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f4e3de6 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x946aa757 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9601bb14 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x964a9c29 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x965b4e82 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97864248 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa11125ed devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1384691 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa25366da snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa29ed049 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2e61975 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2f0f9fd snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2faf740 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3222e12 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4fb8d33 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa57cd54e snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6bff326 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaaef4340 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac564e16 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac5ad5f1 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac66ae79 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xada7d615 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafd3c64e snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb23af987 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3c9e042 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb494f061 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4c6cf82 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb789e0ad devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc723e40 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbefa9bab dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbfc62da4 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5e82883 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc63db0d1 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc757ef52 snd_soc_dapm_force_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 0xc98fa324 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb7c95d2 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc8a87ee snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfb3d805 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd12e2f79 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2cfb36b snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd55354b4 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd83c2891 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda060dc3 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf18bf97 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe01ad46b snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe275241b soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3900262 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe50f9c7f snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6099231 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe65a3432 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6e78f8e snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8325780 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe887e3ea snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8eb8fad devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9d1ae5a snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb781af0 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec00e54a snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedf1cd8a snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef056fcc snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefdaeba7 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0c047e7 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4718617 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa9b5daa snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x02e72aab line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0b5a86f3 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0cc7dc1a line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1b453b1f 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 0x25033512 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x52355556 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x53db2522 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x642c20d4 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 0x9025a6f2 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x92b4e739 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb3a78993 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc5af9450 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe70e1fd1 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xeb7f8564 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfc20fab8 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL vmlinux 0x001b0ee4 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x003e21b5 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x003faccc blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x005aa3e0 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x0060a421 file_ra_state_init +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 0x009305cb __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x0095f2b3 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x0098737f tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x00bf2761 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x00cc1b8b uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x010900d2 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x011a9ae5 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x011d0fb5 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x01461268 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x016cedf7 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x017a370d raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x019f4333 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x01a24a2c irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x01b817b1 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x01bd6c34 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x0233f1be sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0242f8d1 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x024b3157 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x024d8b53 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x02514c8f xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x025e4c61 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x02614191 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x0269cec7 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x02d97a94 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x02e117c5 pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x02e4dffe clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x02e62e59 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x02f70f48 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03059f77 devm_usb_get_phy_by_phandle +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 0x0345ffc0 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x034dd05f sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x0351c6d2 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x035234e4 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x0353b052 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x037d6ac6 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x03843fbd crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03ad19ce fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x03bca677 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03cab777 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x03dbc27c usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f61f9a fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x03f74382 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x03f88c70 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x0401b27e rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04074628 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0449db86 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046a8a73 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x046ba0e4 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x04789e01 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x047c03dc regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0491769b ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04b9b91e uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04c0bcf6 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04ddc5cb gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04e4e7dc get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x04ebd512 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x0536615e phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x0547e5f3 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0555b6b0 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x058084c8 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0580c020 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x05850d48 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059c309e sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x05ad42ab device_attach +EXPORT_SYMBOL_GPL vmlinux 0x05eb7d2d iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x05f56ea5 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x05fd34cd debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0635174d ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06610824 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x06711401 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x06978765 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x06b19000 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x06f23b71 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x070753cb wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x0709ccd9 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x07592867 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0767fba7 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x07a30ea6 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x07a8f59f tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07d32d2d regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x07fced0d mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081d6816 kvmppc_do_h_remove +EXPORT_SYMBOL_GPL vmlinux 0x08483efe handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x0856e86e __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x085fe3aa sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0x086b90c0 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x08872bfd pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x08885241 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0894211a bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x08a57287 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x08a72f8b driver_register +EXPORT_SYMBOL_GPL vmlinux 0x08bb7741 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08d11c96 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x08d91c22 mm_iommu_put +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0923f0ba sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x092be0ba usb_register_dev +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 0x0953a3b0 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x095bd8cf crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x095d7648 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0x096a0a36 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x09be5b0d pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x09cc575b tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x09d66713 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x09e396e3 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x09e9b66a ps3_system_bus_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a0781b4 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x0a08a5ac regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0a483925 find_module +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0ad07e49 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x0aef6419 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x0af9360b tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b092039 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x0b0fdeb0 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x0b12f27f __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x0b5bec4a da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0b6ae7ff pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x0b7c4f1b inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0b93140f uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x0b953c3c rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x0b97e800 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x0b9d838e pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x0bbd279b tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0bbea377 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x0bc26ad9 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x0bf86d03 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c048bc0 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0c4a08 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x0c2a19d7 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c340b2f page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x0c4c4cf8 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x0c50eef3 force_sig_info +EXPORT_SYMBOL_GPL vmlinux 0x0c593b24 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x0c802d6a ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x0c80ccc1 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x0caf75d9 opal_flash_erase +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd02a40 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x0ce3ee5a mmu_kernel_ssize +EXPORT_SYMBOL_GPL vmlinux 0x0d07a58f blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x0d194c14 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x0d2366f0 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x0d45d8d0 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4e1403 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x0d6e1587 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d8008b8 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x0d9d601d pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0daac04c ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x0dc57107 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddfa6df uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0dfead64 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x0e095af7 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0e0d1049 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x0e2773ca __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x0e498960 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x0e49d6a7 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x0e62fc9b bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x0e6e9414 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0eabd788 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x0eb59554 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x0ebe62f7 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0edb4a50 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f3eef7a power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x0f5d20e7 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x0f6fd605 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x0f7076ca pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f773cd8 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0fb94e1b device_move +EXPORT_SYMBOL_GPL vmlinux 0x0fc0fd99 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x0fdee3a0 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x0fe965cd sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x0feb7c71 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x0ff4de3c pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x1008caa7 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x100c12d7 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10636133 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x106bc8d8 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x108346fa get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x108c83c2 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x109b426a mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x10a9fde2 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x10ba329d inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x10ccac31 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110fc880 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11197614 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x111aa4e2 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0x1153dbfd blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x115dbfa8 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x1162344b nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x116dca09 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x11729a91 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x118aa328 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x11b7d8e0 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x11c7d7af fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x11dd9512 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x11fb9168 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1203d5b1 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1207087d regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x12139b02 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122c2d06 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125f4806 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x1265cf66 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1272fa95 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x1283fa92 pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x129017fc of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12e5c218 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x12e6d18f skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x12fec87a usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x130ed1ec wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132d70e8 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x13314073 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x1333d8b3 ps3av_video_mode2res +EXPORT_SYMBOL_GPL vmlinux 0x133c861d of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x13495ecd ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x134b9b94 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x135b4e38 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b1de56 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x13b56312 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x13cbc049 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13ed9bf7 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x13eff4bb dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x13fc5ec4 mmput +EXPORT_SYMBOL_GPL vmlinux 0x1406b88b md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x1431ee0f virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x1449da3f ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x144dfe42 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x14508caf security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x145fa3f0 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x1481313d mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x1486f125 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x14947947 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x14ab9293 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x14abd32f sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x14c6ad8a pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x14d2c83d usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x14d411ca of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x14db3fcc vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x14fd880a ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x150e1da6 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x15161cee inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x15348311 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x15458dd5 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x15607143 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x1562dd81 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x15690863 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x156cc92f regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x157758f6 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158a7750 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x15a494f1 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x15b025ff devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x15b35e51 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x15b8b44d opal_async_wait_response +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15f9d9fa nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x15fc0a3e pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x161fe1fb filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x162cff96 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x168be7e2 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x16964d20 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x16979f51 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x16a0abd6 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x16a182fa __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x16cb24a8 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x16cdf2e8 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x16cec195 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x16db4685 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x16fc87fb __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1720601c kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x1721e7e2 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x174a6380 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x174be4c9 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x174f7492 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x1757073e __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1780c1d9 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x1788d322 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x17c93370 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x17d571e3 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x17d8b4f6 eeh_pe_reset +EXPORT_SYMBOL_GPL vmlinux 0x17f9f5c4 eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0x180a9a38 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x180fa187 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x181b7ee5 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x182bc1ac scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x18333903 sysfs_add_link_to_group +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 0x18584523 usb_alloc_urb +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 0x18854a1b event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x1894b94a dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x18954497 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18ab0902 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x18c4375f iommu_tce_xchg +EXPORT_SYMBOL_GPL vmlinux 0x18f441bd regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x18fd743b usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x19091cb8 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x19111763 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x1914d0ea pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1919771e mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x193442e7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19512b27 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1962ca91 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x196cf6b3 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19db0232 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x19e77cea gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x1a08d3c2 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x1a280d17 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x1a322208 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x1a55b647 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x1a56c088 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x1a713a04 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x1a77cc7c __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x1a7d1f75 ps3_open_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x1a824a91 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aac2464 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x1aba510f input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x1ac717e3 ps3_os_area_get_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae758ff ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x1af0698a tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x1b1c74d3 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1b7cabbe ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba908dd uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x1bb8b297 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1bc771ef of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x1bc7f09e of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x1bf2df61 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x1bf4c095 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x1c02bd31 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c508e19 tpm2_shutdown +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 0x1c5e5c26 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x1c67f56b __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x1c6db3f1 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x1c75f877 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x1c7ad003 dev_pm_qos_expose_flags +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 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d2f79e7 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x1d45b2c5 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x1d47441f digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d7408d3 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1db9dca1 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x1dbb1fd2 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x1dcd5529 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x1dd9b1a5 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x1de35150 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x1df8f993 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e3ff18b cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e772df7 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x1e7a9d82 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7cdf7b simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x1ea04e5e device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebadc12 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ee622d3 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1f0426dc iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x1f1785e9 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x1f1927c7 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f3380bd pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x1f41c283 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1f5c57d8 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1f70ce88 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fe1abb5 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1fe970cb ps3_io_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x1ff0f4b2 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x200c3558 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x20161809 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x202c990d device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x2068d94b sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x206b8917 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x2079675b pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x208a017a __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x209d683f component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x20a8435a init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20ca5acc get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x2100d6d3 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x210e059e ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x212104d1 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x2136fe83 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x213deecb rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x2148f6d5 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x214e6555 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x2160bb18 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x21735993 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x217478ba crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b8725e dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x21baaccf cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x21d6e9e4 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x21f308c4 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x220c9e80 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x2225b94d tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x22398482 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x225f717f pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2260e860 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x228fd5b2 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a24e4f pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x22a54755 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x22b5d031 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x22c01abd of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x22c8105c usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x22cef7da devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x236d63c6 spu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x236eff68 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x23731652 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x23759cfb kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a1bf41 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x23b9d3db regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x23bea6f9 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x23c5bc2a regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24069150 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x2415eaea adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x242340f3 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x242abf21 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x242da04e tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x24302716 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x2443617a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24a9257d rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ade574 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x24c281bd ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x24c57822 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x24cfd6ae tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x2510e0a4 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x252ef013 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x25466bba rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x256448b3 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x25874445 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x25a4d3a1 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x25bf2c05 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x25ca4fa2 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x25e1ee0a devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x25f28019 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x25f83480 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x2610154d inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x2615e1d8 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x2629be99 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2639eb9f rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x264ed101 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x267bcead sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26b80d05 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x26c354d5 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e58f7e mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x26f2737d cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x26fa1877 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x26ffbbb2 spu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x271f0916 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x27275332 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x272cc0c1 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x276dec26 copro_flush_all_slbs +EXPORT_SYMBOL_GPL vmlinux 0x277ebf77 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x279f3a1c fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c1ff54 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x27c2e719 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x27d232f8 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x27d5572b spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x27d68cee of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x27f322a7 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2806f2f2 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x28106bec usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x28181ec5 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x2857e6c4 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x2896a904 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x289d1d06 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x28a29817 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x28a9874c usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x28d7b9e2 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x28e6c44b thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x28f0caaf tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x28ff99a9 opal_prd_msg +EXPORT_SYMBOL_GPL vmlinux 0x29196336 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x29303838 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x2955dd29 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x2970c84c ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x2997e27b devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x29b90948 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x29cabda1 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x29cbeaba spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x29f068e5 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a67f799 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2a70eaf4 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x2a8574b4 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x2aa43e05 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x2ac0f49a crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x2ac27b54 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ad299eb unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x2ad991b9 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x2af578ef get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x2afcf9d6 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x2b2e9d10 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x2b35a130 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x2b3e26b4 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2b4147ed kvmppc_hcall_impl_hv_realmode +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b63b743 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x2b75b7fb set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x2bf49974 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2722a4 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c4ebe92 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x2c59a465 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cc30ca1 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2cd88f51 kvm_hv_vm_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x2ce2786f gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x2ce576bf init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf7f670 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x2d0d0384 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d5659b3 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x2d599f13 input_class +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d7e44d0 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x2d886f35 get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x2da21c6e ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x2dbe87ac user_update +EXPORT_SYMBOL_GPL vmlinux 0x2dc2d7a4 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dd06fee crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2e08cac9 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x2e09e7c6 ps3_gpu_mutex +EXPORT_SYMBOL_GPL vmlinux 0x2e0c72f2 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2e123c49 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2ee2a4 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3b4f8c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x2e61fa6b crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x2eb2091a __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x2ebb9de5 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x2ebc94b7 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ee50bfa led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x2ee6dd3a pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f29bc9e blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f61de9b tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x2f7ebf37 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2f82bdac wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2fb61b91 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2fbc37e3 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff5e23a kvmppc_invalidate_hpte +EXPORT_SYMBOL_GPL vmlinux 0x2ffa7e69 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x2ffb8eca stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2ffc1137 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x3013701b devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x301411c2 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x301832fb opal_async_get_token_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x303b6556 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x303fc2bd pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x304c165f ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x304d7342 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x3068f0a1 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x3088848d cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x30947aca sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x30ac46cc __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x30ce3b91 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30dd6949 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x310ce567 pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x310f04e1 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x311b78c2 ps3_get_spe_id +EXPORT_SYMBOL_GPL vmlinux 0x311e4cc8 use_cop +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3133a663 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x314f37d4 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x31639984 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x317e1ba9 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x31aebc28 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x31aee26a regulator_disable_deferred +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 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x321cc7a1 copro_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x3225ee12 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x32315663 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x3247101a verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x326becab rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x327ea102 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x328f75ab usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x329aad02 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x32a9cdf8 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bd1640 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d14d6d hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x32e6afc2 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x32ed3c9c phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3309ea64 ps3av_audio_mute +EXPORT_SYMBOL_GPL vmlinux 0x331d6be2 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x33398de6 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x33549d7d mnt_want_write_file +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 0x339104a4 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x33a12cb4 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x34066b49 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x341064f4 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x342238f0 mm_iommu_get +EXPORT_SYMBOL_GPL vmlinux 0x3429c601 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x3433f73f blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x34611e5c con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x34646153 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x3465d60d nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x346eae8b wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34af0adf opal_ipmi_send +EXPORT_SYMBOL_GPL vmlinux 0x34f860c9 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x3506dee5 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x350a1461 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x35117fb1 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x35123ccb subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x3514e446 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x35403110 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x354724c3 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x356086e9 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x3588583c sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x358bfd62 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a06d7a ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x35be3a24 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35d80886 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x36005c96 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36259834 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x36584580 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x366291ba phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x368d0989 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36ae45a1 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x36bc88ef cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36d8bb75 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x370286ad realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x3734832c get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x373ca5f5 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x3746d3ce fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x37515419 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x3765e641 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x377222e7 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x3777cd38 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x377d5a45 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x37926e70 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x37cd4bb3 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x37d45125 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x37da8457 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37ff4673 eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0x38092a86 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x3833d9d2 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x38487424 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x385f66fa power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38ab32e7 pnv_get_supported_cpuidle_states +EXPORT_SYMBOL_GPL vmlinux 0x38ab9ed3 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x38d0b0f8 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x38d48fc2 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x38f677d4 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x391193f4 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x391dac74 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x3938c519 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x3943fb8e device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x3971a4e7 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x3996d2b5 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x399b3512 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x39aab633 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x39ac466a evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x39c0ca0e pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39db1b2f __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x39dd1ce2 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f61c73 acop_handle_fault +EXPORT_SYMBOL_GPL vmlinux 0x3a09a13f cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2fc059 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5ec28c fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x3a74925d ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3a78d21b scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0x3a7b780e syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3a9087bc of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa61e92 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3aded779 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x3ae16274 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x3afdfd5d rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x3b1c5afc ps3_vuart_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b309f3a virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x3b632716 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3b993167 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x3ba14263 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x3bad2f98 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x3bbe9bbc usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3bc0bfea spu_priv1_ops +EXPORT_SYMBOL_GPL vmlinux 0x3c1dc37b ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x3c215aba vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x3c25c6f2 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x3c38f90a power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x3c51ea7c opal_leds_get_ind +EXPORT_SYMBOL_GPL vmlinux 0x3c570bbc driver_find +EXPORT_SYMBOL_GPL vmlinux 0x3c5d184d rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x3c63718f rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c970829 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x3cce4c3f gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf42278 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3cfee0ca fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x3d0384fb sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d4e044c crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x3d5b5987 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d71e43d of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x3d96a019 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x3d9e2d39 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dddf67d nvdimm_volatile_region_create +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 0x3e07ccde crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x3e0ffa69 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x3e21b7ea dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x3e26b74d netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3e2f5742 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3e447943 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x3e5395ee eeh_dev_open +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e633e8e platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e9220e5 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x3e9331a6 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3ebf9ec3 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3ec1ed04 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x3ecf0134 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x3ee10a34 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x3ef4cbbe fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f1b4cf1 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x3f1cb321 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x3f2329d8 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x3f67bf7f ps3_close_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x3f8c2e67 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x3f8db8ef power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fb51c67 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fd5e61a irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x3fe2bc99 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x3fe6cc01 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3fedae8a spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x402e58ea cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x403bc0c6 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x40525559 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x40575a9b of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x40648ceb fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x406e9437 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x4079fa2f pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x408b0fec crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x408bfad4 md_run +EXPORT_SYMBOL_GPL vmlinux 0x40983468 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x409d3cf8 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x409e0c88 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x40a8fa79 i2c_bus_type +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 0x410cc426 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x4111bd62 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x4136ce0e debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x415e164a pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x4171a2e5 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x419a7f43 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x419f537a devres_add +EXPORT_SYMBOL_GPL vmlinux 0x41a87b2e wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x41c793dd regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x420e9786 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x422b8dde register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x422f6408 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x42315614 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42849af7 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x429a387a rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x42acd03b inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x42b21cd4 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x42c6837f napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x432702e6 mm_iommu_mapped_inc +EXPORT_SYMBOL_GPL vmlinux 0x432b420c rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43c06c56 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f9dc49 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x441989dc wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x446285c0 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a02bc2 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x44b865cb __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44c01890 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x44c6bc05 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x44d7813d device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x450de37a tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45465eba kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x454e9d43 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45575b7f simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x455906b3 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x45645ab5 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457fa295 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x4595e313 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x45991c1a unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x45a6256d key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x45af2cd7 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460575dc nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x46202cf2 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x4633a620 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4658e4e5 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x4664defb skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x46690532 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468ea9fb adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46bb092d of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x46d9f955 ps3_irq_plug_setup +EXPORT_SYMBOL_GPL vmlinux 0x46e9b662 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x47140c37 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x473c00ac kvmppc_clear_ref_hpte +EXPORT_SYMBOL_GPL vmlinux 0x4741db42 ps3av_set_audio_mode +EXPORT_SYMBOL_GPL vmlinux 0x4757547f pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47943be7 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47ac94f1 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x47acddea ps3_sys_manager_set_wol +EXPORT_SYMBOL_GPL vmlinux 0x47c78497 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x47c7d28a ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x47ea3893 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x47f606a5 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4821235b extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x48325158 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x4854aef5 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48831b78 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x4887df84 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x4888e54d tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x488b3faf clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x489ccc3c class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48e5fe97 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x48e65d97 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x48fed916 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x490db26b ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x491bbc26 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x4947033a pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0x4976186b irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49b6d9f5 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x49d6da20 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x49e04dc7 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x49e07b48 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49fb4aca __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4a026413 mm_iommu_mapped_dec +EXPORT_SYMBOL_GPL vmlinux 0x4a075d23 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x4a16418a gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x4a28a73f pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x4a318f3f serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4a586b1c regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4a6f0acd crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x4a838a92 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abdbb9a ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x4ad46f48 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4b1ce15d of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x4b282d72 ps3_sys_manager_register_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b2c59dd tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x4b310c3e blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x4b668b66 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x4b6d68d9 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x4b79b1f3 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4b8006ce cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ba96c04 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x4bbcc163 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x4be37bfc usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4be9417f iommu_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4bed6df8 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x4bf93793 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x4c056ab3 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4c1846ed irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4c18f773 ps3_os_area_set_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x4c1c5838 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c69e281 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c79f7e3 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x4c7ba222 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x4c836d57 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x4cb643ab lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x4cc760d1 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4cd4e203 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x4ce0f62b hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4cedb4f8 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x4cf1ce4c dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d07e217 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4d6ef9ff usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x4d86a0db class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4d9f124c trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x4dad17eb flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x4dbd134d bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e007541 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e158828 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e25249c tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x4e332688 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4e36561a inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x4e3b94b0 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x4e3caabb serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x4e56c4d4 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x4e74349e key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f12d5c7 put_device +EXPORT_SYMBOL_GPL vmlinux 0x4f41ae0d sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x4f4206d2 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x4f4961ef ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4f5089e5 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f616dc2 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x4f660bde blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x4f68e6cd usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7a8b59 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x4f8411bb __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x4f895dd4 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4f9bdb89 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x4fa222a3 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x4fa57e33 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x4fb4fc0e blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4fbcb478 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4fd15a1c devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fdd5589 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x500ecfaa of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x501f3056 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x504b9316 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x506ed895 kvmppc_h_get_tce +EXPORT_SYMBOL_GPL vmlinux 0x507596d8 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5077f4f6 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x507dee23 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5107d580 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x510e1c71 mm_iommu_lookup +EXPORT_SYMBOL_GPL vmlinux 0x511e4062 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x51318802 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x513b5b91 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x5140857b virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x51467922 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51b867fd crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x51d7730d of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x51e03be1 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x51e9f6bd devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52187ccd bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x522c66ba seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523cceda dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x525f6f65 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x5261e3fb ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5270e42c proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x52726538 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x529e805a thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x52ac1fd9 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x52da6664 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x52dc7e44 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x52e0391b of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x52ec500b pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x53159026 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x534ab736 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x534bc859 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535957f9 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536402c4 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x536411ff md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x536795c7 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x53737686 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x538a09f4 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x539b1bf1 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x53bb500f srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0x53bb8775 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x53cd196d regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x53e18585 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x53eee038 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x53fa8bec cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x540f6a20 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x542a6207 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x542e4be0 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x543145cf regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54639588 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x5467579d spu_invalidate_slbs +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 0x5498dc16 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x54ad72fd usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54e194e2 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x5501cfad spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x5504a55c regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x550d9ab4 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x550e04ea register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554ae4de wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x5555d891 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x555f12ef fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x5594ad35 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x55de4f53 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x55e4e8dc wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f51ef3 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x55fb5c35 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x55fd75f8 iptunnel_pull_header +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 0x56317f81 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x56376b63 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x568d02ee set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x569c509a ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x56b9b9ba fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x56c01bfa cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e7bb94 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x56edb7c2 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x56ee796e pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5732b475 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5742666d crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x576681d2 regmap_update_bits_check +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 0x57b4b0d9 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x57b66f82 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c99afe md_stop +EXPORT_SYMBOL_GPL vmlinux 0x57d5a42e class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x58130eb0 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x5845ec06 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x58608b4d spu_setup_kernel_slbs +EXPORT_SYMBOL_GPL vmlinux 0x586fd594 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x587ba59a virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x58879b38 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589523e3 spu_switch_notify +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58c6cd39 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x58f63e3d device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x590502a3 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x591a7468 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x591c8c34 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x591e44b9 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x592e4973 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x594aec3e vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x59937e4f iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x59b04e3d public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59cd456a sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59eb96ef regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x59f96b23 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x5a30682f inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5a35225e pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5a5ae348 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x5a71fa62 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5ae504e7 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5b09ab0e cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b4e9949 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x5b82edc4 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b836ca9 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x5ba52bf5 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x5baa0796 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x5bb36495 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x5bbdd4c3 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5bc3f6cf kvm_alloc_hpt +EXPORT_SYMBOL_GPL vmlinux 0x5bcc3e6a kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd6635b ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bfe533c platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x5c07abc8 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5c52b56c sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc32237 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5cf9da3b __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5d0f93a2 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x5d106705 ps3_mmio_region_init +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1be51a pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5d284864 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x5d50410b __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x5d72d168 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x5d7bdcb7 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dafa447 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x5db00169 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5dd82930 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x5ddb9f84 kvmppc_do_h_enter +EXPORT_SYMBOL_GPL vmlinux 0x5de10ba7 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de72996 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x5defed26 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x5df02ba6 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x5e21bec0 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x5e2daa71 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x5e3cb4f6 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x5e493d69 srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0x5e4bda00 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e54d657 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x5e59d4c7 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x5e5b4424 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x5e6d2d4f ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x5e769986 ps3_os_area_get_av_multi_out +EXPORT_SYMBOL_GPL vmlinux 0x5ea526c4 device_register +EXPORT_SYMBOL_GPL vmlinux 0x5ecb0235 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5ecf7e1e mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f00bb5a part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x5f145337 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5f1926f0 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x5f224e27 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2f7d88 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x5f4f283a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x5f4fd4b0 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x5f5334e4 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x5f647f34 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5fe8d64f bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5feecebe unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x60063df1 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x603dadbc devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x603fdf37 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x604058f3 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x605fdfe5 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x6072eed0 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x60790344 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x6085dae3 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60d410a4 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x60f69b5c __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x6138f42f pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x61457d5f sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6155d824 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x615e63b0 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x616e9979 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61733d9e tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x617645d3 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x618e5513 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x618f9437 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61c4523a irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x61c9c21b tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x61cc0999 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x620befde rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x6223307a blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6244be26 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x625d738a mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x628cb9b6 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x62d8398e nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x62ea1a33 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x63125370 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x63233ae2 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x63314046 cbe_spu_info +EXPORT_SYMBOL_GPL vmlinux 0x6354cb4b dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63cd2e49 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x63e4dd60 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x63e9893a irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x63ff17c9 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64344b63 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x645ad4ba of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x645d3dd3 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x64b44a2b irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x64ba211c usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x64c780e9 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x64c9408e driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x64ceee4b eeh_pe_get_state +EXPORT_SYMBOL_GPL vmlinux 0x64d49901 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x64df92f5 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x64f6ffcd md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x65110e02 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65160d51 spu_init_channels +EXPORT_SYMBOL_GPL vmlinux 0x6538c68e devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x655cdc7e regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x65626ddd lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x656e73d5 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x6571d26a dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x65916b2c usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x6598f4b2 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d567c0 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x65ea4828 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x65fcc9df usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x66060079 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x661170d1 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x6614f0c9 ps3_vuart_port_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x66150055 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66346b06 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x666f436a tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x6672c15f regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x667a812c ps3av_set_video_mode +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66a70223 pmf_put_function +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 0x66f74b93 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x671ed7b1 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x6722bf76 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x67340425 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x6738291d of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x6740cb44 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6779a493 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a88a97 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67a8e438 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x67d757ce tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x67dbaaca ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x67ded1df class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x684009be device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x6868fdf5 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x687e1527 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x68889709 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x6890c7a8 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x689bba30 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x68b13189 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x68b49222 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x68b95147 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x68f2e8ae crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x68fa7233 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6937a001 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x694a9928 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x695a3214 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x69600cf1 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x6962de01 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x696987fc virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x69731512 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x6975afd8 relay_open +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 0x69b27a1c sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x69b44087 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x69b80f8c platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x69d6ce05 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x6a080de6 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a37828a udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6a3d90da blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x6a46d87b gpiod_unexport +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 0x6a73e722 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x6a8073f7 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a855601 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ab80ba0 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6abb509a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6afbfee4 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6b143b54 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b64c837 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6bbaa23c crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6bdb6ce7 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6bdd9bdd rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x6be2324b bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x6be37baf regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x6bee99ad restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x6bf893b0 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6bfa8023 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x6bfd7863 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c242486 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x6c26232b ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca8679d ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6cb1ecf2 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x6cb8db25 register_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x6cba7ce0 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6cc2fb2c opal_message_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6ce6106c sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d30bf7f component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x6d310701 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x6d353d62 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6d4f4552 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x6d6bdbe9 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x6d968d6e sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x6da6bafa rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x6db91533 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x6ddaae71 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e160807 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x6e21e52e crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e3e2462 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e65990d fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x6e6d35eb crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x6e6f126d fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7b173e debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e9d8aa6 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x6ed46b24 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x6f057de4 iommu_tce_put_param_check +EXPORT_SYMBOL_GPL vmlinux 0x6f169545 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f51611e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x6f56653c srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0x6f5b938d devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x6f763e4a usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6f945c8c __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x6f97851b platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f9a9311 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x6f9f8f2c pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x6fb80b18 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6fd13405 spu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x701202ec __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x702b15cb platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x703269ce relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x7039b10c rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7095e97d __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x70b1aaeb ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x70b7018a hash_page_mm +EXPORT_SYMBOL_GPL vmlinux 0x70b9e55e thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70fb8310 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x710692d6 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7117714e bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x7144effd ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x71571054 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x71601111 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x71617d11 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7180c499 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x71bd74eb __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x71d20749 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71d6676e relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e17854 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x721fd84c sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727b0f20 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x72a3f8b2 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x72bf6284 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x73241b4a rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x732c7e3c rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x73540c7e relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x7359a498 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x7364d8d1 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x739b0483 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x739f1359 srp_release_transport +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 0x73e01d24 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x740743ea devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744150f7 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x74505b8c irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x745534fb gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746d27a8 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x7472062f crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x747b40f4 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x74836804 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74b10b97 device_add +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b71e5e usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x74b7da57 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bea03b __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x74c4ad91 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x74cbda46 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x74dd5639 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x74eaaa02 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x74ec2b26 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x74f71ef9 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x74fc050c reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75263cb1 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x75278346 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0x75623012 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75c9d8c3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x75ccddc6 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x75d10058 of_css +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75e86611 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x760a56e8 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x76119fbc device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x761ed6ec hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x764b431e pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7651b25b component_del +EXPORT_SYMBOL_GPL vmlinux 0x7655e41d pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76e4cf4f usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x76ee220f devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x76faf249 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x770c20f6 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772aa354 component_add +EXPORT_SYMBOL_GPL vmlinux 0x77397cc5 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x776417fd scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x7768867d ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7770d195 spu_management_ops +EXPORT_SYMBOL_GPL vmlinux 0x7774a456 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7798fe6a of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x77a51d5e bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x7808ee19 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x780955b4 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x780e740c ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x78103ae7 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x782a3db9 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x786afea6 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x787b05ad regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x787c45a0 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78873499 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x7894e1e9 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x78a0da52 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x78abf283 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78bfde56 ps3_vuart_write +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78defbaf scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x78e1c9fc ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x78f50368 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x79148c19 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x79165f43 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x791797f3 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x7931f90b usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x7958c5f9 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x795b6af0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x7965a9cd usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x797fee89 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x79af7764 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x79c57637 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +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 0x7a750eb2 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x7a863e47 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ab2259a __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x7abe7200 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x7ace38ab to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x7ad8a671 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x7adb07bc regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b194977 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b2a1b3b ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x7b5c0e87 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x7b6424b1 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x7b65bbd4 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bb66258 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x7bbff591 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x7bf7b57e crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x7c0e353c usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x7c169edf wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c354046 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c3ffd7a xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x7c753099 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7cb1c423 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x7cc7e5d5 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x7cd3cc9b serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf6a8d1 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7cf7a52b usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d088839 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7d0aab1a __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x7d1b29ec fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7d1d1ade __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7d283ab2 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7d4c557b attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x7d4d3b2c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d6c90a2 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x7d95669a hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc1e388 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dfc5677 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e1a4551 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x7e510c23 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e93c1eb gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ebe723c class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x7ece39ae component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x7edebeff hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x7ee38a37 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7eefb9e5 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f1560d9 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x7f346f6f copro_calculate_slb +EXPORT_SYMBOL_GPL vmlinux 0x7f4622c4 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x7f52c522 ps3av_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f6de1a0 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fc02254 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x7fc11dfd cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x7fcd0f43 ps3_system_bus_device_register +EXPORT_SYMBOL_GPL vmlinux 0x80414156 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x8046ea64 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x80507f72 ps3av_audio_mute_analog +EXPORT_SYMBOL_GPL vmlinux 0x8059140d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x805b32c7 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x805dd084 smu_get_ofdev +EXPORT_SYMBOL_GPL vmlinux 0x805f6b0f dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x80652b0f crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x80715737 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x808cbd66 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +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 0x80e4cde5 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x81118f34 ehci_setup +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 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x814f55e5 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x815f4c62 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x8164af8e blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x81658611 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x81777ac9 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x8191abc2 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x81b34e74 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x81ccf7f2 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x81e9a6f5 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x81ea7295 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x81f393bc nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x82108baa regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x82131558 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x82238503 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x8249b2a2 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x8268ea72 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x82a8e581 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x82b825be tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x82ba9eff irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x82c03a4a devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82d85304 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x82e5f368 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8301a252 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x830dd3a9 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x83163369 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x8322b8ba ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x8326c90f ps3_vuart_port_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83596d37 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x835d8c3c skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x83612c9e remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x8398bd8d of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x83be6a2f usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x83f379b0 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x83fba0b8 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x8413de61 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x84185895 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x8420472c wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x84377df6 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x845590c8 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x84846139 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x848d447a cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x84ab68ea inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x84cdc57c noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x84d7a64b rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850a84fe tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8528897b hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x8528e03d pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x854c754b wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8552cdd6 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x8567e089 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x857e486c replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x8584665c pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0x8593e11f devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x85bdcb9e irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x85c234f2 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d61876 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x86139b7b skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x8614173c devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x8639075c flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x865294b8 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x8664b89d usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x8669c8d8 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8696ec21 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x86e3898b n_tty_inherit_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 0x86f92ee0 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x87031a0e pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x87078a64 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x87385dcd ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8745b90c tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x874726ab spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x875760d5 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x876a239d pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x877167ac free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x87a73843 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x87bc8928 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x87cd743b shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x87d607c4 spu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x87f24520 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8809a694 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x881b9a44 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x882a01b5 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x882bac34 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x886bac20 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88c72271 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x88cd8d4f virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x88deea41 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x88e6f367 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x8902530d pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x891a41f8 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8935463b sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8940e92d pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x895327b9 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a0de30f xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x8a267011 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8a2dc98a platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a2f4f91 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x8a3435cc debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a5bf687 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x8a6d9997 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x8a71af2b usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x8ab7e8c5 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8af4657a usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b8e6382 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b967e85 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x8b9fdfca pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x8ba8c113 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x8bd3baf2 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2b0bbb spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8c38ef9c pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x8c63e074 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c71dd9e devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c78a37d dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x8c88890a sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x8cc559b5 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x8cc70046 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x8cde0ffe power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d0cb210 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d29dba6 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x8d428165 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d43ed87 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x8d59fa65 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d60676d i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x8d6876cb of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x8d85367f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x8db64212 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x8dbf5a20 kvmppc_hv_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x8dc7bdc3 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x8dc896ba sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x8de23cfb usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e115c74 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x8e11a741 unregister_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x8e1ab9ec irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e311c63 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x8e629c2c relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x8e6b9a7e regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x8ea78e2b pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8ec56334 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x8ecce6e8 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x8efd59ca of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x8f019945 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f10f0b0 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x8f146415 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x8f48b9de ps3_free_mmio_region +EXPORT_SYMBOL_GPL vmlinux 0x8f6699f4 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f75acac pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0x8f825749 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x8f8b9980 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x8f8daff6 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x8f956c94 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8fced602 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x8fd840cd percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x8fdde700 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x902a084b pmac_i2c_find_bus +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 0x907adf5e show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a3d81e split_page +EXPORT_SYMBOL_GPL vmlinux 0x90c0ac6c eeh_pe_set_option +EXPORT_SYMBOL_GPL vmlinux 0x90c511f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x90ccb84b led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x90ed2b63 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x90f0697c kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x91094408 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x91185b36 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x912a3a3e ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x913b8f10 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x916fc608 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x918a1fe0 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91a8a997 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91cbf59f dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x91dd90e5 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x91e928dd wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x92039e1b blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x92057bfa ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x92062262 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x922819f7 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x922a3e03 pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x923214fe xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x924760b7 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92603195 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x9265f2dc sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92fb7bd8 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x93102cf8 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9328b07d system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x932c569a devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x93311080 opal_flash_read +EXPORT_SYMBOL_GPL vmlinux 0x93429c16 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x934db775 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9359a3e9 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x93614bb3 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x936d31bc sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x939d2ce7 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x93b8d98f tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x93c9812d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x93e721a1 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x93ed33a2 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x94105c83 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x94178113 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x945d3c38 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x945f6238 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x945fa660 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a566f1 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x94ac02ed regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x94b0a93b fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x94c2454a invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f7616b crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x95245eec dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95268b96 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9562b5eb __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x95652171 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x956de8b3 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x957c0139 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x9582c924 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95ed855b generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x9613596e devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96226af1 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x9625e331 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965a78d5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x965f23f2 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x966bce84 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x966e6627 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x96756604 eeh_pe_inject_err +EXPORT_SYMBOL_GPL vmlinux 0x969159da sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x96935b94 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x96ad8842 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x96b2c94b blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x96b801a9 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x96c84a7d pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x96e1b6f1 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x97085062 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x970cc41d evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x9710140d of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x97120d4d extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x972bf001 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9780c464 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x97843ba2 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x97bf1401 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x97d0acb1 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97df6a32 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x97f79839 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x97fdc0b6 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x9801ed0a trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x98098804 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x980fa03e ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x982735e5 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x982cd34a usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c1d29 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x983d5a86 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9854d3b9 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x986cee43 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x986f182a tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98841afa cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x988816fc vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x988fd081 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98e341db __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x98f44822 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x990b52cb __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x991259c9 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x991f566f ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x99204601 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992db89d sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x99332c43 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x997eb64d debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x99800b27 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x9986ee93 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x9987e6e9 opal_get_sensor_data +EXPORT_SYMBOL_GPL vmlinux 0x998af1fb of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x99a3e6b3 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99e410fc ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x99e42f44 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x99f0efd9 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x99ff8d08 opal_invalid_call +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1badfa da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x9a323abc kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x9a3a64dc regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a5eecf1 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x9a61f61e extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a6d7ae7 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9a6fbba3 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8b3ec2 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x9a8f81d5 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad68453 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9adf08c3 mmu_linear_psize +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b01357b pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x9b55308b usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb097b3 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x9bc3522a regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bd80353 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9bdfc9bd regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x9be4084c fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x9be51e09 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf92555 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x9c1037c6 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x9c306ca0 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9c636440 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9c9f5b19 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9cac518e sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9cb4594e user_describe +EXPORT_SYMBOL_GPL vmlinux 0x9cb5bb96 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x9cb5d126 unregister_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0x9cbab688 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d235f4b rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x9d26e1c1 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x9d84ea8d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x9d868157 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x9d8a97ab dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x9da8314e blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dcc92b0 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x9dd9b974 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9dded783 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x9de884a0 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x9df67c0f ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x9e269b1a extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e687da0 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x9e6bd6f3 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x9e6c1024 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x9e77d0e0 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x9e8b09bd crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x9e8e2253 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x9ebbdb0f gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef5c639 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9effd438 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x9f07b34c device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f4c50a4 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x9f841549 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x9fae96f2 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fdc319b perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0044aa2 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa040e412 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xa046e4a4 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa0862836 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0ad125b crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xa0b7ab70 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xa0c4e48f wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa0f2a3bd usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xa10e1fdd regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa1199eb4 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xa130d4d9 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xa1330785 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xa142f81b device_del +EXPORT_SYMBOL_GPL vmlinux 0xa15a693c ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa15e3f31 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xa174a734 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa17d5069 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xa18357c4 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1951cd1 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xa1965fa0 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xa1b65550 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xa1e7f916 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f0781f elv_register +EXPORT_SYMBOL_GPL vmlinux 0xa1f58266 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa209de2d regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xa2465db9 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xa254f962 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa28c81fc blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa290f2da usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa29c55cf crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2b19602 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2bd848d wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa2d136f7 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xa2e388c8 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa3112850 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa3367904 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xa371889c usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa3845806 dma_buf_begin_cpu_access +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 0xa3b99469 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xa3c0af05 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xa3dfd30e devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f7db5c pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xa425d92f adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xa44e21de dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xa46ba6d1 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48ae3d7 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xa4b13615 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4b8f132 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xa4bc7fd1 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa4bd02b4 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xa4edcff6 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xa51179dd max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xa5281226 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xa56ce3a9 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xa578e899 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa5790cc9 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xa5996724 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xa5a3df1b pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xa5ad91bf inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +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 0xa5f12da5 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xa5fb11fc regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa612853e tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62cff77 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xa63e9887 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xa6451573 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xa656713f max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa66dee5e rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xa68084c2 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa6880baf fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa6969eb0 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xa69b91af relay_close +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bb59a2 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e9d08d subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xa6eded6c opal_xscom_read +EXPORT_SYMBOL_GPL vmlinux 0xa721bc3f opal_rtc_write +EXPORT_SYMBOL_GPL vmlinux 0xa72295db __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xa73016da cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7866c80 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xa799c7f1 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xa7d76209 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xa7d8c17f __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xa7e27c20 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xa8114d70 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xa8181720 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xa8348d90 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xa834ab28 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xa84c3158 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa866eab7 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xa868ccda ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xa86f1e0c gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xa8738bed swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xa8837a60 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa89aab0a virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8c41195 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa8f0a9e7 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xa908ab1f sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa914b7e5 dma_release_channel +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 0xa9346ce1 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa93703e6 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xa9431dda extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xa9578218 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xa95862ca srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xa96d8a63 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa981aac4 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xa98cdb36 ps3_get_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xa98df59b wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aa1b00 opal_poll_events +EXPORT_SYMBOL_GPL vmlinux 0xa9aeacab ps3_mmio_region_create +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9cfb0d9 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xa9d0771a skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xa9d5eb63 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9d771f7 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e3f10e yield_to +EXPORT_SYMBOL_GPL vmlinux 0xa9f66b05 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa03f55a mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xaa0799a2 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xaa4d4b21 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xaa9f9687 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaf72976 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xab05a559 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xab14110a stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xab201d91 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2b243d ps3_irq_plug_destroy +EXPORT_SYMBOL_GPL vmlinux 0xab2fa4b5 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab413aeb dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xab495637 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab685f1f led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6e2628 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xab8065f5 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xab9ad59e __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xaba2db15 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd055c2 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xac774be7 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xac7a66a7 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xac7c11d1 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xac812c73 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xaca3c093 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xacaf293f rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xacc963e4 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xacd506e4 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xacd850d8 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xacdf0a2a pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xace50236 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf982a7 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad404c53 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xad5c93a2 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xad803b6f phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xad862e63 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xad95dab5 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd0cf26 device_add_property_set +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 0xadf77d39 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xae14d7f4 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xae1b3dc9 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xae48e112 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xae57ad45 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xae699b62 ping_proc_register +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 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8a5cf6 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xae9e6d68 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xaec9921f hash_page +EXPORT_SYMBOL_GPL vmlinux 0xaee8a6c0 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xaf279112 opal_leds_set_ind +EXPORT_SYMBOL_GPL vmlinux 0xaf3bc0ee vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xaf427f20 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xaf541605 pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0xaf69f55b crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xaf81746a is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xaf956ac0 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xaf9a21b9 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xafa810d0 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xafafa33f blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xafbe6c9e kvmppc_hwrng_present +EXPORT_SYMBOL_GPL vmlinux 0xafd7f434 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xafe73a8b gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb013c3fb pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xb01deb03 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xb03c0393 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb05833f0 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xb07238de mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xb0a18f61 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb0a85b9a cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e6c221 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb15351ae ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb157807c ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xb16bcc2a mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb1798bb6 ata_sas_port_destroy +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 0xb1c28dec sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ecf0fb fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xb204da63 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xb20796af gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb20ea04d ps3_vuart_clear_rx_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22429e6 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb227d27a ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xb22c5b9e of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xb2559f42 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27aae1e unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xb29d2b71 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xb2a386d3 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb2c90c33 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xb2cc4bb5 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2cd9d97 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xb2d7dae4 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f8ca49 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xb3001523 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xb345bf43 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +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 0xb39a18fa irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xb3a6d3cf pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xb3dc0474 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb3e58515 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xb40db0f9 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xb41cc4f1 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xb43aba4e tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xb45f192a nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xb471596c pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb474022c stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb4962acc attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xb49b8263 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c75497 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xb4d25ab9 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52abdfa pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xb532c336 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb545b707 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xb574165a skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xb57ca099 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xb5803d7a mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59f37c8 shake_page +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5b213e8 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xb5c6448f usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb5c64c2c fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cd03d1 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xb5d67107 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f841ac usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6153234 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb61a82d9 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xb623afed sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xb624114e power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62a09ba adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb64d26dc spu_associate_mm +EXPORT_SYMBOL_GPL vmlinux 0xb66084bf ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xb6771d11 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xb679e4fd device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb6a345d5 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xb6ac036b fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc007a spu_sys_callback +EXPORT_SYMBOL_GPL vmlinux 0xb6e2e2a0 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xb6f91f49 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xb6fc599c fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xb6fffc8e of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0xb70137d6 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xb7075fd8 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xb71440e2 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xb71eef2a srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb7465e53 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xb75d9c4a bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xb75db72a kvmppc_add_revmap_chain +EXPORT_SYMBOL_GPL vmlinux 0xb7a6536c cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xb7b2baeb srp_stop_rport_timers +EXPORT_SYMBOL_GPL vmlinux 0xb7c38cf6 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xb7d5a706 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xb7f23a38 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fc1381 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xb81a3e47 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb8382824 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xb84b1aae ps3_event_receive_port_setup +EXPORT_SYMBOL_GPL vmlinux 0xb89e90dc pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8fea08f stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb902dd15 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb922e55d phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xb9314f7f nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb9470055 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xb948fa2e ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xb94de068 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb9579fc9 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xb9643461 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xb977551d ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xb980dbd6 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xb9868c53 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xb99b153a attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cdf96c sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d8745c tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xb9dc96b1 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xba045031 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba15a8ab of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xba224ec8 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba6d8ada sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xba79bb0d vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xba92b21e __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xbaa3ff19 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xbaaa3c19 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad78c1c debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xbafeecbd devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb05cd49 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xbb08aa74 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb169968 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbb289bde iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xbb2f7e16 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xbb47576e attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xbb49aafe spu_64k_pages_available +EXPORT_SYMBOL_GPL vmlinux 0xbb5188ec skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xbb5b1aa4 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xbb685d15 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbba0a140 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xbba39b25 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xbba7e07c __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbbc6fca4 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xbbc7c35e skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbf4367f smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xbbfc2f1d transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xbc014769 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xbc05eb9d dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xbc0d894d get_device +EXPORT_SYMBOL_GPL vmlinux 0xbc140edf of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xbc1a576b scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xbc2d52dd usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc4c654d pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0xbc53aa8d of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xbc68348b tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xbc687c8f irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xbca8b543 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xbcab6c97 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcc1d857 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce46bb3 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xbd0bf45b pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbd34e5cd generic_access_phys +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 0xbd78e710 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xbd7b9380 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xbd7d4122 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xbd87977a gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xbd98135a spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xbdc02a2f phy_init +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde5610a ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xbde8dc00 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xbdfcf329 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1da29f dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xbe1e7e29 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xbe1edcba regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xbe46787d usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xbe471cdf opal_rtc_read +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe8184dd tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebe6f1d napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xbec15b5a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbefcd747 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf2584cb nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xbf2f8fbd ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xbf33d711 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xbf54141a pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbf5c18de rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbf6e2322 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0xbf8b11a0 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xbfa2815e tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfb4aabf irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xbfb68309 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc10572 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff0961c ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc0205d6d ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc029e6a1 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc03ffe02 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xc0562253 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xc05f16f4 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0867de6 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xc08d548b __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xc0a6bf7c adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xc0a8442a skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b19b54 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xc0b63893 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xc0be2b42 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0xc0cea587 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d6b049 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0ed4110 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xc0ee9f5c perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xc1292cba pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xc12bde3a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xc13db16b xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xc1498b88 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xc16a6135 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1ac8608 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1cad80a __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc1cdb92f put_pid +EXPORT_SYMBOL_GPL vmlinux 0xc201f047 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xc203e385 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc2113fcc __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xc21819c6 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23627aa get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xc255267f usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc2652cf5 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a75025 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc2b953d7 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xc2bcc5f8 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xc2bdbda6 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc2c05c0e iommu_take_ownership +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2d7dbac ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xc301a75a reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc3043258 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc32387ff debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc32954e9 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xc337699c iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc343061c of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xc349cab7 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xc3578a66 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3a82eca mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc3a87754 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xc3d046bb regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xc3e40cc3 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0xc3f7aa1d pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xc3f7ae14 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xc4240f3e rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc439ac7f gpiod_set_debounce +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 0xc477609b ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc4869bfc pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49ac353 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4b399fc regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xc4c4e306 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc4d15a17 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xc4fa1fcb shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xc514ead7 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xc52f683a fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc58a1687 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xc598e928 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc59a1c47 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5ad9d2a mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xc5c20d84 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xc5d5fdbc pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xc5f2f186 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc610104b __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc627431a alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc6279bd4 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6510226 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc661c3fa blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66c2311 ps3_vuart_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc674bb25 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc679741d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc68af1b0 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc69027dd user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc699404f led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xc69adb78 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6c69a8f opal_flash_write +EXPORT_SYMBOL_GPL vmlinux 0xc6e2f79a percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc6e37eb7 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc6e96122 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc6f0a86c default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xc6f1dfe3 user_read +EXPORT_SYMBOL_GPL vmlinux 0xc6f621b0 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xc71ce471 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xc71d7411 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc767bc9a ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xc76b3fac dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xc775db89 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xc778b9df power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xc787d3ad phy_create +EXPORT_SYMBOL_GPL vmlinux 0xc79cbc91 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b85655 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7dddf4f regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc810729b ps3_vuart_read +EXPORT_SYMBOL_GPL vmlinux 0xc82091b6 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xc82926fc blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xc8389653 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xc86ba2d8 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xc87604b1 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc883fe37 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xc894e371 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8d08ae3 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8ecf0d4 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xc8f7f8f5 regulator_enable +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 0xc92303a2 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xc9383c55 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xc941177f wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc953729a scsi_internal_device_block +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 0xc9b56d3e crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9d86e3e perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9ed64ee trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xca1f7567 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xca4418b2 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xca45bf9e thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca4a7cbe ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xca56d9fd usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca97447f pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xca995ac2 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xca9aece0 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcaa3f056 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xcab1eb0e device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcaccf2d6 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xcadc0383 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xcadc6b9f sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xcaddad92 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb178a50 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5ee621 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xcb8799bd skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xcb8c06c8 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xcb940b91 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xcbb49c38 register_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0xcbc0440b usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xcbd2dd25 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xcbd67715 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xcbd74ef2 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc0d746d trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc1d1efa of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc3c8b21 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xcc4c892a handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc680cfe gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8ce1d2 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xcc92fad3 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xccabbb93 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcd1d0762 kvm_release_hpt +EXPORT_SYMBOL_GPL vmlinux 0xcd4a16a0 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xcd4e97c0 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xcd501909 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xcd827346 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xcd83abd8 rio_request_mport_dma +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 0xcdbb863b pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcdbc3645 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdca5c30 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xcdfe7d4b rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xce132a97 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xce2ae85e gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xce368f35 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xce524a97 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xce5f28c2 __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0xce672746 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce77c7f7 drop_cop +EXPORT_SYMBOL_GPL vmlinux 0xce7b56e5 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xce82a7c2 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce8edc34 spu_switch_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce91e0d1 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcec10de1 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xcec704d2 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xced88a97 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee5396d usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xcef0426f extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xcf09dc8c usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcf0ea470 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcf189026 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xcf4b81fd led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf658eef skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xcf8170ec to_nd_blk_region +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 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfb599ac cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc9ed39 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xcfec57a9 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcff247f1 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xd01afd3f opal_tpo_read +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0461dae pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd065aaf0 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0890fe3 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xd09a2995 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd09b0d14 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xd09c64e9 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xd0a7d5e9 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xd0b42e59 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xd0bd2819 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cbb2bd pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd0db92fe rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xd10185ec cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xd134be62 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xd1442a20 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17b171e regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd1daf84a da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xd1ddf4ce invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd202e04e spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd229f97c regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd24bbfc0 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd25c8b5a regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xd2607651 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2a98f3a posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xd2b1563d shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xd2bd5635 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xd2d1e991 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd2deb0a4 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xd2e37b0a to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd3085399 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xd33ad030 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xd38d9c38 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd3c456b7 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xd3ed1cfa power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40974bf iommu_release_ownership +EXPORT_SYMBOL_GPL vmlinux 0xd40d8461 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xd412ef14 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xd4144651 device_property_read_u32_array +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 0xd473fdee pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd490ad0a pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xd497412f pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xd4b17e7e init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xd4b3d11e register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d23792 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xd50035f3 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xd52b3c40 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xd53fbba3 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xd548677d fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xd54be314 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd54f1c7e usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xd5596d48 opal_xscom_write +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd567b86a pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd5709cc4 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xd57669bd debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xd595cc17 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xd5a265ad devres_get +EXPORT_SYMBOL_GPL vmlinux 0xd5aae224 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xd5b6d6a4 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5f4a913 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd6138410 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xd61aa204 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xd63a57ea ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xd63d81de sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xd64a92ff spu_get_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0xd664a8e1 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xd66da02b tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd686837a tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd69301a2 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd6990d45 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd6a43677 opal_async_release_token +EXPORT_SYMBOL_GPL vmlinux 0xd6b8dbe4 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xd6c72a24 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xd6e8ad31 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd705e828 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd70d0f3e clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xd731c191 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd777a634 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78287ed tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xd790d3f9 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xd798efc1 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xd79ce2b5 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd7a5a70c of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xd7ae23b8 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd7d17e55 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd7fc3e98 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xd81a5de6 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd829d7b2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd832b8ca xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xd832ee28 eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0xd845b458 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xd8498f4d ps3av_mode_cs_info +EXPORT_SYMBOL_GPL vmlinux 0xd84d10c2 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xd8569034 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xd856c1ae sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd87570be trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89a2421 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd8b56146 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xd8c47f68 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xd8c85a43 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xd8df6dba power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xd8e69222 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xd8eec1d9 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd93edc14 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +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 0xd97127aa usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xd97878a7 mm_iommu_preregistered +EXPORT_SYMBOL_GPL vmlinux 0xd97a02de mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd97b47e6 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xd9ad5742 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xd9bc648e pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd9d51a58 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xd9d92298 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda0fb5d9 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda704542 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xda7250a2 devm_regmap_init_mmio_clk +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 0xdb0082d0 scom_controller +EXPORT_SYMBOL_GPL vmlinux 0xdb01a91f stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xdb0ac13b ps3_compare_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xdb0d4790 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xdb20d744 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xdb22aecc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xdb29af4a bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xdb30d495 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xdb35ffd0 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xdb4bace8 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xdb7694e1 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb9db6b4 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xdbabb8af ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xdbc7ddc3 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xdbd64472 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xdbd821d4 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc15675c blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc3493a5 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xdc74b69a __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc937864 spu_switch_event_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97a5fd sb800_prefetch +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 0xdcaf5e4d usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xdcbad96a macio_find +EXPORT_SYMBOL_GPL vmlinux 0xdcd27d1d ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xdcdfdfff crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdcf22739 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xdd043eea ps3av_get_auto_mode +EXPORT_SYMBOL_GPL vmlinux 0xdd17f62d scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd35fed9 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4f212b irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd5ad66d ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xdd67d298 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd8d03de platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xddb3311a virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd4289e devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddfbd433 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xde128df4 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xde1c0c2b dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xde3ddff4 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xde4b9f8a blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xde4f260f ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xde693c50 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xde852055 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xde9909ec ps3_vuart_read_async +EXPORT_SYMBOL_GPL vmlinux 0xdea6f232 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xdeb3d37f devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xdeda5827 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xdee1bb5e rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xdef6fbda dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf26d607 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xdf283163 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xdf2dac7c pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xdf6ee26e xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xdf7820c7 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0xdf7bda9a transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xdf80476d trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdf8cffc3 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdfa70cc0 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xdfada76f device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe3d029 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe0021b61 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe011f817 ps3flash_bounce_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe027861c devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe0452567 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xe04b7f98 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xe0776fbe sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09eb8f3 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe0a1c266 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0ddf0cc rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xe11e3a19 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xe1632399 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xe1698d09 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe19869f9 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xe19fc092 ps3fb_videomemory +EXPORT_SYMBOL_GPL vmlinux 0xe1aa1aa1 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1cfce4f wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xe1e017fd alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xe1f77a72 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe1ff001d fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xe205fed9 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xe237a267 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xe23b6342 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe243d54d ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xe27437fc vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xe28885cb device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xe2896203 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2bcef8e fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xe2bef7c1 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xe2c2e0d5 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xe2db208c rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xe2feb450 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30e782e extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe3182384 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xe32d2ef9 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xe337b597 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xe357e69f pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xe36da881 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xe383db7a md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe392c503 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xe3a67563 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe3a8a145 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe4134450 class_dev_iter_next +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 0xe4342f27 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xe445c19c regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe453ea50 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe45bc98e thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe4600067 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4690612 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe486f97b of_get_phy_mode +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 0xe4c2cf22 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xe4c704a5 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xe4ef5685 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe4fc5cb9 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe52eeabc inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xe5394b32 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xe53bb240 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe570d178 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xe588073a dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5bfec70 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xe5cb07a0 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe5ea86af mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xe60bb458 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xe614362a ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe6183d6c crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xe61e3820 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xe63db453 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xe650ee11 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65d77d9 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe6608691 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe6a3a849 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6df23b8 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe7079e61 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xe727885b shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xe74e1b5f of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77d1d8f blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe78a5a24 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe79fdc65 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xe7a17711 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xe7ab2a8a bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xe7b72abe dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f487f0 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xe7fe33b0 ps3_vuart_cancel_async +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe810a7e7 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe820d4b4 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xe8392030 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe850593f usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xe857e9f4 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe863945d rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe86d13ba devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xe8850a42 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8a76415 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xe8bacd6e usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xe8d1526a early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xe90732ad proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xe9286ae6 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9506579 iommu_tce_direction +EXPORT_SYMBOL_GPL vmlinux 0xe9594a28 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xe98006eb trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xe98dcd2f device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe98ec4c3 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xe998746a unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xe9a57239 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xea08a5ef root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea2def2e bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xea3938f2 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4a9806 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xea589b5a gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea86602b device_rename +EXPORT_SYMBOL_GPL vmlinux 0xea88273d virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xea9d2522 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xeaa67c6a virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xeac2d009 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xeac4d841 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xeac52093 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xeb0d3e07 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0xeb0fa598 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xeb175b19 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xeb180999 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb5f7878 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xeb76c0f4 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb7da73b devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb8f5355 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xebaed381 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xebb28f33 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xebd9d681 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec11253f ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xec118868 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xec18f164 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1cb342 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec38f358 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xec43728f inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xec50c548 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xec5d47aa smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec7f7dda scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xec88d110 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xec8ce443 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xecaab1e9 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xecabf30d crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xecaf3564 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xecf85b68 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xecfaa41e rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xecfbf303 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xed27bc6d usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xed393c88 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xed84722d ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xed9eca8b __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xedb22f1b mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xedc53a90 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xee0515ac ps3_system_bus_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xee0696e6 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xee0ddec1 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xee305ec8 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xee4b69c9 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xee577e71 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xee5b0d08 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xee68a2bb of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6e0057 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xee6f1bd0 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL vmlinux 0xeea86b2d rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xeebb7749 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xeec6bdca kvmppc_h_put_tce +EXPORT_SYMBOL_GPL vmlinux 0xeed09e41 eeh_pe_configure +EXPORT_SYMBOL_GPL vmlinux 0xeedbb9f0 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xeef57ab9 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xef030d4d tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xef0922e8 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xef4ae670 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xef5fa9f2 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xef676a6c usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xef6a8ab1 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef753701 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefcf42ae genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xefd5388c regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xefecb828 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xeff284fa nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf0265b51 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04b0fdb regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf098dd15 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xf0afc712 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf1005c53 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xf10cac2e sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xf1136dfc netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xf14989fa inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xf14e3d20 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf179da69 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf17bc46f device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18acdac regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xf1a18e37 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1defce8 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf1e0a181 eeh_iommu_group_to_pe +EXPORT_SYMBOL_GPL vmlinux 0xf1fa6c43 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xf1fbc375 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf20d3372 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf228e508 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xf25e5817 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xf2736854 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2909a5d regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf2950222 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf2e5c71f ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f3eb3d usb_disable_ltm +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 0xf31e9699 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf356747e usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xf3712c48 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xf379a7d9 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38dcd58 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xf39ecadb regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xf3b135d0 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b4d351 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f56f5b ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xf3fbf220 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xf4135b98 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xf440f95b ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xf444989e device_create +EXPORT_SYMBOL_GPL vmlinux 0xf445d9e3 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xf457a4ca firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xf4594703 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xf461ee08 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xf4679d42 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xf469c705 ps3_io_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf494783e regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a839c4 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xf4ada346 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xf4c5b3ea rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xf4e4ff2b devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xf4fb97e1 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5177d1e pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xf52a7bc8 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xf5385c7a dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf568320f regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xf57eaefc ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf58d9dc0 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5df9af1 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xf5e12786 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xf5e17ead da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xf62a136d dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xf62d68fe tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf6667103 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xf66eb5d6 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf686453b nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xf68b91f0 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xf68c9ca2 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xf69f3518 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf6a2143f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf6af98fa modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6cb0bc0 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xf6d73c44 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7052cdb fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xf724262d regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf743f8b9 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf769c3bb reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf77365ba tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf77c5f2a bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xf78d9e21 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xf7a29a4c bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xf7bcc1d7 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xf7edf60a spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xf82ecbe4 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf8464b39 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf891fad9 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xf894fd97 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xf8ac428b perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xf8bcd894 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8c62500 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf8dada94 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0xf8df417e __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8ef758e platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90c1f4d ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf94afd6f fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf966ec54 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9bae6a9 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9dc2819 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xf9e24eb1 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xf9f0cbd4 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xfa0d7845 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xfa1a028c crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa2c883d dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xfa2fa390 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfa46133d devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa5a29f0 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xfa67f458 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xfa8fb380 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9f3e89 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfac1ba14 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xfacd0e85 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xfadfb87a ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xfb073192 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +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 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb97bb25 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xfbbd3d5d sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbd390e3 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xfbd3a24d opal_message_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xfbf67b8a ata_sff_port_ops +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 0xfc49dc60 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xfc5c4c35 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xfc6ea260 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xfc8c78ef rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xfca44dd4 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcb5780f blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcfc7ed9 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd13a738 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xfd1cbc90 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xfd23273f irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xfd41310f regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfd537006 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xfd5a040b usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xfd5dcac3 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd8b57c2 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd9c1049 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xfda94499 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xfdada2cf disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xfdd60964 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xfddd285f mm_iommu_ua_to_hpa +EXPORT_SYMBOL_GPL vmlinux 0xfde25770 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xfe013143 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xfe099023 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xfe13d501 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xfe2db135 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe66ffda __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xfe77e0cf pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xfe780ea7 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9bb48c mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xfea874e8 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xfeba2843 iommu_del_device +EXPORT_SYMBOL_GPL vmlinux 0xfeceb514 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed444fb sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xfeeb7d53 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff004b2a max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0dacff ps3av_video_mute +EXPORT_SYMBOL_GPL vmlinux 0xff2e857e ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xff414da8 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xff4b3af5 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xff4c466e dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xff57ae09 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff7ca046 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xff8d8ee7 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xff9446fb spu_set_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0xff9eab22 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xffba5e84 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xffeedfca crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfff900a8 ata_cable_sata --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/powerpc/powerpc64-smp.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/powerpc/powerpc64-smp.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/ppc64el/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/ppc64el/generic @@ -0,0 +1,18238 @@ +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 0x16bd3303 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x6f3537e5 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xac0c60e1 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 0x0921c146 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x1e75b6ea pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x3f8bed2b pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x48bba425 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x72c1491f pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x82691071 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x89be687e pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x91c6adba pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xabba30f6 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xd127361d paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xd89e8957 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xdc13fb18 pi_read_block +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x8834336e btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x10f1c24d ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x159bbe68 ipmi_smi_watcher_register +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 0x480f53b8 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 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 0x9a325491 ipmi_get_smi_info +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 0xe3f72187 ipmi_register_smi +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 0x52c8f625 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x61515814 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xaab28c63 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xc3817efc st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x19ee3034 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x7422d69e xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x978bbc3e xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x2cf2bf8c dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x473e4a3d dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x54aef31d dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x57a0303d dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x6eedde47 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x91a41f40 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/edac/edac_core 0x1f37a1f4 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x006cce9a fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x09eb9d1b fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +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 0x18a99e04 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1bcbeb41 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x28a5e0b6 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x28e27591 fw_iso_resource_manage +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 0x491a13cc fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x54fa4fad fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x584b9da0 fw_send_response +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 0x65d80213 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x72bb1ec5 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7b6e7818 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8e4daeed fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x93fcd662 fw_core_add_address_handler +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 0xc5936dc1 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe0e27f9d fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe2ce4847 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf3fabc93 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfabbf72f fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfe7c36f6 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfed07539 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/fmc/fmc 0x0cfc7314 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x0e07c11b fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x1fe7e29e fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x346d3224 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x393db06c fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x3d8f89e7 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x7bca05ea fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x8b5a5d8f fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xa49dfdfb fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xd3a7a3c0 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xf309b1f7 fmc_device_unregister_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0x020cf500 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x021bb5c6 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0291e894 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02d1fd2a drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02ed4a7d drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x033118ed drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x035b9c46 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0425083a drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04bee809 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05657f99 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x059ae767 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x069d78f6 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06ce2128 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08453cda drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x096a9bee drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a96bdba drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b64f97a drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b7dde8a drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c5ac482 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e8a0824 drm_atomic_get_plane_state +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 0x12bddb1e drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13715dc6 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1507eba7 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15138b9f drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15933963 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15b0ebbb drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15f936a5 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16e2c9c1 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x177f1934 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x182eefc7 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19327751 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19461c7e drm_connector_register +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 0x1adcc6e2 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b5199d5 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bc1f660 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bebdf85 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c144055 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd91ffa drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e09ed66 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f176a6d drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f921184 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20b3e433 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20ea3713 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22b88b26 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23ecee8b drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2473438f drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26307540 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x267ce2ed drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28e2cfc4 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x292b59f7 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29609d9b drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2973c50b drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b1b4b1a drm_connector_cleanup +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 0x2f354f84 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30a5fd0e drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31209357 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31be5c37 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31e0a93d drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x324a2552 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3260e8e0 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33969aac drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33dd5a2f drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3515ac87 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3529d2c3 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36459355 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x373b44e0 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x381565eb drm_vblank_put +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 0x3b428f9d drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cef2df2 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dff22e4 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fecc28e drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x403bf596 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4215339e drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4253e2e5 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42cb38a2 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4310ee70 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43df4c95 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x466cc616 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46bfdb61 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46cdd65c drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49181b45 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49f54e72 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a062dae drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a0d449b drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a80ed88 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ca441a4 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e75741d drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e974166 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4edabffb drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ee1e888 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f734af7 drm_platform_set_busid +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 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x527f631f drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x527f70e9 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x536a6e98 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5473d550 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54b2f774 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x554c20af drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x558e164b drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x568a0f2a drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57392713 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5746ce0c drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57849a08 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58bf7aab drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a24a252 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a5330f8 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b37b359 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c75f626 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7f1697 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e8e1bac drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ee70d8f drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fc13781 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65f178b0 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x669381fa drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66a63b48 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66ea1400 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x675ed1a4 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6785d31e drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67f3023d drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68d1401a drm_irq_install +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 0x698ab60b drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aae0707 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c21bbc6 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d97686d drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71572b4e drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71682328 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71f741ed drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7234d270 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72873170 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x747a446a drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75fafac5 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76ae8c62 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77b8608d drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77bc6de1 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77bfda34 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77dc778e drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7846acb2 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79385be1 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ad63e5f drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b00d5b6 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c2b7bd3 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f5d4f98 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81be369f drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81d12d6c drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82a62d24 drm_crtc_vblank_put +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 0x83b9cc4d drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84a8521c drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84ff8315 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x853068b0 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x868de1c5 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86c81b35 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8747db06 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8785c19d drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x882b576f drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89bfb011 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ade6e55 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b7109c6 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bc30b26 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cb1be49 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ccc06c9 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e961c19 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x907efd6a drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91ddd2fe drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92371641 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92cc93a2 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9352db2b drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93744784 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93c096a8 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94f585a3 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x968c84be drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96cc5851 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x973c60fa drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9757ce43 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97b03326 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x991274a7 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x992e9d2c drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x993a5de5 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b4eb541 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d74a1b5 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e1f1b89 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e35a319 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e94f236 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f5cbca9 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0412754 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa066c177 drm_object_property_get_value +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 0xa321c1c7 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa49acdac drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4bba1fd drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa585dc11 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa643c274 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa79e99b1 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8e80792 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa93c54f6 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa95c88a1 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9bdac85 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9e22550 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab33945e drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab4e622b __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac19d39b drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac2a6976 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadcaf5ef drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf12dfbb drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb032a4a4 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb08c7496 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb13f782a drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb24e6226 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34d08be drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5d793df drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5e33f08 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6be6af1 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6ed6995 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9c14c1d drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb31792a drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfd4037c drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc044b55b drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc058a7c2 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc155c4d3 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1b96daf drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc20023ff drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc201f4cb drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc32768fc drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4202906 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4ac16b9 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4bc2d97 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6f059fd drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc93f27ef drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc96bfab4 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc988a19b drm_atomic_set_crtc_for_plane +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 0xcb63d846 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc84eeba drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccc46d3b drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd85f1d8 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfd0e9e6 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0b0e804 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2edc308 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd37473b8 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd401a20f drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd423e570 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5c95947 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5d6e278 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5f9df05 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd918de38 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9528040 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb801937 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdca0ded5 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf4fd54b drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf6e4100 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe27b3428 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe27c01c5 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe48c9b97 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4e6c161 drm_cvt_mode +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 0xe791de23 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe93913c4 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9700398 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf055cc5f drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c59fbd drm_vblank_count_and_time +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 0xf332d63d drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf38b0188 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3ad5924 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf43aca2f drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf59cc5e4 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf73db064 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7734989 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7788345 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7c7aed2 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7cb4b2b drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf90a9dec drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9480156 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfac6c4ef drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbdef220 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcd98e52 drm_gem_prime_import +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 0xfe94d1f1 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x02b0e140 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03cea61d drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04ce2d74 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0597a0c3 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07467962 drm_helper_resume_force_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 0x0adf7224 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c8b0ba5 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e90da8d drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f31f042 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 0x1548523f drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1dce5914 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20ecb302 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x243134e4 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27da1aaa drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27fd27a7 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2aaf002d drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d543f18 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2eb236dc drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x323576d9 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3258a29e drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3300c48c drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33a129ec drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35a3534e drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36561d57 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38131606 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b994aa4 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3cecfdc6 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40eade5a drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47df2ae0 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4948c54f drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c5e968a drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d33dcab drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4de2925d drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55f01ac3 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5684648a drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57fde249 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x658def54 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67ad160f drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bf546dd drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c78a940 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6cb08a0e drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d4b7e4a drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ddfd7ff drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7648cf60 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x775e772e drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x780d5093 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a73524c drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d2ec5b6 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e074363 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81f94a53 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x834d4eca drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87442adc drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ae67a6a drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fc95d55 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9409eb47 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9419a44c drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9645bf5d drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a06929d drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0b1f91a drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2e82754 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4255bb0 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 0xa5c93f0d drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa72b46ff drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa730ce42 drm_helper_mode_fill_fb_struct +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 0xac5978c9 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaffd39b5 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb08b1b1f drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0efd5fb drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0f3a388 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3ac69c7 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb51aacc6 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5c0e42b drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8564898 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb86e3d51 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8922f7e drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1c5464b drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc32e6192 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7f6b77c drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdb501ed drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce3cd71b drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1138251 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3d2c1bb drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5a6870a __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda494768 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc8b49b3 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdea53c5a drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1e3b847 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe222f407 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4a20366 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4e884d4 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe56cbd03 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe896e303 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe92eaa66 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9691751 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeaa40d21 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec924add drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed82f919 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee5087f7 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0b1daf2 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2d26d60 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf32fcf74 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf390357f drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf706f466 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf713e362 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf758d29e drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9c31e61 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa13177e drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe669843 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff80e5d9 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x037d2f9c ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x038bf430 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04cbdfdd ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a908357 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x210e8b1c ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ff76d6 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x260ad054 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b5891b0 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x302e3364 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31e05207 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x325b157f ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x379f31cd ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x39c92e9f ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d4d00bc ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f72a685 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e3bc8db ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4f151acf ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4f3ecdbd ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x52b5ffa2 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x52f50e24 ttm_bo_init_mm +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 0x5afa9004 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ab32312 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ba6ea94 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6be768a4 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71203ec8 ttm_bo_move_ttm +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 0x8171035c ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8513ba1c ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87847f90 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x888e378a ttm_object_device_init +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 0x8ec961b3 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9148049a ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94b6039e ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x97d3f48e ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa93f0236 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb15a4b9f ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba471fd2 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbeda9b45 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc449b34c ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f514b4 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6588cff ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccf55632 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce3ea4a4 ttm_tt_bind +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 0xd11be035 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd131fe3f ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd65325df ttm_bo_clean_mm +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 0xda307ffe ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdae1a5bb ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe15138a4 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe7d3131b ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed723803 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeeb261e2 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeee97612 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefa3ea35 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf006b1cc ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb6822f9 ttm_agp_tt_create +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 0x032181c3 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x49fe6402 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xc20cc660 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x5d7a4952 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xf35c877c i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x301268a0 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x00880780 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0230dfbc mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x099a3b05 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1b70031c mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x23fa57f0 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x362a393d mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4d3b8ccd mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5d692c63 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5fa06f96 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x676f71d3 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6829c8ed mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8db44c53 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8e851b9a mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8e88e05a mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xda1f685c mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf2c87f41 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x48db3fc0 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x549d8112 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x244d6284 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5618db75 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x96cf24a0 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xaf1d69b9 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 0xd1239be9 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xe56f04b3 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x20f80b57 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x6ffb247e hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x760ef4ef hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa150e222 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x0a51cd73 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x14c0a8f3 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x43a2cf9e ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x78decf69 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xfc7bcd0e ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x40152bb9 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x4ebc454d ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xeee5d786 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x048994c1 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0f2ebfc8 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2e03cb42 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x543584c6 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x748e39e3 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x93b107c1 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa6176026 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaa3ce56e st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbd343b97 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc1b711a2 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc254a5d1 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc90cfbfc st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc9150b73 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xda91f61d st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe7201be1 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x2d7268e4 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x55921545 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xb5435c3f st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xa13c1d58 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xfc4675c0 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x4612c109 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x6c7e03db adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x044c8922 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x056399fa iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x297a9701 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x29d7da54 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x2a0719ad iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d44682d iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x33bff726 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x59b16656 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x5fffe947 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x76b4a52b iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x9e9b03bb iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xb8878cba iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xc184559f iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xcc8a46e3 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xceac0e83 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xd93111a7 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe8978ffd iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x1fd4e5c6 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x626c3bac iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0142046c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x7f6f2d49 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x9516ad8c iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xb0944294 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x8a2269f7 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xba04d5cd st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xcd5c008d ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x9521dbf4 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xa3057c7d 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 0x7cb5c84a rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x02bb3f51 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x14634c19 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3cfa2d42 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x50748542 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5c4c845e ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x62eaf45e ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x68f03ee6 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6cf6c4cf ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9654bb61 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9dc55b4c ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xae62dbae ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbd1aabdc ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc4650e17 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd32089a5 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe16ea946 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf6d15f98 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf8e6a2ce ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0590dce6 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07485e10 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a651fd1 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b51be38 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1aca7743 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b1f8f2e ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20257b9b ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22905dc1 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23cab5dd ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27bcdd12 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28881e13 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28cdb20f ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x29d943ef ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e5bf2a2 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30c4d0eb ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32c0cdfc ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3439ec09 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34e23a3c ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37a865d3 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46eacc93 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52f82821 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x543a5a1d ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57297f02 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ae42530 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d760e44 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dea743d ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ecb3b1b ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f050e44 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x618f7113 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x667dc564 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68602b0e ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d2125d4 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f6dd1d6 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7607ee64 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7663d8fa ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77d85852 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7bf849b0 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ff9b020 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x841b7526 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x898e2694 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c8f9a9b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fc9f41f ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92935a14 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x956cdc3c ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95bd33a9 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98e58c97 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99035533 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a770334 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ea3ca71 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa34e2e83 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5456021 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa683ec06 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7bd2d11 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa973b38c ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1f82dcb ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6394bb6 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb73b248a ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8726963 rdma_port_get_link_layer +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 0xbcac3ae7 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd91bf18 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf26f8de ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc191d324 ib_find_cached_pkey +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 0xc8872024 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce18dcf9 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0ccea8a ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd29f1748 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3235b44 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5c70944 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd657a513 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd843cedd ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8774b94 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda03023c ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd09e4b5 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe068ec0a ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3d69ff9 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe41607b9 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe59ff31f ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe78340c3 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec87a03e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf210a1b9 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb0c7ec0 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb8c5b07 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd0b3c25 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd9ca440 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1ba9465c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x484aaeaa ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5125d353 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x55a4b962 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b1cee1b ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7f16de56 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbd51586a ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc6080752 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc84dbb0a ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd62dbc5a ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe1982328 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe83b88a4 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf0498ff5 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1315b02e ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x3b580563 ib_sa_get_mcmember_rec +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 0xb021ce00 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb9955881 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd7dbd636 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd937892c ib_init_ah_from_path +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 0xfca39c54 ib_init_ah_from_mcmember +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 0x00249a05 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0216d0a9 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x09b3bd52 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x45c94aef iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x50426584 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5187e0a4 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x53f87820 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x65121fb1 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 0x73f7fc0f 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 0x92e09bda iw_cm_disconnect +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 0xbea49829 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd7cf9f77 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd93b88a2 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe4df06b6 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfdaa7aff iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0784d9c8 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0b3a091a rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1133eb1d rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x11f9f61d rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1b6d49e1 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x25c97dd4 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x407dc902 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4e4dc92b rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4e7d330e rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x556c995d rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5804ccf6 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x64c5b327 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8e3e33a1 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa40ff213 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb3ea442e rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc1ceb7a7 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc96b8527 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc97204b0 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcaaf37a3 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf7a03e27 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfe658208 rdma_set_afonly +EXPORT_SYMBOL drivers/input/gameport/gameport 0x123e1f85 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x30f4c6cd gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3ceab1f5 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5780fdce gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5e4560bd gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc4db0cc8 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc846e0d4 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xea843794 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfa2d97f8 gameport_close +EXPORT_SYMBOL drivers/input/input-polldev 0x0dfaba8a devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2a14c186 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x90afdab8 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb02a1a5c input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc6e21dc8 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x15d75fdf matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x073551c6 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x177c265d ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x851f166a ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xa0f9cb37 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 0x9e9268d7 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x08c534e2 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x14879068 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2777d70e sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x574ab9a9 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa0ef00bb sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd247d94c sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2a89515f ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe184c136 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0400d7f5 capi_ctr_ready +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 0x42c8d881 capi_ctr_down +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 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x759efbd3 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7c1004db capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x84294d66 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9551e571 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 0xaa72cf92 capi_ctr_suspend_output +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 0xd60c485a capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdb4f8a50 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe837da45 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0329d7fd b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x18260a12 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x295cf6ed b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2f119e7d b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x45ec7664 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4f008dd6 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4f16ee00 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5f02c16a b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6b172a96 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8060853b b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbe6e12bd b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc3bba9fc b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc967ba56 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe348f785 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe9ef7f6d avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x17ea71af b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x31deb09f b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x74be18bd b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x904fbbeb t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x92cdf49d b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc1580d85 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc8abd512 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe02932b7 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfccb6b81 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 0x679b9e8b mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x67ed5d7a mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x854ce8b7 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xcb2c3ada mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x94508bf5 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc358d6cb 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 0x1a1af861 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 0x150dd27c isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x23f5d8e9 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x5f0c4322 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x79073fb8 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xac747904 isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x1edf61c9 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x899d4852 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc9ea4171 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 0x05305cb7 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x07321559 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 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2b2cecd6 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x391cb784 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x39dbb09f mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x423e0b16 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4d8548af recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5bfe6122 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6e05fa98 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x784f0d97 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x84719c57 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x92ecfd29 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x94d922fa create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x95a05a9e bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9e4789ef mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9f585218 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa046f1ed mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xce5661be mISDN_initdchannel +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 0xd6cd6c9d get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xeca07c5d get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf36bc2e6 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf87ca489 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfe989bc2 mISDN_freedchannel +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 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x550429ad 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 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa9e32fac closure_sub +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 0xd569b602 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 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xfcfb444f closure_wait +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 0x440e9b1c dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x546ac9dd dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xa2cf9ac4 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xa358dfb9 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x07140480 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x416040d9 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa6acf39a dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbbf79a19 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc4339e1b dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe2ba21dd dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0xc90f31ba raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1243f332 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x22e1a72e flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2372660c flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x284a884b flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2aa8cb9b flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6310c3dc flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6ec6a5c3 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x799e0727 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x89672075 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x89dd7541 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb8a525f6 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe024c03b flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfbdcf272 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/cx2341x 0x0b0bab59 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 0x82351ea3 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8ce67a60 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb89f95cf 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 0x46e4cf87 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x39671a0c tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xb1eb903b tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x001880d2 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0cfbc118 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0d91d2f2 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x143d2b13 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x209eb85e dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x20dd382e dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2acff259 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f21798c dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3d667fa9 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x47d02a84 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x49c0727f dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d6f996b dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x66c579f9 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x671e7373 dvb_net_init +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 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 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85eeb63a dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x872fa587 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9e8f45a0 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa255caf0 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa897d087 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbb338c0d dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbfb899f6 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc368bedb dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd0f7754b dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe554368e dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebf6bc87 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xec7e8bc6 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf0aed820 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf6c4e4c7 dvb_register_adapter +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-frontends/a8293 0x57002b83 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xa0231621 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xa653597e atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x11b89f82 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x30cc100d au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4f2a5762 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x707b41c1 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xabcb2f93 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbdc7280b au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd10815a1 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xedc49636 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf3b8dc56 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x3c5ae4a9 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x71f27267 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x0c1d6314 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x8a49e403 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xc384afc8 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x43dfd1be cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x94942033 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xa2176995 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xbbd9dbb2 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x290eef16 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5b0cf557 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xe3151b83 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0ae1535e dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2ec98b19 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x829d525d dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xbf960325 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xec5a71d7 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4204778b dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x432ad075 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x584d42e0 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6bb940f1 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x740da30a dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x97aeecbc dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa9ed23e0 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb5370976 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbc695afb dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc54e1287 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc7311588 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd6601a9a dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdbb7ecf9 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf77bfa5b dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf9269cfd dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x172fa7f0 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0107d026 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2249e599 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x88317d31 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa717c20c dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xab2740d0 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfe7c6a44 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0229fc55 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x1093b73f dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x5698dc55 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8f883bed dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6f0eae3b dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xfda3f129 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0115f92f dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0717fbf6 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc10643da dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc4199c00 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xdb8c1ae7 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x175b8863 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xd227b256 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xb1e8ce8c drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xb7018104 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x40f71259 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x84dce540 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xa1674c14 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xeaae7985 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x971e78ee isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x5caadf49 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x43df553c ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x7207168e l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x9964a2f0 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xcb3dd41b lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xbf66ba0f lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xffcd2d5c lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xee943ace lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x02f4c264 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xc1406162 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x40a6877d lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x5cb12fae m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x7c3339a7 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xab939cf0 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xaf53d56d mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xeb790739 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x2bc1e94a mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x17ccc1d6 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xdd4abc17 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xe7f8e114 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x66944c22 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xa0724250 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x184f5833 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x999a6c0a s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x1d12eb57 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x404f05fb s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x6be8f8fc s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x8e4484fb si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x351e86dc si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x47f8745a sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x144db69b sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xababe684 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x683ea12b stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xcf77bbe7 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xd03dbc41 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xfcc6f422 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x46ed3f19 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xccb90dcf stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xcfe035d5 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x47412e4a stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xad2d7896 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x2903b2d0 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xbb8731a4 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x73651453 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x81f3bb77 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xca7cff2f tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xd4c751c6 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xe0d2f9ae tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x13078931 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xcd3f3faf tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x9c1ce21f tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x61a76348 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x6152fb17 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x64d1d878 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xcb87bf72 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xa3f43cea tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xc8e2a674 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xea80c7ce ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x84898b47 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xc883577f zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x521a42af zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1f3e76a7 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4663fb19 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x510ccbbb flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x57c76430 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8078b3c6 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x970e891f flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xef9065c4 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xaa7fb84f bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xb8fadbc8 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xbe0d732c bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe5af8a01 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x06a245a2 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x636ba4b0 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/bttv 0xc6e0988a bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0bd21678 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x37bd7ed7 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3ea2b137 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x57d6cb63 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x65ee2d44 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x79d9fdb0 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8033665c dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x95b8f6ac dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd8727f16 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xd40226e0 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0765dc45 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x5f2d9bb6 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc6ea4c64 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe72f2ef1 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xea0096a3 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xb44cd42e 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 0x0e7ae2ab cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x38705f1e cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x398c63ce cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4043b52a cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5db80b94 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x80514c49 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf7e19da2 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x3ea070a4 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xc54d40e3 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x1fc3a9ff cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x8f5c513c cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xa13b6604 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xbf579698 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x082d3dd9 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x096c9098 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6c19f449 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7500b339 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb7e7d017 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbde05f64 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdf115d58 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x01bd0694 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2003212a cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2a9199a8 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2b172be3 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x31799861 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3d786473 cx88_vdev_init +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 0x80ed9f09 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x84776b82 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x87d00a39 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8bb5567e cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8f4e3f15 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8feaa4ff cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x93cca351 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x979b86ae cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xad09acef cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb0017948 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb0f465b9 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xda1c311a cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xda56c84d cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf3322373 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1e36bf6f ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1f1d6256 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x220fa722 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x28b15101 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x343a5327 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3d52abea ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x547c4b7a ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5a2eb1b8 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7749db45 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x969201f8 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xafb15239 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd1c81b85 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe8e9daef ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xee67b3b7 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xeee9a607 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf2f37606 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf7213922 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0685d61f saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0810b1b6 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2dad1a52 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x348bfb5f saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x43dd28fb saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8810eaea saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x902d542f saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa00f0581 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa3ef3c5c saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd3483215 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd59d92a2 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe2ddd06b saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x84ebb51b 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 0x1a99c43d soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1ec5dead soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1ed5b1fa soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x2d1279ea soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3cb5f027 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x804063c7 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc6517dcc 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 0x442611cf snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x54e91572 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x949f7ad2 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9801fd4e snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa092da0a snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xaa867647 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc01efa4e snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x09d1d299 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4d15be66 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6b8315df lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa80e3d3d lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd99b7a53 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe46eb570 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xeb0f3ac3 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xec917374 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7c5c2113 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xc0ddfbd5 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x7aaa08c9 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x66cbba17 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x428c0fa9 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x9eff53e1 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf1e71a39 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x0e76879d max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x11f4be62 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x9fe40114 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xa7acb631 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xb08f888f mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xfb815299 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xc9208ba5 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xb826aa49 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 0x74c1c2c3 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xa5203224 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xb5f4318e xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x246282cf cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xa00dccbb cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x227c929e dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x27cf0521 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x51a9565c dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5e271326 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x63c411b5 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa63f400a dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xccea0378 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xee8feb12 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xeff70f73 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0e173b87 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7d94057b dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x88a326b0 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x90f2c8ad dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbebd721e usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xeb94636e dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf03e37f9 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 0x18533e64 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 0x169033ba dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x233a2d34 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x48a0b390 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa01bf74d dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xaa99a789 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb2e3f72b dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb3e8ff47 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 0xba5ec4a5 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xccf946a9 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xeb576ef0 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xef2cf704 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x7349b40e em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x86950dae em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x18523564 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4df152af go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x54e15b6c go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x57eda87f go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8413a1b6 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x99e3a913 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x9b103dc9 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xcc570204 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xda61962b go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x34965251 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3c0fdecb gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x58853959 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7a04f9fc gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa6208fee gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb355d374 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb80bdd89 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd4d8ac04 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x1992b059 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7d221420 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb893a89c tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xc547e821 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xee80e9eb ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x3b1365ad 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 0x807c02a4 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xdaa20279 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1ecde187 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4625a4c9 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6362105a videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7c086f68 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xda537675 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xdcf6cd63 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x929162a2 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x18d46a87 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4b466a06 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x90ab7876 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9bd002d3 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xc395b92f vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xec16e5d3 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0090b8ec video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0440c0b4 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x04658ef9 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0711f31c video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0bf62c03 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0ce5d3b2 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x13b5d2b2 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18888fc9 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a592475 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x200ee310 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22ebbe29 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x27f3884a v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b606a68 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2cf26411 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d3e8c4f 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 0x3b17a947 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b5900af v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41d4126e video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4318b815 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43b2f8e5 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x455088ce v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x461cbd74 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46b08d04 v4l2_ctrl_handler_log_status +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 0x4e13293d v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5212aabd v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x629c062b __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66d9f447 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x671ea531 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x679e2f91 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7364e6d3 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77c64bb6 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a2c23c6 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b614c80 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8adb6e62 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8b906aef v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x90ade463 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x969ee578 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9c77f70b v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9d13c5fa v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e2dbf96 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e8b01de v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0633fb2 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa213c880 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa782f073 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7a0137f v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9734efb v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb74d6ef7 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9950261 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbd9f0b2d v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc14b9a8e v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc32617c2 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc434b2b9 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc71ce0b7 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcb785b1b v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcb95e420 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd1e4f6a v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf84923c v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd316e773 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd69ea2c1 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7b9252b v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe18c5b4b v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe1b72419 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2603aa3 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe7db6aff video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9430781 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea775e1b v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeacbec4e __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeda36941 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef09a365 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf248816c v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf277e628 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf4d1c124 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf97a5f61 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/memstick/core/memstick 0x201f358c memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2bbdb243 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa0238c77 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa0e1c766 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xac6c7273 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb22ed922 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc00a8533 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdd3a74d3 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdd7617a8 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe1074b41 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xeea58725 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf79f901f memstick_remove_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x03740b5a mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x14862773 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1a16e063 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1b94b757 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x20a2270c mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3441c647 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x39f3bfa9 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4a10388a mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x54de1f92 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63a6d2f2 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6849d847 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x73ffc205 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x778f5800 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x77db6589 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x83308d58 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x844b38dd mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x89288e38 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x936ffc05 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9492db13 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9fbc11e3 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa02ccff7 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc1d22a51 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc4bd0a17 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc8c7ba03 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcee85f7a 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 0xde867f43 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe875d31f mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf24e1c85 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf72a1d4e mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0188acc9 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x104a6909 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x16e9b5ba mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1d781cfd mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x256b8901 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2f69e11f mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3d82e8e7 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x426774d9 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x436c1ecd mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x46f18be4 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x48be051c mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x56b63d7f mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5e532ff1 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6d3773cc mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x73a5c831 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7824f4b8 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7d935f6d mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8482ebe9 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x88d99440 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x972f19f4 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb15aae34 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb569667e mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc5082e4a mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xce69ddd2 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd360f770 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd58b5d67 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xda9fd7e4 mptscsih_bios_param +EXPORT_SYMBOL drivers/mfd/cros_ec 0x09aba684 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x24d4817b cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x8b7bb936 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe35169a7 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/dln2 0x37951b97 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x900fc5e8 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xd1c9b859 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xab5ea777 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xd1dd9e6d pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1d2c21be mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2740a9a4 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4b72ce63 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5f71eee2 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8010a077 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x80cbdbac mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbc1e06d8 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdc03a7c4 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdc1efc01 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xeeb24636 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfbbbf89c mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/tps6105x 0x35817f8b tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x4bdebe18 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x79d9cc56 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 0x7fb5faff wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x863be0ea 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 0x7d5b4cda ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xfdd706a7 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xfefe536e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x2023be26 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xa64e8c4c c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x79aaf14a ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xbba6c0d5 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x26ba802f tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x275b450b tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x2881cd26 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x2f1a9a0a tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x38c0efc6 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x594f215c tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x61410013 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x65bdfdab tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x71d0b089 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x7d317e23 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x89493031 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xb245a6a7 tifm_free_device +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xc0b62c22 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x3b36f09d mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xdc55d479 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0a56b315 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x432b302a cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x87402e99 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9f089357 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb9a31c8e cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf2817a69 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff7d2699 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2d42ec33 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x47202fa5 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb9c414cc register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xdaa65651 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xff2083c7 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x1bdd615d lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xe6330998 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x555892bf mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x72037b2e mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x046c4166 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x0c8cc281 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x0a32fcde nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3f395283 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x69dc0fbb nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x6b2415a3 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb7c9606a nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xbde7b746 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x18373ceb nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8341ce94 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xf2683acd nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x692eb231 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x9dd338e6 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 0x46b5401a onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x83838264 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xbd4fe51a onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf7cb821d flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1c25ffd8 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x51c610a8 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6e3b39b3 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x89c72571 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8f0248d3 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9b83612d arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9f1a05d3 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa1853f6c alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa41994fc arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdf049434 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x36625385 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x433d46ea com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xbfcd8cf1 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x467d7bc9 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x54bc1c7e ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5b93cf85 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6ddc7a97 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7a01d706 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8418fedc ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x86a83299 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8a99e7ff ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9a1c1bef ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf8082a4b ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x345728d1 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x11158823 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 0x1ab95dd8 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x20950de3 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x248415c4 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x24fba4a0 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3114e5b6 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3d435620 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4fddb467 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x503ea108 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x55c83754 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x62af1606 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x71a0db6b cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x797934b1 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8e8ef20a t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb7aa841d t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd11ea3ad cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeef2b629 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x007856da cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x03e2727f cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x051c6b7a cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09d8fab0 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0af293c6 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12722d92 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x18beb7f1 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2b1cfe74 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2bd9a105 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2cd5597f t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31f861fa cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f2a577f cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3fd15750 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x483d20c7 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x501e6a80 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 0x58310cc8 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a0eb741 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a89639e cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5ab7bdd9 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5c980309 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66263710 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x679d29fb cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e4af3d9 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7ff1b59a cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9107e0e5 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9e540f5a cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0a7110e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3035303 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 0xd83f66fc cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdb47cbe4 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdb843953 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf0966a3c cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf0f65970 cxgb4_l2t_release +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 0x14600fed 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 0xe2b83143 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf5e0e45d vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x3fd8650f be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xb1dd4531 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 0x0cea7856 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10aa7f5f mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16ac2b08 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x185e9afa mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34b57487 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x397be26c mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bc2c406 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fa56b7b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x406f7012 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40b892ed mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44746fc7 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x456fd4eb mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c3fe546 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x542e97df set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57a96ff2 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e175e5a mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6eac557e mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74c421a5 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a575aa1 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x947a6844 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c6ee195 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xade8a374 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb07866f6 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6094531 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7ded15a mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8b75361 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba45ad4b mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd13ad3b mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc91555a2 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce8012bf mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd10c8ac mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe173acec mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8b840a3 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea56442b mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf17e459d mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf89efb70 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 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1af47591 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20bce149 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2500076e mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f18e538 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x322551f3 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x379ce482 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39d7ffdd mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b206214 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c51372a mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ec957be mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40d60dc0 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x450c1375 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f25c99e mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62d203ea mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63d7d2a7 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x767f84f2 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76f472ce mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b49e160 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93db8a73 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9539c582 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96e056cc mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a418765 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a91c8e8 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b98081a mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0d5f141 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa304dff6 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7cb45dc mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa970502b mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae367414 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc7bc4b0a mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfa401f7 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1af91fd mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd6a84e8 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdeefec8a mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe41a917b mlx5_alloc_map_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 0xe8b0cf45 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf9e554ef mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0ea9941f hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x328c4c22 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6c91a911 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x82434169 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xce53ea93 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x026eeb6a sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x505c0919 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8108db5a sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x966f2496 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9913c70a sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9e1d3b8c sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc4d9b569 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc6c80603 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd952c08a sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe9cfe189 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 0x0e325c75 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x11b39469 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x54d571b9 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x62a42478 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x6d63e4f2 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x9a3bc756 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xbe0d8760 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xe8566554 mii_nway_restart +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x762994ef alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xffec26b7 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xdadf971c vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x16e92fbe pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x85f8d11d register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xee8ab110 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/sungem_phy 0x5a932fb3 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x164aa714 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x1ad5467e team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x22965108 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x8a6c5864 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x8f29cf68 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xb33253aa team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xb6d7e938 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xc17414a9 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/usb/usbnet 0x50ea3c64 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5f15086a usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x7e1691d9 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x14c14609 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1ec4e4f0 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x32c213a7 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x36ff3838 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5a9d565e unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x68641d2a hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x89d100d6 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9a6f835a hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbdaaabfa hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xda666319 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdb385cc4 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xc755b2f6 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x10185c09 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x88b3e964 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x9e975389 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x099ee053 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0b453916 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1428d1ff dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x198b1bf1 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2e859ac9 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x34e58911 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3b58f9bb ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3f76d511 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x40660870 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5365574b ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x648a1702 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x82d9fe19 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x276d486c ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x34d90760 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3cd2c7bf ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x595929b9 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x60f3308b ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7384038b ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x75e3a868 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xae56d4c2 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd3105d09 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfa20f065 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfd082cb5 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x25ea926d ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x28c2e190 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x58475d1e ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5a532632 ath6kl_core_create +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 0x8172b3ec ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x836c2806 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 0xa1888e6f ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb3256c56 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xec805491 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xed2e8083 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x01f82180 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x19bc426f ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1c1bb147 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x36125aa8 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3c207504 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x432a4f2a ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x547add9c ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x564664c5 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5bfbdda7 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x60f7d31d ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6682ceeb ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x74dce14a ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8d21a08b ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9d177225 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa52f1b20 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa5e93adc ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc5c9ce30 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 0xd2b56645 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd44c0a76 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd9f98810 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdc6d7f1d ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe9f2e75b ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf1a3ffed ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03565cbb ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04b4c267 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04e53002 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07af6b7f ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08287142 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15abee13 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x192a6a4b ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19c5194f ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b4a4047 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ce2a1c4 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d0d6288 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2144c387 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x241f7fdf ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26c9e1ae ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2fb158af ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3304f8c7 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36d93119 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x377eb2a8 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b3b4873 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d4da662 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4308c2b4 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4529a7d7 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46511451 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d2a566d ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x504c0393 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51b26ad6 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54d16dac ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55ff3b3d ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x576786d8 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x589c4734 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a4b5e03 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c0dbf24 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5fa9fa7f ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60dc1067 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6108b1b0 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61c695bc ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x648c6d51 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64d45759 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b0c6f64 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b1633ac ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fcacae3 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x718f5a07 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7215d322 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x773e77f7 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78ac25fe ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79ba5c5b ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c1dd2a3 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d16aa40 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e002237 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e3a8fba ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85b9ebc7 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87546352 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x890402de ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a08500b ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b0cd5a9 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8be84e1f ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8cc25092 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91ba73bc ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x920e46ea ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9391e826 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95e2827a ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98943c3b ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a7c9d8b ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d3b0761 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9dceed69 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4575740 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa88bbe68 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa173ca7 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab037339 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab21f515 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab95746f ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaba33fce ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3edc295 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7092e91 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb917222f ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb6db711 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf386dd3 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xccddc382 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1e24df4 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd459f434 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd73997b1 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9908f36 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda75a70f ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc2ba077 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xddb61b28 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfb74fac ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0b4bfc2 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1fb7822 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3881850 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe390bd40 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe594416d ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe71b667a ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8476b6a ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe956ce63 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed35e528 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeeb04eca ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef67dac0 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0e9f707 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf23d1843 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf78438c5 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf78f52c3 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf86beb34 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfcdc30c1 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe1e3685 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/atmel 0x4d18f415 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xc6e9fc9e stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xf84f1bde init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x10d3bb67 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x17dea75d brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x21db0f34 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x51124a02 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x81b00ca7 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x908d6548 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x97d896b1 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa31b3ce1 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xaf7620ae brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc20339ca brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcf6c2b16 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd6530fab brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xef00c1b3 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x063d7a34 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0f7e74d0 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x367bf5a2 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4b9170e6 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5adb113d hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5b49edb7 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x63af927c hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x64993bb2 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x73366195 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x775b5a19 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c0bb487 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7d61437e hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x914be15f hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa51499c9 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa8441d29 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb0525a43 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 0xb92ba93e hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc265c93a hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc35731b8 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc5c0198f hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe15374c0 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xec63db2c hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xef4654be hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf449f05f hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf72e70a6 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x26a1990d libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x30639394 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4fbe7e36 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x59d3c56a libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6451fed3 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6c7d3271 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x74398e00 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7da5c338 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9b9ab929 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9e4f3e57 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9f882af3 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa0f97037 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaa4cf032 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb3691383 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xba415ff6 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xca030871 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe2a3fdc2 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf421c80a libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf7c24037 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfc830a5a libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfecfc3c3 free_libipw +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x037a4d34 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04897c76 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x066d2d23 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09b51f67 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0aa77115 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10b2ee74 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11893747 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14e33357 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17ea8124 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19465525 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b8e6965 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c7af71b il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1eae5ceb il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1fedd46b il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20237b4e il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2476abdf il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ab2562b il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d0d0d28 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x302add81 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31add0f5 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35efba9a il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a5490bb il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3be4566c il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e7c1939 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3edbae3c il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ef5e8a6 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f69788e il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x430d6b3d il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43517a68 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4473a1a9 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x453bb1c2 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b443386 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51c17075 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x522de3d0 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c5c4705 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d1c0df2 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dd3acf4 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x604afc69 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x611a06b6 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6362b30c il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x652d301b il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68c9eb9c il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ecdb95c il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6fd41c70 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7212fedf il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73cd3a35 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75f59d97 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x767c682a il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x780d6586 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78d1ec71 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ee2209c il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f3ad808 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86fcef1c il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89a43169 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89e65673 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c4312f7 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d8b8446 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e15fa3f il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f2e92ed il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x904e023a il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92d5d6f7 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93440f80 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x972c0fe3 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x976ab738 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x97a6517d _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9964639b il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99f95a53 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a3af62f il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bca837a il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bcdde35 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c7a06c4 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9da1c928 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1256bae il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6e7ade1 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae6b5172 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2789a11 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3873809 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc082b0e4 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc66a0323 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8d5adf2 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce92e169 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd025710f il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd179a6b0 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd911e51d il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe242c94c il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe34363b2 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe487fb97 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4c4958f il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe69d8c97 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7f9c809 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8ab3106 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee9266f7 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeee526f0 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0b0f0ee il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf51b2b62 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf8ea9c23 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf91bce5a il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xffdd5d59 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 0x12d8b296 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1992df2d orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x30795ae6 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x30f891a2 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4fba8ee8 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x53363826 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5678b136 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5a6695b7 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x869c3fc9 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8e14cc90 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9805c0fb orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9a30fd86 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9aa43234 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb9ba09fc orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc31cdc95 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfe01aeed __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x709bc7a9 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0122ddd8 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x021fdbc9 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05209874 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05f176d1 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1ae06301 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1bc5c717 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1ea1c9d5 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x246807d6 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x29cae475 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x31afb74a _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x338f24db rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b9d2fdd _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x42adffc6 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x466bc10f _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x49672cde rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4c49ca0d rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ea7240d rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x54c6ca16 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x556547f2 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5b1438a5 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5b6fca82 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6a8f7d59 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6ba6ad95 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6fcbc050 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x70e1c53a rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x76faba28 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c0824ed rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7caec9ea rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7ed1bbf6 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8e7a67d7 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99c42f11 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa68a3590 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa7051eed rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xacb74c44 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb6fcac62 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbbae9f8b rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc0460a01 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc805eed1 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcd788b71 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea8bd536 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf6a869a8 _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 0x560988f7 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x9640d5a6 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x9d96fdff rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa7aba5f9 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x1509d369 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x9077747b rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xad572786 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xc79b71dc rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207ff4d1 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x35e1776a rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3d2c545f rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4226e7eb efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x44c41ef6 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x45ab59d1 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x46f98f25 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x49e7a0b6 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x52cd6527 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x56072b60 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x58c8f713 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x59bbb53b rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5ff3aa43 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x65f81839 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x667ebcd3 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6964e1a8 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x990507af rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9e6c2c03 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa325cb4a rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa73feef9 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa8679c0f rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xafc35274 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb17d017c rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc10d648f efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcef872ba rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd39ea1ca rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdd48237a rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe884fd35 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xee1ac153 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf545948d rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x41735494 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x51bfbb32 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x57bf466d wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9d6b219d wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6392dbd4 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xf5f9cce3 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc4a591ad nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xd8872c58 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xde9a21c1 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xd1179ba9 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xd299be46 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0ce098aa ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3eff3618 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x71bb5e04 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x72f9d038 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x79ea1cbd st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x80cf0ab6 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x871d63e7 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xccce4ebe ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd4d7765f ndlc_send +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x115033b8 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x28d13a30 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2c6a92cc st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x565e6e3c st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x59ea4402 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8bc36f61 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9321b4d6 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9b7aa175 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9dba0221 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa13d74bd st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xad92b0b3 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd1ee4f29 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd4167d29 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd7af9bf8 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf71d012f st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf8eef4cf st21nfca_hci_probe +EXPORT_SYMBOL drivers/ntb/ntb 0x42009971 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x8890e7b3 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xa2926339 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xa756a20e ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xb0e39c13 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xe9c431bc ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xeb57e080 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xf92d1521 ntb_db_event +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x89671afd nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xc5d9d903 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x013f66cd parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x01e51a6d parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x0cc5e643 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x0d76dabb parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x13d0ae3c parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x2999ce20 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x2e86fd83 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x38a0d1ca parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x38d66b0c __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x40f9d793 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x420fef60 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x450929fd parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5028cc18 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x532f05b4 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x641b0f91 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x77095f8f parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x83173072 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x836fc7eb parport_read +EXPORT_SYMBOL drivers/parport/parport 0x86004fb2 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x93fdfb94 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x96c35eba parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xa47ddcf5 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xb2e2949f parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xc0461c28 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xcc0314c5 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xcd796359 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xcf68faf5 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xd6365495 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe107ad85 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xecc3abbb parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xf47ad174 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xfd91d753 parport_find_number +EXPORT_SYMBOL drivers/parport/parport_pc 0x14c1a8f9 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x711848ef parport_pc_unregister_port +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x23a2e9c4 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x31cab957 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x448ea94e rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x946f2e6b rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd07e3eb4 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd4b0658f rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd77becc3 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe4d58bc5 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe64b8d5d rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe9803826 rproc_vq_interrupt +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x18ca68d6 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x8730dde4 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x8ba328c0 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xce65d7da scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe8eee572 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x02ed7463 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0bf7ca05 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x41a1e544 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x585e4b80 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x727a087b fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9375a423 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc34d8c4d fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc5c01241 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcc903cb8 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xccca036b fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd50b5e2c fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf00bdad8 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09760fbd fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0cbc834a fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1af7aa9d fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c0e57cb fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x233eb4fe fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x23ef71fb fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x26c8b8e5 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x361ef69c fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37d61b8f fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3a08fafb fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x402af43f fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4126d9c7 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x448d1d54 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46e2b5d6 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x54adb154 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5927bc70 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5a86903b fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6067c960 fc_lport_bsg_request +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 0x6a852afe fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72313f96 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82c3f383 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8451c128 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87e3304f fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x89af727c fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x89bd3b47 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x94a2485e fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x969c1cd6 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa2056c1a fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa96db4f7 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xadc9df83 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8bda3fb fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc05d278d fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3aa0156 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc984f1cc fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb707926 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0d98214 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda1cc347 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc9a0c5f fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1ad7752 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5aeb7f4 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf704756f fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfb79793f libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff2775e5 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4b60330a sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4eaddb75 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe2586880 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xfc2787bc sas_wait_eh +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 0x685deba1 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x00382931 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x06b4729f osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c711556 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0d50b775 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d1b275c osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1ec62847 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2de8d36c osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3158e32d osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3706a4fe osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x477e3322 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x594474f6 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5bf6f0e3 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5c2ef7f2 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5d2ebce8 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x689647cd osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7b0345b0 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7b1ff02a osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e97ee94 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x83ede063 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86ea99e8 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x92c56f68 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x94da6c1f osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9680640b osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9ee55413 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa8d2f1d2 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xad135319 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xae0fb409 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5aba73a osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc1ab9ae1 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc5a148c3 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdc27ba23 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdfb4fb85 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdfd03aa0 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xedabccb6 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfbcd98ac osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfbf7dafa osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/osd 0x01f63e81 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x509e01c8 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6246b364 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6ff6b5d2 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb209bc0f osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xffa0a1b6 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2b1d7c87 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3aad03e6 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5248f430 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5cb74dbb qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7958887f qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7ef6e6b1 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x86b25226 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb3661464 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe4cba027 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfbcf6969 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfe37a837 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xff694c8e qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/raid_class 0x09680a07 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x4518856d raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x9c5d32a5 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x033fde5a fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0d305540 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2555d1f1 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x28f23a5b fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2a3c077b fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3ef77238 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7313fd44 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x81d3efd8 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x832efc46 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb053ab78 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc11878cc fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcdc47a03 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe0eac19a fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x008926e0 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04fa61ed sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x06217028 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0892b78c sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x128369c4 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x24c258cc sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3e780584 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x44e5273e scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x549344c2 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5f938d29 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6094dc20 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6bafe13e sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6f49c1b0 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x86680976 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8ef50f40 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x95e1c353 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x97bbfbfc sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa79cc8f6 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xac44f094 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xadc59ca5 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb971c6d9 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc3b45d41 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9a59d86 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xce3c206a sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3029e95 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe251f555 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe83ff4c6 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xecafb1fb sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x07542d2b spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4b787a0c spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4bb70d7b spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb1819748 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc6cfa377 spi_dv_device +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x1a5cfcb2 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2c3aa1f5 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x618ef0e5 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8b3d3b49 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc783defb ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe3dcaf62 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xfd0f68ca ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x02987cad ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x034d47ca ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x2252994a ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x2e922e81 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x4a7dd1e9 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x5ba071f0 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x5db92477 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x796a18a4 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x7e30d07b ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x840b950e __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x9560dd96 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x96fcd085 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xa46d8f45 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xb1110df9 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xbcc23b8c ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc6683bcd ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd5927576 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xf3266c44 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf8fc071d ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xfddad6c9 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xfeb9383f ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x01f6d1ee fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x061a8699 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x100aa5b5 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1b1fd29f fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2472acca fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x271261b7 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2f57e0c6 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x347ef72b fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x37c7944d fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4122b132 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x45d4ddb5 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x47101ffe fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x58b54556 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x687adc72 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6a05975b fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7ef65f57 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8d8afbd5 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8e18868f fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa94be1c9 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb520cd83 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb5d5fb1e fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc4882991 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc528c519 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcec99d35 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x0e35a465 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xb9010c9f fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xc96ddaeb adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x7bf46dbb hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xa42cce87 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xbcbd3323 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xf15d8056 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xcf016728 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xd565bbcb ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x008ac69e lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x00c13e34 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x00c2f2c1 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x031f33d5 lnet_sock_setbuf +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 0x1ab96d58 lnet_connect +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 0x2583d689 lnet_net2ni +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 0x3de8ee91 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4684723c lnet_sock_getaddr +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 0x4f323123 lnet_create_reply_msg +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 0x65fefea2 the_lnet +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 0x76aa5908 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x778b9aed lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7be4de87 lnet_unregister_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 0x86d1dd83 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56c3205 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 0xafb6737e lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb33c7598 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb50a4814 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb92c218b lnet_extract_kiov +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 0xbf354d64 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd760275e lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe16acfb7 lnet_copy_kiov2iov +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/lnet/lnet 0xfdd95f32 lnet_copy_kiov2kiov +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 0x207dcad3 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x4cb4c033 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x845a966b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x8d9725d5 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 0xd092e560 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf263ca0a client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf420a20c seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x0eda0451 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x26c1b90e fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3cf3abab fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x8772ae91 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x95c6b3c0 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xcf760b8c fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd0e051fc 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 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 0x37560a53 cfs_hash_debug_str +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 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 0x7eb5cd82 cfs_crypto_hash_update_page +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 0x94cc84c6 cfs_hash_debug_header +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 0xa18e37ff libcfs_kkuc_msg_put +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 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 0xef0fd4ef libcfs_kkuc_group_add +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 0x2077a520 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x395230b2 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x7c02520f ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xd585e40e ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0750b605 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x48307d21 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x5300f422 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa3fd1798 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xd2fa254c 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 0x0010e8c1 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0136e77c class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01d1cc0f llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0249ed6f cl_lock_request +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 0x04131f90 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04550c94 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04896efe cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05cd3435 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05d7471c dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x062911d4 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0693fd8e dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x074b770e cl_lock_delete +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 0x0855b7d5 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0930c000 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x098ab45d cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09b1327a cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09dbb3d2 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a57957b cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab3503d class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b0eaf32 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b959e3b class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c02fb61 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c266d9e lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c3c780c cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d069eca obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d196569 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d9a3e18 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e0c01a1 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e244d10 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e5522c7 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x116ab610 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1178ad3c dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11f56ad9 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12f0a9cc llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x132dd69f cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x141a2b96 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x141b0cf4 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x142016ad class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1582aded class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15e36363 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x161bb75b lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x169089e2 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16bd868f class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17b2af8b cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x197f482a lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19c990fb cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19f1fbeb cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b054658 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cb8783f cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dbeb38d lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dcab2e2 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1edb67a3 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f76f0f4 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fb37626 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2019a607 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x214f9634 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221c38fd cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2276e14e lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x231419c0 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2365afcf cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2367f144 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23b47a92 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2408a418 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24cf0c7a lu_object_assign_fid +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 0x263fb67e class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x269e8475 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x273908fe cl_page_list_splice +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 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a0f6645 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a913c07 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a9d45b0 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c3de803 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d1b3723 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2dff92f2 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e1b9cb5 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f144ec2 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f6b6adb cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f6ffecd __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x306ecd22 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3096b38b dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32355da0 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x325d8e2b cl_lock_intransit +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 0x33480c6e lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x340a599f lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3453cd6c lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35334f29 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35b4f330 lprocfs_rd_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 0x388f6018 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x398d451d cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a5443d5 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b173c6d capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bfa8a64 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ce3e1cc cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d007572 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d3ec85b cl_lock_ext_match +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 0x40ae4aae lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40df9018 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40e9c61f cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x435e06b4 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x443b80ed class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44e15d06 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4542afb1 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x456fa553 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x457ffc7a class_fail_export +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 0x47be8e8c cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47fff889 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x493815b9 lustre_register_client_fill_super +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 0x4a2804fd cl_lock_put +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 0x4b44fb82 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b68dbb5 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ba4577a lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ba4a28f obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bf2e394 llog_cat_reverse_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 0x4ce810b8 class_setup +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 0x4dd2ced8 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4feeb93b obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ffa7453 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5109f573 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51715b30 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52975739 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53560362 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54856208 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54f98be7 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5520f95d cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5576a43e cl_page_list_own +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 0x58e94ab8 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x591e1733 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59d24cf9 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b08f970 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b09044e lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b16fbe2 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b67dfea lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c61124a llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d676d03 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f7bfe39 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fdedfcb cl_2queue_disown +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 0x60aaffb6 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62285b55 llog_cancel_rec +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 0x638e30c2 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x642cb346 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6501d335 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x652fb720 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6694d304 llog_declare_write_rec +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 0x679c6766 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68683e76 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68b183b2 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69809ee9 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x699c8482 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c2af29 dt_txn_callback_add +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 0x6b0b305c cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d3be32e ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d4df167 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d673746 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d81c402 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e04b3f9 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f57e294 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7065a8bf lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7102ff0b lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x711d361e cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x714e036b cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71ebb113 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7280538f cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x728139b3 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72fbaa8c cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73ea8fa7 dt_object_init +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 0x75899269 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76a4082b class_find_client_obd +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 0x78645bdd cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78e72df0 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x791cebb8 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a248b38 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a6022e5 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ae05795 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7aecd0ea class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b388449 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b3f368d cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ba0443d cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c2ebc72 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c580008 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ce82662 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d8ef887 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e13ab9b lu_context_exit +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 0x7faf2b5e cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe0a7b3 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8013ddcf cl_lock_hold_add +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 0x80dc2c0a cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x811d57ee cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x815453f8 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x820997c0 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x825ca734 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83af0f25 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x844ad712 cl_page_list_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 0x84b38b0c dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8502e1e5 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8522b046 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8546fd27 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87418103 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x877a42d5 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8796da99 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87f49714 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b87068 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x890606f7 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x891054f1 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x895540a9 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a0cbf2f iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8afd133c cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b857e1f cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bb270c7 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bb86a1e llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bcbbc2f cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d20c6af cl_lock_hold +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 0x8ef5fe70 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ef6590e lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f35efb2 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f489832 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fa55f05 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fc77921 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9014a6ca cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90b796c5 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x914db9d2 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x929932d1 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92f0ef35 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x932fd7b2 lu_object_put +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 0x940ccf6a cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x952b120e cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x956d5c1f cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9608e6a3 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x961fef50 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x978c3196 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97a9673e cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98c3eb82 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x999b8e21 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a7c0ea2 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b202432 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b518c29 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ba1464b cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c1c0968 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cef6ee4 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d139039 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9df878a1 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fb1046e lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa08c2970 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa152d622 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2326cb7 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa48dfa0a cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa62529d3 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa76aff5f cl_io_is_going +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 0xa8b3265f cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaad15115 class_register_type +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 0xac5c241e cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadab8c1b lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb06c2c42 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb19c28ca cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb19e11ef dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1c0de2c cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb222b79d dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb27c1103 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2ea766c class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3ee606a cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4b22dd6 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4b7080b cl_page_make_ready +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 0xb6534354 cl_io_lock_alloc_add +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 0xb768f9cf cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb797ad4c llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb841ef5f cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9760164 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9bf6d72 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba662278 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbac09efd lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb7698e3 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcb6cb9b llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd9ae95d cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf5345fc lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9fa099 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbff691d7 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0044027 cl_lock_user_add +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 0xc0d5e339 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3f4de9d class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc42c3c8f lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc47104cc lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4ff6cbc llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5a7b62c lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5efc064 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5f1fd3d class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5ff155b cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6139da6 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc62f5ac1 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc63f1f73 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6a1d497 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6cc7718 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc732a366 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7856f2f cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc808c454 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc944d46a class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcab0e7c0 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0e608a llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb1d1c5d class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb366711 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc1b3f8c cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc21b738 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccb9e8f0 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcce4319e lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce0b2c5f cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce0e4e6e cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce61f7f1 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce74a131 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0772fe3 cl_lock_at +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 0xd1570904 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1aac7d0 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd20945c9 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3f3ef5e cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6031575 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd68f910b md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6b3e541 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6cec016 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6fa348c ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7b780c2 lu_context_key_quiesce_many +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 0xd8faae38 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd94576ac llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdaa0dc84 cl_lock_print +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 0xdbbf10cd llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddb47661 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde4fbd67 class_destroy_import +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 0xded577ce lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf0ca6b0 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf86d581 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0d303a3 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe148739f llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29e29ca ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe355de3a cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe432e2ee lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6ec30bd lprocfs_obd_cleanup +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 0xe9077d31 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe90b0ada cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9822a76 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeba64663 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebfebaec obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeca8e9fc cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed7999c5 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed804d38 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 0xeec45bc0 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeec5825e class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef58d9b4 lu_object_put_nocache +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 0xf1811ab7 llog_open_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 0xf3d62e13 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3f24641 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf55aa35e dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf677db7f dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7193b4f cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7b909be cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7ebc2f5 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8693593 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9137bbd llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf997ce54 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9a3a13b cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9ad5bd4 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa786b38 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbcd9d73 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc2c99d3 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce72190 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd25a4d5 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd3c5d45 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd402ee7 llog_erase +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 0xfe0a94a9 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff00c54d cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff66fd9f cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffb4b9d0 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0014a3e2 ldlm_blocking_ast_nocheck +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 0x00f13b9c lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x025a4f72 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02d864da sptlrpc_req_replace_dead_ctx +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 0x04fc6f6a ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x057a9ced 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 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07692a8b ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x076e774d ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0874b0c1 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x094e7554 ldlm_pool_shrink +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 0x0afb5ddc ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ba33d3c req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c01fa2b ptlrpc_request_addref +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 0x0dbdcf22 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x111d92d3 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11f3cca2 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13ef9dcf sptlrpc_enc_pool_get_pages +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 0x15abdfc9 ptlrpc_prep_bulk_imp +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 0x18c86df2 ldlm_namespace_new +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 0x1c0a4127 sptlrpc_cli_ctx_get +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 0x1f35ea07 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20800bc4 req_capsule_client_dump +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 0x21657886 ptlrpc_retain_replayable_request +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 0x21d08dcd ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23bce5d1 ldlm_cli_cancel_unused +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 0x256700af ptlrpc_fail_import +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 0x26ba0163 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2817d543 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28b70463 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x292e2745 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29c37b2d ldlm_lock2handle +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 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 0x2dd7238f ptlrpc_unregister_service +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 0x2e90643d req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ee7ad06 lprocfs_wr_pinger_recov +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 0x2f79882d ptlrpc_replay_req +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 0x30037dcb req_capsule_fini +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 0x30847296 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x321cbb39 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x331b310d req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33b8a806 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x361099c6 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38247e99 target_pack_pool_reply +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 0x3971f833 ldlm_init_flock_export +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 0x3a41546e ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a8b9363 llog_client_ops +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 0x3ac2feab lustre_pack_request +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 0x3c48b744 lustre_pack_reply_flags +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 0x3de4a223 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e6f438a ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f481c4f ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40318ae9 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4244c818 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x429508cc ptlrpc_connect_import +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 0x4389ea6b ldlm_flock_completion_ast +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 0x4403f548 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440ec14e ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x447e0cec req_capsule_server_get +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 0x46ac07a9 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46e2a932 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48aec42d ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49c29049 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a53b368 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cd8afaa sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cf00882 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e03b8e8 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e3f8bac ptlrpc_schedule_difficult_reply +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 0x4fe7e0c2 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x508ec06a ldlm_namespace_put +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 0x541546e3 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x551b8dd5 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55a5e08a req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x568947c6 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56da3941 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5749336a ldlm_namespace_foreach +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 0x59c5341f ldlm_pool_set_slv +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 0x5be92d8e client_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 0x5d79d5b3 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5dd75b3f ptl_send_rpc +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 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62ac6cd9 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6317a00e client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x640c97df ptlrpc_deactivate_import +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 0x6666fc90 client_import_add_conn +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 0x68e2128f sptlrpc_cli_unwrap_bulk_write +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 0x695225fc sptlrpc_conf_client_adapt +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 0x6a89100b ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a8da563 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bea9a9b ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6cefccb0 ptlrpc_error +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 0x6db7ea8f sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6dcfa241 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6de3a2af ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6de960f4 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e360d39 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e648c8d ptlrpc_queue_wait +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 0x6efcfb6a ldlm_reprocess_all_ns +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 0x7077f089 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70b3a392 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71f29500 ptlrpc_pinger_del_import +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 0x72d041c6 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x732052b2 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73980fbf ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73a71b2a sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e4e5c9 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x744f9575 _ldlm_lock_debug +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 0x761c8495 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7685bcbb ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76d1a086 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76e51c90 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78490ccb ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a57284b ptlrpc_restart_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 0x7b162dfc ptlrpc_lprocfs_brw +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 0x7c99b3d1 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ce901b6 sptlrpc_register_policy +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 0x7d925a2e ldlm_lock_downgrade +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 0x7ee13762 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f1d08b3 sptlrpc_target_update_exp_flavor +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 0x811470ac ldlm_resource_foreach +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 0x82db186f ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x843c724f ptlrpc_request_free +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 0x861a19d1 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86db1d42 ldlm_replay_locks +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 0x87c9e1ee ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88b3ef17 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fc25f9 sptlrpc_import_flush_all_ctx +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 0x8a1f4d3e __ptlrpc_free_bulk +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 0x8c032b99 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c4fa479 lprocfs_wr_ping +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 0x8db1930f ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ddea83c ptlrpc_prep_req +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 0x8f343589 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fb2db02 unlock_res_and_lock +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 0x94112ed8 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95bc9ad2 ptlrpc_disconnect_import +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 0x96ba3d87 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x973128f0 ldlm_glimpse_ast +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 0x98d4dc21 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x99f619ba client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a60d579 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a991811 req_capsule_server_pack +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 0x9d21188b ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d2e6d0b sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9de1204c ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9deb24c0 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e2539f0 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa005a467 req_capsule_filled_sizes +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 0xa40e5bd9 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa48e5b58 ldlm_pool_get_limit +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 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 0xa8d2b725 ldlm_namespace_get +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 0xa9f6325e sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9f73a47 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa274eca ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaafab00f ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac18a5f7 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacb30b94 ptlrpc_request_set_replen +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 0xaebe7ce9 ptlrpc_req_set_repsize +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 0xb147420c sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1bdbbde ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb21f6240 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2721457 ldlm_resource_iterate +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 0xb372aa8e ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb430ab54 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb45da149 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4940563 ldlm_pool_add +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 0xb64aa20e req_capsule_field_present +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 0xb7a1577e ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7bda906 ldlm_prep_enqueue_req +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 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbfe9279 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc274d44 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe2000b1 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe67c906 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf06e76d req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf1c56f9 ldlm_namespace_free +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 0xc0bbf01d client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc214a456 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc21f6e44 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2a55268 _debug_req +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 0xc34fbc68 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc36c02c7 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc43fddfa ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4a3623b ptlrpc_register_bulk +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 0xc85ac55d ptlrpc_lprocfs_unregister_obd +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 0xca5e51ca ptlrpc_send_reply +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 0xcd3bde02 sptlrpc_cli_ctx_put +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 0xcfdd4999 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd09b885a ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0c216b1 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e037dc client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2f7e697 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd475e676 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4eb1ee3 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4f849f1 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd542d34f req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5f9a7a4 lustre_pack_reply_v2 +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 0xd6cffd2b ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7bee8c7 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8884ae6 ldlm_pool_get_lvf +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 0xd958f913 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda0f9fb8 ldlm_cli_update_pool +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 0xdc868eda ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdca5e9c3 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf872db do_set_info_async +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 0xdd6b8f9a ptlrpc_unregister_reply +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 0xde732d53 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf38fc1a ldlm_register_intent +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 0xe1f94a6b ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2dbbc19 sptlrpc_sec_get +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 0xe5b2b7cc ptlrpc_lprocfs_register_obd +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 0xe6863fd1 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6c7aab4 sptlrpc_target_sec_part +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 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb4a8b32 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebc393a9 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec3c0846 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec7d9970 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecabccc1 ptlrpc_request_bufs_pack +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 0xee42bdc0 ldlm_cli_enqueue_fini +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 0xf02f3ed1 lustre_free_reply_state +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 0xf1d880cc ldlm_enqueue_pack +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 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 0xf5e5fab0 sptlrpc_unregister_policy +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 0xf6425c99 sptlrpc_get_bulk_checksum +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 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 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb5d533a sptlrpc_import_sec_ref +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 0xfd72dc6a ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe3c9d4f ldlm_cli_cancel_req +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 0xff7c69d1 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffbaab41 ldlm_pool_set_clv +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 0xb08d60ab cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09b567a1 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a2299a7 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x181d514c rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1e491814 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x208a4307 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24acbb9b rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24c6b44f rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2de10895 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x38d1cc47 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x39410539 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x446a08db rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x46105a30 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x480d1bd4 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x499aa3ba free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x552cf838 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5605043c dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5b80942e rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6167c698 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6491895c rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a7815ff rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f2c30de rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70fbac16 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x78b1edd8 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7acbbf33 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7daed304 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81a027ce rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x841d8a4c rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x851714dd rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x87a7f0aa rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x900cc9f0 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9080edfe rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9caf6f0f rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa0cdedc1 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa7cd6dc rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaecab427 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb72de2fa rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb8b93f07 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xba3636e0 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbcdac67b rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbd674ed1 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc262e763 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb926585 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd32a33c5 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xda915543 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe0adbbcc rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe64ab040 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe9ce2649 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf1a1fdcb rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf252b4bd rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7c6e130 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0022920e ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0bb22f85 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1077ec4c ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14ee58c6 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x152d15d5 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b0c3f2d ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b2c8a32 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c9f77b0 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e78165f Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2720c51e HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2790ed8c ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x39ed38ac ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x476d9390 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a74a6da ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e2d5fb0 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e895a3e DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f4ffc93 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f8b2982 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x500f8086 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5aa6874d ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b665224 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ffcdf32 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6fe250d2 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ed1fefb ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8347e619 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x99591f6e ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9b69ae89 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9cb94e27 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9e67544d IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9e71bc50 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa225a9dd ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad274c4f ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb09e5a55 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb944de02 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9aaaedd ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb69f5ea ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbff7af28 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc30da063 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc5f35095 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc7638076 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcd5513e3 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd1449e7 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe4c02c9c notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe4e8ecd6 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6ce49f9 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe927f065 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xea5c6aed ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xee194617 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf5456c8c ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf745a509 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf75a2545 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf7c3fbd1 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe901048 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfef7c76c ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x02502ce0 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x060beaf8 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0c980154 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1a511c9b iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b5ff024 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x20398a2a iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x25714f76 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4105683a iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x43fd31a2 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4b47177a iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x53fe6262 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x58274b6c iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6565f60d iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6fd72ff5 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x77283e5c iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7abdf0d9 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7c10a458 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x85776986 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8c42a5c8 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x911edc61 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9a4f55b8 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa52b5e45 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb9ccd461 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc81003fe iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdc7c4685 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf1d14625 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf416eb6e iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfda75586 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x06130029 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c658adf passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x150522a1 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x17157cc0 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x1b79cfc3 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1cf5c737 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x2050b115 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x21f0a6a7 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x2607e8d4 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x27b0ddba transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x282d27d2 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x33e7ad7c target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x34c84064 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x36c2fb95 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x36e17832 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x38037597 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ed2c787 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b689bd1 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x510c9709 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ccefbbc target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d2ad81f spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e04b671 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5efc5774 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x603ccbcd transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d9a1cee target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x6dd43bcb target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x715d58c9 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x746b4e5d target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e1b03fc target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x87df9553 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x89ae6e9e transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a227bfb spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c279f54 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ce33525 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ef95a65 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x903a5794 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9752276c transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x9b67e71b target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c3c4a58 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x9ef5f7c2 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x9f7d4b78 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xa3191d12 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8346d62 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xaaae7a81 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xab592534 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xae1b846a sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xae7e27dd sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3ec2cd7 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xbaaefc9a target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0666082 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc55c8fd2 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xc83f3004 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcbd770e5 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd16aa3f core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd8c8fc2 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xd6c405a1 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdeca0026 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1d2168f transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4b39756 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xec551b2c target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf15d5641 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4932915 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa5324df core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xfd14043e target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xff7cd018 target_unregister_template +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x80f12af7 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xa6200492 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x254afc5a sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0e4c707f usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x25dac9de usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2e85da52 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x30848119 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x365bdb7a usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x65e1dfa0 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x78c282af usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7ddb7aec usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xca5c9ef9 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdc9cd055 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe4796697 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfc00aea0 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x7ade5e92 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xb8d4a0aa 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 0x65064669 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6b2bdbc8 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x9106e076 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd0f45d1b devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x071addea svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x384c8fac svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5ec0475d svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x67829f9a svga_get_caps +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 0xb0aeef5f svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc16023df svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xca31b401 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 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xb522221b sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xe9d60844 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xacc2ff22 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0a21a214 cyber2000fb_attach +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/matrox/g450_pll 0x42061a6f matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x92adcecf g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xf4991bbe matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x2abdc110 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x65d12957 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x9a3fc929 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xba491281 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xf5225181 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x3784b5f8 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0b05e91d matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0e64fe49 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xbca4d2bd matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xcfba8c3c matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x2243fa98 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xa042dd67 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x314a83f6 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x427752ca matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x86d92c9b matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x9a6ef103 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe3cf4666 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xfa6bbe6c 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 0x2487bc73 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x659d7f2c w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8f0d830b w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xb7c375cf w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x447ab21e w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x7c1f215b w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x2a42d593 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x6a2e5447 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x1ebc7445 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x61cdf6d9 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xebf4c1ef w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xfce1185c w1_add_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x16b9422d config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x24deff97 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x2aa0c696 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x4daf78e0 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x6630224f configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x7def751a config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x85970aed configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x9f87340f config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xc69da639 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xd71cbb79 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xe0607fab config_group_init +EXPORT_SYMBOL fs/exofs/libore 0x1b29ac9e ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2d9a15fd ore_create +EXPORT_SYMBOL fs/exofs/libore 0x33060714 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x356aef38 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x64c69ea8 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x67d2392b ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x79bc2fe5 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x90f4d31c ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xcfcde9e3 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xdb961d85 extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x05228cbc __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x05de1bcc __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x0befd3fc __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x16118a34 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x2826674e __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x3265ca22 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x3e2a28c3 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x4192691b fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x4231c93e __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x42b3e1b0 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x46b12955 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x49bd95f0 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x566ea17f fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x59314f5e fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x5f2087fe fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x6061c338 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x63bdc99c fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x6946818b fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x697a9ff1 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x70a4e5ab __fscache_check_page_write +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 0x79eab9f8 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x801466b3 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x820b4f6f __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8986e90f __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8e6595e5 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x9ef440bd __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xa0645b2d __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xab22e8b8 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xb26313b8 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb6fd4e9a __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xb96b9b6e fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xdc2bdef9 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xe31fd024 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xe3baea6a fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xe8bcb9a5 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xeb1285d2 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xed6c0c7d __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf1fb6fb9 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xfc3ab67e __fscache_register_netfs +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x0d837c9b qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x20b5ff24 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x572ef23c qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xbe255cb5 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd2173319 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 0x0e316dc8 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb39fcfc2 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 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 0x180f7b25 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xfc4c053f lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x7b3d19da register_8022_client +EXPORT_SYMBOL net/802/p8022 0xfeea3dce unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x5cdff20c make_8023_client +EXPORT_SYMBOL net/802/p8023 0x8f44a9e1 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x2f9a9fd5 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x91032b8d register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x107dcc1b v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x2ceacc46 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37ad06d3 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3ea92db6 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x42759c13 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4bb66ac2 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x57b38d4d p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6322e7fc p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x66ffbb13 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x6bc431c6 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x714008ac p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x7ee45f24 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x93a737d3 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9653dc8c p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x9a2a47ec v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xa0ad2e88 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa0ccc15e p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xa18b5d8c p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xad20ebfe p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xb0b0ad51 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xb64a2464 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbc3b91db p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xbfee283d p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xc0f8d9f7 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc9832354 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xcfd3274d p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xd4b9cfdf p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xd6004ee7 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd8c07824 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xd9003bc2 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xe210fe12 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe24cc4c6 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xe2c46342 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xec60c860 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xef8edda3 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xefea11ca p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xf1e2d1d3 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfc640ba2 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfe118e6e v9fs_unregister_trans +EXPORT_SYMBOL net/appletalk/appletalk 0x0bad4d21 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x1f64488d atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x78b20e90 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xc0b50c78 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x0cac99a6 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x1a826a37 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2d54ca6f vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x50bc981a atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x7b7477e0 atm_charge +EXPORT_SYMBOL net/atm/atm 0x917dfea5 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa03685e0 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xa14927e9 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xa8650146 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb5a1e620 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xe9aa9df9 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf8a950c4 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf97be2a4 vcc_insert_socket +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2acc129c 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 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x92122335 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xa2528a76 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc89f6470 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xd41efb4d ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd6920ee2 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xe127f1ee ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xed397753 ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x052a35c4 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x060e7647 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c5d86fb hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0de9a3ab bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1c143c31 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1d056e6e hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1db01d67 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e4feb01 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f2e6ba6 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2399cc75 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2438f290 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ba2dac8 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3434e845 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x345fb590 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3735f760 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3c200def l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3d9ee126 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3daea164 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4dc7205f bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5513161c l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x561ce922 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x68615f82 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6dabc9ce l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x78e959c2 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x876f0c30 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 0x9da3c6ac hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xab64b8db hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb8147bf7 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbec57c7c bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2b2e7f4 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc71d7cd3 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd136f628 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd3cf5190 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdafae6ae hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe260ab51 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xea2f797e bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xef32a30d __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xefd6a521 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfc4745d6 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bridge/bridge 0xf74d1787 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3e24af02 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x7f7bdb7f ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe8fa2916 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 0x365b0ada cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3f655028 caif_disconnect_client +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 0x9c6f92da caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xbd660d4e caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xc49e6522 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x3615f808 can_send +EXPORT_SYMBOL net/can/can 0x50240cc6 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x6de7fb2c can_rx_unregister +EXPORT_SYMBOL net/can/can 0x95a2c8fa can_rx_register +EXPORT_SYMBOL net/can/can 0xab15031d can_ioctl +EXPORT_SYMBOL net/can/can 0xb5f5dff6 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x063760e6 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x1351183c ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x13e92275 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x152a43c7 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x153e664d ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x189e94da ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x1903acfe ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1acf0240 ceph_msg_get +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 0x27e3178f ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2dfd2205 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x3022b530 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x3194c825 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x33efe6e3 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x34cc2711 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x36bdf3c7 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x36d19ef7 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3996f7a6 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b2daf1a ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3f8efa9d ceph_osdc_readpages +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 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x48a1d381 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x492ebc7f ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x4a106c58 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x4ddb525a ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x50fc07ca ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53b2c3f1 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x565d7f86 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x629ff147 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x66cf3087 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x69b65fc7 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x6a25f921 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6bdc9434 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6df83daa ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x6e828a93 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x791451cd ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x7e8c4d01 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x8024f84f ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x80d96ea8 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x81d1b097 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x827b66da ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x82fcea80 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x831a04f5 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x8c9cba24 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x8cf5ee7b ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x8f48f616 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x91ee6226 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x973b6028 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x97fa83ac osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9ae75ce4 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa5c3a792 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xa5ffa531 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xa9a5cecc ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaee0cb02 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xaf2f0c0e ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb198e881 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb966bdb6 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xbaf40322 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xbbf67346 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xbd9574b2 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xbd9ff2d3 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xbfc5ff3a ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xc058b72c ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xc27dfecf __ceph_open_session +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 0xcc8d3163 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xcd19dd4c ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xcf9e29cf ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xd170e466 ceph_msg_new +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 0xd96ecbb8 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xdb07e1f6 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdb6ce466 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xe076abe1 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xe2102383 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe57159a2 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xec852db4 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xecae9ae3 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xf2b455cb osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf5b212ed osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xf658d2e5 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xf8811ce2 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xfe96d071 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xff69480a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xfff753de ceph_auth_update_authorizer +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x84be921b dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xa877e0c5 dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xf7b2b922 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3adb5b58 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3c0bba56 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc0d45762 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc4ecdf30 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe82e55eb wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfb04bb77 wpan_phy_find +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x23415597 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x4212258a gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x426e00b8 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x43998aed ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5f3664b1 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xac27442c ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd6798835 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xda4b1eed ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x613a01ca arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x81d6f25b arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc5c61ea5 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x27598e29 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x8a1af363 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xc0ea2f0e ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x55aee344 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x6a3e0249 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x1a280300 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6ee6d1bc ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x867dfa74 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc3aa7bb7 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf1fabc41 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6552585b ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xdf17c024 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xf8a600dc ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x498a910b xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xd64d2894 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe54fe507 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xec34da50 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x14ac36ef ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x800b37a6 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xad9bfe76 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc9417e9d ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc97c788f ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdcecc35e ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe9732f39 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe9b2f5fd ircomm_open +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x06a7793d irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0c7d364d irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x1a2561dc iriap_close +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x337c7246 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46a0dac4 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x53e79994 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x5a075976 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x62f5192b irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x68f360cf irlmp_connect_request +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 0x6dc7cc6d irlap_close +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 0x7d6173ba async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x7e20622b irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x832ecfa9 irlap_open +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x92a6f088 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9a3d8771 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x9d758bae 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 0xaa9d45a2 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb87d5e96 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbacc116f irttp_connect_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 0xc8f295a5 iriap_open +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 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 0xf12bad33 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xf2d709da irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf9c254b6 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xfa309638 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xfd4f68f2 irttp_disconnect_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x38e49fe5 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0cbae19a lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x23f5627a lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x93255593 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xac947b3c lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xc38d6fa3 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xdb6243b0 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xe20390da lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xfe762ea3 lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x09212f4d llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x12c4fb1d llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x1695e6c0 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5bfa9b89 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x63b3e2b3 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x6ccdf544 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xaf70a754 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x01a64dc6 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x1272427c ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x13225511 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x15437be2 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x19ea9a52 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x1fd60fca ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x1fd6d94a rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x283fbb4c ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x2c1d5756 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x2d563794 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x34cb96ea ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x36dd5879 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x3914369c ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x39ecd236 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x3b9e1460 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x41fc630e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x42904ede ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x45b5f1a0 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x4760fd0b ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x47cf7893 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x480e567c wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4944a4f2 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x4c19034c ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4ca1b4ae ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x5014a8ec ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x51e60094 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x55456bd9 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x58be9fd4 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x5baea716 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x5bcbf85d ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5c2a0edb ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5ed41178 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x5eef78fa rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x60eecd72 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x6116d258 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x6302a3aa ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x6d07c73b ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6d6ad998 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7f5a99e7 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7f5c3315 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x8442fe4c ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x85671598 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x90d1cfa0 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x942cfb08 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x97fc7b8c ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9846a4be ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x98e17175 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x9c31f234 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9cfb0f45 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x9f6b25a6 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa5c4b35f __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xad4668be __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xaeffb703 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xb377e1bf ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb56890df ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb56d28fe ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xb846a36d ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xba2e2e5e ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xc0a76ab3 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc4eb3669 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc7d0342a ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xc7f13bb7 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xcac3f9c8 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xcffc65f2 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xd047e344 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xd0615fea ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xd57b20c6 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xd57e8aae ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xd58a3e8f ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xd640b862 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xdb99a3c6 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xdd2f9ce0 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xe4698cd9 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xe77f546e ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe7db5aa1 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xe8b92d48 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf8a6d0c1 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xfdb473a4 ieee80211_iter_keys +EXPORT_SYMBOL net/mac802154/mac802154 0x06b7b801 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2c9c152f ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x39dc3e07 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x7586b858 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x7c29d98b ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x8f69f2d2 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xa46028dd ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xb2fb2dc3 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xcd88c2f7 ieee802154_register_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x048eb54d ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0d4c23f9 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1c5e25a1 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2b6e54de unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x40cce48b ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x76fd3038 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x91bfbeb3 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x95122e8c ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9cda21f3 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9fcac3e4 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xae2dfade ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xba93e2df register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe431676e ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf8521b76 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x886eabd1 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa4c880cc nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xf90096d4 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x0c242ffb nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x1454dbc1 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xa78e47b7 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xbdb23818 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xbe7e2fc2 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xcf23cc1d nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/x_tables 0x0075813c xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x0f70bd40 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x1913745b xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x30e885ba xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xb8b3985e xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xc8abd4ce xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xc9aa7b47 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd2793c20 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xf38621fd xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xfa0a6264 xt_register_target +EXPORT_SYMBOL net/nfc/hci/hci 0x0a644f32 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x19cdbc4b nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x2358207f nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x2fb12765 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x3473e911 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x3c5f3c1b nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x3d4ffeeb nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x43d63e77 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x4961885b nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x49a220e1 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x4d8f28d1 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x6e75f7e7 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x7dc3f853 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x846cf2ca nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x919d2892 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x9d1817bf nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xab68b7c8 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbeccfbff nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf68c76c8 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/nci/nci 0x1d1ca73d nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x3726d3de nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x39c1e2e4 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x442b967d nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x5e766e37 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x5fd14822 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x63141b5a nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x8e0d9c89 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8e8b92f4 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x93494d6f nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xabac65a0 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xb5c77696 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xb7d8310b nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc8238d6d nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xcb7c3567 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xdd969b22 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xe5a6e8be nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xe8f79917 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xf966940e nci_core_conn_close +EXPORT_SYMBOL net/nfc/nfc 0x053f167a nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x15723f5f nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x16d85df4 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x1a0a2561 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x23154f39 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x2547c706 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x2ba681d0 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x2e4c3f04 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x348d4bb1 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x39613f68 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x4193a90f nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x56e0356e nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x5cf763ac nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x87e129cc nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x8963b758 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x8ee4eac1 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x919c2896 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xa54a2b5e nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xb7493846 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xcea57e72 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xd25162a8 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xe22d7d1f nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc_digital 0x2173035d nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x5cdf7171 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xc1444659 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xf59b0694 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x0ffd8845 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x29fa45db phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x2e013363 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x38a98a24 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x46d9f921 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x8e6adcfb phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x8f69c68e phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xb41e55d1 pn_sock_unhash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0a726588 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x110b81da rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1285caf5 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x154ae011 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x19a12a23 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2ab33e09 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2dbe7a1f rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2e017fe4 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x34236a74 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x84a54cad rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa2868377 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd84138f6 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe0032be6 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xec8049fc rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf2bfba8c rxrpc_kernel_free_skb +EXPORT_SYMBOL net/sctp/sctp 0x43da0552 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x53bb275f gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x60908b9b gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb46e67a3 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x2d780c3e xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x83be31d4 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe178a0e7 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x264249ec wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x47468ad9 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x046cc472 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x08d0c0d5 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b0506eb cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x11adc941 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x16742450 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x16e0cf56 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18bb7c94 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1cd05821 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x1f857acd cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x21db32bb wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x2944a971 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x2da9319d cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x34c76acf __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x3679ad0b wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x3841d722 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x3aab2e75 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x44a738e0 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x45a7e4da cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4933045e ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x49e9b8c4 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x4a0ea349 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x4a31712b cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x565f494d wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x5b833290 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x63048fae cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x63c1eec0 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x65c2aacd cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x67f46c19 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x68fcb143 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x699c7279 cfg80211_gtk_rekey_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 0x6de4d169 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x6e6c8758 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x72c8586f cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x7456c8d5 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x7de5189d cfg80211_rx_unexpected_4addr_frame +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 0x8693892d cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x881e2a97 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x8a532363 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8bfb1f46 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x8d58c7f7 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x8d83bec1 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x977942c9 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9d708ce1 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x9dbd6497 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x9ebf750a cfg80211_sched_scan_stopped_rtnl +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 0xa28d58ca wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xa3a50db8 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xa850cba7 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xad8ff23a cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xae65f445 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xb0128c8f cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb0c59578 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb0cbc999 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xb13b1f82 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb183aeee cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xb4e02e02 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xb932b8ee cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbb8b4845 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xc5720b63 wiphy_register +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 0xcc6c3915 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd205433e cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xd4889c36 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd60b88ee cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc4bff21 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xe23154ff regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xe4a7e6b9 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe6146233 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xe827cbc4 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe9eb078b cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xea433fdb cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeb0555c2 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xefada05c cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xefda87ca cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xf095e964 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xf140e0d7 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xf3fb954e cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf47c9b99 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xf554206a cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xf7076969 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xf846e580 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfe37ae6f cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x18717f72 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x3fccf4fa lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8a10d1ce lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x940ec087 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xaefcff58 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xe376670a lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0x9a23e605 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xdee368ae snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0a66b243 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x2957f674 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 0x71ad450b 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 0x7c35d30c 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-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x2c7b07b3 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 0x76d6b05e snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x0bc49e9d _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x0d760815 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x13c4f9f8 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x14eb7d54 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x18cc8088 snd_ctl_free_one +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 0x1a627f26 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x1d0d9868 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x1f0a46ea snd_info_register +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x27835cb1 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x2800b3a9 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2e3f8fd4 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x33316253 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x37f631e8 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x399ad999 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x39a89db8 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x3a974e62 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x3db0a952 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x3f80f1f3 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x448ffff2 snd_cards +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4e40cad3 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x5379c975 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x54ccc4b2 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x5c698c75 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x5f21f085 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x5fc1ca0e snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x6028010f snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x60907337 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x621dfcee snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x6a0f3272 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x6bd9a6e6 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x6ddbdc18 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x79aae95f snd_card_register +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x84b044d2 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x91928a55 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x936869c0 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x9491f008 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x94e395ed snd_seq_root +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 0xa23d3041 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xaa4ae096 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xaa894987 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xadb680e5 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xadec6ab6 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb468c2f8 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xba45d5d5 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xc38a8ca9 snd_register_device +EXPORT_SYMBOL sound/core/snd 0xcae5e74e snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xe74fb390 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xfb63df79 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x575c27ce snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x042024d9 snd_pcm_set_ops +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 0x0848d00c snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x1056399f snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x10805273 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x183a363d snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x24b27b72 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x25ee8141 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x2ad3d583 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x335796b3 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x36885652 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x3824faf9 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3a4c0cdd snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x3fe42f59 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x476c74b3 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x4e47956b snd_pcm_suspend_all +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 0x55d8e6d2 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x5676d086 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x591217c4 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x6033be9a snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x6111ba46 snd_pcm_hw_rule_noresample +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 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ddf8951 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef05486 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x72e93c50 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x7e592a7d snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x7f60d1ed snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x82a55eff snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x85417219 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x99c79b03 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x9d004759 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa31266fe snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xa39b7a20 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa660d6ae snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xa76f8c59 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xb069c97c snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbc3a9f7b snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xc58d9db4 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xcaa6ff69 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xcd4fef08 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xcf2d416a snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xcf9a57a1 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xd437f13f snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xd4efd34d snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xddb1612e snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xdfd1c9c1 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xf3205b24 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-pcm 0xffff8eb2 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-rawmidi 0x425d1a8b snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x466cef84 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4a99effc snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x523a6926 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x537d96ca __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5bef1c3a snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5c3acb77 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x796d2d80 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x87494055 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8c251962 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8ee79952 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa3b3d3b6 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb9653326 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc2faba43 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc84bbac6 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdaa8ca78 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdb858d18 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe20c33b3 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf9e7d555 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-timer 0x09e16c5d snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x0fdf67b1 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x4006e885 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x596223e3 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x5dbfa2b5 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x619b2f63 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x7eba59da snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xa0da66f7 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xa2b74879 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xba122fb2 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xc20f915f snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xe22a8b14 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xff8a6cb9 snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x1287061a 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 0x0f299b69 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3736007d snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x447dcce2 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4b112ca2 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7327696b snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x761c6a5b snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc0343596 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc3c180e2 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf86bf7ba snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x38b21f1e snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x49719e6c snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4d581f8e snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x640edb7a snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7c5f48b4 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x855a2e0f snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9a0421fb snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb5fe9d7e snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe1f02ff7 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x03aaa192 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0bea574b fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0cd1c463 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1159f784 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x16ae7db8 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x19decfc2 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2779ee33 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2d8637fa avc_general_get_plug_info +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 0x61bb4c04 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64a69b6b fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x68e61222 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x68f76d53 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6d3a03b3 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x714d3409 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7bebf688 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8ff24569 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x90a7a873 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa56fad38 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa6dce38c cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xac5c7229 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xadcd10ac fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbc16e4d0 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbd8fca9f fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc84a2750 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcec81da7 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe023b38d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe5dd279f avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xec9fc006 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xee2fe666 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfe68f6ed avc_general_set_sig_fmt +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x2f4fab0e snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x44d81a6e snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x01b7ebfd snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x596740ba snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6d6ed725 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x976d21e8 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb7bec704 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd8154361 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe594e3c1 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xec3ef314 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x17d3f7f0 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x86e7661a snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe2a0db84 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf84b5ea9 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xe92462c3 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xeaf0d3a8 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x155300d7 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1bb46496 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4e56d2de snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6b3ddaf2 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xaf7e9afd snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc64cf24c snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x372d9768 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x534cd6b4 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x69c1c2d5 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9489a4b0 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xad1bc36c snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdbf562d6 snd_i2c_bus_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x04cfa517 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2255018c snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x284a4f8c snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3153a514 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4ab8f961 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x65cb5f7a snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x96096a66 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xde63cebc snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdf758d30 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf87d34a4 snd_sbdsp_command +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x050749ba snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x11a62731 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x15996480 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x23badfb1 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x307c823c snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5541730e snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7a980b26 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ea976ca snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ec8a51e snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x82461d76 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x854fd044 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x91e75560 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x93e5fed4 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x99243efb snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa3ac8e4c snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa75f2316 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfffb1a6b snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x06e4dc2d snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x46941ecf snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5e42bf49 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x64789b35 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x741db139 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8f8d885b snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x93bf5eaf snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa59236fc snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc65bc1b3 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x391915bc snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x71217ee0 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xfa3eb725 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x03bf8f4f oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0cb6b207 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1a715291 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1bf49275 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1c295959 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x212d534f oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2734357a oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x278ae808 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3976abd1 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x501c2e47 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5070daf7 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5943328c oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x87769196 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8b6137af oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8f013924 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9131de3f oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa06ca8c2 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa2335f02 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa33743a3 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc27dfec5 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdc449f3c oxygen_write16 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x0dffaf6f snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb993dc8a snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc81355c5 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xf6fcad0c snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfb7ff520 snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x1b7ff8f7 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xf6a43af8 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0x33e76290 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x139758c4 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x35adacd2 sound_class +EXPORT_SYMBOL sound/soundcore 0x3bf8ce19 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x90523f58 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xdb9ef0b2 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xf0e5a325 register_sound_special +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0462ff40 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x44c6234a snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x5ada6043 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa76cba1f snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xaf40bbee snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xfa173535 snd_emux_register +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0ca7b32e snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1c5b0bf4 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3c11af5c snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3d109ce2 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x48cdbdbf snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x51554013 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x93cac76e __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa0979a47 snd_util_mem_avail +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 0x80c25c76 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 0x000d63e8 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x001f255c inet_frag_kill +EXPORT_SYMBOL vmlinux 0x0034b88a sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x00361a96 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x0036f733 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00787b75 mmc_request_done +EXPORT_SYMBOL vmlinux 0x00871f9a elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x0099c9c3 truncate_setsize +EXPORT_SYMBOL vmlinux 0x00a094f6 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x00b6c69c blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x00ce5432 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x00d70908 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00ee6dc4 nf_log_trace +EXPORT_SYMBOL vmlinux 0x00f1d33d pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x00f7f501 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0112c5ea consume_skb +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x012e8918 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x0131d0bc pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x0139dc1a sock_no_listen +EXPORT_SYMBOL vmlinux 0x013df17b param_ops_string +EXPORT_SYMBOL vmlinux 0x013e4e83 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x0149fd58 load_nls_default +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x0179ffeb kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x0185aea6 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x01875d3e page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x01a84b8e blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x01af20da mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x01bc676c kernel_getpeername +EXPORT_SYMBOL vmlinux 0x01c2a7c2 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x020569a8 param_ops_bint +EXPORT_SYMBOL vmlinux 0x020d7239 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x022f3bef register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x023d2300 lock_fb_info +EXPORT_SYMBOL vmlinux 0x024576a3 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x024fbbe7 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0266679f sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x026cf535 led_update_brightness +EXPORT_SYMBOL vmlinux 0x026da3f6 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x028cdd06 get_gendisk +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02dc38f9 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x02dd076d inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x02e6716d dquot_get_state +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02fd71bb i2c_master_recv +EXPORT_SYMBOL vmlinux 0x0301e69a tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033831e8 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x036377c9 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037af1a3 phy_connect +EXPORT_SYMBOL vmlinux 0x03937cb0 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x0394b752 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x03aaeeea pci_find_bus +EXPORT_SYMBOL vmlinux 0x03b72caf ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x03dad379 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x03e09ca6 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x03e10e93 __blk_end_request +EXPORT_SYMBOL vmlinux 0x03e393d7 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04003f80 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x0404d582 agp_free_memory +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0410d4b1 get_agp_version +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042391a5 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x0444d73a kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x0446773c __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x046e4569 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x04717608 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x0473316f generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x047ff686 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x04847978 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048a6d58 set_anon_super +EXPORT_SYMBOL vmlinux 0x04b1fa5a uart_suspend_port +EXPORT_SYMBOL vmlinux 0x04d335d7 bmap +EXPORT_SYMBOL vmlinux 0x04e9fb72 nf_log_register +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x050c2221 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05239aee put_filp +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x055f7319 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x05622948 skb_dequeue +EXPORT_SYMBOL vmlinux 0x056cb2c8 __kfree_skb +EXPORT_SYMBOL vmlinux 0x056ce1b6 pci_choose_state +EXPORT_SYMBOL vmlinux 0x0572ea6b fddi_type_trans +EXPORT_SYMBOL vmlinux 0x05739586 __kernel_write +EXPORT_SYMBOL vmlinux 0x0583a980 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x058f5d73 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x05945694 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05be5467 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x05e199d0 seq_dentry +EXPORT_SYMBOL vmlinux 0x05e72728 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x05ea2e2f pci_disable_device +EXPORT_SYMBOL vmlinux 0x05efcc51 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x05f9f822 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x06019265 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x060f9002 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061fbdcd poll_freewait +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064df1b0 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x06634a4b get_cached_acl +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06d0fbaf sock_sendmsg +EXPORT_SYMBOL vmlinux 0x06db81e4 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070e0639 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x07134e99 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x071a140a neigh_seq_next +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x0733ab7d kill_bdev +EXPORT_SYMBOL vmlinux 0x073a423d fs_bio_set +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x07528c04 update_region +EXPORT_SYMBOL vmlinux 0x07643cca of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x079adf1a __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b4e5c2 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x07c0c4a5 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x082c1671 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0872804e compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x089e1af6 backlight_force_update +EXPORT_SYMBOL vmlinux 0x08ad7639 udp_del_offload +EXPORT_SYMBOL vmlinux 0x08b178e1 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x08c8134b netif_napi_add +EXPORT_SYMBOL vmlinux 0x08db47d6 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x09191073 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x091a76bd seq_path +EXPORT_SYMBOL vmlinux 0x09322a74 param_set_ushort +EXPORT_SYMBOL vmlinux 0x09362b4a ptp_clock_register +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096f7627 dump_skip +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0996849f pci_release_region +EXPORT_SYMBOL vmlinux 0x09b4203b keyring_clear +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09f2e6f0 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x0a11992b dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2db189 netif_rx +EXPORT_SYMBOL vmlinux 0x0a3b0c16 dquot_disable +EXPORT_SYMBOL vmlinux 0x0a4aed0c ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x0a4b0ed7 con_is_bound +EXPORT_SYMBOL vmlinux 0x0a4e2bfa twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a876ac8 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0abfba0c of_platform_device_create +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae69b9b input_register_handler +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b11a9a1 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2d6bb7 unregister_console +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b2f4bac mark_page_accessed +EXPORT_SYMBOL vmlinux 0x0b37b6f7 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x0b569faa agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x0b578cc9 is_bad_inode +EXPORT_SYMBOL vmlinux 0x0b58f48c phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x0b5cee92 __inet_hash +EXPORT_SYMBOL vmlinux 0x0b6b239d igrab +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b867732 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x0bb361fb blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x0bb7b7c9 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0be2342b pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x0be328cd sk_stream_error +EXPORT_SYMBOL vmlinux 0x0bed8b4c pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x0c021ca2 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x0c0cf2a0 I_BDEV +EXPORT_SYMBOL vmlinux 0x0c11e2d9 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c2e69c0 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x0c34fd44 vfs_link +EXPORT_SYMBOL vmlinux 0x0c385680 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c56d575 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c624f50 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc0db94 netif_skb_features +EXPORT_SYMBOL vmlinux 0x0cd57927 vio_register_device_node +EXPORT_SYMBOL vmlinux 0x0cde2f38 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x0d01a00b devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x0d05a7d2 component_match_add +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5eed99 elevator_exit +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d78e845 blk_end_request +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da99866 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x0daf2f5a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x0db15227 agp_enable +EXPORT_SYMBOL vmlinux 0x0db55245 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x0dbf9a81 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc992f2 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x0dce695c request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x0dd928d0 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x0de0ba35 dqput +EXPORT_SYMBOL vmlinux 0x0df3cf72 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x0e211be0 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x0e2bbf27 __free_pages +EXPORT_SYMBOL vmlinux 0x0e5254d0 request_firmware +EXPORT_SYMBOL vmlinux 0x0e61b489 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7ff14d fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x0e8eaac7 netif_napi_del +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ebbaaf1 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ec74644 skb_checksum +EXPORT_SYMBOL vmlinux 0x0eda9866 input_close_device +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f07f295 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x0f1a6231 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f503566 param_get_long +EXPORT_SYMBOL vmlinux 0x0f595611 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6ed272 f_setown +EXPORT_SYMBOL vmlinux 0x0f7ae58e udp_prot +EXPORT_SYMBOL vmlinux 0x0f815b1f __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x0f8ce559 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x0fa5dde1 scsi_execute +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fd18bf1 would_dump +EXPORT_SYMBOL vmlinux 0x0fdcd59b skb_free_datagram +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x100b982c phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x1026f4ce acl_by_type +EXPORT_SYMBOL vmlinux 0x1027522a pagevec_lookup +EXPORT_SYMBOL vmlinux 0x1036a8cb tcp_req_err +EXPORT_SYMBOL vmlinux 0x103f9055 genphy_update_link +EXPORT_SYMBOL vmlinux 0x1052b9f6 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x10743114 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x10743b81 param_ops_byte +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10aac037 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x10b80c89 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x10e05644 tty_mutex +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110c5834 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x1118fa0a d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x11233510 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x11459261 vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x11533087 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1171d666 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x1193974e ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x11954f14 cont_write_begin +EXPORT_SYMBOL vmlinux 0x11973ca5 set_create_files_as +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11ab0d04 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x11ae7eae cdev_init +EXPORT_SYMBOL vmlinux 0x11c6df52 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12048475 skb_split +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12120097 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x121acc0b devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x121b8ba0 vfs_setpos +EXPORT_SYMBOL vmlinux 0x1231a732 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x123a8ee5 proc_create_data +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x12673322 page_symlink +EXPORT_SYMBOL vmlinux 0x1297bd04 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12ecdd7a mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x1304b163 __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13577162 md_register_thread +EXPORT_SYMBOL vmlinux 0x1371844a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x138f9e3b block_read_full_page +EXPORT_SYMBOL vmlinux 0x1391a241 blk_register_region +EXPORT_SYMBOL vmlinux 0x1395764e scsi_register +EXPORT_SYMBOL vmlinux 0x13a8c870 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x13b82a80 vc_resize +EXPORT_SYMBOL vmlinux 0x13c07fa9 genl_notify +EXPORT_SYMBOL vmlinux 0x13cc9228 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d4b6d6 input_event +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x14036e41 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x1408276b vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x14165018 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x144465f0 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x148f4c54 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x14a14817 pSeries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0x14a60b27 keyring_search +EXPORT_SYMBOL vmlinux 0x14afd1d2 misc_register +EXPORT_SYMBOL vmlinux 0x14c91159 ll_rw_block +EXPORT_SYMBOL vmlinux 0x14f6b21c i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x1508e8fb i2c_del_driver +EXPORT_SYMBOL vmlinux 0x15492c74 d_find_alias +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x156ca061 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x157a90cf vfs_mknod +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15d72a73 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x15dcf844 bio_init +EXPORT_SYMBOL vmlinux 0x15e255aa tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x15f00d1d pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x160125e8 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x160da70e ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x161ddb5a kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x1623f599 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x16358106 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x16496ee1 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x16739882 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x1678f53a __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16808415 kset_unregister +EXPORT_SYMBOL vmlinux 0x16a1bb7e blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x16a272c0 register_quota_format +EXPORT_SYMBOL vmlinux 0x16b433a7 mount_pseudo +EXPORT_SYMBOL vmlinux 0x16b609ba kmalloc_caches +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x1715e314 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x171faf2a udp_ioctl +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x17594c23 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x175e2e14 __devm_request_region +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x178c1cda dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x179d0e18 serio_reconnect +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f994c9 dquot_enable +EXPORT_SYMBOL vmlinux 0x1810d4f9 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x18166f81 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x181bba87 sock_no_connect +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x18375569 set_security_override +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1840afc4 key_link +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e5e24 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x18609ba6 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188b0f9a abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18aaba02 locks_free_lock +EXPORT_SYMBOL vmlinux 0x18ab154c dev_mc_flush +EXPORT_SYMBOL vmlinux 0x18bafa65 d_add_ci +EXPORT_SYMBOL vmlinux 0x18beca6e skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x18c2e229 vfs_writev +EXPORT_SYMBOL vmlinux 0x18ca89a3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x18d7cd29 fsync_bdev +EXPORT_SYMBOL vmlinux 0x1909798f ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x191c278f __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x19256333 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x1927f613 tcp_child_process +EXPORT_SYMBOL vmlinux 0x19743efb kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x198e009d __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x199ed3fa netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19cf978d agp_bind_memory +EXPORT_SYMBOL vmlinux 0x1a003b4b max8998_read_reg +EXPORT_SYMBOL vmlinux 0x1a04e5c8 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x1a1a688c simple_release_fs +EXPORT_SYMBOL vmlinux 0x1a2cba2c dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x1a4af9f1 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x1a4b918a security_path_rename +EXPORT_SYMBOL vmlinux 0x1a7e417a skb_pad +EXPORT_SYMBOL vmlinux 0x1a878759 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x1aadbdff wireless_spy_update +EXPORT_SYMBOL vmlinux 0x1abca87b twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x1abd4ea7 param_set_invbool +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1adec4ab nobh_write_end +EXPORT_SYMBOL vmlinux 0x1adfd5cc tcf_em_register +EXPORT_SYMBOL vmlinux 0x1aed4e00 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1affd077 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b04314c netif_carrier_on +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0d04e4 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1381cb cfb_imageblit +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b55eb94 vfs_rename +EXPORT_SYMBOL vmlinux 0x1b616a64 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x1b6202fb key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x1b625d33 enable_kernel_vsx +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b809366 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1ba43355 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bd69261 dquot_resume +EXPORT_SYMBOL vmlinux 0x1be66b3a udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x1bed7f62 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x1bf59bc1 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1bff22d4 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x1c1d9701 proc_symlink +EXPORT_SYMBOL vmlinux 0x1c309bbb inode_set_bytes +EXPORT_SYMBOL vmlinux 0x1c354ad3 udp_disconnect +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c473199 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x1c4b1940 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x1c621159 bdevname +EXPORT_SYMBOL vmlinux 0x1c632d88 done_path_create +EXPORT_SYMBOL vmlinux 0x1c6370a3 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x1c77d9c1 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x1c78781a dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x1c8139a5 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x1c94dc2f sock_init_data +EXPORT_SYMBOL vmlinux 0x1c9b1375 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x1cc4acee ppp_input_error +EXPORT_SYMBOL vmlinux 0x1cc78275 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x1ce6acdb user_path_create +EXPORT_SYMBOL vmlinux 0x1d00c0b6 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d2d6303 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x1d3ccbf8 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x1d42d0f1 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x1d48eda4 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x1d6cf540 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x1d6e53db touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x1d7337b5 blkdev_put +EXPORT_SYMBOL vmlinux 0x1d7b8041 get_task_io_context +EXPORT_SYMBOL vmlinux 0x1d8f0566 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dcff1f3 pnv_cxl_release_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd85e96 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x1e20a127 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x1e228b0c copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x1e255c52 sync_inode +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e34c719 brioctl_set +EXPORT_SYMBOL vmlinux 0x1e3b3a91 tty_name +EXPORT_SYMBOL vmlinux 0x1e404b87 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x1e54af98 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x1e5f2bec __invalidate_device +EXPORT_SYMBOL vmlinux 0x1e60a30c jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6f9aa5 start_tty +EXPORT_SYMBOL vmlinux 0x1e8aeb90 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x1e980b0c proto_unregister +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ec47da6 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x1ec6e31f del_gendisk +EXPORT_SYMBOL vmlinux 0x1eca532b md_finish_reshape +EXPORT_SYMBOL vmlinux 0x1ee4e4a1 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x1eece2b4 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x1ef51713 input_get_keycode +EXPORT_SYMBOL vmlinux 0x1f02d44b __dquot_transfer +EXPORT_SYMBOL vmlinux 0x1f047b8f param_get_byte +EXPORT_SYMBOL vmlinux 0x1f0a8cd3 i2c_use_client +EXPORT_SYMBOL vmlinux 0x1f29e919 dquot_alloc +EXPORT_SYMBOL vmlinux 0x1f3de75b pci_disable_msix +EXPORT_SYMBOL vmlinux 0x1f509bd7 send_sig_info +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f8601ee tty_check_change +EXPORT_SYMBOL vmlinux 0x1fa9d9c5 d_alloc_name +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd92c80 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff9e339 mach_pseries +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2016ad36 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2057a8db vga_client_register +EXPORT_SYMBOL vmlinux 0x206b450e mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2092401e iput +EXPORT_SYMBOL vmlinux 0x2098eabe forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x209b9900 dm_get_device +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d7b990 kill_fasync +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ef366b pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x210a2a53 param_ops_charp +EXPORT_SYMBOL vmlinux 0x211a667b sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x21458718 dma_pool_create +EXPORT_SYMBOL vmlinux 0x215eda25 inet_bind +EXPORT_SYMBOL vmlinux 0x21746aa4 param_get_bool +EXPORT_SYMBOL vmlinux 0x21ce424e km_state_expired +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e64401 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2203f251 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x220488c9 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x222ddea2 phy_stop +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22457fa4 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x224cb573 scsi_print_command +EXPORT_SYMBOL vmlinux 0x224d0114 sock_no_accept +EXPORT_SYMBOL vmlinux 0x225607cb __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x228c3442 iget_locked +EXPORT_SYMBOL vmlinux 0x22a0ab37 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x22b01cdf fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22dbafb4 genlmsg_put +EXPORT_SYMBOL vmlinux 0x22f6fcc2 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x230619ad mac_find_mode +EXPORT_SYMBOL vmlinux 0x2307782d request_key_async +EXPORT_SYMBOL vmlinux 0x230d04c9 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x23180a46 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232194c6 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235d99cc set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2361eee5 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x236f01b1 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x23785948 pci_map_rom +EXPORT_SYMBOL vmlinux 0x239a8d1d rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bb0f9e redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x23c0b9ea vfs_getattr +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f6a97c mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2405b7a1 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x2420ce30 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x243549cc tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244cfb16 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x24529e9f delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245cca89 stop_tty +EXPORT_SYMBOL vmlinux 0x247bfb8e ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x2488eaca vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x24b3205b jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24dbdc18 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f2266d md_done_sync +EXPORT_SYMBOL vmlinux 0x24f3556f elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x24f7fe84 generic_getxattr +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x251a4801 sock_i_uid +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2546e32a get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x2548d27e cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x254a54b3 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x255666d2 fasync_helper +EXPORT_SYMBOL vmlinux 0x2560c544 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2588369d nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x2599f47a giveup_vsx +EXPORT_SYMBOL vmlinux 0x259d1b37 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25ae1324 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x25c841bf validate_sp +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x261c7420 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x26369f38 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263e7a50 inet6_protos +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265e4b3d input_set_keycode +EXPORT_SYMBOL vmlinux 0x26641b50 sk_alloc +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x26695474 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x266d0160 param_set_uint +EXPORT_SYMBOL vmlinux 0x26bd8fb5 wake_up_process +EXPORT_SYMBOL vmlinux 0x26c69726 mmc_release_host +EXPORT_SYMBOL vmlinux 0x26ce79c8 input_release_device +EXPORT_SYMBOL vmlinux 0x26e066c4 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x27073d11 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x2708032d thaw_bdev +EXPORT_SYMBOL vmlinux 0x270a3da8 block_write_full_page +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2758e264 param_get_short +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277a5a94 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x277c86a0 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27bb2408 of_match_device +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bda1ff cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x27cebc25 ibmebus_unregister_driver +EXPORT_SYMBOL vmlinux 0x27dfc9d3 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28309cb3 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x28470e67 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x2847d537 ps2_init +EXPORT_SYMBOL vmlinux 0x2848853f devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x28647d51 sock_no_poll +EXPORT_SYMBOL vmlinux 0x28720a2e ptp_clock_event +EXPORT_SYMBOL vmlinux 0x28792686 blk_peek_request +EXPORT_SYMBOL vmlinux 0x288f00ac __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x28923079 down_write_trylock +EXPORT_SYMBOL vmlinux 0x289a8b2a may_umount_tree +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 0x28c2b61f mmc_add_host +EXPORT_SYMBOL vmlinux 0x28c79c2b swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x290a2c33 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x29316220 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x293d0abb inet6_del_offload +EXPORT_SYMBOL vmlinux 0x294cffc8 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2963c6a9 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x2980872c fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x2981c272 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x298dd1b0 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x2994b54e pci_write_vpd +EXPORT_SYMBOL vmlinux 0x29aeacc5 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x29bd9df1 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x29cf6aae phy_device_register +EXPORT_SYMBOL vmlinux 0x29d1b2ee abort_creds +EXPORT_SYMBOL vmlinux 0x29edd8c3 rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x2a188128 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x2a1d7f96 iget5_locked +EXPORT_SYMBOL vmlinux 0x2a22fc06 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x2a23933a request_key +EXPORT_SYMBOL vmlinux 0x2a24fb78 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a39fa4e simple_unlink +EXPORT_SYMBOL vmlinux 0x2a61c82a dev_notice +EXPORT_SYMBOL vmlinux 0x2a6bc766 __scm_send +EXPORT_SYMBOL vmlinux 0x2a6f6144 netpoll_setup +EXPORT_SYMBOL vmlinux 0x2aa63f84 __sb_start_write +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad3c8bf loop_backing_file +EXPORT_SYMBOL vmlinux 0x2ade9ff9 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b138aba dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2b24ab9d tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b40d4a4 cdev_add +EXPORT_SYMBOL vmlinux 0x2b424a1c sk_capable +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b681c59 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x2b8039b7 proc_set_user +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc828f7 kill_block_super +EXPORT_SYMBOL vmlinux 0x2c1e1061 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x2c22d205 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c42e0c4 page_readlink +EXPORT_SYMBOL vmlinux 0x2c58b1b0 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x2c6381a6 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x2c6d3387 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x2c6f3904 bio_copy_data +EXPORT_SYMBOL vmlinux 0x2c6f4e5d sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x2c727b95 clear_nlink +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca68bf8 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x2caa38c1 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2cacbed1 arp_create +EXPORT_SYMBOL vmlinux 0x2cbe7ac9 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x2cccb1e1 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x2cdeb16e ip6_xmit +EXPORT_SYMBOL vmlinux 0x2ceaa25e inet_select_addr +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d124009 unregister_key_type +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2e6ea7 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d3abb23 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x2d4300b4 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x2d63fe90 bioset_create +EXPORT_SYMBOL vmlinux 0x2d9cde60 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x2da1e585 vme_irq_request +EXPORT_SYMBOL vmlinux 0x2da5bd7c address_space_init_once +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dfc9e40 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e12a93b ibmebus_request_irq +EXPORT_SYMBOL vmlinux 0x2e190bba fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x2e1951c0 kobject_put +EXPORT_SYMBOL vmlinux 0x2e1eefd3 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x2e2548fb md_flush_request +EXPORT_SYMBOL vmlinux 0x2e29097b file_path +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e4d77fd cdrom_check_events +EXPORT_SYMBOL vmlinux 0x2e8d65e6 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x2e919a8e find_inode_nowait +EXPORT_SYMBOL vmlinux 0x2e9bb077 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x2ea054fc inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x2eaafdad simple_follow_link +EXPORT_SYMBOL vmlinux 0x2ebdf0f5 udp_proc_register +EXPORT_SYMBOL vmlinux 0x2ed8eaab bdi_register +EXPORT_SYMBOL vmlinux 0x2edfa45f bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x2ef06736 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efa63ea iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0e282a kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f372308 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x2f5a28e0 generic_setxattr +EXPORT_SYMBOL vmlinux 0x2f5b2f45 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbb5612 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x2fdd7752 get_empty_filp +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe5701a sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x300321d2 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x3011fe41 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x301df9d1 __napi_schedule +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302593a0 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x306ffe29 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309bb028 inet_accept +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30bb1bee mmc_put_card +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31088183 open_exec +EXPORT_SYMBOL vmlinux 0x310ce8d7 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x310e000d security_inode_readlink +EXPORT_SYMBOL vmlinux 0x31110539 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31602a3d flush_signals +EXPORT_SYMBOL vmlinux 0x316b4247 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31cd995b store_fp_state +EXPORT_SYMBOL vmlinux 0x31e1015b of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x31e365ef free_netdev +EXPORT_SYMBOL vmlinux 0x32085581 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x32139ae2 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x3216db50 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x322e8b17 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x323235d5 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x32445135 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x325703bc dquot_operations +EXPORT_SYMBOL vmlinux 0x325f5772 seq_printf +EXPORT_SYMBOL vmlinux 0x326dde87 release_firmware +EXPORT_SYMBOL vmlinux 0x327fe115 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x328fbfe0 alloc_file +EXPORT_SYMBOL vmlinux 0x329a9b7b sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x329bc2e3 up_read +EXPORT_SYMBOL vmlinux 0x32df6a4f alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x32e02d5e iterate_mounts +EXPORT_SYMBOL vmlinux 0x330d7da8 filp_open +EXPORT_SYMBOL vmlinux 0x330d8b42 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x331a84b8 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x3330673f input_reset_device +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x334ce585 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x33573383 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x335793ba jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x33594d76 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x33a8928d tcp_ioctl +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33da47c2 arch_free_page +EXPORT_SYMBOL vmlinux 0x33daeed5 vio_find_node +EXPORT_SYMBOL vmlinux 0x33dff848 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x33ef9ed7 tcp_proc_register +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 0x34232408 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x3447449d mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x345e7613 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x348a1b9c of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x349c2ca4 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x349c6574 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b929db free_buffer_head +EXPORT_SYMBOL vmlinux 0x34c19a70 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x34ca5a71 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x34db5e0b xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x34f28d1b blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350cb96f pci_pme_active +EXPORT_SYMBOL vmlinux 0x350e1411 tso_start +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x357ad16a of_device_register +EXPORT_SYMBOL vmlinux 0x358a24dc agp_backend_release +EXPORT_SYMBOL vmlinux 0x358c0f30 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x35a320a4 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35abab81 revalidate_disk +EXPORT_SYMBOL vmlinux 0x35ac2c7d i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x35bee7a4 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x35c0fbad gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35ce65e8 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x35d11511 bdi_init +EXPORT_SYMBOL vmlinux 0x35def7a8 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x35e09980 flex_array_put +EXPORT_SYMBOL vmlinux 0x36067fda mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x361736e4 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x364fd06a of_device_is_available +EXPORT_SYMBOL vmlinux 0x3668fd48 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3669128c udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x36849ba9 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x368651b9 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x3686f6e5 sync_blockdev +EXPORT_SYMBOL vmlinux 0x3697a963 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a1e210 kobject_add +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36bde449 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x36c03ba7 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x36eb13c5 pnv_cxl_release_hwirqs +EXPORT_SYMBOL vmlinux 0x36fabdb3 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x3701946a mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x3708a481 sock_register +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372a742f secpath_dup +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x374209f3 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374526c0 scmd_printk +EXPORT_SYMBOL vmlinux 0x3747f9eb dump_align +EXPORT_SYMBOL vmlinux 0x376a8cb5 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x3772aad6 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x37796617 bd_set_size +EXPORT_SYMBOL vmlinux 0x377b2fa7 blk_rq_init +EXPORT_SYMBOL vmlinux 0x377eaebd __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x379ed3ee pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b0a590 iget_failed +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c72e30 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x37cca22d param_get_invbool +EXPORT_SYMBOL vmlinux 0x37d0c6dc of_get_property +EXPORT_SYMBOL vmlinux 0x37d25e2c skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x37d79850 param_set_bool +EXPORT_SYMBOL vmlinux 0x38023554 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382851b1 tty_set_operations +EXPORT_SYMBOL vmlinux 0x383087ae mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x3847aa5d xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x384f033e pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x384fe492 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x38627d8c dump_page +EXPORT_SYMBOL vmlinux 0x387eb3a4 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38a68256 kill_pid +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38abbded neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x38aeaa67 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38c5eef1 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x38f05be0 vme_register_driver +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x38fe7bbe of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x3944c0d5 iunique +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394eba22 simple_getattr +EXPORT_SYMBOL vmlinux 0x3955c713 kobject_del +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x395f2001 elv_add_request +EXPORT_SYMBOL vmlinux 0x397567b4 __bforget +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x399f22f2 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x39aa93fd ___pskb_trim +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d27b18 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x39da5da0 udp_poll +EXPORT_SYMBOL vmlinux 0x3a1b1238 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x3a27523d dqget +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3adfbbe2 inet_getname +EXPORT_SYMBOL vmlinux 0x3aee0181 scsi_device_put +EXPORT_SYMBOL vmlinux 0x3b487e77 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x3b571412 cdev_alloc +EXPORT_SYMBOL vmlinux 0x3b601e02 override_creds +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b7d2b61 of_get_next_child +EXPORT_SYMBOL vmlinux 0x3b8bd340 noop_llseek +EXPORT_SYMBOL vmlinux 0x3baa3fd9 scsi_device_get +EXPORT_SYMBOL vmlinux 0x3bbd2b52 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x3bf6d08c bdi_destroy +EXPORT_SYMBOL vmlinux 0x3c102a25 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x3c150aaf remove_proc_entry +EXPORT_SYMBOL vmlinux 0x3c17280b ibmebus_bus_type +EXPORT_SYMBOL vmlinux 0x3c1b6d04 __register_binfmt +EXPORT_SYMBOL vmlinux 0x3c2b7299 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x3c2e9459 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x3c2f562b unregister_quota_format +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c65e027 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x3c6c9162 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x3c6f70d3 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x3c6fa216 tty_vhangup +EXPORT_SYMBOL vmlinux 0x3c72e70f udp_set_csum +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8676ac abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x3c9daaf4 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x3c9dd22d ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x3ca9d37d kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x3caece10 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cea935d xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x3cecd1b0 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x3cf94211 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x3d34fd7b ps2_begin_command +EXPORT_SYMBOL vmlinux 0x3d38403c max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x3d463895 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x3d6d1401 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x3d9b4869 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3df548c6 d_move +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3dfefa56 bio_reset +EXPORT_SYMBOL vmlinux 0x3e0b3539 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x3e2704cb of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x3e349541 pci_clear_master +EXPORT_SYMBOL vmlinux 0x3e49e8c6 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ebe2730 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x3ed45e7d skb_clone +EXPORT_SYMBOL vmlinux 0x3ef741d1 vm_mmap +EXPORT_SYMBOL vmlinux 0x3f0325cc remove_arg_zero +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0969a4 vme_slave_request +EXPORT_SYMBOL vmlinux 0x3f21ad14 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x3f2a5ce8 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x3f2c828e tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f56ddb7 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x3f7e2fdc phy_disconnect +EXPORT_SYMBOL vmlinux 0x3f9b5c70 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x3fa614af dev_close +EXPORT_SYMBOL vmlinux 0x3fb67740 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x3fbc046b inet_del_protocol +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe4c5ba tty_port_open +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x40126a84 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402d8a1f set_wb_congested +EXPORT_SYMBOL vmlinux 0x403facc0 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40b35516 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x40ba7b33 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c34a16 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x40c4a141 init_special_inode +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c7cdf4 down_write +EXPORT_SYMBOL vmlinux 0x40cc9909 __netif_schedule +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dadedd dup_iter +EXPORT_SYMBOL vmlinux 0x40db4627 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x40dcb386 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x40ecfd8a inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x4110e11d pps_unregister_source +EXPORT_SYMBOL vmlinux 0x411ce15f ppp_unit_number +EXPORT_SYMBOL vmlinux 0x41311375 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419056fb unregister_nls +EXPORT_SYMBOL vmlinux 0x41caa262 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0x41cc43dd module_put +EXPORT_SYMBOL vmlinux 0x41dc7b58 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x41e44fac phy_suspend +EXPORT_SYMBOL vmlinux 0x41e7346b d_invalidate +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x424d4ca3 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425a4dcd mount_subtree +EXPORT_SYMBOL vmlinux 0x42695514 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x426cf4e6 copy_from_iter +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42c3d0a1 fd_install +EXPORT_SYMBOL vmlinux 0x42d92245 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x42e81a38 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x42f6bb91 param_set_byte +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4303424c ip_setsockopt +EXPORT_SYMBOL vmlinux 0x4317d939 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x43188b5e compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x431f44ac sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x4331ef59 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43547e6a nd_btt_probe +EXPORT_SYMBOL vmlinux 0x43561bb2 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x43629236 simple_empty +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x437dccfa kernel_connect +EXPORT_SYMBOL vmlinux 0x4384b71a xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438ccb59 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a767b8 neigh_lookup +EXPORT_SYMBOL vmlinux 0x43b3239f seq_open +EXPORT_SYMBOL vmlinux 0x43c34713 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x43d4b232 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4406ea7b dentry_unhash +EXPORT_SYMBOL vmlinux 0x440e5140 param_get_uint +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44433420 give_up_console +EXPORT_SYMBOL vmlinux 0x445b9b2f of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x447411d8 vfs_statfs +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x4490ea87 skb_make_writable +EXPORT_SYMBOL vmlinux 0x449966bd ps2_end_command +EXPORT_SYMBOL vmlinux 0x44a1a9de xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b4daa7 netif_device_attach +EXPORT_SYMBOL vmlinux 0x44bbaf49 tty_lock +EXPORT_SYMBOL vmlinux 0x44e2d757 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x44e35205 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ecb630 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x44f68a01 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x44fd535e padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x452f0190 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4544de4c skb_clone_sk +EXPORT_SYMBOL vmlinux 0x4550b230 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x45550464 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4585aaac twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bdd8fb of_phy_connect +EXPORT_SYMBOL vmlinux 0x45c77b5a xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x45e9cf0a scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x45ef8b3d register_key_type +EXPORT_SYMBOL vmlinux 0x45f14e88 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x45fec7e9 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x46221bcc unlock_buffer +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x465cc59b eth_header_cache +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x467e306b __ip_dev_find +EXPORT_SYMBOL vmlinux 0x46a0170e flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46e26845 mach_powernv +EXPORT_SYMBOL vmlinux 0x46f99e8d copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470bb4a0 write_inode_now +EXPORT_SYMBOL vmlinux 0x47167a8c generic_read_dir +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47606c9c uart_register_driver +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x4771584b inet_frag_find +EXPORT_SYMBOL vmlinux 0x478d16cc jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x478e6c19 release_sock +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a0b160 unlock_page +EXPORT_SYMBOL vmlinux 0x47abad3f xfrm_input +EXPORT_SYMBOL vmlinux 0x47ad820e wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x47af6cc4 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x47bbb3d6 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x47daff18 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x4816be5b __getblk_slow +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x482a95a3 default_llseek +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x484eb7a1 replace_mount_options +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4875bd4c devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x48793de7 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x487ba865 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x4882d993 dquot_file_open +EXPORT_SYMBOL vmlinux 0x488c3e22 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x488c6559 pci_bus_get +EXPORT_SYMBOL vmlinux 0x4890d549 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x48b65df7 km_state_notify +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48fad0ad twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490fb61a devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x492bf9a9 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x4941b73e ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496b8d45 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x498aab23 blk_put_queue +EXPORT_SYMBOL vmlinux 0x49976021 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x499bfc6d __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b60ca8 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x49b844b4 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a073047 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x4a0c1d74 may_umount +EXPORT_SYMBOL vmlinux 0x4a201ab8 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x4a413731 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x4a5b7733 register_framebuffer +EXPORT_SYMBOL vmlinux 0x4a68e447 __d_drop +EXPORT_SYMBOL vmlinux 0x4a765a07 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x4a951f1c __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x4aacb5ab pci_restore_state +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac38ec7 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x4ac6e506 of_device_alloc +EXPORT_SYMBOL vmlinux 0x4acd132f __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad2a57a opal_event_request +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b00b22f inode_init_always +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b795a75 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x4b7f7a4b phy_device_create +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb2ed57 iterate_fd +EXPORT_SYMBOL vmlinux 0x4bcb073f input_register_device +EXPORT_SYMBOL vmlinux 0x4be1bc04 bio_chain +EXPORT_SYMBOL vmlinux 0x4be4b35c mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf2b74b __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c229cdd mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x4c24d1eb devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c65e94e vme_lm_request +EXPORT_SYMBOL vmlinux 0x4c726a7d phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x4c7ba786 get_fs_type +EXPORT_SYMBOL vmlinux 0x4c8e1b11 pnv_phb_to_cxl_mode +EXPORT_SYMBOL vmlinux 0x4c921e02 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x4c99737e max8925_reg_write +EXPORT_SYMBOL vmlinux 0x4c9d17ed security_path_link +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4caea1bd security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cb5892c pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x4cc4fc6c __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x4cc55ec6 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf6af3b finish_open +EXPORT_SYMBOL vmlinux 0x4d04e0c7 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x4d0a2bc5 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x4d1efe72 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x4d241fb0 skb_unlink +EXPORT_SYMBOL vmlinux 0x4d31c47b of_node_get +EXPORT_SYMBOL vmlinux 0x4d457a6e input_allocate_device +EXPORT_SYMBOL vmlinux 0x4d4bc343 empty_aops +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d96f99b pcibus_to_node +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db53cd1 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x4dd15726 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df211b6 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x4e18e0ff netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x4e1d5921 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e908e93 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x4e90bcee bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eb96f1d blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x4ecd527e of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ee21af9 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x4ee32cdf param_set_charp +EXPORT_SYMBOL vmlinux 0x4f1377fc agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f29672d crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3f6189 datagram_poll +EXPORT_SYMBOL vmlinux 0x4f4508c9 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f505520 __bread_gfp +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f7ce19a gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x4f83f438 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x4fa23842 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50001f6e tcp_poll +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5018cf75 __find_get_block +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50669070 kthread_bind +EXPORT_SYMBOL vmlinux 0x50a72025 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ae872e __frontswap_store +EXPORT_SYMBOL vmlinux 0x50b5a408 d_splice_alias +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50c8ee8b debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x50d03eb4 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x50d56151 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50ee4440 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x50fce63c pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x51007cf8 invalidate_partition +EXPORT_SYMBOL vmlinux 0x510cb503 key_invalidate +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511c0d4f tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x515b6a60 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x515b6a64 bdget_disk +EXPORT_SYMBOL vmlinux 0x515c45db dquot_destroy +EXPORT_SYMBOL vmlinux 0x51622f73 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x5167114c nf_register_hooks +EXPORT_SYMBOL vmlinux 0x5182c55b sk_stop_timer +EXPORT_SYMBOL vmlinux 0x518b3a5d __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a041bf sg_miter_next +EXPORT_SYMBOL vmlinux 0x51b8a54e find_vma +EXPORT_SYMBOL vmlinux 0x51ecd1ff tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x51f94136 md_check_recovery +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521135d1 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x5212e75c blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x521e0251 dev_alert +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52af998e bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x52f4dddd bio_advance +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5317c390 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x531fdf17 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x5329cfaf file_update_time +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5346334a d_walk +EXPORT_SYMBOL vmlinux 0x53481c1d posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x53565a5a jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x536f8e96 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538a44f8 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x538c4a72 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x539d324b ppp_register_channel +EXPORT_SYMBOL vmlinux 0x53a55fda mdio_bus_type +EXPORT_SYMBOL vmlinux 0x53c0f57d pci_save_state +EXPORT_SYMBOL vmlinux 0x53c170b9 seq_escape +EXPORT_SYMBOL vmlinux 0x53cb63cd blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x53cc0ee9 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f9d531 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x5423573e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x547bf29d vfs_read +EXPORT_SYMBOL vmlinux 0x54935596 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x549f023f devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c7d115 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x54ca1e6a udp_sendmsg +EXPORT_SYMBOL vmlinux 0x54db334f fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f5968b init_net +EXPORT_SYMBOL vmlinux 0x550063d5 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x55147cc1 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552a9688 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x55402238 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x5541bc17 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55547918 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x5567415f tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55ea01a7 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x55edde11 pci_match_id +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x560678cd scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x56119d6e iov_iter_npages +EXPORT_SYMBOL vmlinux 0x56153925 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x561c33ed input_set_capability +EXPORT_SYMBOL vmlinux 0x5628b019 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x5629a5a4 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x56306597 inode_change_ok +EXPORT_SYMBOL vmlinux 0x56318b51 scsi_print_result +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563b67e0 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x563f1f42 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x565c628e inode_permission +EXPORT_SYMBOL vmlinux 0x5663dcb4 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x566cc0d4 register_console +EXPORT_SYMBOL vmlinux 0x5689ff22 ether_setup +EXPORT_SYMBOL vmlinux 0x5693dc05 bdev_read_only +EXPORT_SYMBOL vmlinux 0x569c8a45 end_page_writeback +EXPORT_SYMBOL vmlinux 0x56a6598c find_get_entry +EXPORT_SYMBOL vmlinux 0x56b5739d xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x56b885e5 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x571f6670 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x572647d6 get_mce_fault_addr +EXPORT_SYMBOL vmlinux 0x572af37b netdev_features_change +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x575056b8 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576feeac make_kgid +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x578b80a2 sock_rfree +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x5794a598 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x57a0a276 dev_open +EXPORT_SYMBOL vmlinux 0x57c3a89b dev_uc_init +EXPORT_SYMBOL vmlinux 0x57e0cd1c phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x57f6e745 kobject_init +EXPORT_SYMBOL vmlinux 0x5808dd98 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x580da009 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x5815c4b0 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582569b5 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x582b76ed pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5839d3db vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58814ec2 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x5884f6de gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x58a70454 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58b99143 path_is_under +EXPORT_SYMBOL vmlinux 0x58c98638 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x58d1b52d input_unregister_device +EXPORT_SYMBOL vmlinux 0x58d959bc nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x58dbbb61 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58eb3cbc __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x58ee549b devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x58f19a7b xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x5906ff5e filemap_fault +EXPORT_SYMBOL vmlinux 0x591102a4 generic_write_checks +EXPORT_SYMBOL vmlinux 0x5911f495 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x5936d983 node_data +EXPORT_SYMBOL vmlinux 0x593e3cc9 param_get_ushort +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +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 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b0978c ata_port_printk +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59f2a9c5 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a08ec19 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a0c06d6 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x5a25b385 scsi_host_put +EXPORT_SYMBOL vmlinux 0x5a2b5908 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x5a400978 misc_deregister +EXPORT_SYMBOL vmlinux 0x5a678f07 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x5a8a67f1 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x5a918437 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a985b24 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5ae6ed9b phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b067487 napi_disable +EXPORT_SYMBOL vmlinux 0x5b2fc788 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b74cad9 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x5b752253 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc13a85 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x5bcfa1de seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x5bd12720 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x5bd4f57c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x5bd7ff80 paca +EXPORT_SYMBOL vmlinux 0x5bf1c990 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x5bfec892 locks_init_lock +EXPORT_SYMBOL vmlinux 0x5c0e7e59 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x5c31c714 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c5e0b7d linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x5c7b69e7 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x5c7cb42c rfkill_alloc +EXPORT_SYMBOL vmlinux 0x5c82526f ptp_find_pin +EXPORT_SYMBOL vmlinux 0x5c8c9737 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x5ca313c5 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x5cca16d1 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x5cca2478 sk_wait_data +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf95902 param_array_ops +EXPORT_SYMBOL vmlinux 0x5d166970 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x5d17aff0 km_query +EXPORT_SYMBOL vmlinux 0x5d238384 generic_make_request +EXPORT_SYMBOL vmlinux 0x5d2eddc4 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x5d52a825 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x5d53276b sock_wfree +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d9608d8 km_report +EXPORT_SYMBOL vmlinux 0x5d9660aa md_reload_sb +EXPORT_SYMBOL vmlinux 0x5da285b5 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x5daf8803 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x5dbe7fbc clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x5dc9df60 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x5ddd4e19 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x5ddff818 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x5de0060c fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x5df8dd27 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x5e0c2d2f vm_map_ram +EXPORT_SYMBOL vmlinux 0x5e17ca07 free_task +EXPORT_SYMBOL vmlinux 0x5e1eba1c d_alloc +EXPORT_SYMBOL vmlinux 0x5e30a47a netdev_err +EXPORT_SYMBOL vmlinux 0x5e327db2 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x5e3344ae filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x5e336987 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x5e3a2361 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e6155f2 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x5e74aa43 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x5e7d453f xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9bbdcd __scm_destroy +EXPORT_SYMBOL vmlinux 0x5e9e506d xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5edee431 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x5eef826b ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x5efc1a2b scsi_scan_host +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f06597e inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x5f083d06 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1c6a12 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x5f2a389c agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x5f3a8aaa __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x5f5472ba inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x5f55b39b put_io_context +EXPORT_SYMBOL vmlinux 0x5f641988 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x5f7a7cdf bio_unmap_user +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe99bb0 lease_modify +EXPORT_SYMBOL vmlinux 0x5fee15c9 get_phy_device +EXPORT_SYMBOL vmlinux 0x5fffbfa1 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x60007ecf sock_wmalloc +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60126b72 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6030fe2e skb_queue_tail +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6047c881 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x6050e880 tcp_close +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607467f6 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x6074e063 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a54eeb poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x60b862b5 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x60c5b9c6 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x60d7c6db blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x60de6d91 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f0cf0c __scsi_add_device +EXPORT_SYMBOL vmlinux 0x610ab280 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x613585c5 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x6140a39c led_set_brightness +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6155a793 freeze_bdev +EXPORT_SYMBOL vmlinux 0x615b5c8b __skb_checksum +EXPORT_SYMBOL vmlinux 0x615fd839 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x61688032 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x616e4d7d swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x61729d9a dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61af48b8 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x61b5fe82 ip_options_compile +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c81251 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x61cbadce inet6_offloads +EXPORT_SYMBOL vmlinux 0x61da410c dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x61e0ea96 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x61e55f71 sget +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61fa88d9 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x61fc6d33 of_node_put +EXPORT_SYMBOL vmlinux 0x620adac3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622ee737 touch_atime +EXPORT_SYMBOL vmlinux 0x623f7873 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x623f9183 __pagevec_release +EXPORT_SYMBOL vmlinux 0x6250ee88 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6280e6d2 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629949a3 bio_map_kern +EXPORT_SYMBOL vmlinux 0x62b10cce pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x62bc8671 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x62d4f881 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631a5916 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x631b8b56 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x636c5609 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x636de069 of_device_unregister +EXPORT_SYMBOL vmlinux 0x637a9e00 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x63882d1f netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x6398e505 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63b0b8b2 blk_init_tags +EXPORT_SYMBOL vmlinux 0x63b29a95 neigh_xmit +EXPORT_SYMBOL vmlinux 0x63ba6d1e ip6_frag_match +EXPORT_SYMBOL vmlinux 0x63bb6e0f lock_sock_fast +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63e9710a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x64003830 release_pages +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640813c1 submit_bio +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641f48ec page_put_link +EXPORT_SYMBOL vmlinux 0x643db42e seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x6459a134 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x6468522b pcie_get_mps +EXPORT_SYMBOL vmlinux 0x646a4e6b bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c3cd38 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x65048f58 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x650734d6 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651bdb26 tso_count_descs +EXPORT_SYMBOL vmlinux 0x6523fdbe blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x65243a64 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654a664a bioset_free +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x656d0e1b simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x65932200 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x65a50b8a xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x65acd288 param_get_charp +EXPORT_SYMBOL vmlinux 0x65b0ab65 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d01de8 __neigh_set_probe_once +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 0x65e8719c mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f8bfa7 genphy_read_status +EXPORT_SYMBOL vmlinux 0x6600251e __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x660ac70e posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x660fb1c4 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x661631d4 setup_new_exec +EXPORT_SYMBOL vmlinux 0x661c23d2 agp_bridge +EXPORT_SYMBOL vmlinux 0x66284986 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x66346f18 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x664be95d skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x666783e3 generic_readlink +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x668e583d pcie_set_mps +EXPORT_SYMBOL vmlinux 0x669b3409 neigh_update +EXPORT_SYMBOL vmlinux 0x66aeb443 dev_uc_del +EXPORT_SYMBOL vmlinux 0x66c1198b user_revoke +EXPORT_SYMBOL vmlinux 0x66f5cb71 single_open +EXPORT_SYMBOL vmlinux 0x67016146 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x671fc8c7 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x672531ac ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675bc45d dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x676d4d94 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x678a295d skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x67af60de fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c1cfb7 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x67c4830e update_devfreq +EXPORT_SYMBOL vmlinux 0x67d54186 dma_find_channel +EXPORT_SYMBOL vmlinux 0x67fef802 set_groups +EXPORT_SYMBOL vmlinux 0x6806fbd8 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6809b5c3 dev_deactivate +EXPORT_SYMBOL vmlinux 0x6827473d nf_log_unset +EXPORT_SYMBOL vmlinux 0x68528774 soft_cursor +EXPORT_SYMBOL vmlinux 0x685ac1ea genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x6876db0d generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68856db1 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x68888977 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c05bfb serio_close +EXPORT_SYMBOL vmlinux 0x68d73917 __register_nls +EXPORT_SYMBOL vmlinux 0x68dad936 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x68f68436 dev_mc_add +EXPORT_SYMBOL vmlinux 0x69059031 unregister_netdev +EXPORT_SYMBOL vmlinux 0x690bc4c9 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x690cca8f km_policy_notify +EXPORT_SYMBOL vmlinux 0x6919c793 sock_no_getname +EXPORT_SYMBOL vmlinux 0x6920babc vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x6924bf28 generic_removexattr +EXPORT_SYMBOL vmlinux 0x6931d7dc generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x69320c07 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x69325672 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6940787f neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x69453ac3 bio_add_page +EXPORT_SYMBOL vmlinux 0x694d6cf6 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x69525304 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x6962257f of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x696b7253 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697dbc59 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69aa934a vm_insert_page +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69bf5cb8 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x69d34849 km_new_mapping +EXPORT_SYMBOL vmlinux 0x69dc1d5c dev_add_offload +EXPORT_SYMBOL vmlinux 0x69e894bf bprm_change_interp +EXPORT_SYMBOL vmlinux 0x69f00aaf of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x69f52c77 param_ops_int +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a136f27 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x6a1f1ece jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x6a31e5a6 mutex_unlock +EXPORT_SYMBOL vmlinux 0x6a328248 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x6a3f5e05 __vfs_write +EXPORT_SYMBOL vmlinux 0x6a4b24ce kobject_set_name +EXPORT_SYMBOL vmlinux 0x6a539fa8 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x6a5d1c60 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a69d272 seq_lseek +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a959b53 d_rehash +EXPORT_SYMBOL vmlinux 0x6a9eff80 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x6aa18546 qdisc_reset +EXPORT_SYMBOL vmlinux 0x6aa89bcd cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6adb8f5a xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x6adc121d padata_free +EXPORT_SYMBOL vmlinux 0x6adc1693 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x6ae8c1bf bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b111a52 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b21594b __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b31d9d3 generic_perform_write +EXPORT_SYMBOL vmlinux 0x6b36dc7b skb_push +EXPORT_SYMBOL vmlinux 0x6b37aba6 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x6b40e6ca abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b631c3f param_set_ullong +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b7e5442 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x6b8a881c kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x6b8f5e6a jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x6ba12b2e alloc_fddidev +EXPORT_SYMBOL vmlinux 0x6bc0295a of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcb7a36 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x6bcde7b5 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be1f63c security_path_symlink +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c3f56b4 single_open_size +EXPORT_SYMBOL vmlinux 0x6c41bd9c blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x6c512918 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c53710e jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c65c400 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x6c6ee90b prepare_creds +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6cad5fb1 sock_i_ino +EXPORT_SYMBOL vmlinux 0x6caf4a85 get_super +EXPORT_SYMBOL vmlinux 0x6cbef781 seq_open_private +EXPORT_SYMBOL vmlinux 0x6cfd9474 ps2_drain +EXPORT_SYMBOL vmlinux 0x6d00cd07 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x6d041cc1 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d25a931 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d53897f alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x6d54664e phy_find_first +EXPORT_SYMBOL vmlinux 0x6d6c984f generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x6d72e481 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x6d7feeb2 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x6d887c2c netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x6d9244b5 security_path_chown +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dbfac23 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x6dee2fe5 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6dfbdbdc clear_user_page +EXPORT_SYMBOL vmlinux 0x6e0314d0 dm_register_target +EXPORT_SYMBOL vmlinux 0x6e22aa6f mpage_writepage +EXPORT_SYMBOL vmlinux 0x6e454e0d rt6_lookup +EXPORT_SYMBOL vmlinux 0x6e5bf2c0 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x6e6737e3 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x6e681f16 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e778e99 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e930e19 ppp_input +EXPORT_SYMBOL vmlinux 0x6e97b06a cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea1366f inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x6ea5c58d skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x6eab3af4 i2c_master_send +EXPORT_SYMBOL vmlinux 0x6ec10213 mount_nodev +EXPORT_SYMBOL vmlinux 0x6ecc7d2e __init_rwsem +EXPORT_SYMBOL vmlinux 0x6ee3d39a sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x6eebe1c9 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x6ef01b16 fget +EXPORT_SYMBOL vmlinux 0x6ef7f854 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f51707d scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x6f7663fb tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fa41805 seq_write +EXPORT_SYMBOL vmlinux 0x6fa95083 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd54b7e scsi_register_interface +EXPORT_SYMBOL vmlinux 0x6fdb8236 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x6feaaaa1 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x70068d13 tty_throttle +EXPORT_SYMBOL vmlinux 0x7012b50a jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x701f3a96 inet_offloads +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705cea77 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x705f87f6 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x7069f407 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70780933 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x7078c0aa dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x709c85d9 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x709c9702 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x70aeaa1e free_user_ns +EXPORT_SYMBOL vmlinux 0x70b7eee6 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x70b9d884 vfs_symlink +EXPORT_SYMBOL vmlinux 0x70bd77ea dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x70ce4c61 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70fe8c65 pci_request_region +EXPORT_SYMBOL vmlinux 0x71102756 __brelse +EXPORT_SYMBOL vmlinux 0x7111dbd8 phy_print_status +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71452eed padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x716c3ca3 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a1150c pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71af006d input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x71b27249 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x721c9102 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x72230a79 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x724c5d05 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x72790269 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b45a0d gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c60222 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7303b0d5 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x731301e6 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x7321b5dc read_code +EXPORT_SYMBOL vmlinux 0x73269559 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x7339ba26 sock_release +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73570dd5 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x7358711f poll_initwait +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x736fa0a0 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x73709252 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x7377348c input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x7378b4d2 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x738d1667 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x738e4643 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x73adddc9 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x73b5ea9d kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x73b9db91 do_truncate +EXPORT_SYMBOL vmlinux 0x73d337b4 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x73e9d08f follow_up +EXPORT_SYMBOL vmlinux 0x73edafa9 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x73edc74b fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x7404b60d mmc_get_card +EXPORT_SYMBOL vmlinux 0x7410a855 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x744e2231 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x7489ca9d security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x74939e6a pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x7499d978 udp_add_offload +EXPORT_SYMBOL vmlinux 0x749a368a mdiobus_read +EXPORT_SYMBOL vmlinux 0x74a246a2 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x74a6f46b dev_printk +EXPORT_SYMBOL vmlinux 0x74b18d95 mdiobus_write +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d2c944 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x74d789d8 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7530f46c tcp_check_req +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x755b625d read_dev_sector +EXPORT_SYMBOL vmlinux 0x755ec51c ppc_md +EXPORT_SYMBOL vmlinux 0x756c4d44 machine_id +EXPORT_SYMBOL vmlinux 0x75756e3a netdev_lower_dev_get_private +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 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75f46512 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x760431ad vfs_write +EXPORT_SYMBOL vmlinux 0x76099440 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x762dc236 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x763071ac __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76704807 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x768d56b9 mutex_trylock +EXPORT_SYMBOL vmlinux 0x769bbe5a blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x76b59b33 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x76b7e292 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x76ca2b58 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x76ca98ce dcache_dir_close +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76f3bf0e nf_setsockopt +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77214208 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x773225e9 dev_change_flags +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x774cda6d __vio_register_driver +EXPORT_SYMBOL vmlinux 0x775f830e vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x77608df3 dev_emerg +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7787e651 pci_get_slot +EXPORT_SYMBOL vmlinux 0x77929508 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77aa5644 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x77af15e6 flow_cache_init +EXPORT_SYMBOL vmlinux 0x77b0f8c0 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d33288 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x780950f5 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x78345fa6 dm_io +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7843bcba dev_addr_add +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x784a1c14 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x78685796 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x78690626 register_netdevice +EXPORT_SYMBOL vmlinux 0x786efc8c inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x78729246 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x787d7a70 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789cb70e security_path_unlink +EXPORT_SYMBOL vmlinux 0x78a9e905 _numa_mem_ +EXPORT_SYMBOL vmlinux 0x78d00c41 mpage_writepages +EXPORT_SYMBOL vmlinux 0x78d0b7f2 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x78dee6f3 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e99ad2 vga_get +EXPORT_SYMBOL vmlinux 0x78ea5072 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x78eb5b22 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x78f9ce3c eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x78f9efb1 key_unlink +EXPORT_SYMBOL vmlinux 0x78fa6583 inet_del_offload +EXPORT_SYMBOL vmlinux 0x7902887c input_free_device +EXPORT_SYMBOL vmlinux 0x790dc227 serio_rescan +EXPORT_SYMBOL vmlinux 0x79117496 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x7914b09e loop_register_transfer +EXPORT_SYMBOL vmlinux 0x792cbe5c iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x7949f49a reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x7953677b lease_get_mtime +EXPORT_SYMBOL vmlinux 0x79582e31 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x7968e00c rawv6_mh_filter_register +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 0x79863574 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x798a8c04 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bf3998 set_device_ro +EXPORT_SYMBOL vmlinux 0x79d71b59 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x7a1df875 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x7a1fa9ee iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a415616 rtnl_notify +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a467b6c __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a6e00b0 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x7a7f59d8 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x7a847489 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x7a90664b devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac175f1 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae521d1 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x7ae76946 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x7ae9783d tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x7af2b832 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x7b067a26 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b1b7dc7 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x7b233592 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x7b26f42f dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x7b28c9e8 get_tz_trend +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2f22a5 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x7b34f851 keyring_alloc +EXPORT_SYMBOL vmlinux 0x7b446d0c con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x7b657bc9 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bcd3e37 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x7bfeb678 __dst_free +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c19d7d7 tty_port_put +EXPORT_SYMBOL vmlinux 0x7c220fd8 security_path_chmod +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c333b23 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x7c3462d8 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x7c44f1ef to_nd_btt +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5e8490 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c718bdc of_phy_find_device +EXPORT_SYMBOL vmlinux 0x7c74e242 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x7c773bea km_policy_expired +EXPORT_SYMBOL vmlinux 0x7c89b67c registered_fb +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c9a8f81 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x7c9ac6be follow_down_one +EXPORT_SYMBOL vmlinux 0x7ca83325 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc65050 of_dev_put +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfdfc1a vga_tryget +EXPORT_SYMBOL vmlinux 0x7d02cd43 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1267d2 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x7d15ab0b dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x7d1f89d8 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x7d4523e2 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x7d503018 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x7d63b182 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d909e2b devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x7d92d680 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x7d9514c1 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dd0f896 unload_nls +EXPORT_SYMBOL vmlinux 0x7dd4f14c inet_recvmsg +EXPORT_SYMBOL vmlinux 0x7ddd8485 of_translate_address +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df16ce8 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x7e0e8dec iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x7e2f0659 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x7e35e67b ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x7e4c4e41 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x7e892172 mdiobus_free +EXPORT_SYMBOL vmlinux 0x7e9bdae3 mpage_readpage +EXPORT_SYMBOL vmlinux 0x7ea8d70a pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x7ead485e eeh_dev_release +EXPORT_SYMBOL vmlinux 0x7eb2af31 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x7ec863b1 try_module_get +EXPORT_SYMBOL vmlinux 0x7ed57d0e neigh_app_ns +EXPORT_SYMBOL vmlinux 0x7ed99318 __module_get +EXPORT_SYMBOL vmlinux 0x7eddb952 get_io_context +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7eea6c8d eth_type_trans +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f23a182 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2e1b7b inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x7f48e991 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x7f4a9aac netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f644d4b pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x7f64d891 get_acl +EXPORT_SYMBOL vmlinux 0x7fab5cc0 __seq_open_private +EXPORT_SYMBOL vmlinux 0x7fafa701 param_get_ullong +EXPORT_SYMBOL vmlinux 0x7fb67992 dev_mc_init +EXPORT_SYMBOL vmlinux 0x7fb7039d dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x7fb828b9 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x7fbad6fa generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fdf3a6d dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ff1ba34 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x7ff5383e cpu_active_mask +EXPORT_SYMBOL vmlinux 0x7ffbdcf4 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x80075bb9 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x8010724c padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x801e3576 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x8033fa70 elevator_alloc +EXPORT_SYMBOL vmlinux 0x803e1bb3 elv_register_queue +EXPORT_SYMBOL vmlinux 0x8047487f mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x804e72b3 dquot_transfer +EXPORT_SYMBOL vmlinux 0x8062d58b do_splice_from +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 0x8082f3f7 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x80a20860 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x80bd4fd9 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cf9b39 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80f1a982 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x81248a95 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x8125c9ed pci_find_capability +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x81567716 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816014dc nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x816423ea do_SAK +EXPORT_SYMBOL vmlinux 0x8171e406 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x8182b3fc current_fs_time +EXPORT_SYMBOL vmlinux 0x818e3482 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x8191a4ef padata_start +EXPORT_SYMBOL vmlinux 0x8198334f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x81a01445 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81d87f93 deactivate_super +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821291a8 simple_fill_super +EXPORT_SYMBOL vmlinux 0x82142768 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x82411ea2 param_get_string +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x82478191 tty_register_driver +EXPORT_SYMBOL vmlinux 0x824c7c35 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x824d5c11 dcb_setapp +EXPORT_SYMBOL vmlinux 0x825142f2 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x827366fa rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82839409 d_set_d_op +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82a21b7d PDE_DATA +EXPORT_SYMBOL vmlinux 0x82a85421 lookup_one_len +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82d6b0d0 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82ecb494 mntget +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x8308a18e page_follow_link_light +EXPORT_SYMBOL vmlinux 0x83285db4 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x833ba861 framebuffer_release +EXPORT_SYMBOL vmlinux 0x835022ae dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x83712245 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x838143c7 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x8389a0a7 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839618b6 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x83a85d34 pipe_unlock +EXPORT_SYMBOL vmlinux 0x83ac9274 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x83ad84a7 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x83ae7e8f dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x83aeb3a3 follow_down +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c67095 mntput +EXPORT_SYMBOL vmlinux 0x83c69671 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x83dab068 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x83e316a4 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x83ea478e path_nosuid +EXPORT_SYMBOL vmlinux 0x842a2234 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x846c3610 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x8473e085 phy_start +EXPORT_SYMBOL vmlinux 0x84912d19 __genl_register_family +EXPORT_SYMBOL vmlinux 0x849d6f95 kern_unmount +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850e95d7 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8526591b block_truncate_page +EXPORT_SYMBOL vmlinux 0x853e7067 file_remove_privs +EXPORT_SYMBOL vmlinux 0x855c2617 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85780511 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85a7d096 md_error +EXPORT_SYMBOL vmlinux 0x85b5c65e neigh_connected_output +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85d8bade bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8617bad6 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x86304cc1 pci_request_regions +EXPORT_SYMBOL vmlinux 0x863ac246 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8651ebf6 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86716dc8 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868cc800 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x869726ae qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x86b570d8 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x86c4eaf6 pci_select_bars +EXPORT_SYMBOL vmlinux 0x86d1f8fc proc_set_size +EXPORT_SYMBOL vmlinux 0x86d73a6a crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8708f889 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871eab20 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x87348c3c dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x8739fe74 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x8750cc18 sk_free +EXPORT_SYMBOL vmlinux 0x87639be9 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x8769dee5 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878efd51 clear_inode +EXPORT_SYMBOL vmlinux 0x87bc4121 ipv4_specific +EXPORT_SYMBOL vmlinux 0x87c36412 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x87cf3043 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x87d47649 __vfs_read +EXPORT_SYMBOL vmlinux 0x87f1540d mmc_of_parse +EXPORT_SYMBOL vmlinux 0x87f4549b inode_needs_sync +EXPORT_SYMBOL vmlinux 0x88012a8b blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x88446806 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x886050ed mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x887e0f55 load_nls +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x888f17d5 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x88bc748c pci_release_regions +EXPORT_SYMBOL vmlinux 0x88c6dce5 generic_show_options +EXPORT_SYMBOL vmlinux 0x88ffa751 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x890346cf iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x8915600b xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x892a114f page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x894891cd netdev_crit +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8990955a kernel_read +EXPORT_SYMBOL vmlinux 0x89a72b5c ip_check_defrag +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89bdb5d3 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e13722 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x8a1032ed new_inode +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2e3600 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4995b3 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8588a3 tty_unlock +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9b1b86 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x8aab17db i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x8ac87ffb eth_header +EXPORT_SYMBOL vmlinux 0x8ae84fc7 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x8af911ad set_blocksize +EXPORT_SYMBOL vmlinux 0x8afa5e17 kernel_bind +EXPORT_SYMBOL vmlinux 0x8b0853f0 dquot_commit +EXPORT_SYMBOL vmlinux 0x8b187caa nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x8b188631 make_bad_inode +EXPORT_SYMBOL vmlinux 0x8b2b2a0c blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x8b310093 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b643f44 pci_iomap +EXPORT_SYMBOL vmlinux 0x8b708ef6 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b87cc5a pnv_cxl_ioda_msi_setup +EXPORT_SYMBOL vmlinux 0x8b8fb047 ilookup5 +EXPORT_SYMBOL vmlinux 0x8b92add3 input_open_device +EXPORT_SYMBOL vmlinux 0x8bbf82c1 single_release +EXPORT_SYMBOL vmlinux 0x8bc4d648 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x8bec80ca mmc_register_driver +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bfb16ea xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x8bfb7551 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x8c09ed01 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x8c1375a4 ata_print_version +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1a990a tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x8c1f8b27 kernel_write +EXPORT_SYMBOL vmlinux 0x8c3e203d generic_permission +EXPORT_SYMBOL vmlinux 0x8c51114f inode_init_owner +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c9e159d fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ce91482 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x8cf27cd7 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x8cfbf961 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d238154 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x8d2a6850 mmc_interrupt_hpi +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 0x8dbb1901 skb_copy +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e13422c insert_inode_locked +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e3eefcd fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x8e62844a dst_destroy +EXPORT_SYMBOL vmlinux 0x8e70f31c arp_send +EXPORT_SYMBOL vmlinux 0x8e80bffb mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x8e83dbcd dev_uc_sync +EXPORT_SYMBOL vmlinux 0x8e8b360d netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ed2bb0e reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x8f1dd220 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x8f26da52 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x8f31635f dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x8f43c242 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x8f46912c swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x8f6ce286 inc_nlink +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f88c56c kset_register +EXPORT_SYMBOL vmlinux 0x8f902861 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x8f9099f8 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x8fbde1ff ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc59f9b rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0x8fcd3a3f of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x8fe51895 __napi_complete +EXPORT_SYMBOL vmlinux 0x8ff5fd08 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x902ce10c genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x9036a402 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x9045bc32 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x9050a7f7 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x9053dd89 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x905a8401 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x9067640d lookup_bdev +EXPORT_SYMBOL vmlinux 0x907a7865 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x907d195f xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x90dbea23 pnv_cxl_get_irq_count +EXPORT_SYMBOL vmlinux 0x9101ee65 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x91292ab9 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x91336389 key_task_permission +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915b04c5 of_root +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x916e53f8 devm_free_irq +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9176c118 pnv_cxl_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x9183e52c dquot_drop +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x919e8939 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x91a3efac md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x91a5309e register_cdrom +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91e18eea cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x920fa45d seq_read +EXPORT_SYMBOL vmlinux 0x9223c48c __get_page_tail +EXPORT_SYMBOL vmlinux 0x92358d91 pci_iounmap +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x926112a8 setattr_copy +EXPORT_SYMBOL vmlinux 0x926238b1 of_dev_get +EXPORT_SYMBOL vmlinux 0x92876169 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a652fe tty_unregister_device +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92cea494 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92f17d4d tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x932b13cb netdev_printk +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9354fcde ibmebus_free_irq +EXPORT_SYMBOL vmlinux 0x936062db devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x936591ea skb_queue_purge +EXPORT_SYMBOL vmlinux 0x936d78bb wait_iff_congested +EXPORT_SYMBOL vmlinux 0x9375a507 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9383f0d1 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x93899b56 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x939e421b sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x939ff29b posix_test_lock +EXPORT_SYMBOL vmlinux 0x93b15bd4 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93d00eff dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x93e29a64 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x93e6eaa3 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402462c qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94090262 of_phy_attach +EXPORT_SYMBOL vmlinux 0x9417d5c7 serio_open +EXPORT_SYMBOL vmlinux 0x943ebe5a sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x944ad022 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x9453e61c inet_ioctl +EXPORT_SYMBOL vmlinux 0x945989e9 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x945de5d6 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a2e753 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x94b2d86d xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x94b4b551 set_user_nice +EXPORT_SYMBOL vmlinux 0x94f5bf47 nf_register_hook +EXPORT_SYMBOL vmlinux 0x94f65104 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x94f6af50 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x94f789e2 generic_writepages +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x95157661 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x952d74d9 icmpv6_send +EXPORT_SYMBOL vmlinux 0x95386c9e pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x953d699d register_filesystem +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9545cd7d skb_queue_head +EXPORT_SYMBOL vmlinux 0x95587a96 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x9559fe0a netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x958e7d3e skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x95a080de uart_resume_port +EXPORT_SYMBOL vmlinux 0x95c2e3c2 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x95c35400 skb_tx_error +EXPORT_SYMBOL vmlinux 0x95c4bb77 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x95d40dad dquot_release +EXPORT_SYMBOL vmlinux 0x95fb05ec dev_addr_init +EXPORT_SYMBOL vmlinux 0x960153ab twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x960241da kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x960c45a3 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x9618dc7a get_user_pages +EXPORT_SYMBOL vmlinux 0x9645f11a __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x964c65a5 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x96531e3a dev_crit +EXPORT_SYMBOL vmlinux 0x96768d00 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x967d9637 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x96864b47 fb_find_mode +EXPORT_SYMBOL vmlinux 0x968e0a98 blk_complete_request +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96a5e695 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dae409 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x96e2177d mdiobus_scan +EXPORT_SYMBOL vmlinux 0x96e2bc55 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x96ee6402 of_find_property +EXPORT_SYMBOL vmlinux 0x96ef4b5d srp_rport_get +EXPORT_SYMBOL vmlinux 0x97036e18 seq_puts +EXPORT_SYMBOL vmlinux 0x971c83ab fb_set_var +EXPORT_SYMBOL vmlinux 0x97215fcd padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x97393bd6 put_page +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9753fd36 sock_edemux +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97634506 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x977c3324 skb_pull +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x9787fef0 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97ba1af0 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x97ce2631 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9839d841 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x9848209b phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x98585f95 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x9862d330 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x988d5fd6 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x989b2ca0 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x98ab8333 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x98b0fc23 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cd362b neigh_ifdown +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x99014589 skb_put +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9929dfc7 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x992f6948 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x9936eaf6 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x997b07c7 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x9994b9b4 giveup_altivec +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99988b1b __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99cbb16b dma_async_tx_descriptor_init +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 0x99f034b4 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x99f27aa0 vme_irq_free +EXPORT_SYMBOL vmlinux 0x99f5d41b d_set_fallthru +EXPORT_SYMBOL vmlinux 0x9a137b3a file_open_root +EXPORT_SYMBOL vmlinux 0x9a14dd0a prepare_binprm +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a210600 pipe_lock +EXPORT_SYMBOL vmlinux 0x9a2afa3b down_read +EXPORT_SYMBOL vmlinux 0x9a3cd811 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x9a401278 elevator_init +EXPORT_SYMBOL vmlinux 0x9a43bf89 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x9a4908f7 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x9a5abfdd jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a641bf3 giveup_fpu +EXPORT_SYMBOL vmlinux 0x9a79583a blk_free_tags +EXPORT_SYMBOL vmlinux 0x9a85e16b in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x9ab4fa49 inet_frags_init +EXPORT_SYMBOL vmlinux 0x9ac590ed generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x9acc8d4b mmc_can_discard +EXPORT_SYMBOL vmlinux 0x9ad6f093 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x9ad89dea input_flush_device +EXPORT_SYMBOL vmlinux 0x9ae4c5fb xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x9ae4e79f inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9af1736e xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x9b24d125 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b5affa4 bio_endio +EXPORT_SYMBOL vmlinux 0x9b684aba inet_put_port +EXPORT_SYMBOL vmlinux 0x9b6b6a73 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x9b99d292 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb7cfac inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x9bc5fd45 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x9bcfd199 d_instantiate +EXPORT_SYMBOL vmlinux 0x9bdec43d set_bh_page +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf3cd8a ns_capable +EXPORT_SYMBOL vmlinux 0x9bf77b68 dev_trans_start +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9c0a68d5 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x9c11aa4f __sock_create +EXPORT_SYMBOL vmlinux 0x9c17a13a ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x9c1b160d dentry_open +EXPORT_SYMBOL vmlinux 0x9c3f2f3a tcp_disconnect +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5f2f0e i2c_transfer +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb5d075 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x9ceeeef8 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x9cf3ccc6 blk_finish_request +EXPORT_SYMBOL vmlinux 0x9d0c77f2 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d0f350b set_nlink +EXPORT_SYMBOL vmlinux 0x9d10d7d6 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d149d6f from_kuid +EXPORT_SYMBOL vmlinux 0x9d26a09b param_set_copystring +EXPORT_SYMBOL vmlinux 0x9d39ace7 dev_add_pack +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d4bea91 sock_create_lite +EXPORT_SYMBOL vmlinux 0x9d55edbd xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x9d5d259e blk_start_queue +EXPORT_SYMBOL vmlinux 0x9d6d9f6e __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d8faaff dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x9d9260dc xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x9d9dfc18 load_fp_state +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dd86222 init_buffer +EXPORT_SYMBOL vmlinux 0x9ddaa542 fb_pan_display +EXPORT_SYMBOL vmlinux 0x9dde4e7f bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x9df39160 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0ff9d7 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x9e1d917b bdput +EXPORT_SYMBOL vmlinux 0x9e1de079 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e33b82b sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e674362 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9b48ff pci_read_vpd +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed41284 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x9f0664a4 kfree_skb +EXPORT_SYMBOL vmlinux 0x9f090e47 vc_cons +EXPORT_SYMBOL vmlinux 0x9f255ea7 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f531fa6 km_is_alive +EXPORT_SYMBOL vmlinux 0x9f61a812 __register_chrdev +EXPORT_SYMBOL vmlinux 0x9f6da2f3 register_netdev +EXPORT_SYMBOL vmlinux 0x9f76ecda xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fac1b92 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x9fca6754 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x9fce1114 pci_dev_get +EXPORT_SYMBOL vmlinux 0x9fd0d1c2 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x9fdaeb53 simple_dname +EXPORT_SYMBOL vmlinux 0x9fdb2623 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff2cc55 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x9ff8e322 make_kuid +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa01c5011 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xa01db014 register_md_personality +EXPORT_SYMBOL vmlinux 0xa023f551 dput +EXPORT_SYMBOL vmlinux 0xa028e0d5 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa0545c8b set_binfmt +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa060acdc blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xa07a1171 nd_iostat_end +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0ae927f i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b6093c security_path_mknod +EXPORT_SYMBOL vmlinux 0xa0bb9f68 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xa0c9ef01 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e26e2d blk_init_queue +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 0xa118ea92 padata_stop +EXPORT_SYMBOL vmlinux 0xa11c46d1 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1234869 register_qdisc +EXPORT_SYMBOL vmlinux 0xa1302fe8 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa150ae80 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xa171b21a pci_scan_slot +EXPORT_SYMBOL vmlinux 0xa1726cc1 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xa18565fb abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xa1930567 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1bf1216 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1f7a6c0 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa2008c2b dev_driver_string +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa214575a tcp_init_sock +EXPORT_SYMBOL vmlinux 0xa221b7d9 mem_section +EXPORT_SYMBOL vmlinux 0xa23270c2 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xa2396e95 dcb_getapp +EXPORT_SYMBOL vmlinux 0xa2436989 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xa26f7503 pci_get_device +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2869289 notify_change +EXPORT_SYMBOL vmlinux 0xa29fd11a simple_write_begin +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2a94670 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xa2b76faf agp_put_bridge +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2d21a5c tcp_init_xmit_timers +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 0xa317ad99 skb_store_bits +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa37eb8c9 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xa387eae7 block_write_begin +EXPORT_SYMBOL vmlinux 0xa397e755 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa39dd68a inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xa3a2c30c pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b532a0 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xa3b822dd ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xa3b8e7fe mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xa3c9e742 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xa3e47929 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa401abf8 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xa41a591a nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa464aab8 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa479b836 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xa483c875 __nd_driver_register +EXPORT_SYMBOL vmlinux 0xa4892591 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xa491f72a __quota_error +EXPORT_SYMBOL vmlinux 0xa49a155f simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xa4a2fbf8 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xa4a8ffc8 sg_miter_start +EXPORT_SYMBOL vmlinux 0xa4b7c41a param_ops_bool +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4f848cc of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xa51b9cc3 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xa51c8549 unlock_rename +EXPORT_SYMBOL vmlinux 0xa51d1d4d __page_symlink +EXPORT_SYMBOL vmlinux 0xa5363f92 posix_lock_file +EXPORT_SYMBOL vmlinux 0xa53a0818 dquot_acquire +EXPORT_SYMBOL vmlinux 0xa53a936d bdget +EXPORT_SYMBOL vmlinux 0xa546074b ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa58d560d netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa598ef6b agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xa59d9e8c fb_class +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5a5abc8 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa5cb4328 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xa5cd8ee4 inet6_getname +EXPORT_SYMBOL vmlinux 0xa5debe9e xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xa5ebbac2 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xa61ee496 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xa626ab6f dev_remove_offload +EXPORT_SYMBOL vmlinux 0xa630d4f2 cdev_del +EXPORT_SYMBOL vmlinux 0xa631df8a cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xa632a534 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa63f0b90 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xa6492053 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa667ae6e pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xa66f9aff param_ops_short +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6827037 set_page_dirty +EXPORT_SYMBOL vmlinux 0xa685bdd7 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xa6891332 dget_parent +EXPORT_SYMBOL vmlinux 0xa6aaf7b4 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xa6d30a02 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xa6d4523e twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa720f0c8 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74917e3 generic_write_end +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa7553ccc tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xa7575279 vme_bus_type +EXPORT_SYMBOL vmlinux 0xa7792d4c module_refcount +EXPORT_SYMBOL vmlinux 0xa7956e42 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xa79e5a18 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xa7c12823 dev_get_flags +EXPORT_SYMBOL vmlinux 0xa7c6689a arp_tbl +EXPORT_SYMBOL vmlinux 0xa7d1c5bc pagecache_write_end +EXPORT_SYMBOL vmlinux 0xa7ebda78 neigh_table_init +EXPORT_SYMBOL vmlinux 0xa7edfc67 mpage_readpages +EXPORT_SYMBOL vmlinux 0xa7f90059 page_waitqueue +EXPORT_SYMBOL vmlinux 0xa7fa8811 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa840ec7b clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8472803 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa88d7787 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xa8aba24b cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xa8d07c0c elv_rb_add +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9013d90 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa93b577b padata_add_cpu +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa9451650 ilookup +EXPORT_SYMBOL vmlinux 0xa9477f3c neigh_destroy +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9dd6606 add_disk +EXPORT_SYMBOL vmlinux 0xa9e43104 vfs_readv +EXPORT_SYMBOL vmlinux 0xa9fb393d d_delete +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa0c1005 iterate_dir +EXPORT_SYMBOL vmlinux 0xaa13a332 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xaa2a9190 lock_rename +EXPORT_SYMBOL vmlinux 0xaa37f616 i2c_release_client +EXPORT_SYMBOL vmlinux 0xaa39110d have_submounts +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa5b06be swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa755f8b sock_create_kern +EXPORT_SYMBOL vmlinux 0xaa7b6743 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xaa82ea81 serio_interrupt +EXPORT_SYMBOL vmlinux 0xaa8805f1 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xaa98f234 write_one_page +EXPORT_SYMBOL vmlinux 0xaab36ba1 build_skb +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab0e4834 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xab159283 get_super_thawed +EXPORT_SYMBOL vmlinux 0xab2a23df pcim_enable_device +EXPORT_SYMBOL vmlinux 0xab699255 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab751745 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab9819ff thaw_super +EXPORT_SYMBOL vmlinux 0xaba3d224 netlink_unicast +EXPORT_SYMBOL vmlinux 0xabc2e348 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd1cb02 pid_task +EXPORT_SYMBOL vmlinux 0xabd5a45d pci_remove_bus +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0fb797 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac2fd4d8 scsi_add_device +EXPORT_SYMBOL vmlinux 0xac377d34 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xac4fcd91 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xac60973e check_disk_change +EXPORT_SYMBOL vmlinux 0xaca3ede5 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xaca9ce10 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc260ff mmc_erase_group_aligned +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 0xacfbd02c mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad3407a2 find_lock_entry +EXPORT_SYMBOL vmlinux 0xad345a72 passthru_features_check +EXPORT_SYMBOL vmlinux 0xad362665 mutex_lock +EXPORT_SYMBOL vmlinux 0xad4c1b51 flex_array_alloc +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad5d1e6a save_mount_options +EXPORT_SYMBOL vmlinux 0xad5f8d63 d_make_root +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad956d41 tty_free_termios +EXPORT_SYMBOL vmlinux 0xad961743 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xad97be43 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xad9bd854 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xada3eddd blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xada6ec25 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xadb8300d filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xadb8915e netif_device_detach +EXPORT_SYMBOL vmlinux 0xadbd66ae blk_make_request +EXPORT_SYMBOL vmlinux 0xadc83c01 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xadec3000 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae10ded4 dev_load +EXPORT_SYMBOL vmlinux 0xae1284ab dma_direct_ops +EXPORT_SYMBOL vmlinux 0xae200e2f mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xae21aa41 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xae274e51 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae4a1bda csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae787015 tty_port_close +EXPORT_SYMBOL vmlinux 0xae79778e pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xae891e6d security_inode_permission +EXPORT_SYMBOL vmlinux 0xae8dc528 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xae9077b3 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xae918b5b dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xaeb33108 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xaec35db4 flex_array_free +EXPORT_SYMBOL vmlinux 0xaede1c05 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0db880 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xaf19f319 srp_rport_put +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3b5612 vfs_fsync +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf5d0d37 inode_init_once +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf858b85 nf_log_set +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafa04dba pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xafb20686 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xafce7fac __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb04683db copy_to_iter +EXPORT_SYMBOL vmlinux 0xb050e39b wireless_send_event +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06e7ab5 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xb082004b agp_create_memory +EXPORT_SYMBOL vmlinux 0xb09e7f3a blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a5f9ac netdev_alert +EXPORT_SYMBOL vmlinux 0xb0d2d042 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xb0de2712 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb10637a9 __block_write_begin +EXPORT_SYMBOL vmlinux 0xb11abcc0 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb162ce25 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb18b9c33 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0xb1bc24b0 ipv6_chk_custom_prefix +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 0xb1d63d57 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xb1d8ac4f xfrm_register_type +EXPORT_SYMBOL vmlinux 0xb1d8b381 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xb203d1db filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xb207c9b5 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xb2144b9e swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xb2182462 tty_devnum +EXPORT_SYMBOL vmlinux 0xb2395911 put_cmsg +EXPORT_SYMBOL vmlinux 0xb243a078 module_layout +EXPORT_SYMBOL vmlinux 0xb2655e1b jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2847e78 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xb2910845 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xb293beb0 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xb29c622f neigh_parms_release +EXPORT_SYMBOL vmlinux 0xb2a59e83 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xb2b293f0 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb2b9fa27 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb301ee14 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xb3098993 simple_statfs +EXPORT_SYMBOL vmlinux 0xb310f7c9 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xb3214870 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xb322294d devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xb32c75aa vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb345d0f1 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xb356b63e ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xb361a93f inetdev_by_index +EXPORT_SYMBOL vmlinux 0xb3903d42 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xb3b7bcdb vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xb3b83caa sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xb3cfff83 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e851a7 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb40e21c3 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xb4217c05 to_ndd +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42b30f0 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xb445a2d1 pps_register_source +EXPORT_SYMBOL vmlinux 0xb4470166 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xb453a79c of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xb4650e2c padata_remove_cpu +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 0xb48780d0 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xb49088e7 elv_rb_del +EXPORT_SYMBOL vmlinux 0xb4b98d5f generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xb4c2a61a simple_open +EXPORT_SYMBOL vmlinux 0xb53c17ee pci_set_master +EXPORT_SYMBOL vmlinux 0xb55ef29b dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb577ba50 __frontswap_test +EXPORT_SYMBOL vmlinux 0xb58e9ddb alloc_pages_current +EXPORT_SYMBOL vmlinux 0xb59e6a56 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a57a95 vfs_writef +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5cf666e seq_putc +EXPORT_SYMBOL vmlinux 0xb5d491c3 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xb5df4912 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xb5f771b6 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xb5fdf2f7 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xb60bbad9 touch_buffer +EXPORT_SYMBOL vmlinux 0xb61131c5 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb628da6d uart_add_one_port +EXPORT_SYMBOL vmlinux 0xb635d26a vme_master_request +EXPORT_SYMBOL vmlinux 0xb63982e8 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xb6618ef6 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xb67411b8 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xb67506d1 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb690a88c ppp_dev_name +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b5267e set_cached_acl +EXPORT_SYMBOL vmlinux 0xb6b65f51 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xb6be1a13 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xb6bfdbbb of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xb6ce7d72 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xb6d39441 write_cache_pages +EXPORT_SYMBOL vmlinux 0xb6e11168 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xb6e21a03 elevator_change +EXPORT_SYMBOL vmlinux 0xb70cf576 seq_release +EXPORT_SYMBOL vmlinux 0xb725e5de tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xb72a6127 from_kprojid +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb76bd2ab blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb77932eb flex_array_clear +EXPORT_SYMBOL vmlinux 0xb78b14d9 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xb78e9a6f skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xb78f461a netdev_notice +EXPORT_SYMBOL vmlinux 0xb7a02c4e xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xb7aa20da get_disk +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7d8b08e tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xb81cb51d scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xb81e7aeb __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xb836e77a scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xb84cfa8f crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xb867014c scsi_block_requests +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8b2814c ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xb8dd0e6a netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xb8e1451a netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xb8e94779 block_write_end +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb90b6a94 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xb9152968 param_set_int +EXPORT_SYMBOL vmlinux 0xb95e4b5e pci_dev_put +EXPORT_SYMBOL vmlinux 0xb965ae74 key_type_keyring +EXPORT_SYMBOL vmlinux 0xb96bdf24 param_set_bint +EXPORT_SYMBOL vmlinux 0xb9860b23 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xb99d1149 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xb9b7e08e page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9e9d05f phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xba05938a rtnl_unicast +EXPORT_SYMBOL vmlinux 0xba17ffa3 _dev_info +EXPORT_SYMBOL vmlinux 0xba1f13ec __breadahead +EXPORT_SYMBOL vmlinux 0xba2ffec2 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xba3ce632 of_iomap +EXPORT_SYMBOL vmlinux 0xba47d450 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba521675 ip_defrag +EXPORT_SYMBOL vmlinux 0xba629ac3 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xba7cf444 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xba9bcec3 devm_request_resource +EXPORT_SYMBOL vmlinux 0xbadf5076 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb066bb3 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xbb0bb712 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xbb1f6212 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4a37b4 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb899a0b of_get_address +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba383f8 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xbba887d9 vmap +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbc717a5 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xbbcb4680 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xbbd60ad1 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xbbdb5caa netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xbbee5313 vfs_readf +EXPORT_SYMBOL vmlinux 0xbbf34f4d inet_add_offload +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbbfa5095 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xbc30fc47 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc455d11 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xbc4c7d5c tty_port_init +EXPORT_SYMBOL vmlinux 0xbc6072bf vfs_llseek +EXPORT_SYMBOL vmlinux 0xbc75a213 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xbc85c617 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xbc976060 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xbc982b06 eeh_subsystem_flags +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbcbd2fc0 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcdb5daa csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbcf35f2a __put_cred +EXPORT_SYMBOL vmlinux 0xbcf7c111 dump_emit +EXPORT_SYMBOL vmlinux 0xbd0224e6 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xbd0a73cb proc_remove +EXPORT_SYMBOL vmlinux 0xbd286069 input_grab_device +EXPORT_SYMBOL vmlinux 0xbd3adb4a inet_sendpage +EXPORT_SYMBOL vmlinux 0xbd41fa47 vio_unregister_device +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd48006a xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xbd556326 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xbd5f5e33 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xbd5f9ec6 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xbd6c7940 ip_do_fragment +EXPORT_SYMBOL vmlinux 0xbd6f154b genphy_config_init +EXPORT_SYMBOL vmlinux 0xbd72e3ad init_task +EXPORT_SYMBOL vmlinux 0xbd833a62 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd9b4d01 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xbdc360b7 phy_init_hw +EXPORT_SYMBOL vmlinux 0xbdcec95d mapping_tagged +EXPORT_SYMBOL vmlinux 0xbe02efd5 neigh_for_each +EXPORT_SYMBOL vmlinux 0xbe0c010d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xbe0e515a __lock_buffer +EXPORT_SYMBOL vmlinux 0xbe17391c netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xbe1b0251 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xbe1b0688 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe2df2d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xbe3f2fe7 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xbe5b2430 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xbe5d8ea5 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xbe75fe35 __destroy_inode +EXPORT_SYMBOL vmlinux 0xbe9221e3 dev_get_stats +EXPORT_SYMBOL vmlinux 0xbea4dbb5 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xbea9042c skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xbeb323cc tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xbeb8440d flush_dcache_page +EXPORT_SYMBOL vmlinux 0xbed3bf21 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xbeecc8f3 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefb81ea pci_get_class +EXPORT_SYMBOL vmlinux 0xbf056b40 __lock_page +EXPORT_SYMBOL vmlinux 0xbf0f97d7 ibmebus_register_driver +EXPORT_SYMBOL vmlinux 0xbf103101 __frontswap_load +EXPORT_SYMBOL vmlinux 0xbf1b5680 of_get_min_tck +EXPORT_SYMBOL vmlinux 0xbf269582 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xbf53fb0c mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xbf553d33 dev_activate +EXPORT_SYMBOL vmlinux 0xbf5e0708 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf874b65 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9933d5 dma_common_mmap +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 0xbfcf01f2 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xbffda0ab audit_log_start +EXPORT_SYMBOL vmlinux 0xc013eaff vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc088308e commit_creds +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a7c439 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xc0c66f5e nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xc0d7447b __inode_permission +EXPORT_SYMBOL vmlinux 0xc0e3cfc1 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xc0e754eb vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xc0e7fa73 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xc0eaf9b0 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xc0f0f124 skb_seq_read +EXPORT_SYMBOL vmlinux 0xc10b3dd3 nd_device_unregister +EXPORT_SYMBOL vmlinux 0xc10fb212 netdev_warn +EXPORT_SYMBOL vmlinux 0xc13723db security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xc13f4f03 inode_set_flags +EXPORT_SYMBOL vmlinux 0xc1533f32 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc1936d8a __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xc1970ad8 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xc1a7dc7f nobh_write_begin +EXPORT_SYMBOL vmlinux 0xc1a7fa48 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xc1acbf30 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xc1b1f49d security_file_permission +EXPORT_SYMBOL vmlinux 0xc1c60b72 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xc1cd0a0f no_llseek +EXPORT_SYMBOL vmlinux 0xc1d75b42 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc20b7013 of_get_pci_address +EXPORT_SYMBOL vmlinux 0xc23b1eaf udplite_prot +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc252ece2 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xc273dc6c param_set_ulong +EXPORT_SYMBOL vmlinux 0xc282b52e __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc2885ce6 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xc29924bb netlink_ack +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2aca51a tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xc2b59c16 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xc2bd9686 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xc2da23f1 bio_split +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f918ef ppp_channel_index +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc323fed1 sk_net_capable +EXPORT_SYMBOL vmlinux 0xc34444b0 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xc3470127 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xc3547cb5 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3cad780 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xc3f37caa tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xc40b0afd sock_wake_async +EXPORT_SYMBOL vmlinux 0xc422b035 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc446ea64 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xc44a7147 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xc44bb84d netlink_net_capable +EXPORT_SYMBOL vmlinux 0xc45782c9 vme_dma_request +EXPORT_SYMBOL vmlinux 0xc4746ff4 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xc476294c put_tty_driver +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a01160 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xc4a40809 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xc4ad57fa kfree_put_link +EXPORT_SYMBOL vmlinux 0xc4c365a2 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xc4c82373 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xc4c932c2 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xc4fabf5e inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xc4fc3e75 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xc5088b22 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xc51112ae iterate_supers_type +EXPORT_SYMBOL vmlinux 0xc5158e94 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xc53c94fd skb_insert +EXPORT_SYMBOL vmlinux 0xc5527592 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc556a8a3 register_gifconf +EXPORT_SYMBOL vmlinux 0xc55955a5 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc576d95f blk_integrity_register +EXPORT_SYMBOL vmlinux 0xc5790189 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5aad880 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xc5bc0604 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xc5be41de disk_stack_limits +EXPORT_SYMBOL vmlinux 0xc5c24b25 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60ca69d con_copy_unimap +EXPORT_SYMBOL vmlinux 0xc62c5e6b dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc634dd95 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc63ae6b6 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xc64be9fb __check_sticky +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc66a4684 input_register_handle +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc6774da5 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xc697c98e neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6c51254 blk_get_request +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6dc0c56 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xc70a5c77 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xc71f3aaf of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc76474ed blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xc771a694 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xc779558d pnv_cxl_alloc_hwirq_ranges +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc782c524 jbd2_log_start_commit +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 0xc7aac018 blk_start_request +EXPORT_SYMBOL vmlinux 0xc7b4bbc9 block_commit_write +EXPORT_SYMBOL vmlinux 0xc7dd0cc8 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xc7f39b15 irq_stat +EXPORT_SYMBOL vmlinux 0xc7fbee13 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xc802a862 scsi_host_get +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 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc867262a up_write +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a49bca tcp_shutdown +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bdf289 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xc8e24904 d_obtain_root +EXPORT_SYMBOL vmlinux 0xc8f373ed vme_bus_num +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc914ecc0 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xc91a4166 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xc9294ad3 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc944cd51 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xc948e2b0 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xc9564c0f sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xc95befc7 security_path_truncate +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc97175b1 arp_xmit +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc9868a94 d_genocide +EXPORT_SYMBOL vmlinux 0xc98cecca __break_lease +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a5f3b0 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xc9e334b8 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xc9f6d829 submit_bh +EXPORT_SYMBOL vmlinux 0xca055c2c compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xca08a1cf genphy_resume +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca15a4ae dcache_readdir +EXPORT_SYMBOL vmlinux 0xca197e91 __f_setown +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca668d7e generic_listxattr +EXPORT_SYMBOL vmlinux 0xca6b32f4 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xca83039a scsi_dma_map +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa64f5b tcf_register_action +EXPORT_SYMBOL vmlinux 0xcaa9688a vga_con +EXPORT_SYMBOL vmlinux 0xcac7cf3d tso_build_hdr +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcae17766 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xcaecce0a mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xcaf2a614 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0729e2 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xcb19645f key_put +EXPORT_SYMBOL vmlinux 0xcb22bd5e md_integrity_register +EXPORT_SYMBOL vmlinux 0xcb2ab6b2 inet_release +EXPORT_SYMBOL vmlinux 0xcb2dfa0e tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xcb352070 pci_bus_put +EXPORT_SYMBOL vmlinux 0xcb6a1403 mount_ns +EXPORT_SYMBOL vmlinux 0xcb79a8f6 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb95d8dc fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xcba6cf8a devm_ioremap +EXPORT_SYMBOL vmlinux 0xcbb28474 ata_link_printk +EXPORT_SYMBOL vmlinux 0xcbbd9aaf jbd2_journal_force_commit +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 0xcbfc8701 should_remove_suid +EXPORT_SYMBOL vmlinux 0xcc074a71 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xcc15424d ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc215573 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc299565 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xcc372c76 param_set_long +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6b6ea9 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xcc7180fe sock_efree +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc82f987 dma_set_mask +EXPORT_SYMBOL vmlinux 0xcc8dbb78 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xcc9842a4 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xcc9c87ff invalidate_bdev +EXPORT_SYMBOL vmlinux 0xccaba6af kobject_get +EXPORT_SYMBOL vmlinux 0xccaea707 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xccaee88e key_validate +EXPORT_SYMBOL vmlinux 0xccb1c144 do_splice_direct +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc4d3f7 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xccc73e87 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xcce77846 fb_blank +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd0ba3aa skb_copy_expand +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd229ea3 simple_rmdir +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd34f076 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd633ca4 sock_create +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8c4ce7 downgrade_write +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd90b21c blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xcdbeda28 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdee05a7 pnv_pci_get_phb_node +EXPORT_SYMBOL vmlinux 0xcdf4a2d1 security_mmap_file +EXPORT_SYMBOL vmlinux 0xce088650 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0xce1a0ea9 kvmppc_hv_find_lock_hpte +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce3b8afa md_write_end +EXPORT_SYMBOL vmlinux 0xce3d0bcf sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xce432b67 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xce47c8c5 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce4f0a29 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce92cd3a inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xce9361f3 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xcea20c7e kill_anon_super +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceabf9b2 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xceabfbee compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcef0efb6 seq_vprintf +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0a6c63 udp_seq_open +EXPORT_SYMBOL vmlinux 0xcf159933 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xcf1b3b41 scsi_unregister +EXPORT_SYMBOL vmlinux 0xcf369891 dst_release +EXPORT_SYMBOL vmlinux 0xcf36cc31 drop_nlink +EXPORT_SYMBOL vmlinux 0xcf532432 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xcf5bd520 ps2_command +EXPORT_SYMBOL vmlinux 0xcf6cd9b5 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xcfe421f0 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xcfed6d8a dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xcfff2aa9 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xd0095f1c xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xd00ba6cf __i2c_transfer +EXPORT_SYMBOL vmlinux 0xd020a16a unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xd02deae8 kern_path_create +EXPORT_SYMBOL vmlinux 0xd0349d52 phy_device_free +EXPORT_SYMBOL vmlinux 0xd03f3eb3 put_disk +EXPORT_SYMBOL vmlinux 0xd045143c scsi_remove_device +EXPORT_SYMBOL vmlinux 0xd045c70a alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xd05a0782 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xd06d908d mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd09debb9 nobh_writepage +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0c0bb5f blk_run_queue +EXPORT_SYMBOL vmlinux 0xd0c5223a param_ops_uint +EXPORT_SYMBOL vmlinux 0xd0d0cc99 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xd0dea71e console_start +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f39efa dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fcf30f sock_no_bind +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd132f8d1 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xd13707c6 tty_kref_put +EXPORT_SYMBOL vmlinux 0xd143593a nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xd163507e mmc_erase +EXPORT_SYMBOL vmlinux 0xd16a4dd6 eth_header_parse +EXPORT_SYMBOL vmlinux 0xd17cc3fd dev_warn +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd19eb15b jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xd1bbf84c dm_put_device +EXPORT_SYMBOL vmlinux 0xd1ccea67 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xd1d5402b nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xd1d7ab0b cfb_fillrect +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e3aca3 tty_do_resize +EXPORT_SYMBOL vmlinux 0xd1e41830 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xd20948e0 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xd20c3937 flex_array_get +EXPORT_SYMBOL vmlinux 0xd21a5687 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd25406df ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25b90e2 read_cache_page +EXPORT_SYMBOL vmlinux 0xd25cd4fe kill_pgrp +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd2654990 vfs_unlink +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd26c0bad bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2a37bf0 file_ns_capable +EXPORT_SYMBOL vmlinux 0xd2ad07eb ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xd2add634 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b3b19e complete_request_key +EXPORT_SYMBOL vmlinux 0xd2c75108 simple_rename +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2ee745a jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xd301ce0c blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xd302a2df ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xd3087a09 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32628b9 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xd32ab920 md_write_start +EXPORT_SYMBOL vmlinux 0xd3667e12 follow_pfn +EXPORT_SYMBOL vmlinux 0xd36dc250 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd374d1a5 icmp_send +EXPORT_SYMBOL vmlinux 0xd385c1cc __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3d2a2c4 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xd3f533cc invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xd41a1190 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xd42ba4af tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xd42f01d8 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd44f9187 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xd4559fba xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd4712d3f lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4a35aa6 sock_from_file +EXPORT_SYMBOL vmlinux 0xd4c4985a import_iovec +EXPORT_SYMBOL vmlinux 0xd4c78b9b srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0xd4d52a45 scsi_init_io +EXPORT_SYMBOL vmlinux 0xd514a435 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xd518565b tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xd5292fb4 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xd5303233 srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0xd5454454 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xd546c9e3 tc_classify +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5691dd1 mount_bdev +EXPORT_SYMBOL vmlinux 0xd56c56a7 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xd5ac8c6c iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xd5cad9de tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xd5ce2a06 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xd5fb708f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xd6068770 __elv_add_request +EXPORT_SYMBOL vmlinux 0xd60f8c79 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62a95ce uart_match_port +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6388093 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xd63f0003 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64bc4d7 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68be4e3 kernel_listen +EXPORT_SYMBOL vmlinux 0xd6a4cd98 agp_copy_info +EXPORT_SYMBOL vmlinux 0xd6bf67b8 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xd6d3e4b5 seq_release_private +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6e224cf skb_find_text +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fa03e5 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd7144f5e __ip_select_ident +EXPORT_SYMBOL vmlinux 0xd719ab86 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0xd72e4de6 mipi_dsi_generic_read +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 0xd78801c7 __get_user_pages +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7911fa6 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xd792dcab clone_cred +EXPORT_SYMBOL vmlinux 0xd7af6a00 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xd7afa7ae sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xd7e3be5c input_unregister_handler +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f53500 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xd7f8c4a8 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xd804cdce skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xd852ea85 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xd85fcffb blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xd864d4f7 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xd86a9c33 lro_flush_all +EXPORT_SYMBOL vmlinux 0xd875b9c0 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xd87d9ef9 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xd88947bb call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd898dd7f tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8bb5286 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e02683 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e9efe9 phy_driver_register +EXPORT_SYMBOL vmlinux 0xd8f2256b param_get_ulong +EXPORT_SYMBOL vmlinux 0xd8fa4d41 key_revoke +EXPORT_SYMBOL vmlinux 0xd91f1cb7 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xd9214fae bio_phys_segments +EXPORT_SYMBOL vmlinux 0xd92aa34f dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xd9476dc0 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xd9658f3c blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xd974283a nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xd97faacf cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a1efb2 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xd9b0d3e1 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd9b8a5d4 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c994c0 netdev_update_features +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e4cff4 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xda0e095f jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xda180240 tcp_connect +EXPORT_SYMBOL vmlinux 0xda1ec36d textsearch_unregister +EXPORT_SYMBOL vmlinux 0xda25bef5 pci_bus_type +EXPORT_SYMBOL vmlinux 0xda26e8e9 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xda27ccbb blk_delay_queue +EXPORT_SYMBOL vmlinux 0xda3923b9 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xda3cd3b2 audit_log +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3dfdad install_exec_creds +EXPORT_SYMBOL vmlinux 0xda65f86b __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +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 0xdac58cb6 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xdacfc1b0 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xdad784ca generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xdade410a dev_set_group +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb21cbf7 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb4b6dcf textsearch_destroy +EXPORT_SYMBOL vmlinux 0xdb5356fb do_splice_to +EXPORT_SYMBOL vmlinux 0xdb5ce558 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb76aca4 dquot_initialize +EXPORT_SYMBOL vmlinux 0xdb88af10 __alloc_skb +EXPORT_SYMBOL vmlinux 0xdb91ade3 netdev_change_features +EXPORT_SYMBOL vmlinux 0xdba63c04 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xdbb8269c of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xdbdb4f2b security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xdbf0b131 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2504cc rtas +EXPORT_SYMBOL vmlinux 0xdc2bb643 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xdc3552d0 netdev_info +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc45c3b0 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc530dfe xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xdc58cce2 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xdc7a858c fb_show_logo +EXPORT_SYMBOL vmlinux 0xdc7cbf03 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xdc838bb5 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdcaca0db pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcbfbb36 phy_attach +EXPORT_SYMBOL vmlinux 0xdcc25e9f of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xdccad3a8 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xdcd395c3 input_inject_event +EXPORT_SYMBOL vmlinux 0xdcd4fe6f revert_creds +EXPORT_SYMBOL vmlinux 0xdce3d444 cad_pid +EXPORT_SYMBOL vmlinux 0xdcf0006a generic_setlease +EXPORT_SYMBOL vmlinux 0xdcf4604b mmc_start_req +EXPORT_SYMBOL vmlinux 0xdd01ae46 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xdd094cf8 netdev_emerg +EXPORT_SYMBOL vmlinux 0xdd1429ea agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xdd1b23ba phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xdd644ed1 netlink_set_err +EXPORT_SYMBOL vmlinux 0xdd67cfd9 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xdd738265 migrate_page +EXPORT_SYMBOL vmlinux 0xdd8d372f napi_complete_done +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd9aabe7 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xdda7681a generic_fillattr +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddd668c3 md_update_sb +EXPORT_SYMBOL vmlinux 0xddea6df7 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xde118e14 mdiobus_register +EXPORT_SYMBOL vmlinux 0xde22fcd1 twl6040_power +EXPORT_SYMBOL vmlinux 0xde396e11 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xde415493 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde4f1567 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xde5b7b51 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde64da06 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xde783883 pSeries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xde7dd294 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xde80639e tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xde82cfb0 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xde857eee inet6_release +EXPORT_SYMBOL vmlinux 0xde8beb3a bh_submit_read +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9f7ba8 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xdea7e199 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xdeac5832 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xdecb132e inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xded4ccfb blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xdeec6e82 is_nd_btt +EXPORT_SYMBOL vmlinux 0xdeedf04d vfs_whiteout +EXPORT_SYMBOL vmlinux 0xdeee2041 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xdf079610 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3411da skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xdf39eb40 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xdf3febeb jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf8978c8 seq_pad +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9862eb splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xdf9f3617 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xdfa3ef9f dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xdfab7ee7 iov_iter_init +EXPORT_SYMBOL vmlinux 0xdfb203a2 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfc90ee6 tcp_prot +EXPORT_SYMBOL vmlinux 0xdfd4c3ac vio_get_attribute +EXPORT_SYMBOL vmlinux 0xdfe1806c dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe000bdbd blkdev_get +EXPORT_SYMBOL vmlinux 0xe008c520 mmc_free_host +EXPORT_SYMBOL vmlinux 0xe0405ec2 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05caa2f pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06c6ec7 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07f5346 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08520ea fput +EXPORT_SYMBOL vmlinux 0xe092d64a scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xe09f716c rwsem_wake +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0cd3d94 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xe0d2cb39 simple_lookup +EXPORT_SYMBOL vmlinux 0xe10c9b50 pps_event +EXPORT_SYMBOL vmlinux 0xe10da151 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1203dfc xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xe122e16e crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xe12f3392 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xe154bc8f neigh_event_ns +EXPORT_SYMBOL vmlinux 0xe16a7617 inet_addr_type +EXPORT_SYMBOL vmlinux 0xe16f2f6c padata_do_parallel +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe180f592 force_sig +EXPORT_SYMBOL vmlinux 0xe184a99f kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xe1b74ec9 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xe1baea36 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xe1bca064 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xe1bf2728 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xe1c0be71 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xe1dc95f1 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xe1ef40fc alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xe200349a inet6_bind +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe226b583 skb_append +EXPORT_SYMBOL vmlinux 0xe22d80fe kern_path +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25197f7 of_get_parent +EXPORT_SYMBOL vmlinux 0xe277a972 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xe27cd09f devm_iounmap +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2aa9c25 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e858da mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe30b6fd2 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xe30fb47b dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xe314e8fb cpu_core_map +EXPORT_SYMBOL vmlinux 0xe33b77ac d_drop +EXPORT_SYMBOL vmlinux 0xe3431be8 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe3443194 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xe35d7025 search_binary_handler +EXPORT_SYMBOL vmlinux 0xe3650abf noop_qdisc +EXPORT_SYMBOL vmlinux 0xe368f420 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xe36b45d6 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xe375dae3 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe39350c2 simple_link +EXPORT_SYMBOL vmlinux 0xe398ab5e vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3b90b6c genphy_suspend +EXPORT_SYMBOL vmlinux 0xe3d19b0d devm_release_resource +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d78763 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xe3ec3c74 vme_slot_num +EXPORT_SYMBOL vmlinux 0xe4083f66 tty_register_device +EXPORT_SYMBOL vmlinux 0xe42600f1 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xe4624106 kernel_accept +EXPORT_SYMBOL vmlinux 0xe47424ce ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe49135bf default_file_splice_read +EXPORT_SYMBOL vmlinux 0xe4c19230 bio_put +EXPORT_SYMBOL vmlinux 0xe4d12a61 dev_mc_del +EXPORT_SYMBOL vmlinux 0xe4da67e9 dev_err +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5673f88 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xe568d618 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xe5707d92 phy_detach +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5849c69 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xe5857dd4 cdrom_release +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe6486906 sk_filter +EXPORT_SYMBOL vmlinux 0xe64a7fc7 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xe66298bd generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xe684a526 ihold +EXPORT_SYMBOL vmlinux 0xe68d09e4 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe69e7175 nf_afinfo +EXPORT_SYMBOL vmlinux 0xe6a28d55 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xe6b36aa4 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xe6c7fc92 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xe6d760df generic_delete_inode +EXPORT_SYMBOL vmlinux 0xe6dd9df9 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0xe6e62367 vfs_iter_read +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6feec2a pci_platform_rom +EXPORT_SYMBOL vmlinux 0xe70b3f95 kernel_param_lock +EXPORT_SYMBOL vmlinux 0xe711d15f ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xe7166231 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0xe72583f7 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xe76ef096 pci_enable_device +EXPORT_SYMBOL vmlinux 0xe771235a __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xe77a0e0d __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xe77e26d8 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xe798e2a1 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a77e20 d_lookup +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7aa3f4b generic_ro_fops +EXPORT_SYMBOL vmlinux 0xe7aa7c38 noop_fsync +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e0b3cb swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xe7ed2d7a scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xe7f0e76f skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xe8150b0f jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xe81b275a nf_log_packet +EXPORT_SYMBOL vmlinux 0xe81eaa1a mipi_dsi_dcs_set_pixel_format +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 0xe847a7e8 backlight_device_register +EXPORT_SYMBOL vmlinux 0xe85a9011 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xe862bdce send_sig +EXPORT_SYMBOL vmlinux 0xe86e6bb7 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xe8728832 bdgrab +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87d35b7 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8984f18 cdrom_open +EXPORT_SYMBOL vmlinux 0xe89b89d6 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8c4e4b1 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xe8e3588a ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xe8e8a6ee skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xe8ee999d make_kprojid +EXPORT_SYMBOL vmlinux 0xe8f34bb8 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xe8ff4e42 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xe90517a0 kill_litter_super +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91929d9 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xe91a9880 path_put +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe94f6b35 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95a4c99 elv_rb_find +EXPORT_SYMBOL vmlinux 0xe971876a on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0xe97d97cb mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xe9a3396c xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xe9ace079 d_tmpfile +EXPORT_SYMBOL vmlinux 0xe9aedc6a bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xe9dc25ba __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fd03bd mount_single +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea342075 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xea421311 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xea64ad53 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xea64f5eb inet_csk_accept +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea82196a neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xea891a14 dev_uc_add +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa36a92 kdb_current_task +EXPORT_SYMBOL vmlinux 0xeaf7aea1 da903x_query_status +EXPORT_SYMBOL vmlinux 0xeb08e38b mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xeb1185bc d_path +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb67f7ac of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xeb7b4882 sync_filesystem +EXPORT_SYMBOL vmlinux 0xeb8c7b7b cxl_use_count +EXPORT_SYMBOL vmlinux 0xeb9c7929 __dax_fault +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xebc16119 blk_put_request +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xebccb2a1 param_get_int +EXPORT_SYMBOL vmlinux 0xebd67c2a ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xebd9943b vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xebdd7d6b scm_fp_dup +EXPORT_SYMBOL vmlinux 0xebe4b6ef generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xebe857e3 path_get +EXPORT_SYMBOL vmlinux 0xebf12959 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xebf25480 tso_build_data +EXPORT_SYMBOL vmlinux 0xec2c55ed __ps2_command +EXPORT_SYMBOL vmlinux 0xec3e0bd6 tty_hangup +EXPORT_SYMBOL vmlinux 0xec44ec17 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xec6ffd3c sg_miter_skip +EXPORT_SYMBOL vmlinux 0xec77a122 phy_init_eee +EXPORT_SYMBOL vmlinux 0xec9479ea pci_dev_driver +EXPORT_SYMBOL vmlinux 0xeca402b0 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xeca7a018 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecbc0561 console_stop +EXPORT_SYMBOL vmlinux 0xecbe69fd __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xecd982a2 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf2436f set_disk_ro +EXPORT_SYMBOL vmlinux 0xed0fa3af __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed7e6524 textsearch_register +EXPORT_SYMBOL vmlinux 0xed7ecc24 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xed896fd7 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xed9bca34 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb21cc6 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd0d0a dst_alloc +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc32467 flush_old_exec +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedcf62d3 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xee0c5853 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xee14b45e blk_get_queue +EXPORT_SYMBOL vmlinux 0xee26814f inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee65a459 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea8bec2 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeec4128c alloc_disk +EXPORT_SYMBOL vmlinux 0xeed82ff6 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xeef12271 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef063fa4 proto_register +EXPORT_SYMBOL vmlinux 0xef6a22e8 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xef7bb66e skb_trim +EXPORT_SYMBOL vmlinux 0xefb6227c irq_to_desc +EXPORT_SYMBOL vmlinux 0xefb800c0 finish_no_open +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 0xefeeaa95 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xeffb4fc7 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf006dcdc kmem_cache_create +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf03d13ec phy_resume +EXPORT_SYMBOL vmlinux 0xf046f293 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf06a7a66 padata_do_serial +EXPORT_SYMBOL vmlinux 0xf070b788 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08f16c5 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf0909e07 simple_write_end +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0c79669 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xf0d8e7e9 from_kgid +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f633b5 vga_put +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1245f57 padata_alloc +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf165c4a4 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xf169741e twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xf173c844 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf18d360b __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1985b38 led_blink_set +EXPORT_SYMBOL vmlinux 0xf1b4ff51 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xf1cb74fe pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xf1d77e85 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dc5555 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e132df max8925_set_bits +EXPORT_SYMBOL vmlinux 0xf1e7b80f nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1eb10a1 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xf1eff016 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf210bc30 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf238160f __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24e8384 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xf25904c9 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xf25dd14a i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2b0d6dd task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c4a8fc nd_device_register +EXPORT_SYMBOL vmlinux 0xf2c4bc4f xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xf2f994f1 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xf300610e of_match_node +EXPORT_SYMBOL vmlinux 0xf3083ab1 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xf30edcc3 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf321d9a6 unlock_new_inode +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 0xf37189e4 simple_setattr +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 0xf3c137de vfs_create +EXPORT_SYMBOL vmlinux 0xf3c6d084 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xf3d3e62c filp_close +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf40c095a free_page_put_link +EXPORT_SYMBOL vmlinux 0xf439e780 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44433af bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xf44bca23 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xf4547707 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xf45e97fe param_set_short +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf478c77a unregister_filesystem +EXPORT_SYMBOL vmlinux 0xf48536fb sock_recvmsg +EXPORT_SYMBOL vmlinux 0xf4a16000 __devm_release_region +EXPORT_SYMBOL vmlinux 0xf4ab140f dev_addr_del +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4e98e79 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf508534e kernel_sendpage +EXPORT_SYMBOL vmlinux 0xf5147bed add_random_ready_callback +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 0xf5462373 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xf5522aec read_cache_pages +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf589f415 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xf59e6f03 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a5e967 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5b6b599 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c61625 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xf5da8b53 tty_write_room +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf60f0820 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xf624a158 fget_raw +EXPORT_SYMBOL vmlinux 0xf62df433 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xf630072b napi_gro_flush +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf66767b7 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xf6692475 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xf66f1e68 napi_get_frags +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf695a645 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xf6b0927d cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c908b8 freeze_super +EXPORT_SYMBOL vmlinux 0xf6d6b762 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xf6e865ec redraw_screen +EXPORT_SYMBOL vmlinux 0xf6ea2d02 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7022b9e pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xf71ce25d netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf72998dc bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf77063eb tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xf7908246 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7cf753c pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xf7d8af45 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xf7f6cbf2 seq_file_path +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf820f6a7 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82b28b2 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf842f995 down_read_trylock +EXPORT_SYMBOL vmlinux 0xf84a80b5 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xf8545886 account_page_redirty +EXPORT_SYMBOL vmlinux 0xf8583878 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xf85e0deb vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xf8abdefc simple_nosetlease +EXPORT_SYMBOL vmlinux 0xf8b8fd57 generic_update_time +EXPORT_SYMBOL vmlinux 0xf8ca518a dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8e293ff starget_for_each_device +EXPORT_SYMBOL vmlinux 0xf8ec8dd4 vme_irq_generate +EXPORT_SYMBOL vmlinux 0xf901df05 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0xf9038bcf smp_call_function_many +EXPORT_SYMBOL vmlinux 0xf90e2c08 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xf9129ff9 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xf93e043e proc_mkdir +EXPORT_SYMBOL vmlinux 0xf954a5c5 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xf95637ed __sb_end_write +EXPORT_SYMBOL vmlinux 0xf9603e46 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xf981043d abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b1c987 param_ops_long +EXPORT_SYMBOL vmlinux 0xf9b5d09f __serio_register_port +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9ce4ca3 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xf9e9389b dev_mc_sync +EXPORT_SYMBOL vmlinux 0xf9eb766f inet_listen +EXPORT_SYMBOL vmlinux 0xf9efb8c2 __neigh_create +EXPORT_SYMBOL vmlinux 0xf9f407d3 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xfa023d96 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xfa42b11e mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xfa5627a4 irq_set_chip +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa6cba07 key_alloc +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd0a4d simple_readpage +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf83df3 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xfb011165 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xfb1de3c3 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xfb36beb4 inet_shutdown +EXPORT_SYMBOL vmlinux 0xfb4bb539 pcim_iomap +EXPORT_SYMBOL vmlinux 0xfb5c038e try_to_release_page +EXPORT_SYMBOL vmlinux 0xfb66453f xfrm_state_update +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb8cec9c pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9ac8b2 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbdd4c01 cpu_present_mask +EXPORT_SYMBOL vmlinux 0xfbe2088f generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1dfe97 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc5277be sk_common_release +EXPORT_SYMBOL vmlinux 0xfc562139 drop_super +EXPORT_SYMBOL vmlinux 0xfc732ef3 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xfc734759 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xfc796694 netlink_capable +EXPORT_SYMBOL vmlinux 0xfc85de3e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xfc894525 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xfc9b902d sk_dst_check +EXPORT_SYMBOL vmlinux 0xfca16bf3 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xfca259a0 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xfca46f3b netdev_state_change +EXPORT_SYMBOL vmlinux 0xfca8b307 filemap_flush +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbf8150 eth_gro_receive +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc76bcf md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xfcdd1234 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd5c0283 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xfd84bb0e kthread_stop +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda0eb8f xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xfdaa994a softnet_data +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc0cbad ping_prot +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdf5dfc4 dma_async_device_register +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 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe2cd05d mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5e6f5b __mutex_init +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfeae3d1d nf_reinject +EXPORT_SYMBOL vmlinux 0xfeb02afc dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xfebb897c fb_get_mode +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1aa5f8 generic_file_open +EXPORT_SYMBOL vmlinux 0xff1dd19e from_kuid_munged +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff260edd pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xff565a12 nonseekable_open +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff775acd tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa28f9b setup_arg_pages +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdd3aeb pcim_iomap_regions +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x109ebbe9 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x130d672b gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x14a8ce57 kvm_io_bus_write +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 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x280f59bb gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x29d38cc0 kvmppc_unfixup_split_real +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2fc3b1cc mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3327fbdc kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x361a349e kvmppc_gpa_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x365ec208 kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x373a28e1 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x376973af gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x38fa112d kvmppc_pr_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3f2107cd kvmppc_handle_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3f3bbade kvmppc_ld +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3f79a5c4 kvmppc_rtas_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x421bed53 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x42534f2e gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4275bce4 kvmppc_core_dequeue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4412fcf8 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4b9701ec kvmppc_handle_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4ed05a0f kvmppc_load_last_inst +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x51f22844 kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x565b66ec kvmppc_xics_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x58709cde kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5be2c38f kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5d623ce6 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5d7c7ba6 kvmppc_sanity_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x63581565 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x65df937e kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669b3f37 kvmppc_st +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6883a8b9 kvmppc_core_queue_program +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x68dfff0f kvmppc_h_logical_ci_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x69ffff20 kvmppc_book3s_queue_irqprio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x79f0cbd1 kvmppc_set_msr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x85a5a4b2 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x865effc3 kvmppc_kvm_pv +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x87212248 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x875a1d30 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x896815e9 kvmppc_h_logical_ci_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8b59e311 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8c3ce4fc gfn_to_pfn +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 0x90eb6b7e kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x944dbe75 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x95921b48 kvmppc_core_pending_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x95ced1bf kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9a61435d kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9bfcec6e kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa01706cd kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa65188a7 kvm_write_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 0xabb900ea kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xae5fd315 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xafb2856b kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb737dd21 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb9a8a75f kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbdd3e088 kvm_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc0bcc940 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc11d90df kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc2464818 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc26f840d gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc6a9afd0 kvmppc_emulate_mmio +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 0xcc6ce9d3 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd0a0d978 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd11dedc7 kvm_unmap_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd242ef71 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd260ac73 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd40efb12 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd8c2381e gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe4006108 kvmppc_core_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe49bed17 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xea858b0c kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xeba92bfc kvmppc_core_queue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xed4d8095 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf6a75988 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf75a8192 kvmppc_hv_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf95aa9b1 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-pr 0x2eb62fa9 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL crypto/af_alg 0x096a24bb af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x44014771 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x45ceef30 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x7eb33c3a af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x8ea7eae6 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x8f5cad8e af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xa9d247b4 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xc0be81b9 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xd6c6ae59 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xe261bc48 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 0x7e1b4d67 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8f35345c async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x9cfb3ef0 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x31daf100 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xaeb93264 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x274982c6 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x94dd47e3 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xcbcd2424 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf8421e1d async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x0c7775f5 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x647ba828 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x0efb723c 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 0xadf1aac7 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 0xb2b2d06d 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 0x2f49a5da cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4f8362d5 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x5943faed cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x62d62fe8 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x79cbcd07 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x8f5c1470 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa2f0bc64 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc5216441 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xeb588a72 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xfe9f80f9 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x8e03e75e 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 0x6a6b4107 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2074edcd shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x544261b2 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x67fe72b7 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x70ca8221 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x891cf9b0 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc0eb5a51 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd2f74c14 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd35305a1 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 0xa5b0503d serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe47aeb12 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xdca95381 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0022f1a2 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x09a4755c ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x15ae56c8 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1f9f5f58 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2bcbe8e7 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3e75b4e7 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x41ee6f7f ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x48e7a787 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x54b2f92d ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x60a2780e ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x77a13400 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8240c0fc ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8683b1ca ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x90453585 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa4bb50ae ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa5690538 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa7ab58c1 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa992e42d ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xaf080576 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd433fb66 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe6a12621 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf25dbf08 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0b20464a ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0d56dec8 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0da601d6 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3017d18e ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x39a32a44 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7c4d2056 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x877ab477 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8c0c4ac3 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9d263371 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb42c8212 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcc481715 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xdd690d77 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf27ca237 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x6fdb6094 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x2be0f696 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 0x937b37ee devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xaa60ff93 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xe346fe12 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xfb3d41f1 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x07d51b68 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x11846a70 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1a16dffe bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x22636ea4 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x277416e0 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x29f5635d bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x36f3e4fa bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3cd73c0d bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x544abf28 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x59d4ab09 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5c1879eb bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x83313144 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x857858c0 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8d943691 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x91485ab6 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9fb2f396 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa070c295 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa59b99c4 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb045ca2f __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb0ec491e bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb7b7bf8e bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbae1471f bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdf4a8aed bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf1106c05 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2ca392ce btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x570d32e7 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8c2ed539 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x9987fead btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xacd57806 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xfba5d071 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xcdc5c24b btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xd1eaa083 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x33f140c7 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x38d27885 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x574fc05f btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x575fb007 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x845fef72 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9e484e56 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xaf28bc96 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbfe92b73 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xcc9bc7fa btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd5d7f1fc btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe6bb2773 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xaff10691 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x491bab7d nx842_crypto_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x4b7e3086 nx842_crypto_init +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xc81e3566 nx842_crypto_compress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xf6d49319 nx842_crypto_exit +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x18cfff0f dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x2dd6d944 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3eecc9e8 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x54a183ff dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x72d0d4b7 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x953ec92e hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xf886c4ac hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xfdc35894 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x26d2cd5b vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x73bc6e64 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xeafa0aa3 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xf50b61d9 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x030b5a4c edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0367e0d9 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1e9f08f4 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2d6f7855 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x347c5bad edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x46a2de10 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4ce02e44 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x514780a5 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5f35639e edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x61683c83 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6aedd69a edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7efeda41 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8c617c1c edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x94d9f8af edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa88bacab edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xad4f0089 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc1176cb6 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc66a6cf9 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcdba49b9 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf1e1a5e find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd4c3ac77 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe18e2bc7 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xed521737 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x980d82f9 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xb8a90c50 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xefebd045 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xf8f1ebd0 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4dbec3e6 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x620b72d5 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x73e5c0f3 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x868f13d2 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcfd031de of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf77584cb drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x0cb7677e ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6152317c 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 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe395ea1d ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x173cc35e __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x17c37ec1 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2085ca81 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x243f4f83 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2d05ead6 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x34e9b313 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x367ee68b hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x406d7c48 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4c016c0f hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4f00455b hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x55c93aaf hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5e8f87e0 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x645f677a hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x70431658 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7293d724 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x752d18f7 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x75b6c7f3 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7b892c96 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7fe6a1de hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x841e46a0 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x90516894 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x90c1c488 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93c442ae hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9fc14011 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa2316966 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad439999 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb3e9779c hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcedd708a hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda11151c hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde4f62e4 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe569a143 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe97e7e43 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xea21aeab hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xefa51853 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf7277835 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf989ad54 hid_destroy_device +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 0xece642da roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x0fd36476 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x165e08ba roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xaba7d3ea roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xae91ba6e roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xbf25ef5f roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdb0072ef roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0e0fcebe sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0f433e21 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x87e6014c hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x946b9ea5 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9bb45595 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbc6667f0 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc6f937a0 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd0e7e475 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf7f270ec sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x688e2a26 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x19dcafed hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2786f405 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x291fcc0a hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31b4f6b7 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x338b48e8 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x473f724f hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5cf2927f hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6c73f530 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x80c672b6 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x87a83521 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9d096c9a hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xad203b46 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb38fe807 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb7446002 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbb6e8ce2 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc2007718 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc81b11a9 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc90f47a3 hsi_async +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4613eb0e adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4e051523 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x8c927920 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x023a2be6 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2c33085d pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2dd08bb9 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x30581b84 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3f4bfdb8 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x40b2cc29 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x85ed0c11 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x96dc64e8 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb044398b pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd0439010 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe2eb003e pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe39b3cce pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xedd1dc4d pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf0e71137 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf91826e3 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x01346334 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x05eb0c99 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1d0a2a05 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2246c97e i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3563f05d 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 0x7113a7a1 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x81adbde9 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x85d403b6 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xda06d8c6 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xd5b5c879 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xe4282473 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc491715f i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xd01d6f54 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x073401c6 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x160afda4 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x266ae99e ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x27160128 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2af7375f ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x60b16e62 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x80c8d902 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xac3a32db ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc5551d09 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 0x0c182a4e adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x24a44cea adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x28a032e6 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x592ae6b6 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5a53a125 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5ffe85de adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8511c652 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8951951d adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc7f81cb1 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc804484e adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xddde73d9 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf2567e9e adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x02663bc4 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x06de465e iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x12ff67f4 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x15d38f70 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x18182771 devm_iio_device_free +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 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a9331fa iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x316f705d devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4e33d5c7 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x520c6704 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x647598cb iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6dfa916e iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x777646a4 devm_iio_trigger_alloc +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 0x8b0d0a4b iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b59c582 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b668371 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9ac05083 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa1bdd9b7 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa7a42854 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa8169490 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3f5c383 iio_read_channel_processed +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 0xcecd4c99 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcf5927b0 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdafccd9b iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe199c340 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4efba69 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe9b3b298 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xebdca7bd iio_enum_write +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 0xcd6b1f6f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x1cdecbf8 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x0cc80a59 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 0x20ab1a0e cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x8494ba77 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xe844eb43 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x7eb8c624 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xcb52994f cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xcffcece6 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x3580ba20 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x679c2e6a cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0ece3ce9 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x37c012b0 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4afbc3b7 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x63c6ac8f wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6b4198e0 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x76ff85ba wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x80619514 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa7eb987e wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbb8d14d7 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc22ad213 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd90dc459 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe32c0f7f wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x10f0dadc ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1a0596ee ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x425ec291 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x96c81ca4 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa53d4d56 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xbc5521e1 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd1211b4b ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf772a886 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf9d86c28 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 0x1361289e gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x16b7c66f gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2ff11f90 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3769f168 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4e3b47c5 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x653f6d15 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6a136539 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6c89ab3e gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7259325c gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9602718d gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9c47579a gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa7a593d4 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc7f4ed41 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd0268980 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdec2442d gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe7c4082a gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf911e927 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0e71620b led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x195ec352 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x46ea08b3 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x5cd611de led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x83186c61 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xda3e9a7a 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 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x1a4df114 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x25019f77 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x52d61cee wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x6466c53a wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7532e400 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x806d7e6c wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8a88e333 wf_put_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 0xc5478d23 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xcda7bcae wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xde0f8a87 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x0839c65b mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2051bc68 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x23145218 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2b1d1543 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3685df7a mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x433571d3 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x43ff52ff mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x60923764 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8305191e 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 0x9d6fa16f mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc047fa2f mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd592f619 mcb_free_dev +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 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 0x92662a4f dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa9a87126 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb0e5b546 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb1fb6631 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 0xd8ab7fea dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd9323df7 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdfbe45cc dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe418c610 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe81796df 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 0x26ddce56 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 0x3da1b993 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5dfab935 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa0f89714 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa14dbc07 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc9e39634 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe5d9b92d dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xfb2c49d2 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x1db2cc96 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xfad5a7d4 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 0x1a60779e dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x212fda3c 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 0x39ac3f07 dm_region_hash_create +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 0x5f2abdc9 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 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 0xd6600f4f 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 0xdd9a8979 dm_rh_bio_to_region +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 0x42d1207a dm_btree_lookup_next +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 0x42e87b26 dm_block_manager_create +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 0x113e2527 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3d1c9d2e saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3e5dacfb saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4d5a48f2 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x53dfc4d7 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7227db7a saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x73bc32a9 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7b8b65dc saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8559a32c saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe22652d2 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x05eb36d9 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x06b105a4 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x44f6505e saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4d3cc444 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8af5a58c saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb305fe74 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xcf4a176e saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x02c34999 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x11084705 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1bc4d2cd smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1d74dc2d smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2bb418b5 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3e121938 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4a2a5552 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5c1c1137 smscore_start_device +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 0x892975a2 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x97fb2313 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 0xa28f734d sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa75892f1 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xab03a79b sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdc0154c3 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe114a4d7 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe52a31cf smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf310efa6 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xd5e4bd43 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x07cf8ff6 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x48096767 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0a48721d media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x1a8527bc media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x1d7190e5 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x39aebd3a media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x5d6330c2 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x5ff0492d media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x6bf5beb6 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x78389711 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x7845bad8 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x7e7e800c __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x832137e2 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x8617cc90 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x92a6384f media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x995318b7 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x995649c2 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xbdc26d70 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xc6cbd60e media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xe077e4b9 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x4a45849c cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1e3befb0 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x359f0cd5 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x41f102b0 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4b189617 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x782fd8d4 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x89e30ea6 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8b2f3ba1 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9e2adf9e mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa241a0bc mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa68e20a9 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb0019464 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbc8442a9 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd6159111 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdb90b485 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdc232e16 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe162e198 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe62e6653 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xeff70bd3 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf978bf1e mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x05d1dd91 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1d0dc679 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1ddd6695 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3d62b072 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x43334c4a saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6eb499b1 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9fe71836 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa1e981de saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa2f4421a saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa4750f1b saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaf69b6ff saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcd039ee2 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd03664a3 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd93a21cc saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xddf72283 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe43d1769 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe96c093c saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xed886287 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf6b34b68 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1bdaaf6e ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x284f442c ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x5ec20f23 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 0x837b517f ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa4305a5a ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xca78d177 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xdf94ffd6 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 0x0f020949 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x40ce8149 xvip_enum_frame_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 0x56740e9e xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x61e44f8e xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xa07c1202 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb07bb645 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xc0e55465 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 0x7cbace79 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x661cf6f5 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xf0e25557 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x27adca6d rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3077d56e rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x35ac84b4 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x46a50dde rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6d014375 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7bdcd9d3 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x816b7742 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa2f275c6 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa7906171 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc604157c rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xda954e09 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe246fed4 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe5abfda0 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe7f758a5 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe9ffc54e rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeed982a4 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xab86514a mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x9eca196d microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x9d58d674 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x26c3211e r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x0754f313 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x002ba2f3 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x44620680 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x48e75a9f tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xa9363dc7 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x67585939 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xbac2f5f8 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x779ffd0c tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x8ed6f367 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xb8d77195 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x079fcd68 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x092937ff cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1d888c11 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1ed1e9b7 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3b282537 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4f442937 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x54e78fbb cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x66a9f5d9 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x72cb519f cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x94f0e817 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x96bf4f38 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9884ac1a cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa7161d08 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc749b117 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd4fdcfdd is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd791d797 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe5208974 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xead3c413 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf0caabc4 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf67529f2 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x162555aa mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xb667272e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x24ac0397 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x290e36e4 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x34023128 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x357bb15a em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5b7f9484 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5ec48563 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x62ba5019 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x748bd5cb em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7e63881e em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8835d2d6 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8a48d757 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9282c158 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa2bcd1bf em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa90f1124 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xab9f20b1 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbb67c4f4 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc5e2b166 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xde37328a em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2f8b86a1 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x564d9872 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8a410cfa tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc7287144 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 0x1ac47191 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2243c225 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2d0a02d6 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2ddfc2af v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5aa8e85b 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 0xbda7cae7 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 0x062fac0b v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x1d14029e v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x112d2d05 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x12631915 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 0x1986bad1 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x21bb6e24 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2d25a29c v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x465d00dd v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5013051c v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5d981a8d v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6f2f620b v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x701754fa v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x70e53b9b v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x74efcd14 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7b6ae617 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7c9d1e83 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x95a222d9 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x98caa38a v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9aec87bc v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa8982ce9 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xabf91af6 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc1d46534 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 0xc929d190 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcc80beaa v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdff475b7 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf38ee0f2 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfcd56f2d v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfd728390 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfed5ba9f v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x024ef4cf videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x042f0697 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x067b614d videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x19159be6 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1c93aed9 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x21ad2964 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x25fe01f6 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2739447a videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x465fe4e2 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x47ea1f29 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6aef1f0c videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6c75fc4e videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x81234e30 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x81bbf12e videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x82a74cac videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x84d2febb videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x875808fe videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x88ba0aba videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9080f92a __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa281f747 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xaa675212 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc5d56c21 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd68c1d41 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe12ef39b videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x06c6ac8b videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x138ae3b5 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6003091c videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x81b8a9fb videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x44681e99 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x54e2a7a5 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xc7d4ed39 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x033f9adb vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0a7be34b vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0bcc263f vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0e69589f vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x19876b50 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1d2e878e vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x249fd233 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x261e771b vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d080bbd vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x32341f50 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x40dd58a6 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x43271b0a vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x46726451 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x57ab8da3 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x60a5d5d7 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7509a8c8 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x893cae03 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x895e8819 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8aa17734 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8b218264 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c02db34 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x99862729 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9ede73c0 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9fb6769a vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa763a3dc vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaec2487a vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb7a544dc vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xba5ad657 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbde750fc vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbfa9519f vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc444b517 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcff66d9a vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd09ba781 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd59786ef _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd9c652c1 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe899c0c3 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf4780444 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf6265546 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfe8ca206 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x7923308e vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x7bf23b1b 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 0xb80bb105 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xcf9291f9 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 0xaeee34a2 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xc337c531 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xf651b479 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xf9797397 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xbd73a214 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0d41a07f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15c8cfb9 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x18ed3bc3 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x19e166c8 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1f841209 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2640c3cf v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2f820a9a v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x37b61b2e v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d720f44 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x461d857a v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4886c319 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5188e503 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x575093c6 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6178bc15 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x79b5385d v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ff054f4 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa2d5c098 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa6429c45 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb00b0554 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb2fbaee3 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbe20325c v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd51802a7 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeda48221 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf1590a3e v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3b8bb85 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf421c532 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf785548d v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfc71af0e v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x261189bb pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x2efa3dd5 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x599d9aa3 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x4fbd2cc5 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x71c3c8cb da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x879a55e2 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd150c14b da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xef04f0b2 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x13d892eb kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x31a71cca kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x35eaa1e6 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3a9985b1 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7fd3705a kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb809fbec kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbb41abe5 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc1fd1564 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x44cea1d1 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x66b4fcd1 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xfad9a5b2 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x254aca86 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2fb56662 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8acacaee lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9a863014 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa2ef9749 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc024aa35 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe47c9dd0 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x7f8d663c lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xf72bc2eb lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xff6eead8 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x34e32caa mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x52df3ef1 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8208371c mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc2b27c3c mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd0bd8954 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe234a077 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2f56ab57 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3776ac4d pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5af51db6 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5c01456f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x795a6180 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7c4cc80b pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9c5111bb pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbcb9dfc4 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc9717691 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeabd5b4f pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf55a668a pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x1a9e533e pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x77c44a1d pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5d109067 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8c0402b9 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd9d80785 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe5089e46 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf87a0e8f 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 0x05782cf1 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x148bc001 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1cfe5eff rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x26a59b0e rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x28bb6885 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x35bece2d rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x403d7f91 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x53f26d80 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x599dcc55 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d977aa0 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6e4cb6f7 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7a620e5a rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x868d509b rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9813d11d rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa18fced4 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa3eaa3e7 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa8ab6810 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaad2c5e8 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbc759579 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcfe472bb rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdbadafa0 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe459e112 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf854e004 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfea39a97 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x00d2d775 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0168bcb1 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0294cd33 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1d68dc64 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x44837ca5 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x648dfe01 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6fdfe9f3 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xce6c8188 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd8b86a7b rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe190ff59 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xec451d84 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xefadb1cb rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf0a49ce7 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x017f5fa9 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0cffafb3 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x21d93505 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x28627ac7 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2b17b02a si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x30ef02f2 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3292527c si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x32efacbc devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x481f1d65 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x51da98b8 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5818b69b si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5a88ea38 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x654b5a96 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x69a88d23 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x74b0195b si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7dbd0719 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7deb75e9 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8120eb32 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x861e3a64 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8cb9af14 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x947e2f0e si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x99683144 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa08869d6 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaa21d993 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xadeb9fd5 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb697fd44 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbc835bd7 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbcff8f95 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc3fe9abe si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc5d046e3 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdbc9fa0a si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf15264b9 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf3a9c1ca si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf7d9e537 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x93683f42 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x949607de sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xaa0af253 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xbd1f00f6 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc7e4385c sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x10dcf3df am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xc6d1bf83 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xe14b6876 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xe87f69d4 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x16d233cf tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x4d9420b8 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xee131a6b tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfdb1012f tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x26e5efd5 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x7b0f80f8 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xc130050b tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xfb72a277 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xb1f5ccef ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2b48502f cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4ca4bb4a cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc53e0450 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe28020ee cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x01c1e090 cxl_fd_ioctl +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x072363f3 cxl_psa_map +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x1883dd3d cxl_fd_read +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x200b83a8 cxl_pci_to_cfg_record +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x25b2b274 cxl_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x2fb6dca6 cxl_start_work +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x304f12bd cxl_get_phys_dev +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4d5c064a cxl_fd_release +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x5790bf5a cxl_set_master +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x70168690 cxl_free_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x86499629 cxl_get_fd +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x868802b4 cxl_fops_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8740bc47 cxl_psa_unmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x974057e7 cxl_perst_reloads_same_image +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xa4a19d92 cxl_pci_to_afu +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xaf40117e cxl_stop_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xb163fd2c cxl_process_element +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xb895a42c cxl_afu_reset +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xc082c6b6 cxl_allocate_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xcf6dba50 cxl_fd_mmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd33a0005 cxl_release_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd66c995a cxl_dev_context_init +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xdf953827 cxl_unmap_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xe1f95c5a cxl_map_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xe7fcfaa4 cxl_fd_poll +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xe968550c cxl_fd_open +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xebd0e166 cxl_start_context +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 0x097a68ea enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2d2a4df2 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3a31e1db enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4c85ef67 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6ccf81bb enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe9a78bcf enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf63aee42 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfac5ab27 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x048bf572 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x14c5a8f4 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x63ab8479 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x94ff1f93 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9834cd3e lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc800fb5f lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcd6c3d51 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe3ca6c8d lis3lv02d_remove_fs +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 0x025cf84e sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x07261b76 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0a3c8636 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1a2a6c99 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2060c6f5 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x21091cbe sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3a92ae57 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x68b892ab sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x84d22b1b sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8b5036f6 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8c8093a3 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa331a3ed sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa9a752c0 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe832fbed sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1a6820fa sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3b2e422b sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4c54f753 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x74543d4a sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9128516b sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x95eacf6b sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa7cdc87d sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc2e8d012 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc57e5a18 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x6dd070b3 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x90ce5525 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xafe770cd cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x2fd11fc1 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x51835411 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xdc28d047 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x1e9da156 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0c503670 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xaf177fc8 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe5d65034 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03e625a9 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0809edb2 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0dba6dfb mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1816c7ac mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a9d31e2 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2791e5fd mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x296cf8d4 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2af0e7d2 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2eb101b0 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x30265753 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x322b42ad mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x355e331b mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x371066bc __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x463c169f mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x519727f6 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x678f3944 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6c2b8e48 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x705761ec mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x709463d5 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x74720d09 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x76005691 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7b0013da mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7cd23b7a mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x80600e98 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83a94923 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x88153ac9 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x882816d4 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8c9d85eb get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x96b1a803 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x98be3137 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9b1a57ef mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa5d8a45a mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb01de070 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb5e10cc9 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9b86534 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc014c2f5 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd242b45b mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd7f3cce0 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdb148acc deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdfc99428 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe8ecb642 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xed3b8479 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x11dc1245 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2df5e847 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x85746234 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xddd535c6 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf2270462 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x73311841 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xbd13f72e nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xc4481cd0 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x0347e00a onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xd7f3f87c onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x65d1ffd4 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x05ff218f ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x12d31a13 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1d6782c1 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2751c1aa ubi_close_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 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x607856d6 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x618ed787 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x69ae0d0e ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6b3cb4a2 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x853cb360 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8df28437 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb651a325 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe0eafaa3 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe7779b7a ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe9b864f4 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 0x0b5160bb c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1512987d unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2391766f c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x48896566 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe8626c42 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf3f2b051 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x34982cad devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3c890b29 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3cfe806e alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x41e43aba safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4f61e07d alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x795c880e open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8291b6e4 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8b3b9ac3 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xac077518 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbb2d7fcb can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcb726f68 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcf5ff619 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd2dcfaac can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd37d8f39 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe77c90e8 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf4723274 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf8603d1c unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfecf51b8 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x76db04a7 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7843d9b3 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9a17bf07 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xf2d597ff free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x25915207 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5e57c378 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x889bb4dc unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x93ff2570 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x80000953 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xf71c9dc4 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04aeb89e mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04b5b658 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08b07765 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d73036a mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1715cab6 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1856a5ca mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x195a3745 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x199a9fc2 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1bc5c5aa mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1bc96115 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c9c8145 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1db6e29c mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23920b1b mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23ad5b57 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x246d957a mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24f0ee16 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25b6fd7f mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e2cc8de mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e318b93 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x334d51f9 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3409d657 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x340c0805 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a4bedb2 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a8a912f mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cfabf5a mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cfeb53c mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3dbbf69e mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x405189f8 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43452bf8 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43e95482 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4451adc2 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4715c7c0 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b08a43b mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e4345c2 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fd1fe8b mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50139379 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54095add mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54a52f76 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57378fff mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5830cff1 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x594d355e mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a6d2efe mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5db9a4ff mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5de29b94 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60c80b91 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x621dfd8b mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62fdfd70 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x635f200e mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65374f16 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66f45ac5 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cac4f09 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f71d72e mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f9d2eb6 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fab8890 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70f0c81f mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71049435 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x744835e1 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74a4a6c2 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74ec983d mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7913ce7a mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a0a9e1d mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a37f565 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d81cd8a mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e4a9987 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f0c2ddc mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f8c4db4 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f8cd90f mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fe34bd1 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8150a5ef mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81ce7c2d __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89d84f49 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x906befef mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90988b25 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91ac42f7 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92265bce mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92678390 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94adeb86 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97d48ab3 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98c73585 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9922c319 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9972a3ca mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a3975b6 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bb174c2 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f1bb97d mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f69d8b1 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2194209 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa299382f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa763706 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaac37f00 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaccc3fa0 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad7f6c7f mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae17b89b __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaef638a4 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb12f7246 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1b8c9ad mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6dbe5b1 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb723428b __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7795369 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe564dbe mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf91eabb mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2340d3c mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc48a33cf mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc050bf3 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xceabece2 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfc67a24 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0b133a2 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6bccbb7 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7108803 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd741d7c4 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdea64fc3 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf3264e1 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf59ab66 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0cd9916 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8f9754b mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf12c84ec mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2dd378d mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5ad36f5 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf68e8561 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf826f6f9 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa877598 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa9f2113 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff22f49b mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffbe0127 mlx4_port_map_set +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 0x0a1263ba mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x120ae941 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x18a23230 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c319f63 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x291eeac6 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29dbd9c9 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ec589ac mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x361883ae mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3eab1421 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3eeb4e93 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x423879da mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x442042fd mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4452ed16 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5edccf77 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62a03b37 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6423bf01 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72f6551b mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e6cd0da mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92224e60 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93295591 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96f6ada0 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e684791 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa08e105a mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb842151a mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba3a4b19 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2afc157 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3913659 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3d9f241 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca069fc2 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd51940ad mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd64aa31a mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4552886 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf62afc64 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8811b5a mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf9877322 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x1339beb4 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x436f0542 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xa09f1c6e stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd53aabe4 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x72b5dc48 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x820db757 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xea27c569 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3149f4e7 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x34ff5511 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x40685bd1 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x569748ff cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6a3cafff cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6ba8216a cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6c7b4f6b cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6ff0fd6f cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7fb36b35 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8a976c98 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8b0d3490 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8c2716d2 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb1132b07 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc7eb31a7 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xde8826a1 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x34c8efa9 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6cb3cf03 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x96e9f3c1 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xcc6829a9 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xd0e7bf8a macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x141aa584 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0c6689de usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x17daa5b6 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x194b4f5c usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xfb1bc9e7 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2dcfad49 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3683a253 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4ba309b7 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6b7cc029 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x71e4d129 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x76618b00 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb4f83163 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd107572a cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdb2f3548 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x53c9ebff rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x797fab42 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa2072bc3 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbfe5b6b0 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc39cbc1e generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xebc4a398 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x05ef3ba1 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x07713e25 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x10afab9f usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1bcd569c usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x220c5f72 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a6770f8 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3d9d7cd1 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x40333d1e usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x41a46099 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x41f4c1c9 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4a9bbed7 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4aff9ddb usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x540a580c usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x59027a33 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x591c87c1 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x59db9361 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5c8b7fa0 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6c72fdb1 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x710da61c usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x71902e29 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7ac411f2 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c0c55ed usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89789508 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ceebe53 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8d4cd40c usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9d5dbe78 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9d702cad usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9f5ef490 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa49e74c3 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe0e3015d usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe1b7dc6a usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf0f0e3d3 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x2c106000 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x891d9db0 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xa77bc726 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xcf559967 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1676b1a9 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1e7d3aa5 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2358c59e i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4f299e10 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5816dde6 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5b864f7c i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6d494456 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6e19010c i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7418dd47 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x77f39038 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x90447056 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd22c50d4 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd965e050 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdcce29ab i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdfb7adfb i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe516171a i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x4b10c21d cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x76251ea2 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7aa07401 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x852b1e6f cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x5d64795d libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x654f9c24 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xa9906b8e il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc3dc1031 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc8928d1e il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xd1add647 _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 0x147866a1 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1d58764b iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x32c86cc8 iwl_set_bits_mask_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 0x4a2429bb iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4c11cf3b iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5303c863 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x58765fcd iwl_clear_bits_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 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8e747bd4 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x93a49673 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c426e60 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa7d53ef2 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa89f9d51 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb160b47e iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb420db84 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbcefc843 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbfbbe669 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc40b80f2 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd2fb5997 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf2f69217 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf33ff12d iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfebb33a0 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfed999f7 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x05b07995 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x073843a2 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1be5665e __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2f06cf75 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3586d5a9 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3f7b56e3 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4db26934 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x50f9d1b2 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7e06601b lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9d98ca51 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xaf6bacc0 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb09f5387 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb42e3850 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb812d5e1 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xde375027 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdfa93991 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x001f15db lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x33231ff1 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x370af7b8 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x49069567 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x60742365 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6631e301 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x67df3669 __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 0xef6bca01 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x09710c29 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x18d99b42 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x29b5d550 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x334c5107 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6f876f9c mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x70f0dbf8 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7fe0fc62 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8e30edc9 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x929179e6 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb97f2264 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc4a04c40 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc5ae38cc mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdb74e0e5 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe379176a mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe56ee632 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xed912445 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf0be8a2f mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x12a533af p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x20cd6cf7 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x55a0bec3 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5b670233 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7f3476b8 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x83eb5e36 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9020c0dd p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9389aa70 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xadfd0856 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0d6830cf rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x3cc6a911 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x58bac59e rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x9d19e25b rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x04e023be rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x088530b0 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x094040ad rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x15e50f43 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16192311 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x170e7b51 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1d5ac412 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x25f8eab9 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f1544f5 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f18191e rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f5971e1 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x340701b9 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5da497a6 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x601412b1 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63a3d00d rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63dce934 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x690cd5eb rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x714a8577 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x86e635a6 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8e423c54 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8f155b42 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9be0f9b1 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9d7593e4 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb8327055 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc1c351a4 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc2c5894d rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc6609142 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcaaec50d rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd2ffba46 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd7fc4eee rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb6a7f8d rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe07b113e rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe4aaf8b1 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeba9d920 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf8102caa rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf849c5a2 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfe19cb4c rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xffb8e082 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x02ce1e02 rt2800mmio_queue_init +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 0x51c7557f rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x525481c3 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5a704651 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6a564c59 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x704653f3 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8ef250b1 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xace1961a rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xce9271e1 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe77638ae rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf2540c8f rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf548b554 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfe05009f rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b919330 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17b5141d rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x206a197e rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2276e4f9 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x242138f2 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x299b33ea rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2bd79674 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c167cff rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3572c653 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36155ebd rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3669341e rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3840c173 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x396ebce8 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d30b730 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e90ec09 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4140a37e rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e61a438 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x527b33bb rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5860af07 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5af0b9db rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5e170974 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5ed3e073 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x63db53c6 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6c191cc7 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79090725 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x835937a3 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x87bfdbdc rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8e5d3930 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x986e71f3 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa2676cf9 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa543fbd3 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xac1452f7 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad2e9507 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xba42fa5a rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xba9e2fd2 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbc126b42 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbc63b722 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc85e8573 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfc8bdd4 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd333df7c rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe149d268 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe34124b1 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe5af2898 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf1eb9ee3 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa18900a rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfc596b4e rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x078f7211 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5a228918 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x9a724481 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe193d300 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe99e1e1b rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa7e2b2bc rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb932e8dd rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xbbc2b38d rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd099adc3 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1deb5d3a rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2ea26a10 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3117c564 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3967712f rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x48fb3223 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5c4d9e3c rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5d11eef4 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x60bf0f50 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x879a9678 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8af66823 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8d56c3ef rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9119aa4f rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x97f1f0f7 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb2097d88 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb4ee242c rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe9a9195b rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6eb7fa1a dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x81363b62 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89071e12 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe18910af dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x05bbcf86 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x07aa9c12 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0ca10eb1 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1e491df3 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x227b0e8c rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x233eecdf rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2c19d7de rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x439f6452 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4f04ca14 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6d0ee02f rtl8723_phy_pi_mode_switch +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 0x822558d2 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x85dcc39e rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8b919b56 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9bc2a875 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9d43a566 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa54908b0 rtl8723_download_fw +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 0xb1d8fa54 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb38235d8 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xca96d963 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd4b0a7dc rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd6abfd28 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd9f8721e rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe482eaf1 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xee885500 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf587bc92 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf686b169 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfb2ccc1b rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x059fc7ed rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0c2c98a6 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x185bd79a rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1c3ec2a5 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 0x2a371ffe rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2b039a3a rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2fb658e2 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3673e574 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4f6a0017 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x5a058a0a rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x86db08a9 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x92412052 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9811cb5b read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9f5eed99 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc0d957d4 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd152f862 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xec73ee0a rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x09feb51d wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x89fb661f wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa1346edf wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0fd33da6 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x26d5b829 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x293a7785 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3111b1b7 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x39d0623b wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x39f28f8e wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3cf27eb5 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ed17209 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3f5135a0 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x41aa2a52 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4a7d220f wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4c77b0f8 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4e8a963e wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x592848f3 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e86580b wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6853609c wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c1562f8 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6d459d2c wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x70c28171 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x73761b35 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x73bda679 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x74ecbbd3 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b7c6aa4 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7bbea271 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7cf65970 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x82ea04c5 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8d33d255 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9174dab9 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9dbdfb1b wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa44f6c92 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb05dd07f wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb1a2fcac wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbaf3d868 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbe8043dc wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6ff2eaa wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0438748 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd733bf45 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe537e0f0 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe6f936b5 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xed35c6cb wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf07df9b9 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf406c48a wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfe724cbd wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x212d7212 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x6b39907f nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xa87d9998 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xd6700699 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0ddb0666 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0f3809d0 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x23003a1e st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3c61af52 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x569312bc st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5c090684 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9122ae9b st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9cd5efef st_nci_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x153a39fe 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 0xa03574da 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 0xe594743c 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 0x11fa4b72 rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x390b3fee rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x6abc2d68 rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x0a2e239f pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x6f2f1e43 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xf6fbdf2a pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x18313df4 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x57cce18f mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x82ba96a7 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb92eeed9 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd091cc1d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0f8bcec9 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x140e1611 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2b94f377 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3910768e wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x72d2005d wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xabc2cc41 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x252d63cb wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07bb66bf cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d7ec3d1 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x16d20f56 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x17c492c7 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1930e353 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a772e25 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3bb59283 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x564cfa9d cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x568610d8 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x594ca852 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5c01897c cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cc84e69 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6ede748b cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x72d5280a cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x74837133 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x753727a9 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x75869110 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x805fbb42 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8613d528 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x95581cc3 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9603d387 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x966863f6 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9903480f cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9a3835b0 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ab74807 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b3690ed cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9fe21dc1 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7603c66 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa9f5d7de cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaa5f239d cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaad1f4c1 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xab0f17ea cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae03fa08 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb9b75052 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbaa752b6 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe02361a cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe3914f8 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc353a874 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd24fec51 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7ca05e4 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd8cecfdb cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xda9fef14 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe5587194 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xee2ef8d4 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf96a5ea9 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xffada6b3 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x048ee539 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x239a2637 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4cf80842 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 0xb70f1079 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xbe5a6553 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe5330da1 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xfd0505af scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1e1824cb fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x36d9ca05 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x50ad88c7 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x61d838b7 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6bdaf697 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6e548962 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x93e7b9bc fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9a61c730 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa7c33de8 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaea082d2 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xccbc8898 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd03ba7c0 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd090bdc3 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd6659782 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe0e71c3f fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe98ebd3b fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1f60df45 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x30f863d6 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x8b77f852 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9243ea97 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x955c4148 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xba4f3571 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0a6d6850 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x178f401f iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x196dbd00 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1dcebab8 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f433e5c iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x28a8d536 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c67e878 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f3cebd7 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2fab0efc iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x32f63b06 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x40015f4d iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f49826b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5986782f iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f5be3eb __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x64a2052f iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x79c1b2d9 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7b6c9c66 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x92635640 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x931b0225 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x96a2e91d iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa29add23 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa745f212 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaac99b4c iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xae09abcc iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaf65b804 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbbf60106 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd9d9306 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbeed60ad iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0c4974d iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc8758d07 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcbc83422 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd13d7d46 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd935962b iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3afb887 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe47495d5 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb1ab4be iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf144f311 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1fc4b57 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf781cdaf iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf84da810 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa2480a0 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe274af1 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0d9d1649 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x15292bb5 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2462c646 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x25dda706 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x49b2a900 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4d537757 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5f7812d3 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x65a1361d iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7dd5006c iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa3f5e349 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaf591d7e iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb6461939 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbfe26bfa iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcb1ea0ff iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe3995f27 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe90d7838 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfd16086f iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x01e2d8c9 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0e127ddf sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x136cfdf5 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x151b071d sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2420ed06 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2654bddd sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x26ff1dbf sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x28433cb2 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2cf2ee0b sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x316d0e21 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3fcf1920 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x526e4f1d sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52cfe299 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x59b9fb40 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x67e2a3b6 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x89b1c999 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8c8e054e sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa531e764 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb728e6a7 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc82d46ac sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf992bca sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe054910c sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf51e6cdb sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf9bc105b sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x050e5578 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c489acc iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ebfeabc iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13418422 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1d81060f iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ea374ad iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3631475d iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4d69e452 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4ea085a6 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x51817061 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x556b4d46 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59f43bb0 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x61241540 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x664efaf0 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x69756d0d iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c0a6487 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6cea426d iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d4a1750 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x788fc1fb iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79cde9ef iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x85dda197 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x86a29c4f iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x87ec1cbf iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x97e5d774 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9a91e450 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9d10c30b iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb0b404c7 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb192e033 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbbb55b7 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc1e0ebaa iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc208ffd5 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc2232d2a iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd0142339 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xed25cee3 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf10c5cd2 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf13fbf63 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf8ed13b7 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf9d518a1 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfdfdb816 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfe1089b8 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x206b5864 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2078a069 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xcc254b6e sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe4c2b54e 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 0x5768763d 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 0x145c8abe ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x3ffebd24 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa3bf907d ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd1837126 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2a42576d spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x492e8fdd spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa3495667 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb54002f7 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcad619a7 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x3a0226a8 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6fb053c9 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x70e0c396 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf264983f dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x09554958 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1159f22c spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1b6c8cbe spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x264264c2 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2ab3cbbe spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x365c656c spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4df953b1 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x605a93a6 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x68721971 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x69b0caab spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x83fe6095 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x914bf5a9 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9874da17 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9d2bb2d2 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa100d343 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa2ff00c9 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa31d0d66 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd02f4d07 spmi_device_add +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xf532d9cf ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x102fc711 comedi_dio_insn_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 0x31714624 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x330efbe2 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x349739d2 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x355c8993 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3f86a7cf comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47324d3c comedi_alloc_subdev_readback +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 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5784b6b6 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5bc5eccb comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5c4bb6fa comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x616a9b76 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x64f89043 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6922edb8 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x69bfbe7c comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6adfd422 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x72d26066 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x73939878 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x76980f1e comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7a430b4e comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7b327e5c comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x97ddc712 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa4ea7c7a comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa5aa2bfa 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 0xc9cebc63 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xce4620d8 comedi_legacy_detach +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 0xd3db511c comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb502e08 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe39eb3fc comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeb5d6ffe comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xebd40376 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xee5003ae comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x022e80fa comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x79aed866 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8eb05454 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xaf973729 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb98fbf0a comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd0380577 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd5c0c04c comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xf20fa326 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x233c7ac0 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x397555d2 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x43f92de8 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x79a84e16 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x859e904a comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa7298197 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x75bdaa4e 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 0x3a165593 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x6c36a2c3 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x7b2a27d2 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x16b5f17b comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1ab668ca comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x28081205 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4f2ba8fd comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x52c6114e comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7d5423b9 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x833a3915 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa1ed69e1 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xba8f16af comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbc846f03 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe1d5336b comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xeb086faa comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf236b2fd comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x12d8bf09 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x1eae0577 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x58a52534 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 0xf8cc8c89 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x829c789a das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x060a04f4 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1412638c mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x29da41b1 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2d21923d mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x325daf3c mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3289128c mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x42130691 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5557c2aa mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x570f191c mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5b746fa5 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6fdda84d mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8ffb1763 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x97c5240c mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9b9457c5 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa0190920 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb6c8e6d2 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd0bbaa99 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe46494bd mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xea9b1db5 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf045fca4 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf7d50dc1 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x16a57b3a labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x73b01f1f labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x6f76082e labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x716708bf labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xda842085 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xedc333f3 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xf8b83f2a labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1c61fd06 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2d55280d ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x53295fde ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5dbdaf4f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x63916bd3 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8891fd03 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa6e3393e ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcc1168bd ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x045cd0b2 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x075d4b3c ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0fdda4f4 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x54f84a84 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe405f3c6 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf09b1e3f ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0763cb09 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4d5af679 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x66c1e181 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6905fce6 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7882bf9e comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8afb6474 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa9a94826 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xee0193a0 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x26b8e5c1 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x42a50024 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c5304a1 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x581df74a lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xe77d70dd lustre_kobj +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 0x1b463c8d spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x35d71fa3 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x40fa7f56 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 0x485cceae spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4e28cb46 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x80dbffd5 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x89f51f9c spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x918841f4 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa58245ee 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 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 0xf1a5bfc3 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x440bb52a __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x57809dbb uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf4cf67f1 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x040bfbaa usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x49307ca0 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x1f9fb19b ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x6cdb142a ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x7912d094 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xd4893067 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xfa9e5572 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x0b2e0c3d ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x357dd0be ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x773d0868 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x93762010 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xaac1ef36 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb5695621 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0b55b254 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0e52ac37 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1c137f41 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1f51a6e2 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2dee765e gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2f777f8f gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3d1512fb gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4611923c gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x504b3594 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6115ebaa gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7ab3b5f9 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7cb6d3fa gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa8eb9500 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd9121ac4 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf91eedb6 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 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xa6b4af7d gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xbf87ea24 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 0x43c2552b ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xac8a3464 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xb8dc1db6 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x007ecee8 fsg_lun_open +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 0x0bc82b89 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 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 0x25bf30c6 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x26993d9f fsg_show_removable +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 0x68cf75da 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 0x6ffcdfa3 fsg_lun_fsync_sub +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 0x852a379d fsg_common_remove_lun +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 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 0xad915794 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb4dd5aff fsg_lun_close +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 0xb82ac99f 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 0xd42bfb64 fsg_store_removable +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 0xdce2e5a3 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe11b7461 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe268452a fsg_store_nofua +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 0xffda8c2f fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1a1b9825 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x296b7d89 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2e30b154 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x42cba4e3 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4c7dbb26 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6bece07e rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x90fcde06 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9c5a3fec rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9d945451 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xab660897 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbe81ccdb rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc3389f00 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc88bbd87 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdee6f2c7 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdef57ecd rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0117991f config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0bc7ea1d usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x112f4e00 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x183ac9c3 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a9d59b7 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d318c8b usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2385d5cd usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x24dacd60 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4137d852 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x461bcd91 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x49302171 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4d9e3727 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x57617f55 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x576f7b80 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5e578b5a usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6510812c usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x75b28bc0 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8693b929 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x921947b8 usb_ep_autoconfig_reset +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 0xa23cb17a usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xac083b92 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb15ca4f9 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcc5221bd usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd13c298b usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe922c6b6 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeecf343e usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf6e7c203 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf9833c65 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1b3bef39 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1ffea06b usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x27979713 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5934944e usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5eeeddd8 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6e8a9617 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x788f74e6 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdb31b935 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xef27fc28 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf9d4c389 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfda488e2 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x209adbef ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xbe76e89c ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x36203408 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x66ace1e4 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x698949b0 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x78b8fef8 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd29bd591 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd342af72 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe30955ed usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf797fe18 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf8122dfd usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x3c1bcf44 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 0x7e9e12e8 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x1c2f0c0d usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0209c58f usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0971dd13 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x24068b56 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x249625a5 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3d5cc339 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x41da5ebb usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6044b932 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x70000e05 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x719422e8 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x88513d88 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8917327b usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x904bd24c usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9127e056 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x93a3e85a usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9b8f3a5c usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9df6f929 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb1ca7e68 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcc7f33b5 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xce5c6b4b usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd44eb7cf usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfd1f05cf usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0333dc8b usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x06ffe5f3 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x13cd7071 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x24343557 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2e4c0082 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x687278e9 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6f44954e usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x71a85240 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x85d37ab3 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8a9aa137 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x90375322 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x97b11500 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x980c9cbe usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa8cba167 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc76d2be1 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xce7a4e43 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd447c4f6 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdc40101a usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed2c7e6d usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xef29f539 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf7eb11a2 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf9b061d9 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf9e5aead usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfa49c99e usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1a684c2e usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1a82d614 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2eddbd23 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x30f5221f usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6796e09f usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x745c428d usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x93b77f2e usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9cb55ada usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9df3cef1 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xaae2b7fe dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcdb2a58b usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe3bd30fb usbip_alloc_iso_desc_pdu +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 0x33ada628 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x61e3b81b rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x78ba0f61 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7e6ac3a2 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb028d97e wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb2812fbb rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd9e0749b wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x048d52bd wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x05b8a37b wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0b55e28e wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1db60557 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x334bad0b wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3e1b192d wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x69590914 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x74ec7a21 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8806748e wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x98e35e28 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa75c22d6 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd00b9ebf wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd135fd02 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd2eb7afa 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 0x29f7e937 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x7a91b486 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xc35b0de7 i1480_rceb_check +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 0x449a1d5f umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x47745052 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x738642e1 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8838ab3b umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf266eeca umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf3b12761 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x01ab809e uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0edcb8a2 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0efe0eee uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x137e026d uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x190110e3 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1bbc19f5 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1dc2f20c uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x350771dc uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3ccb50b0 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3eaae82b uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x481c5ef2 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4f307391 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x52ad65a7 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d0b35bc uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x745ff1cc uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x80fdc4e9 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x819857d6 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x837e8b34 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x991983fa uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9c22f0d6 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa720cbac uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa7a98852 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb742bd25 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc3f0e527 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc52a688d uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcdc4130f uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd25fb065 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdad8c69b uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdc5159c4 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1acba91 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe5a594ce uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe5fb6825 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xee08dfbb uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf560a288 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf860cae2 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf981c83c uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf99d4262 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x80d4e28c whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2590b416 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2e606ed5 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x52fc14b1 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6a588e2e vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa2c4a15d vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xb8f4aad5 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_spapr_eeh 0x910abdb8 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_spapr_eeh 0xe2b58491 vfio_spapr_pci_eeh_release +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x45c8b59e vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xf3ea599a vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x03a80bc9 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0a2cb212 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0afcac67 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0cd094c3 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x18c82ee0 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x198e6b10 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x260cb724 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3c8bf3d1 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x40ae63ca vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4157b69f vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x45e575bc vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x73d21101 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7d6f004d vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x959c0a90 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x99899637 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9dcb2536 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa80b0178 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb3e9f9d3 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xba16572b vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbacd2df4 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcee05ad8 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcf728a30 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd053c651 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe0a458e8 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe1bdbd2d vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe2fee0fd vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe6c7458e vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe78517b4 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8dec488 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x04796e1f ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x091cfffe ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x248ca0a8 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6e178522 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9b8a795c ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbb40ad86 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc73554f1 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0e920094 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x25bf360c auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x392c9fe6 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3c267a93 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x49526239 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5610de4e auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x78c2d4f3 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd900317c auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xdbb2f811 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xea94276f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xb8ad61a5 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xa61bfeee fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xdf412106 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x2638c433 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xb2248d0f sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0a0a7352 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1bce4f66 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5ea43773 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6d2b494e w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7a49da26 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x84d02101 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xda43a307 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdfd9d831 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf93cb765 w1_reset_resume_command +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x1be8ea44 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x59386aaa 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 0xd9c9fd59 dlm_posix_lock +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 0x1f60cffd nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3cc40f64 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd45ada25 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe5fba222 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf317649d nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf49a737c lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf6edb430 nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x003f4fd7 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01b45924 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0244635c nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05234ca2 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06184eb6 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07ee5c72 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08638a9f nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0893aeed nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x090e1049 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09f528f6 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0adf5051 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0efed823 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x118d88cd nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1209fa5b nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x126ce1dc nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13043840 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d92b749 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x224f6998 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2422a48c nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24f01246 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28310b10 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b83be17 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c44fdf4 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2dcbb2a3 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31ce2593 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3348e5ce nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33a9d75e nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36c87b50 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3955fb02 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ac874af nfs_try_mount +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 0x3f4e80cd nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44269053 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x459e2a2d nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c679ca0 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e4aff6c nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ed3c530 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f3ab5f2 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5044f264 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5097797e nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x516dc8a1 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5558beb0 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5740b1d7 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58579769 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b0aa19d nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d84017b nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e742f1e nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61c555a3 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62fdce3e nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63cb0d50 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64a7f33e nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65d741e1 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65dc3ae2 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f463185 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fad03cc nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71db5024 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x720e6b72 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7affb514 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b252c56 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b67c34e nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7da6010d nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f3dd60b nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80336123 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81e0fc33 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83d9c568 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84f69ea4 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x852bfc22 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x880e6d46 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b74258b nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d219d31 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e84754c alloc_nfs_open_context +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 0x92502be3 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x925942b5 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x932bc787 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94bbec3e nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x986a0cf2 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9952e741 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9bed2e6e nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e236721 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f933667 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0cb345d nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2b220a4 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa54cc3a3 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5b062d7 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7d49896 nfs_unlink +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 0xad5718f5 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0787ec8 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5162680 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6765b01 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb69f6389 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc13bb27 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc13dfc5 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbed4b463 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2345df5 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2e400f0 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3079218 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5d45c73 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5dd9232 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5e37c13 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9a8309a nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcafee1d0 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbda5d79 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcce060ea nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd56b942 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd150e94e nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd58253e7 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcf89e4e nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde590245 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2e627ed nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2f8d5b2 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4107639 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4c12c83 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6019221 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe91132b7 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe964dba4 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9d4e138 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeaeb69fb nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeaff3121 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb23f6e6 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebf38562 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef04e797 nfs_generic_pgio +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 0xfd2ad9de nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe98645d nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfed3256f nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfeded0bd nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x525e3599 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x029c174a nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0304eace pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x09afbccb pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ca12bbc pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1063c2ca pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x12906f05 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30dc7174 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x35325b8a pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3963fd51 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e14ba79 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x401b9d79 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4216e809 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x45179e77 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4708a434 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x50f96bc9 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52e5e942 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54d7a970 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5756e1ee nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ddac45e pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e3580e8 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6371ed6f _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x64b7e8d3 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6f81dd26 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a2fbc3f nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a88c1e8 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ef4bfad pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x80060454 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ee7698 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x843aa160 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8b2eb7d8 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8b38f2e8 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d019544 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8df663e3 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x932b8ae9 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0442477 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa41b5923 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xace2a35b pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0c0d8e2 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb2a2036e nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb375749e nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb76a2622 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc30ff37d nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9aa5ff1 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcbb489fc pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd062625d pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd45ad56e pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6c688b7 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda217701 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbc079a9 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc61c0f2 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd48ad34 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe47552e4 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf233c401 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf3601658 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfafbda58 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb0c9463 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb77f7ec nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x148e56e8 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x54000d6e locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xd124bc73 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xe160354d 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 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 0x4f27c694 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x65ea8d3e o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x674ac2e1 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 0x93008c3c o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x937c0ece o2hb_setup_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 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb4851a2b 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 0xe3a8a7af 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 0x30e45712 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4be6d1e1 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x51d9668f dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6b34a5b5 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd0aef51b 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 0xe0f50fd1 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0b844f5f 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 0x39e34d48 ocfs2_plock +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 0x4fce8bc4 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 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 0x1d3122db 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 0x579ba81d _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 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xbc11e74e _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 0xceb3d52c notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xee09cc39 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 0x113002eb lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x84dcd3ba lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x0b9c6ad9 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8779d0e7 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x9a5d59f3 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xafe0ae19 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xcc4010ba garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xfe3ff15e garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x3b005391 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x6ae981f7 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x7d003e19 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x91691c0e mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x9cf86650 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xd700dcdb mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0x281a3c29 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x996bf7a9 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x3a2d184f p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xe04ae7bc 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 0xfea472e9 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x29e1928a l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x36bd7779 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6df9a8e3 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7bbedb9f l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7d5debcf l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9061e0f0 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc4b588dd l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd1e800db l2cap_chan_put +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x42ef149b br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4bf9d0b1 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x53dac293 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8b6a928e br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8e0884b5 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa03e5518 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd24456ab nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe15cd815 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x0a0252de nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x4e897fb2 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03781554 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0519a48d dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0a6bba85 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0b6b6eee dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x140d9d99 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14bd2784 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x16bd9be1 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x18f083c2 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x231410f8 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x29fb5d13 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x31b864a6 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3fb0f7b4 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x40287462 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x45576aa6 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 0x4f878553 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4fcbcf57 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x50ba8b2d dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x55eea10a dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b1bf72d dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b41194f dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6c14c0c1 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ea4544e compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x772e8739 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x802df5d4 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x846a5d9d compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x910186bf dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x977e563d dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x99fee6d8 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbc44f5ac dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5256155 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xea1d4127 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xea4f701e dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xebcd0a29 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfc150d30 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfeac7799 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0a480347 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x336e59dc dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x863f1433 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x87cd3129 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x997970a7 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xec2bba07 dccp_v4_connect +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x1110775a ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x21a8738d ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xbaeaf6e0 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xf0ca7c64 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x177ef23c geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x57eb7c8e geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xe808def3 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x0bc3918b gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1b791428 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x48da3643 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x52ee9bed gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xaa8a401b gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x05e462ac inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x19cbcc15 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5f4c6f85 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x95e38190 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9d5d2e86 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe5e5e7c4 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x09d45349 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2f63d2fa ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x354f7c28 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3e9e218c ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x561af7af ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x58e8e28f ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6c4ffb5e ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x71125c51 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x755a2697 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8699ad2e ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa2a899f1 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb14da193 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb9df9fa3 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xffa07e12 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xbdd7e76f arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xbb479ec9 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 0x0c877540 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x25373d2b nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x4ed325ec nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x7f199582 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc4faabc4 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 0xb60d0517 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 0x37ad810f nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x94209a4c nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xaea0cc69 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe2804b0c nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe2f01769 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x54934bda nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x02c82595 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x236a4ffb tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x7dfd03e3 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb487e3fb tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xde553d20 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x80fd1f06 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xd9479baf udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xf1226923 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0fcf7967 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x2fc7a1ad ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x3e96122a ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x98cdc8a0 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd1098e35 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xc5de831e udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xcab7a2e6 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xa6fbd653 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 0x6dd995c9 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x83fccc19 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x8d347a01 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xadf2797d nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xcd164f27 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x14bd1641 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 0x638e9f44 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7a73d4ec nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7cc21102 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xb93ca47e nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd6186d85 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xa6feac4c nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x06bd1c9c l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0806a736 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0947a975 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x238ee793 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2a5b05db __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2d79301d l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x399d6919 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x453c80ac l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x481bda86 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa4b5c663 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbdc203ec l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc68d505e l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcfead8e6 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe81bad4a l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf084db65 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf0df0d8c l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x86243570 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x148a6416 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x23d893ed ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2d532cfa wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x35f295df ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x764048e2 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7e4f18e7 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x83aa447f ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x88942c96 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9c070dc1 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9d3fcb12 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa79e45c3 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc1ce51f0 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd553f46e ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe3f9a5d8 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe892c1ab ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xed7f1982 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x11879b3f ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2239c46c ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x30162dee ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x35d62c43 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 0x4b73c698 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x77e8eca1 ip_set_del +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 0x85c1d1c6 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8d7b4cae ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x972cc676 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9d2e273c 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 0x9ec272a7 ip_set_test +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 0xa7cfcc81 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb1cb98e8 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc28292fa ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc8094238 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd2f2e1f8 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0c353727 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x342df33c register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7895e77c ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfb3b0a46 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ced8ed2 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0eb0a29a seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x10172a1c nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1068cadc __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1914bd23 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a048e47 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x205a1eaf nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26179f8c nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2aaa2345 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34a28822 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x38bc20f7 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a8e9179 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b4b7225 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c8be9ac 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 0x450521cb nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x454f2b02 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x49c563e2 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4cfa4104 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e54c62f nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e6e37b3 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f11fdad nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5341f7c1 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a746de9 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5dab0097 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x639a48e6 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6adfdbd4 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ceb92fb nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f1cb3dd nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f8a384e nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70b7ec7c nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70f6c64b nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72ba9398 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74fa20af nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7cd4dea0 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x800e3e4e nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84762eb9 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x850fde8f nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8873bbc8 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b9d4f4e __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8bee20ae nf_ct_expect_find_get +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 0x914e4e6a nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93704690 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x957713b9 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d27f340 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1b5bae3 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa744f537 nf_ct_unlink_expect_report +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 0xae25b509 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2385ccc nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4f4b722 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb53a7848 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6de05e4 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba64e321 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe126e9c nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe259e3d nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe545736 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1a45876 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc29ca5bc nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40b4782 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc72905e8 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8a10889 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf214329 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf8d63c1 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd22d9d93 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd289b1a2 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8dbb80e nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdab7a5cb nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbb1cf5b nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd042bea nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf291b39 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf5327c6 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe555706a nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6d1dd41 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe987add9 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf02e3f46 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfd7b4b7b nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfeadea70 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x9b90339b nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xa5ab1895 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x4115d49a nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0521e16f nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x311cba98 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6aa5ef1f nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x76d1fd3a nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x933d28a4 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x97306748 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xade04c25 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xde0df384 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdfbd1a34 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf53f739a nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xb1e80e46 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x164d553a nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x518d6370 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8fb902a2 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xaaaa9e17 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x60a4feea nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x99cbcefd nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3fc20a6f ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4cea95da ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x69c83cbc ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc230053c ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xce5354a0 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd3ef2893 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe2de729b ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x585cc35f nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x023a6068 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x57a31630 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x7c43ff05 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9ee70a78 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xac4cf7dd nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0dcf091e nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1436e9e0 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1c303e85 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x629dbb57 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x75c7a396 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7b9bb5b7 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8089cbed __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8343c220 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x89587409 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x97818275 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xc4e855ee 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 0x393c73a6 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x3ee9e8f9 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 0x0a3c364e nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x254d4da7 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x42ca3076 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5d6ea38b nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x75e409f5 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8b072cb9 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x92aeec0c nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x98d6ddaa nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa3854036 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaa69ebd7 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc7903422 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcc453408 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf57f814 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd1e56c44 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdc944c24 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde33fb38 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe4ed9496 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0a80f9bb nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x15d35566 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x19792924 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x38d8bea9 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd7ea6b36 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf3de8ba5 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfe72aa7c nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x148f3f6b nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x93320a13 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xd3cef30f nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x7b94ee7d nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x9c482566 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xd97dc0ab nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x4acf497b nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x6cd5cec0 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x80814b38 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xbe0c27a8 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd96d7f86 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xfe6a9ed9 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x23397660 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x9027e7ee nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xd697d742 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x25eaab93 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x7e8029ca 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 0x15a0ce81 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x21fd806e xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2bba03fa xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5a5e277d xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5ebc552e xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x612c0dad xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6baeab7d xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7444b2a1 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x99e3f943 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9abec015 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa1003306 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb5584113 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb67f42b6 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb974819d xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xba5a928b xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcc3a8733 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd0139af9 xt_request_find_target +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 0xedb3c749 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf90c520b xt_proto_fini +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 0x30ceb0a2 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xde289928 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xf762df5e nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x56c7c870 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x78d76871 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xeaa7c6b4 nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x03954f71 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1c020f07 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1d1e9c19 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x330e7fa6 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa7c67ee7 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc661439e ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xe1a28be7 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x040c5da0 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x0550db7f rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x08b5f97e rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x20277b92 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x22cf8934 rds_conn_drop +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 0x33879e5b rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3786f18b rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x47837c31 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x4ad47a0c rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x530a9690 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x57fe1561 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x5ccdf1d8 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x6239404f rds_conn_create_outgoing +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 0x7728eb40 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x7a81740e rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc6a290cb rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xceac7de2 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xd169fcfc rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xda6c0b8d rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xe2ed2f25 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xebaa8dee rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xf3fefc9d rds_connect_complete +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x0ec6f40f rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x9fe5ca08 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 0x4aeb1c78 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x83df95a7 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 0xdd9bb74d svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01ef498e svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0293629d svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0539da6e rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05c603ab rpc_pipe_generic_upcall +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 0x06772aed rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08883f9a svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x088c119e rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ceb7553 auth_domain_put +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 0x11049660 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x118b5c0a svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x147a73d3 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1549e551 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15bd04a0 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16f1dc0e xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x183ddb5b svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19cc83ff rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b07d61d xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d7980ef write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2108a418 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22bd70f8 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22be780e rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x243b221b rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x247525f6 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25c3e7c7 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x263c3b4e svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2abd0b61 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2da9efc6 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dad2951 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e8914d6 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3175f63a rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32c1b9af rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35fdb450 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37a91c69 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38bce728 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x393fcf71 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a4af096 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3abe7ecb rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bbebc94 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cf45d99 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d2a1858 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f65deeb xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4035c559 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42200e4f rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x437fd036 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45112e55 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4557e4f8 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4604fe05 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48934883 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a8c9c1f rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b3b61ae xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b58fcd2 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f28427b xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5091124f svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53f557ef svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5492c307 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a331f0c rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a9910eb svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b6f6f68 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b7adb2e auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c649588 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d38b2c0 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d823b58 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5dea0de1 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f32133b rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f554652 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61775757 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x643ae33a rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x643f5680 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65343b27 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66d47359 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67ec168c svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a3762b1 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a636851 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b627ac6 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cf5e4a1 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d195e6a rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f5bc4e1 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fa90e1b xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72a2212c rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77006b3a xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7738190f xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x778b2c31 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x794acc56 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x797497ca svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ab5db43 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cebb908 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d5dc32e svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e15ad4d svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f2ce4cc svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f85ad48 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7faf4977 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81a7bd5b svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x821aa350 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8331a3a0 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83a3c8a4 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83d093e2 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x840e9f6f rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87adfc11 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8965b943 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d10db9c xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ebcae0a xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fe1080b svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90655ae6 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x910ab943 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9173d627 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92feacd3 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x932d20c2 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93cb6341 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96ba075c sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a0d366e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ab8d92e sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cbc1b11 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d4ae029 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e77022f rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1532236 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa18806ed xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2e8c936 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa617ff67 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa665b3ec rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa666b3b1 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa78493fe cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa837ae6f auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaade5e71 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaae3ea00 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac6241c6 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac8144de xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae12d56b cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafab4dbd rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0470a6b xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1852add xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb43613b7 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb56dc3fe gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd151172 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe1fe241 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbea2a658 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbef49754 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf033d85 rpc_create_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 0xc2a0da6a rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc75d1776 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8799d2e xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb2bc00b rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb41079b xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb70e391 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcde7ef1a xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce79efbd rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0054177 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd26f5a3e rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2876e35 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd324507e rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd57c6e53 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6e6bf80 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8ead8f5 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaaa0f96 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaeca8b9 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb9459aa xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddcb791a svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde0b2746 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde0c349a rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf6dfb4c rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe16edbe7 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1a0143f xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe29f74cb rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3231124 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe45e1ae0 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6afacc8 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe884b7c7 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe905f314 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb9fcfbf xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee6d562b xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeb39ff1 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef2d77bf __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef99818f svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf441364b svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf52b539c sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf55fb3e7 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6cb840c xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf842dea1 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf89bf625 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf99738d8 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa81d200 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb468e49 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb7991d7 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfca4a7ed rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd566773 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfde77a98 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfefcf650 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff7a4bd9 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x019aafc9 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0b189ae8 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x10ca5286 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x139ec7ee __vsock_create +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 0x35ac3dd1 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4c6fc06d vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x61208470 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x78de09ab vsock_remove_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 0x9d2206f4 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xaf3e73e4 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc285db1a vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcc5afdd6 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcd16951d vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/wimax/wimax 0x286c60e5 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x29983aa0 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2b186cfc wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2be31c7f wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x41c6ff89 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x68343fef wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x69ebbd11 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x797a9bee wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7c50d713 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9ba174a5 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xaba16391 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xefd564e5 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf5e58fd8 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x07513dde cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0beeee34 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2894f1c7 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4578246b cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x64debf56 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x66755d8d cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x67026334 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x69d33785 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9791f98e cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd1a91b39 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd9190660 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdf97d14c cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xec164bbc 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 0x3b9dd9b0 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6f97630f ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9160a86e ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf2175afe ipcomp_output +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x14206245 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xcfdbc04e __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x231e6a0f snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x6f9afa0a snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x9b380c1d snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xb4360d20 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xd4192321 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xf232accf snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xff1bfa45 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x07ddeabf snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x4ebb59e6 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x8708f6db snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x013b837d _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x053d7909 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x2c976112 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x61318a0c snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x61d8a20b snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x748c01c6 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8d9213f6 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 0xd9684730 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe4b1af0f snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x06b03fd2 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2812be3c snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3d14082b snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4045a290 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4b6e1f70 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x573e9beb snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x687393f3 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9f76ab3e snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbaeaf657 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf12cdb3e snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf47df9fd snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0105ec2e snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0705d123 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b0587e5 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1103bbde snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x110f7cbc snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1784990c snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1ee3c92a snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f40d422 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e105ff5 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e15367f snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x321d8e22 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x329b14d5 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40a9b6b2 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40e3746a snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x415d2722 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x469b89bf snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b2a5df1 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x506de571 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x523ac04d snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x531b78d8 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x546c6cdf snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5722f05e snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x574a17de snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x580a89d3 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ba47b74 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x652ecdcb snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x689123e7 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x68ca2927 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6b2442b1 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6c572493 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6f908d44 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x728150f1 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8147a3b2 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x83d270ca snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8d1e27c2 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x924eb725 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x943af365 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9580edba snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x95abd6c8 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x967dbe7c snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x986225f1 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x995bd2d7 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 0x9d475c35 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f961843 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa78479bf snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xac7b26d8 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaec6c7b8 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb2cacae9 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb46335f7 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb4f88cab snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb6f22db8 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbcad5828 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbde0ba58 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 0xd03f34aa snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd903e5eb snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdbbe8067 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3f2fdd0 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe623c8ca snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xebfe2b48 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf94032a3 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf9fdbf6c snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfb388415 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfbaba96c snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfbbef4e0 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x29686aa4 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9283b0c4 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xae54d3b9 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xbcc0310b snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc99d3498 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xdd3d94e6 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x026d3634 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x047be17a snd_hda_apply_verbs +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 0x07c121c8 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x093bf250 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ae195fa snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0da94954 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e94ff6f snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1032dda3 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10c2dec5 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13c1c9ac snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14ddc935 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18474b34 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19efde43 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c1d2579 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c71ac50 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22034d01 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x232e73f7 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23356039 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x264ca083 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2759b2f5 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bcdd657 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c11306c snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e2de28c snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ef33b9f snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x300478f0 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3143d8eb snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31715b1e snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x344bbcab snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3534f157 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x364eee03 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37e6ed0d azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38dc41e1 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b7fe31e snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f0c8d58 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42f08dcc __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4311d998 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x454814e9 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49883d2c snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a74e3f8 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f2989fc snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59a23052 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b28105a snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bb21c43 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c715cd7 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e81e14c snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x617cd8ad snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x622293d6 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x634213b5 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x653a82bd snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65ae1856 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d24de9b snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f940525 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bd525c2 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7be7a5c0 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d5c962a snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ecdb497 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81aed9de snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x837952c9 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x862e2963 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86b15679 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86c9c063 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x889c9c9e snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88fce61e snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8942f854 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8cea62c7 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f3563fa snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x900217da hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x926e35d5 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92f355e6 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93b743cc snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94e0a590 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9aece7e7 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ea7ad7f 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 0xa71f97b1 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9df911f snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa15d9d1 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaacc8e02 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf6137b9 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf9c73a7 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3387a7a snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3715446 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8a15bda snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba3d95a0 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbb43870 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbc8c362 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbe4c49c snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe8f0e4a snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf60ffa4 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc02697ed azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc057f16e snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc15fa0f7 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1761593 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc27ba83a snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc30696df snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5038e75 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6ecd45c snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc732067e snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca1b415f snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd17520b3 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd24768fe snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2e37e61 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4b6b011 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7275b24 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8a4795e snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8b18b67 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb11940f snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb4d7252 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc1247af azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddc2998b snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe07ab0e1 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe25e4acc snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe33e7fb5 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe33ece7c snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe43b84bb snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5b00ec3 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe66ba2fc snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed535768 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf07b7add snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf43b9ad5 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf73e18c9 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf766c708 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9c9f00c azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcc62223 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe7fcada snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfee05340 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x001b7e65 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x07b680a3 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0cb4b223 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1479abab snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2e621efd snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x424c0712 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x44d8b0b5 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x75108acc 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 0x8bfe6421 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8e2bb374 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x92c94949 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x94c6da9e snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa7f2b231 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbfbc6d08 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc1e3a7b1 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc5b4892b snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcf5ec5a4 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd14cf2bd snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xec4ff67b snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf2f7ee02 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfef13f8b snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xa8cc320d cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xd1667452 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 0x8ca3b8cd cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xfabf8a75 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 0xb83fb490 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xb9a83bf1 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xd642ff03 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x01153540 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x243652a0 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4445883a pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x664e9b87 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x83582558 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xecdcc3be pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x0c601186 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x21f9785d devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x62ac88ab sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x7cd45407 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xcba6acd3 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x14bcea21 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x439806d9 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xd19865d8 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x230842c2 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xc28e6fe1 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x07641b7f ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x280abf5e wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x32d481f6 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x70b41167 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xd9c2f6f2 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x1ba1bc44 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xd65b3305 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x1b4cadb9 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xd12f3060 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 0x0489d763 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0725bf01 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0773ea60 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x082ebb0f snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08c831ef snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bffdc85 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d61ab1e snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x158dfa1f snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16c4e606 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a2ffa68 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b12cdc9 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ccb3ec4 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ce9d82c snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e7d7bfc snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22e70a14 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24a95a58 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24e5aca0 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x267deeb2 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x276700a8 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a2355d6 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a538e0b snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f85d5a4 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x302a1f00 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3253467a snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x375e60aa snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37ada40b snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38642ce0 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b02bec7 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d31d496 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e0009f0 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3fbc7552 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40160ed3 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40814911 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x427889fb snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43a666a6 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x441a5030 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x467071ba snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4863656c snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4869691b snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ab5b1f5 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4be9ae49 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c1e0e08 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d100a42 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e4c0c4b snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f602b65 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51282401 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53d6aa3e snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58c6f6ac snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59dd45a5 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d2bf60b dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f5c6920 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6085c139 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60ea1e5a snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x616bd494 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x619502fb snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61cace8c snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61f3d5bb snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x626c7c83 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63f7cdfc snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6627a515 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bc621e7 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c20de8a snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c445618 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cb3fd30 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e0e4058 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71657e46 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76d88752 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e94728e snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ec49f32 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80c3dacf snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8271c370 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82d93899 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x898d0122 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8cac8ba9 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8cb5e6b0 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d7af892 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e5f8d7a snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e6832bd snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ed1c7f8 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f54988c snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91558a37 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91ff60eb snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9756a7e0 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99e63f66 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a21857f dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c9d3ab7 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f2c863e snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6dfd9c2 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa79126d2 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8ce1832 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa95b4be7 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa98984ae snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9b94056 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae625059 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaef682b9 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0a16100 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb120e2be snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1d661ea devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb42e45ea snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb847ff3d snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb85e84e3 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb99ca26b snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba053c80 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc3a646c snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd4bc878 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd526410 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe54282b snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc018ce46 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1852d14 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc31c6643 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4810c2d snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6a333a9 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca8af5fe snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb6d84b8 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbb6f39f snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccc87cae snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcff1b50c snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd087ee50 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2215bad snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd27219e8 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd58699e0 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd58dfc14 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd903758f snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb04ce1d snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdec9e48e snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf555c10 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfe0023c snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0940fe1 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe43caf2f snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe44d6d29 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe726d158 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7311a18 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe81cad41 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9be2d89 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeab8f8dc snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xecdb096a snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed7b4e01 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed80ecb3 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1873e82 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf47ea4bf snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf501d000 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9e60e1e snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb8b6dfd snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdbcb671 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe282df6 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff50dbb9 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x15290acd 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 0x2315c7e0 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x296ca733 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3d65af3f line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x50b56c21 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6f7698eb line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7c13fed5 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ab09f8e line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x91cfdc8c line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb9f908f9 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xba105098 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcb15f021 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcc2a506c line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe340fb3d line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe91634a5 line6_pcm_acquire +EXPORT_SYMBOL_GPL vmlinux 0x000d9748 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x0013045e ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0013c9ea shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x00295ae4 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x0053e851 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x006b4fa6 kvmppc_do_h_enter +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x0075d932 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x007aa6c5 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x008c5966 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00b0f503 realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x00b3d580 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x00c63b0b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x00cf885c relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00e07feb adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x00e64751 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0107584d debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x0107e4fa blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x01098326 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0112f13a tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0127dee1 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x012ffe21 hash_page_mm +EXPORT_SYMBOL_GPL vmlinux 0x014fb893 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x016c113e swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x016e94a1 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x0184dee0 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x01de3927 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x020455cd usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x02054821 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x021b215e debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x026b7a4f ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x0286db46 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x029366de blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x02be439d dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x02c5fa7d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03063fbd relay_open +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03356b3b rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033d9b4e inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345ffc0 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x034cace2 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x0354683a devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x036f7de5 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03728a49 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x0390483d regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x039f7a84 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a5db4e sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x03b3c37d iommu_del_device +EXPORT_SYMBOL_GPL vmlinux 0x03bca677 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x041742ab ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x041cf7cc class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x041fb3e4 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x043784d9 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x0437ec9a tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x04421a0f rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x044510b7 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x04545663 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x04563263 user_read +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046c67b0 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x04779b33 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049d5fc3 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x04a5685e unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x04b73783 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x04b91296 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x04beee7c da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x04c48634 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c8e559 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x04d2cf62 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x0517e65a irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x051af1ea sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x051cf210 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x05252f51 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05524001 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x055b4303 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0560a690 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x056947ca devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x056b1253 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x05705bf7 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059da3a0 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x05b634ad crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x05c856a6 find_module +EXPORT_SYMBOL_GPL vmlinux 0x05c9ef2b rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x05cbeca9 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x05ff30d1 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x060f284a tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x061eea03 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06335ab3 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x063d0c30 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06678531 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x066bc18f regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x066ea98d driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x06729979 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x0677fdc0 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x068ea474 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x06aa5956 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x06b0a591 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x06c05b33 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x06c45449 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x06ef57c0 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x0706ace4 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x0723b217 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x0760e3cb usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0768da08 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x07768ff8 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x0784ecb1 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x079e97eb rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x07b04691 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b7255c pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x07c250c6 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x07e86436 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08158be8 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x081c0746 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x08410fb1 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x085a1336 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x0863eb54 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x08757c26 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x08892db3 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08ac7713 put_device +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08d3565f __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x08d91c22 mm_iommu_put +EXPORT_SYMBOL_GPL vmlinux 0x08dca965 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x08ea8a12 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x08fba835 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x090f93b4 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092b6741 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x09380fe0 shmem_get_seals +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 0x096185e6 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x098ef5f1 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x099c3081 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x09c39567 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x09f54600 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x0a22a56f da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x0a2e9f4c register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x0a42541f pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a94eab7 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x0a96fb76 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x0a9b533d xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x0ab999d9 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x0acbc983 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x0ad33477 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0adcd671 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b08e1cc perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x0b3049d5 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x0b467d23 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x0b485cb2 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x0b61e029 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x0b966992 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0bd288eb usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x0bf54b96 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c239a40 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0ca43476 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x0ca74359 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x0caac91f crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0caf75d9 opal_flash_erase +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ce3ee5a mmu_kernel_ssize +EXPORT_SYMBOL_GPL vmlinux 0x0ce58d7d tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x0d1140a9 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d1573a5 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x0d345ba9 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x0d4842bf regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d512b1a crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0d646792 mnt_want_write_file +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 0x0d9bc4ba ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x0d9d601d pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0dfde628 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x0e092ce1 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x0e18dcc2 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x0e719bb2 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0e827373 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x0e99ce5b ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed81ef9 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0eed238c rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x0ef30935 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x0ef49d01 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x0f242d8b bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f388570 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x0f44df75 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x0f479ebe ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x0f4c72fe xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0f4f2f11 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0f5991d4 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x0f66c5c2 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fac3570 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x0fb5319a pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x0fc6164e kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x0fd1471d of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x0ff273fd device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x10052efe class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x10095d11 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1013efbc rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x104ac7a5 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x105b97aa mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x106eaef3 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x10706b74 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x108c83c2 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x10b09ede vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x10bf5fce crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x10e6b3cb kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11193e4c scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x1159ae1f sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1178f479 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x11872a33 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x119ced58 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x11e927fe powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x11e9d5b5 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x11eb6110 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x11f4d254 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x11fb9168 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x121074ec __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x12139b02 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1229de59 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x1235f7d2 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12520a32 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x12618f89 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x127a3380 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x12a59721 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12d6c383 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x12da3791 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x12da4b84 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x13077cf3 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x133db623 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x133f3a82 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x135c1405 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x136fd284 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1389da84 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d5916f ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x13dd65b2 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13ecd358 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x13f0a210 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x13f89ed3 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x14138bd2 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x142694dc sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1426dbcc napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x14396e97 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x14613c28 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x14665dda edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1466dda5 kvmppc_clear_ref_hpte +EXPORT_SYMBOL_GPL vmlinux 0x1467b947 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x146c3666 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x147e1f0b irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x149e8850 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x14ba243c extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x14ca268d pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x14d066cc platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x14d715a8 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x157edbb4 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15ab2070 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x15b8b44d opal_async_wait_response +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15d24cea cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160fad16 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x162790e7 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x162cce39 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x1649b5c9 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1652bf33 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x166d5051 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1670a4da flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x168b6622 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x16a96bb7 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x16ddedc6 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x17225035 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17647778 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17905425 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x17a70bc2 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x17b38857 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x17c06321 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x17dcb4ea blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x180c98d1 eeh_pe_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1828cd2d __clocksource_register_scale +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 0x18629cee virtio_check_driver_offered_feature +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 0x189a242f extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18c4375f iommu_tce_xchg +EXPORT_SYMBOL_GPL vmlinux 0x18cc8121 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x19024e7f max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x190cde19 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x1914d0ea pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x192025bd mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19506226 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x19772515 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1996d321 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x19992581 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19e55996 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x19e76b17 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x19f5287e skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x19fb1644 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x1a2655b6 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x1a2bf045 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x1a4625aa __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x1a5a20fb devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x1a7fb5d1 __giveup_vsx +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 0x1ab53f99 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1ac0bd12 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1b1bc184 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x1b1c2c63 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x1b3711fa ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b3c5810 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x1b91937b iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1baf5214 eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0x1bc76686 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x1be81793 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1c02bd31 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x1c11c728 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1c1215bd threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x1c20fec2 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1c26ab56 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c4eb32e device_dma_is_coherent +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 0x1c69ab56 gpio_to_desc +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 0x1c9c64b4 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x1c9fa8c5 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cb6b39d debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d10c6b4 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d2b8afd iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x1d33750e cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x1d352447 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x1d4e5726 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d693712 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d90b1c0 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x1d92ef9d rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x1dbe05bc ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x1dc0c60a srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x1ddaf442 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x1ddba4cd rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x1e000453 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e2373b4 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x1e24f5af serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1e43a7c2 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e835403 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1eaa2368 irq_gc_mask_set_bit +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 0x1ec21978 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x1ed31a23 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1edc7289 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x1ef61f29 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x1efc080e platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f2059e3 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x1f336e8e sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x1f39612c tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x1f6b059f pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x1f72883e firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8565fa nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa896f3 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1fb63fcf dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x1fb72498 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x1fcb9678 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x1fdb4c79 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x1fe631a2 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x201b9202 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x203e7f4b regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x204741c2 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x20903bef usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x209e5e60 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b6b286 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x20c1a872 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x20c2c2cf usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x20c73c91 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x20dd2798 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x20ebd70b usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x21167db0 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x211838ce pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x212874e7 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x214faf67 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x21505453 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x2150ba01 scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x21619528 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x2186fb40 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x218d7a68 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x2195b23c pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21c5d5d9 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x21c74b67 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x221144ca spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x22139c65 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x2213eb8e usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x221ab6da part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x22258f93 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x223abe46 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x2243b407 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22458c41 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x224f8268 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x225dd05c usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x225f717f pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2277c850 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x22844a8a kvmppc_invalidate_hpte +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a1ffde xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x22a91882 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x22e68b3e inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x22fc59ae fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x23266c7f irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x234bcabf ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x2363c2a0 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x2371d345 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23af68c0 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x23d32823 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x23e0606f ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x23ebf6bf crypto_attr_alg2 +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 0x241aded3 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x241bd2be wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x24248e06 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x243950f2 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x244893d7 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x249bed66 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24acb290 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x24c1cc05 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x24d25842 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x24dfde97 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24ed2948 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f3c1d1 eeh_pe_set_option +EXPORT_SYMBOL_GPL vmlinux 0x24f3fc2d usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2504082e param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x2507fd8d gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x251a556d crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x251e9c60 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x254e6314 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x2576aa3c class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x25911b5c usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x25a0252b wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x25cbf925 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x25ce47c9 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x25ea22df debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x25ec2b5a __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x25ffd841 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x2607092f md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x2621f0c7 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x262342ef perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263bd731 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2665bf41 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x266baa97 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26cc93ff dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x26edbfea crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x270dcbab wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x272645f3 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x27337427 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x277221f8 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x2782fa51 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x27858a43 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x27a57fbd unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27db8fa7 regulator_register +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 0x280c5c87 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x2818089b ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x281f18bc devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x285cad4a device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x287438b0 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x287c7288 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x287ea704 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x28cbafdf regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x28db7683 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x28e9091c dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x28ef62f1 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x28f327a9 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x28fc3eda pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x28ff99a9 opal_prd_msg +EXPORT_SYMBOL_GPL vmlinux 0x293dd074 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x295076ad fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x29817238 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x29883396 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x29af6ea5 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x29d8f126 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x29df4f36 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x29fdcb4b __put_net +EXPORT_SYMBOL_GPL vmlinux 0x2a245688 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x2a298186 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x2a491b35 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x2a5ce5a1 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a67f7da stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x2ab21400 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ab36a1d rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2abae0d9 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x2ad2299d bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x2addb346 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2ade3365 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x2b2bfe5f devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b4147ed kvmppc_hcall_impl_hv_realmode +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b644414 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x2b7dc396 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x2b8deb7d device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x2b9392cb srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0x2bac1689 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2bad078f ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x2bbe5f3d scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x2bd96d48 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c0446f2 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2c04dd48 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x2c1a078e ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3b699b ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2c6d0685 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2c73b615 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8075f3 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cd88f51 kvm_hv_vm_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf1f6e2 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d222e46 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2dbf1762 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dc62c2e usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2dd009d7 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2de176e0 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x2de92c2b rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x2deeaabf ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e231e73 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e62bccb dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x2e68e7d3 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x2e6ad97b xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x2e8666cc i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x2ea51f6b raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x2eb7c65f seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ebf6ed6 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ed7197e serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x2edcaa02 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x2effdb3e regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f459901 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x2f46df0d gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x2f5ca957 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x2fada0cc regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x2fc364d5 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x2fc89857 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x2fc94e27 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdf01ca spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x2ff4d2f0 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2ff7eaf8 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x3003c4eb ping_close +EXPORT_SYMBOL_GPL vmlinux 0x3005c064 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x301832fb opal_async_get_token_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x301a1bfe devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x301c57c0 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x30348aac iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x3056bfa1 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x3089b84f class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x309cb5d2 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30eaf7c1 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x30fc06e6 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x310a174f crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x312105d4 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x314ada4c __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x31526e28 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x315d77cb rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x31724305 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x317d6f0e arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x31bef441 opal_i2c_request +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c6918c fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31e599f7 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x31eb7727 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x31fb1522 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x31fbcf7b tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x320257ee usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x320ac152 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x3228bc3d skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x3239145f regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x323eee40 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x3263394c nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x3274262f pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x327b9b4a device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x329105ce register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x32a2ef58 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x32a99f8f wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x32a9cdf8 pm_generic_poweroff +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 0x32db1d55 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x32e2c263 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x330cca23 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x330f4498 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x331572e7 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x33398de6 mmu_psize_defs +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 0x337d015c __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x33891236 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x33d6d060 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x33f22fdb ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x342238f0 mm_iommu_get +EXPORT_SYMBOL_GPL vmlinux 0x34245897 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x3441b1b6 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x3450b7de power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3450e6ef pwm_enable +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 0x348c5840 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x3497da91 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x34adfb98 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x34af0adf opal_ipmi_send +EXPORT_SYMBOL_GPL vmlinux 0x34d6aff7 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x350ce759 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x35208b48 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x35227b4b __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x35293274 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x352a7948 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x357d31e7 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x358bd6a5 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35aa8a57 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x35bbe2a9 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35c8fca4 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x35cff685 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x35d191b5 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36139e5f xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36517262 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x36584580 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x365d78ee crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x366588d4 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x3692e74b thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x369bc921 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a010b3 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x36a51fac fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c40c52 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36eb7442 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x37330774 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x379754c6 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x37ab942b gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x37ac2dc6 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x37c877da gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x37ea8e1f ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37f21fed regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x380b8291 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x385bf5c2 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3892cab1 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x38ab32e7 pnv_get_supported_cpuidle_states +EXPORT_SYMBOL_GPL vmlinux 0x38ab9ed3 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x38be019c ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x38c55e14 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x38f96e70 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x39194201 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x391f3adc set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x393e10c6 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x39422a75 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x3958801f rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x39647501 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x39833630 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x3988eba1 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x399f6625 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x39ad744d usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x39b84292 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x39c85180 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39db1b2f __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ead289 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x39eb1120 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x39ed6ff3 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x3a066857 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x3a0f23ba wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x3a119095 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2b99a9 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4ee9de usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a6be091 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x3a70346a inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa39cb2 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x3ab6861a led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x3ab7ba48 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x3ac14009 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x3acd90ee __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad059b7 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad310b7 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3ad834d1 eeh_iommu_group_to_pe +EXPORT_SYMBOL_GPL vmlinux 0x3ae3d005 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3ae68d81 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x3aea38cc of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x3b0ae744 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x3b816f87 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x3b9ec239 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x3bb11487 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x3bd54abe unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3bd76ded devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x3bed6482 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x3c0e880c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x3c154109 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x3c25b31c irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3c30cf10 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3c4fc5d8 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x3c51ea7c opal_leds_get_ind +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 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd33183 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3ceb2680 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3cee54ec da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3d011d17 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x3d03281b iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x3d125ad5 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3d171c4a device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d48b6cc __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d63e891 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d897eb9 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x3d96cea6 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x3d98c748 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x3db419c7 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3dbcfc70 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd42ea6 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e1b8224 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x3e259239 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x3e44c795 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e5eae23 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7fce1c wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3e9081ee kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x3ea472ed dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x3eac8f3f of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x3ec01ab6 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x3eca5f66 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x3ed1a11b xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x3ef7173a usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f066f41 md_run +EXPORT_SYMBOL_GPL vmlinux 0x3f1cb321 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x3f1f89cc debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x3f450825 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x3f4be4d9 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x3f559e0c rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x3f6239c9 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x3f75affa kick_process +EXPORT_SYMBOL_GPL vmlinux 0x3f7b620e crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x3f82e16e pci_destroy_slot +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 0x3fb69100 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fe1f08a i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x401f5c2e ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404ad43f perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40aba35c of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40ebc119 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x4110ff36 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x413e11d4 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x41484c3b register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4171a666 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x417e1dfb usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x419dff3a ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x41bf3f73 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x41ccef31 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x41e04634 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x42295872 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425c346c scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x425ccf19 __spin_yield +EXPORT_SYMBOL_GPL vmlinux 0x4265581b usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x42676def virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x426975a6 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x429dfe54 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x42ec69b2 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x42ed9ec2 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x430677df bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x4319f6a1 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x431e4e02 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x432702e6 mm_iommu_mapped_inc +EXPORT_SYMBOL_GPL vmlinux 0x433e77c1 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43809307 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x43a1445e usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43cc651d aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4405a9e8 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x446f2ad5 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x447a90fb bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44954688 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4495a427 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x44a02bc2 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x44a8f303 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x44b0b741 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44bb0cbf key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44ce1083 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x44f49011 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x450d041a devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45119ccc platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x45164e66 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4540c489 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x45432ec6 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x455eb0a1 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457b03e5 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45efb254 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x462ec761 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x463c779e rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x465049c8 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x465d87fc platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4674e87d __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x467d411c cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468a10e1 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46c3b43f ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x4715d0ad dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47305380 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x47361715 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x47433999 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4777c578 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x4782aa7e md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a6bd10 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47bc68ea crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x47c60859 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x481f025a disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x484a2b6b __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x485b0753 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x487e6554 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x48a6ba5f ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x48af35d2 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x48b73fdb tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x48cf3112 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x48ef6971 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x491091be crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x491bc348 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x492a2062 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x4950c388 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x495536e6 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x496abff5 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x4977e9bd ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x4978c9f7 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a58206 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x49b8e9b8 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x49b9c3f3 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x49c970c7 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x49d44f45 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f30ff2 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x49fb6416 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x4a026413 mm_iommu_mapped_dec +EXPORT_SYMBOL_GPL vmlinux 0x4a026ed5 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x4a39ea88 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a95bef7 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x4aa92fed led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abffdca ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x4ad0a46b pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4b0bf294 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x4b0c6bde key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x4b114991 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x4b1ed708 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x4b229bea tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4b5f6340 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x4b7dee7c thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x4bd17620 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x4bf8afb7 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x4bf8e4c4 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4c0f5cab regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x4c2cf2d3 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x4c4b3820 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x4c53f3fb dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4c55d043 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c6a4fb0 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7666b2 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4c77ee5d wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4c78c8b1 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x4cd224a7 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x4cf76b44 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x4cf939fe trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d1cd1d8 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x4d4e00a8 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x4d5238b0 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x4d5779dc cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x4d5e120f dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x4d687620 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x4d70643d rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x4d715c30 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x4d822b54 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x4db00aef led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x4db22925 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x4dd7424e add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e0601e5 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e11073b crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e28181f usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x4e2ce41e phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x4e41e827 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x4e561ca8 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4e589316 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x4e7c1b0e scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x4e7e98cc rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x4eb619e6 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x4ecae2c6 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f112593 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x4f1378f1 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x4f24b8b1 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f742566 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x4f950327 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x4f988c91 crypto_hash_walk_done +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 0x500ed1fd fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x5018847f pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x5039c4ab percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x503a337a devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x505398e4 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x507596d8 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5085499b __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a77aec rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510e1c71 mm_iommu_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5123442f kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x5139263b blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x51467922 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x5157835d need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x515c1186 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x517aa754 kvmppc_h_put_tce +EXPORT_SYMBOL_GPL vmlinux 0x5182389f sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x51852e28 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x518af119 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x518d65e1 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x519303f1 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x51a49532 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x51a5792a to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c1eafa tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x51f1cd13 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x51fb4fe4 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x520985af get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x521861a6 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x521c9788 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x5244366d usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x526e0e84 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x52720e88 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x527b1851 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x527c88c9 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x527ff042 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x52866143 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x529e474e vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52d66f9c nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x52fa057b smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x52fda73a usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x53135d1c pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x531d1f34 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5336be89 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535ac934 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53734509 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x5373e088 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x5378bcac inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x538a34e9 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x5392d13d subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x539b8ce1 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53b5b4af unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x53bb0f7c of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x53c02005 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x53dd6ee4 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x53ed6775 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x53f81097 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x540c31d3 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x5411d46b i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x544112d1 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x545b9fa4 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546ae890 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5470f293 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54b144db call_filter_check_discard +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 0x554377c9 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5581f127 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x55903435 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x55c18b79 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x55c44858 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f51ef3 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x5605521e ata_sff_dma_pause +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 0x563d6b69 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x564f9aba dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x565c6614 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x56639a90 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5697aa07 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x5698147c da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x569ea973 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x56cd27dd seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e91fbe iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x56eb1975 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x57227d6a attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5724698b bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x57314431 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x5736aee2 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x5759e1c7 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x575b35b6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x575f7f57 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x577dfdf2 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x57805a4d regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57957ad9 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a05dde iommu_flush_tce +EXPORT_SYMBOL_GPL vmlinux 0x57a08b37 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57e6e55c nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x57f6c1ba crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x580b208d mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x580cdcce cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5825f698 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x585064f5 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x586041f4 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x592726d8 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x593f7ecc swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x596c1c84 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5982074b crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x598a10c4 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x59945328 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x59b00087 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59b3c03a raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x59bd77bb mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x59bf8c42 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x59d32e46 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a024ecd percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5a30682f inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5a374ee8 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x5a4b40bc regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x5a5f6e1c usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x5a60f825 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x5a631a9c crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5a6661aa perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a82bb5e __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x5a882f6b regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5a990e8d of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x5a9ddd76 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x5aa9229e regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5ab92cdb crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x5ad6141a dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x5ae5e8bc of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x5af5c055 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x5b0908d2 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b1ffe2e bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x5b3279cf cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x5b3e7827 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x5b4ade16 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x5b4dc385 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x5b50b83e bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x5b5a15ca find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x5b887f3c xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x5b8d3c4c cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x5b9016b8 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5b91a6f6 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x5b9c24c3 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x5bc3f6cf kvm_alloc_hpt +EXPORT_SYMBOL_GPL vmlinux 0x5bc67dab blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd083f2 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x5bdacfcf xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x5bdaf7e4 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5beada32 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5bf7d4db ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5c066a75 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x5c0fd4f0 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5c451375 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c64dec7 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x5c71eb95 device_move +EXPORT_SYMBOL_GPL vmlinux 0x5c85f11a eeh_pe_inject_err +EXPORT_SYMBOL_GPL vmlinux 0x5c8a7737 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x5c917642 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x5c96a57b irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x5ca77b96 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cd05429 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x5cdb32a5 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d15d36a pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x5d52bb24 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x5d576c62 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x5d8772e4 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5d9e657a nd_region_attribute_group +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 0x5df45c79 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5df82be1 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x5e1634d2 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5e1d8cdd da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e652e92 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x5e70761c rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x5e7b12f7 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x5ea4a5cc key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x5ecc8825 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x5ed74fec sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x5ee1fd64 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f605607 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7e163f nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x5fc49b5b kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x5fc510a6 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x5fd4c51b cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x5ff0e7af rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x600c9700 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x601210a1 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x601239b5 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x601b97c1 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x6022568e stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60630ecd kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60b2b781 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x60bcb1b5 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60cd5865 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x60ea31ff pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x6101208e pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6104c9eb rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x6105fe1e virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x611c9abf sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x612819e7 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x613785ff usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x61748b2a module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x617a045e ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x6196db99 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61aee001 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x61cfe73b __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x61d0e3ae of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x61dad409 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x61e075ef clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x61e5d101 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x621ddb56 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x6221b3a7 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x622445bc eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x622afa5c clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6251a814 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x6292efb0 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x62a25374 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x62cbb432 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x62f1a13a blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x632a4e88 srp_stop_rport_timers +EXPORT_SYMBOL_GPL vmlinux 0x63725658 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x63ac5866 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6422d3dd regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x64344b63 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x643b324a rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x64529949 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x645aa419 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x645ad4ba of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x645bc890 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x6472c08d find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x64c8d1e0 device_register +EXPORT_SYMBOL_GPL vmlinux 0x64f2deb0 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x64f6d31c pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x650059ac add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x651b87c0 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x6538c42d gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x656c4d67 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x657e02eb pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65f658b6 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66216eaa tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x663107f8 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x664d9232 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x6654a33b ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6687f0ef uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x6689a0a8 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x66aa3e5c inet6_csk_reqsk_queue_hash_add +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 0x66ef1cb6 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x672a85e8 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x673149f6 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a86781 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x67b310fb handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x67c1faa9 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x67c7ce4a bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x67e20496 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x67f5c0e0 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x68114848 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x6850ac9c mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x68a489b1 flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x68b2b82e usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x68b5a6c3 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x68bf50f6 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x690194ce usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x690cdea4 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x6911d32e srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0x6913fe80 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692c4c2a debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x69321a72 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6946278e nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x695c1682 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x695ccbf7 devres_remove +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 0x69bd3ca1 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x69c03811 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x69c9a04c device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x69e6663b dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x69f502ee pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x69fb2ced devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a21b048 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x6a2cb26a sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a518a81 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6c539b pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a6efb27 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x6a7eff7b scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a855601 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6afb0c74 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x6b031221 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x6b224418 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b2e630c __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x6b33eaea sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x6b4b06ac edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6b56b511 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x6b6d7372 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6b709a7d regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b932aa1 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6bf5fd60 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c0f26f3 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x6c330f1c ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4b7a4b tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6c52b170 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x6c77373d xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c956736 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb55f43 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x6cc2fb2c opal_message_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6d00c968 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x6d29a220 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d30ed5e rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6d416aed of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x6d78f21d cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x6d83bc5e xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x6da0c3d7 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x6db99ca3 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x6dc6a32a sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6de7a59d regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x6deaf4af gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x6decce71 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x6e01758b ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e0cdf6b sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e3c385c mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6e3e3ab0 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x6e41e8ab platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6e7780f2 pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x6e79235b crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ee74998 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x6f03da70 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x6f057de4 iommu_tce_put_param_check +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f224980 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6f27e3cd cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x6f359eb1 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x6f39e133 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x6f3dcab6 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6f5fa38d fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x6f6bf6ef blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x6f945c8c __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x6f9afaca srp_release_transport +EXPORT_SYMBOL_GPL vmlinux 0x6fa60abe trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x6fd11150 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ff86e10 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x704f3627 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x705b650f eeh_dev_open +EXPORT_SYMBOL_GPL vmlinux 0x70659053 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x707f3b29 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70aadf8f ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x70ab8a06 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d26c66 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x70e53fc9 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x70e5568d dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x70f4525c sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71321204 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x717b7066 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x71b258e2 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x71c62baa fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x71cfd6af sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x722760c6 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x7266d990 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x726f4810 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7278eafc devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x7283b1d9 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x7291f93a map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x72b1c5fb register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x72b92943 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x73044bc5 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x731bf6d7 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x73375842 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x73503d2c ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x73985881 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x739d481a vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73bd47bb put_pid +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73cb4540 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73db5935 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x73e8949a pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x73f1b187 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x740cf84e skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x74116022 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x7415afa3 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x7418c56a blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74615571 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746c1183 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x747f0142 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x74836804 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74a5eab1 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x74b0f60c do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bf734f mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x74c3c57d irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x74c7678b devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x74cdb2b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x74dd5639 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x74ddae4a wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x74f2e2d1 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x75137766 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x752003eb tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752a1312 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x7541091e ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x754f0b69 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x756e518c sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x75813a83 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75b5c099 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x75c9d8c3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x75d4e1fc register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x75ebd6a4 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x760b386b __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x761ed6ec hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x7620798a dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x7624cd93 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x7625fbcf serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7637a4e6 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x763d9ed3 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x764b431e pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7655e41d pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7690d4e6 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x76a6e874 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x76cabd2f device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x76e635bf relay_close +EXPORT_SYMBOL_GPL vmlinux 0x76e950e1 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x76eef8e1 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x76ff6c6a sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x771901cb regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x771ae518 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7727c098 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774c71c3 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x775e0cb9 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x775eeb4b devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x77615095 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x776351e5 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7777903c rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x777f349c xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x778c7eed dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x778e4302 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7794444c debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x77aaedac rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x77b4d2a1 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x77b630e5 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x77cc6c75 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x77e8008d platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x77f94e65 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x782b3a9c usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x7835f848 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x78708712 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78a38824 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78bf8b8c usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x78c0f5d1 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x79186ad3 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x79249ed0 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x793c84a4 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7943eccb tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x795b6af0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x7961cc40 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x79694bbb usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x796a6698 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796da5ca power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x798f7d4b pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x79c82ea6 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x79dee9d4 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x79f4bd7b attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79feccbe of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x7a1e87c0 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7a2c2f14 mm_iommu_find +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a4aa3ea sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7a65af82 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x7a8d04db xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a962a9f rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x7ac150d8 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x7ae58d1b watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7ae99fba usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b15e108 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x7b186ca4 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b3245c9 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x7b4bc527 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x7b69e35a ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x7b6affa8 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x7b708fc1 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7ba61ba9 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7bc11d45 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x7bdb4505 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7be2d5d9 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x7c1341a9 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c4d9d99 kvmppc_do_h_remove +EXPORT_SYMBOL_GPL vmlinux 0x7c70a299 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7c7be3f8 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7c975d30 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7cc8fc4d __online_page_free +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 0x7d06ece4 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x7d1013bb adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7d328cdf pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x7d559ba0 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d628b9c usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x7d7ef77d init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7d86ff43 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x7da5487e device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc1e388 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7dd59b28 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dfd42fa do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x7dfec737 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7e0c75a9 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e3ded56 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e8e97a3 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ebcf0a7 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7edebeff hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x7efa5be3 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f326d85 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x7f399d5a get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x7f41e991 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7f422851 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x7f5e91e1 unregister_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0x7f6e4dfb regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f9574b5 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x7f9a4eb8 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x7fa61e04 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x7fb87b54 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x7fdd122d phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x7feb14c6 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x801565fe extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x801cd094 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x8022a42e of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x80261781 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x8035311d debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x80465740 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x80488118 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x806673ef regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x807670bd trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x8084c133 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a2bd64 rio_mport_get_feature +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 0x80d6baff usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x80e425a2 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x80ee3032 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x81085f25 devm_usb_get_phy_by_phandle +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 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x814f5cdc adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x81599b41 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x81767ba5 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8184ebef hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x819fb909 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x81b03b25 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x81d54b41 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x81f37639 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x81fb0e9b dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x820c4ef6 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x8222de8b led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x8249b2a2 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x82569a1d device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x825d4995 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x826368d3 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x8277d352 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x827aa1c0 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x827ba96e fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x828cffb5 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x829d68a2 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x82cefd11 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x82d5791f dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x83393bbe mmput +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x834914b5 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x835a9c20 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x837a9f52 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83e75cc4 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x83ed3ba4 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x83f5e581 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x84298d99 sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0x8429bb13 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x842b6bdd dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x843b7dab gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x843e8571 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x844cc9f9 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x845d56be relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x84731630 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x849ae0d5 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x84e4655b clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x84e9c2c4 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x84f25e19 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x8500ea27 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x85043522 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x853b264a queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x856ce67c devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x8594c6ba inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x85adf841 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85dfc189 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x85e971e6 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x86152035 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x861f80df platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x862f9662 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x86364033 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x863c2b4c fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x86748167 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86d47222 usb_hcd_unlink_urb_from_ep +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 0x86f95935 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x870f44dd fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x872f8f24 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8745b0cb scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x874f1666 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x879bae48 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x87abd284 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x87b30dd8 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x87c5a556 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x87fc48cf regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8808e7de __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x882b6271 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8863f7fb pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x8872550c page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x887d8557 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88cdcfc6 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x88d2a78b xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x891a0636 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892d4aa9 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x895ab819 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x898749d1 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x89aad81f clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89cfc920 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89e8abd8 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x89ebcc52 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x89ff946b irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8a10eb13 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a6bebf6 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x8a7784a5 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x8a93b1e6 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x8aa958b0 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac17eb9 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x8ac9ec11 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8ad0c3db of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x8adea72a crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x8ae639ef led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x8af9ccfa gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x8b1dc915 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8b4724b4 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8bb8d654 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x8bba287d ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x8bc4f345 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x8bca1363 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x8bdde3fb dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x8bde65f6 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x8bf5ba7d arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c47ab52 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x8c5fa1f5 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x8c62c397 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7aca00 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8c881311 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8c8e6ab5 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x8c94f71c device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x8ca0d30e virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x8cb8623e get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x8cc20288 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d00d566 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8d0c5514 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d0dbba6 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x8d10d66c hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8d117fb0 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8d1d66eb __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d35b86e copro_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x8d63fce8 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x8d689a8a thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x8dbf5a20 kvmppc_hv_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x8dce6d70 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x8dd6ea9d bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x8ddb74d6 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x8e19406d usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e43be54 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8e450a18 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x8e46e31c unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x8e46e557 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x8e5f0c61 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x8e6e651e fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8e8a658b usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x8e99aedb blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x8ea72e8e rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x8eb59b2e rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x8ec56334 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x8ee5f166 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x8ee831f4 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f3744d0 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x8f3ef0b5 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8f436d0b crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8f528f31 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x8f52c90c irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7b48b2 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x8f801a0f crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x8f83046a sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0x8faf71d2 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8fbee3f6 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x8fced602 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x8fdce2d1 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8fe76c22 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x8ff523af blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x9034191a scsi_queue_work +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 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90eab2d7 device_add +EXPORT_SYMBOL_GPL vmlinux 0x90ffbaed crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x91160683 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x912e11b6 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x913e008e power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x91484682 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x915c2f27 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x9174ca39 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x917e8491 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9189eb3b phy_put +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919b30ef get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x91b34fb3 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91cd2cb0 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x920338cb usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92403377 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x924760b7 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x928c7421 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x92af3651 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x92bc8917 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e14b37 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x92fa4697 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x9307f5f2 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93311080 opal_flash_read +EXPORT_SYMBOL_GPL vmlinux 0x93370f0b phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x933c1929 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x93428b2d bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x937f2e66 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x93b6d6ab pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x93c17a14 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x93c3ab3c crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x93d2e463 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x93dd2268 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x93e6eac6 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x941031c4 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9445f73a devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x944761b8 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x945f43a7 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x946f0fd9 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x94957f7a rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x9496c7d5 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x9499956b led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94ca6ed1 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x94d187a9 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x94d961fd root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94e59509 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x95007749 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9511d576 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x95412b09 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x954e3a33 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955c3cc6 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x9568a85a kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95b0aabf wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95eab25f srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0x95f51a2d irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x960b07f9 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9628755e pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x96337786 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x963a50eb xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965c1ff3 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x9671727e mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x9672ac0f __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x96d7c543 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x96d8b9b7 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x972ad876 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97588927 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x97606972 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9780c464 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x97a29a02 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x97b110ca usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x97c0f3fc bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x97cdd5e4 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97f60ad4 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x9804f9b1 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x980908e8 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x981d362c ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x9827bc96 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9846c821 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98ac9aa9 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x98b86a4c fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x99024843 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995e90e2 relay_switch_subbuf +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 0x999475d9 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x99a3d1f3 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99b92ed5 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x99c6e5d5 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99ecad06 split_page +EXPORT_SYMBOL_GPL vmlinux 0x99ff8d08 opal_invalid_call +EXPORT_SYMBOL_GPL vmlinux 0x9a084d51 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x9a091004 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a23a8de of_css +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a577b27 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x9a694636 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a942e74 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x9a9a740c pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad39e73 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9ada27fb __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9adf08c3 mmu_linear_psize +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9afbdf29 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9b01357b pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x9b3bb6c2 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x9b3ebc1c crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9b5bd131 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x9b6d4e6e regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x9b71c326 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x9b76f0aa vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x9b7edb10 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x9b8ae0d8 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9b8b41ce sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x9b9b0131 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c14ad5d pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9c209c97 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9c3f3000 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x9c47fb90 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x9c700ab6 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c7b0b48 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x9cb0df4b trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cce30b0 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9cd876aa class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ce7716d ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d1316cc bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x9d49b8c4 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9d696e3b mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x9d7cb5e1 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db57b74 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x9db8a48e usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x9dbf4b98 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x9dc4dc69 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x9dc6c18a class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x9dd5037a rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x9ddf1484 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x9de15d17 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x9de18fae crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x9e1a7902 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x9e213dd4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9e42359e pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e7e5c8f cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x9ebfb1a0 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x9ec29f4b mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9edccf8c of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x9edd9bcd iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x9edeff03 ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x9eee4259 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x9ef5c639 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9f063eac crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f2b8dc2 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x9f45136b tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9f4c50d5 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x9f5efd64 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9f62ec83 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x9f63841b ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x9f734790 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x9f89f88d irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x9f8b0322 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x9f8cd2fd bus_register +EXPORT_SYMBOL_GPL vmlinux 0x9f9ec1b2 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x9fb5090d serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x9fc01be2 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fcf0f87 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x9fe70dd8 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa017e634 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xa0421fff fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xa06d52c2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa08c1b5d usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0a75237 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xa129d416 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa12f1c82 scom_controller +EXPORT_SYMBOL_GPL vmlinux 0xa12f9aa2 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa13c1d4a fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa142c5cb tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa18586eb pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1efb43e crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xa2014697 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xa206b15f adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa20e0c42 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xa2204fec power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xa2205a79 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xa23a9f6d ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xa23d490f devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0xa2409eb1 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa2504e17 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa26796cf tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2a01c41 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c5881b of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xa2c9c4d0 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xa2e307a7 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xa2e34194 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xa2f4f85e reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa2fda1ee of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xa31ecea3 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa354f38d dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa396a4a8 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3af01fa sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xa3b017a4 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa3b0be6b security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xa3b64419 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e1bb49 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3e98b48 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xa41c7afe usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xa41f8b84 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xa473952b ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xa473c933 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa477767a dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48a9a30 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xa497960a crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa4c55a75 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xa4dc7eb3 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa52b745c tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa53f526e tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xa54f7f94 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xa5724b4d pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xa57fdc9b iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xa5a3df1b pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xa5a92791 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b0b054 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa5dd8f2f ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5e48679 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa5f4f7ab ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xa607c577 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xa60fbf6c trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xa6120e33 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62849e1 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa66c0eeb srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xa6a64908 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c9f06a anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e25b13 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xa6eded6c opal_xscom_read +EXPORT_SYMBOL_GPL vmlinux 0xa702961a save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xa719d518 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa71f1b89 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xa721bc3f opal_rtc_write +EXPORT_SYMBOL_GPL vmlinux 0xa7275a67 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa74d7b14 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa767459f dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa78187f4 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xa7b621f6 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa7ce65a9 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xa8100a04 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xa8196801 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xa81e1c0a vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xa83e35e6 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xa841be0d security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa878abfe irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8eb0dfe rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa8f23ba6 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa8f63e58 fat_scan +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 0xa956f9f5 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xa97bd661 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa99de4a7 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aa1b00 opal_poll_events +EXPORT_SYMBOL_GPL vmlinux 0xa9ad73b0 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xa9b1afe4 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9d53717 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa13254d nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xaa14ca8c rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xaa1509dc cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xaa18a01e driver_find +EXPORT_SYMBOL_GPL vmlinux 0xaa2f9980 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xaa3700c9 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xaa8e0fb6 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xaaa1165b vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaa95194 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xaabe8278 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xaaf477d4 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xab131c14 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab319038 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab4693af of_dma_request_slave_channel +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 0xab878e31 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xab8a96b5 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xabab3621 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xabb940a9 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabdc84e2 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xabe09392 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabfd9532 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xac1caaa6 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xac37c2aa tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xac3a0d6f fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xac6ed2d2 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xac8aaa9d irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xac923f05 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xac97598a netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xacada55f debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xacadc906 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xacc080d4 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad0662e4 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xad4490bb ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xad4ec3ea input_class +EXPORT_SYMBOL_GPL vmlinux 0xad831014 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xad8d2717 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xada40aca sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xadecafc6 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xaded9da1 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xadef4ae1 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xadf487b5 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfec302 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xae0304f5 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xae0e6b7c usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xae11c933 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xae5af0a3 devres_release +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 0xae80ed3a pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae912ab5 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaec2a366 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xaec9921f hash_page +EXPORT_SYMBOL_GPL vmlinux 0xaee8e68b wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xaf279112 opal_leds_set_ind +EXPORT_SYMBOL_GPL vmlinux 0xaf3966ed tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xaf3f8848 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf5e7ce9 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xaf6b378f regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xaf73126f ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xafacd211 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xafb8d785 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xafbe6c9e kvmppc_hwrng_present +EXPORT_SYMBOL_GPL vmlinux 0xafdcbd5a regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xafde7b96 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb047fe98 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xb060c85b regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xb0648cb3 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xb0674ba3 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb07b03fa devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb07c0426 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xb0934b4c unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb099105e kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xb0b62702 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bf34fd scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e5d72e dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xb0e621a8 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb1032727 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xb124ba60 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb12fe8fc __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14bcd6c blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xb14f3329 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xb17f793d nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xb180d12d ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19542df init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xb1a4384a rhashtable_walk_next +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 0xb1cff761 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xb1dbd5f2 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xb1ddb653 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ee46f9 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xb1f26ec9 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2481b69 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb249bbf8 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb28fa8e9 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xb2986dc5 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xb2b3254d usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xb2bea1e6 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb2e5e199 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f7a952 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb314e626 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xb318ba29 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb31cfbbf reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb36b03e5 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xb38b4af2 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb3b45a27 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xb3b4ecef console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xb3da9d9c gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xb3e574a8 kvmppc_h_get_tce +EXPORT_SYMBOL_GPL vmlinux 0xb3ea99c8 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb3f27db9 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xb40a61c3 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb415bd6e of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xb42961c6 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb42d144f pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb44177fc tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb48b2fa9 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xb4a697fb __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xb4acb2bb pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c78388 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f06177 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xb5033f65 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xb507c473 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xb50b9c99 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb530575f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb5858153 mbox_send_message +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 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb600c457 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb60c45df usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xb6160186 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb65b19d2 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xb6605435 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb673c93c regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb679b202 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb6852950 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xb68cf79e irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xb6928578 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6dd9a17 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xb71f24d9 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xb727899f extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xb7300c94 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xb740e260 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xb741a950 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xb746bc8c rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb79bbca6 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xb7c3ef52 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xb7c4839a spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xb7e72f7c sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xb7e8c32f cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb832ebdc single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xb83a64db regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xb83f5f77 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb84f4231 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xb859740a uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb8897978 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xb88e1550 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xb89f64a7 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xb8a8ca14 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xb8ac424e rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xb8b986b0 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xb8bd0624 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xb8bdbe1f alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xb8c772f2 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8f50800 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9090364 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xb9aebc3a devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c7f3bf ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9f0ab70 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xb9fb6cec ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xb9feea5d eeh_pe_configure +EXPORT_SYMBOL_GPL vmlinux 0xba01151c arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xba057009 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xba1077d3 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba198745 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xba1b1483 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3314ba pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xba399e1a pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xba7667f2 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xba8e86cc pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xba9a0e25 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0740fe pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb18fc70 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbb2209f2 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xbb349a9a __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xbb524912 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb67fcec md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbba77bd0 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xbbb324d6 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xbbb3d3dd devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xbbba0db5 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbe28943 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xbbfc2f1d transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xbc06c809 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xbc140edf of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc5730bd sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xbc6ac8fe ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xbc74dd63 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xbc9d3906 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xbc9dc66e sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb36e7a bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xbcb41dd4 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xbcb50515 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xbcc4ef5d tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xbccc535d ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd86899 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce6c4ed tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xbd02b1ba sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xbd16ee90 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xbd1b4ffb hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbd20a1fb rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xbd31d23f of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xbd39b222 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd51189c bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd6b313a rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xbdc09904 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde6c23e blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xbde8dc00 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xbdfcf329 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xbe119f67 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbe13c61e invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1e7e29 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xbe30b25c iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xbe471cdf opal_rtc_read +EXPORT_SYMBOL_GPL vmlinux 0xbe4a649b key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6db803 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea31129 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbef367d3 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf07ae83 iommu_add_device +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf1cfe08 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xbf28bf60 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xbf426a7d do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbf4280df __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xbf62e23f debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xbf964519 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xbf9ad91f dev_attr_link_power_management_policy +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 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc0183e91 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc045c990 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xc04b361e bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc053119f shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc0802cb2 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xc08514ee get_device +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0869cd9 eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0xc0a81d0c nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xc0a87405 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0c01933 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e26353 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xc0e9c555 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc0ff69e6 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xc117ac99 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xc15c6346 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc179b0e0 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xc1a83089 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xc1b68f93 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xc1b69521 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xc1b7621c serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xc1b8eaba class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc1d5dcd1 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xc1d9f653 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xc1e3c8e8 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2307798 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc23f0263 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xc25f1734 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc26a2882 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xc2747ece platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xc277808b unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2b849a3 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc2c05c0e iommu_take_ownership +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2c52ce1 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xc2d273c1 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xc2febe6e dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xc3082586 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xc310a4d9 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc3215497 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3895d69 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xc3979b71 copro_calculate_slb +EXPORT_SYMBOL_GPL vmlinux 0xc39c5e31 scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0xc3bb9cd8 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xc3e253cf skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xc3f71482 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xc4096213 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0xc42775a6 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43b20df find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xc44e401f unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4869bfc pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xc48742bb scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xc48950f8 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49e78ed wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4b530ea crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xc4c25fa0 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xc4e98869 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xc4f5b3a1 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xc525d966 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xc53896b7 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xc53d0f00 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc551a6fe dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc579781c power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xc58a1687 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xc59f3e78 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b22651 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc5e77a63 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xc5f34276 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xc600f872 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc627431a alarm_try_to_cancel +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 0xc679741d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc68b4d65 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xc698ce1c pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a148bc pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0xc6b44100 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xc6bbe41d rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xc6c69a8f opal_flash_write +EXPORT_SYMBOL_GPL vmlinux 0xc6d1243f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc76ab1c0 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc787369f cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7afbc5a component_del +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc828d5ee dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xc836968d dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xc86c5df4 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc875d1f8 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8cb1630 device_del +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8ebcc52 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xc900d418 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc9098b4f ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xc90c541b class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc916ead4 iommu_tce_clear_param_check +EXPORT_SYMBOL_GPL vmlinux 0xc93033b8 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc983a02f usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xc985b575 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xc9a9ca34 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9d6a6f9 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9ef7ea8 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xc9f1b9dc i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xc9f527e9 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xc9f9445c crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xca19ea84 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xca26cce4 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xca45bf9e thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca7168b7 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xca73f07d fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca826134 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xca96470e vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac48f56 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xcac8343f __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xcadd1cec ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xcae4f1a4 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xcb05c608 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb188024 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb52457a sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xcb5ee621 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xcb78ad45 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xcb8e2d3c ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcba73d40 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xcbb3c67c get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcbbf35e4 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xcbbf8593 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xcbe186d9 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbea1f70 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbee2dcf kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xcbeecc77 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc054337 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xcc0c4af5 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc13e176 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xcc1c4785 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc343484 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xcc576c14 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xcc60d724 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xcc7bc0ee scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xcc83ac2a tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccabbb93 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xccb38809 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccfa6852 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xcd0f0951 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xcd1d0762 kvm_release_hpt +EXPORT_SYMBOL_GPL vmlinux 0xcd1f867b devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xcd5ec68f __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xcd689f11 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xcd8427bc platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdb3ec5a ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbefc81 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcc44ce debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xcdd474ad alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xcde19a15 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xcde5824b mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xce06b3cc usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xce291ea4 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xce2c0b9c ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xce3cbeaa put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xce5906a5 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce8c4b33 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xce9e83bd exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef2379d alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xcf0a6a42 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xcf122b89 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xcf3a1962 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf800804 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xcf8fecca gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xcf9bb831 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xcfa0d4d7 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc66976 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd62883 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xd012ca5f kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xd014e536 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xd01afd3f opal_tpo_read +EXPORT_SYMBOL_GPL vmlinux 0xd029211e copro_flush_all_slbs +EXPORT_SYMBOL_GPL vmlinux 0xd0345c1d reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd036057e rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd059f206 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd08733f1 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xd0902560 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xd09040a4 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd0a57e7c pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0efb049 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xd1039095 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xd108acd3 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xd12e28b7 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xd14c6e7b fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17cfbda public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xd1982392 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd198be33 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd1dd363d sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xd1e68237 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2163deb stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd23101e1 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xd2647760 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2af38ff regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xd2df79b6 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd3322d40 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd333d360 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xd33c1cbb dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd364135a usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xd36e2bf0 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd3920330 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xd3b5796a devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd3c708bb raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xd3cc9202 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xd3d3aa07 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd3ee9e06 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40974bf iommu_release_ownership +EXPORT_SYMBOL_GPL vmlinux 0xd4153790 regmap_raw_read +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 0xd44b3571 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xd44b5e55 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xd473fdee pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd48b8ec8 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xd4b7b028 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xd4bb2ded rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd50379c1 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xd50cac1a reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xd51306cc crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xd52dcc0b iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xd5596d48 opal_xscom_write +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c00c12 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5c8a10e tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xd5ce951a pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xd5dbe194 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd605bda3 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd627f7a2 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xd63d630e regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xd63f4968 component_add +EXPORT_SYMBOL_GPL vmlinux 0xd641ad51 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xd65af7c6 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd689d7b1 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd6a43677 opal_async_release_token +EXPORT_SYMBOL_GPL vmlinux 0xd6a830b6 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd6ddf1dc powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xd6dff427 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd7013f25 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd721d9f5 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78053a7 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xd79ce2b5 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd7f58b25 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xd7fc3e98 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xd8049fb8 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd8342951 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xd847860e trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xd84c1a01 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xd8571c70 eeh_pe_reset +EXPORT_SYMBOL_GPL vmlinux 0xd85bdcf2 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xd85d2494 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd893da4d usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd89545bd device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd8d5100b platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd8e046ce serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xd8f4db85 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd918562e devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xd919f80f max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd93627d9 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xd939433b regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd93c22cc device_rename +EXPORT_SYMBOL_GPL vmlinux 0xd93c9bb0 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd953f01b ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xd965e137 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd97878a7 mm_iommu_preregistered +EXPORT_SYMBOL_GPL vmlinux 0xd986b4f9 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd98b00a3 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd9b891ed generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xd9b8e6c5 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xd9bc648e pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd9d715ec scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xd9e7e092 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda07b68f pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xda1c8068 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xda1fdd4e sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xda2a529b crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xda2f27a4 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xda322b42 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xda50685d dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xda57837a ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xda592a70 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xda6502f4 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xda966d05 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xdaa140b1 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xdaab4e00 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xdab33c4d sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xdae4938a filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaeb45fe bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb1ef0ca nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xdb22aecc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xdb431b0c devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xdb469d61 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xdb47514e crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xdb55af3b pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xdb6024f9 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xdb7c4ca9 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba376bd wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xdbd821d4 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc27d944 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdc33a1aa usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xdc501c5d iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xdc6f4099 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc86f7c5 scsi_ioctl_block_when_processing_errors +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 0xdcade66d device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xdcf99c9f sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xdd0f5618 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1d7760 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3ea9dd free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xdd3f3b41 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xdd442a51 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xdd4ba644 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xdd4eaf89 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd58ca50 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xdd6d7c3d crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd87df46 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xdd93ba26 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xdd9faf0f ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xddae227b blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc3db5c inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xddce49be usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde57285 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xde341fa0 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xde5d5b15 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xde6046d5 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde6d1ce8 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xde727afc crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xde7ec5f3 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xde8ac368 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0xde9f6f87 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xdea414a9 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xdeb2fcfb register_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0xdebe41b3 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xded018f7 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xdef6fbda dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf013a96 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdf016a7d pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf24e24d of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xdf51a07d disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xdf7bda9a transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xdf867a7a dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xdf8e775a rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xdf928c92 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xdfb7ca3d of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe01b24 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xe000d0fb tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe030a264 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe039fc07 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe04f176c inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xe0549ecf crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xe0619444 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09387c1 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xe0a55690 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xe0b3df98 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xe0b8f9c1 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe0bf773e mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xe0ee29cf thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe0f42a49 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe0ff78a7 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xe159402a crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xe15da8aa of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xe17346a7 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe176802b attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe18b4d8b eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0xe1a49275 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1d5995d crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xe1de9b49 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xe22a0282 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xe22cf8c2 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe23b6342 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xe2488c36 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe248a2e0 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xe26608f8 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xe28151ab regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29287e8 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xe29785d7 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xe29c1ed7 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xe2a4489c cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe2b956be verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xe2c2326b skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xe2d402a8 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xe2e2ad98 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xe2fc77eb thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe304c664 phy_create +EXPORT_SYMBOL_GPL vmlinux 0xe32af286 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xe349a2ba device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xe34b59fd ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe3641f16 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xe36a9b02 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xe36c16ae input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xe3708872 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xe37f4039 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xe380e330 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3b79b8d gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xe3bdbca9 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xe3c1db9f proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3e7a476 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xe3eb60e3 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xe4174d5a rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe4195373 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4376a81 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xe44213d7 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe44d2923 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe465b88c ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe47c99e4 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xe4881f42 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4aabe67 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe4bc1fd0 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c73f6d pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xe4cc917b __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xe4dd7e13 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe4ef2305 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xe5023ba5 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xe50363b3 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xe5129f4f get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe534efe1 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0xe539cf01 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xe5413eff blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe562181c crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5ac8a77 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe5def859 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xe60473a6 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xe61a7a20 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xe61b7701 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6867047 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe68a37bb ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe6b78071 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6cd0152 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xe6dd1261 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe703bc1d posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7905d08 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xe7bfa92e fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f33091 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xe7f66bc0 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83a9fa0 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xe841ef33 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85392d4 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xe8560450 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87ba3da phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe8823a47 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xe88d1cf5 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xe8902c67 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8de9ac2 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xe8df4747 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xe8ead2a1 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xe91d0652 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9506579 iommu_tce_direction +EXPORT_SYMBOL_GPL vmlinux 0xe992d5b7 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xe9bb8414 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xe9c9ff27 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xe9cb9498 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea156a35 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xea1a5cbe pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea61f8fb i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea97098d ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xeaca5c25 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xeae70615 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xeafa22e5 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xeafa5e0c regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xeb1552fe shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xeb17299b led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xeb29c6fa crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb39f492 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xeb3b8364 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xeb3e57f0 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xeb4c83dc gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xeb55bf33 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xeb6ffbfb __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb858b3a blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb96397a ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xebd2a6b7 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf03a7a ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xec0d2743 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2b0491 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xec3b51e4 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec8ce5bd kvmppc_add_revmap_chain +EXPORT_SYMBOL_GPL vmlinux 0xecb91556 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xecb9d1f8 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xecbca6b8 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xecc0ea82 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xecd97c05 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xed03de09 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xed2009af __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xed21c936 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xed24ee8e blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xed6e7026 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xed9f06dd devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xedad830f ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xedc0987a tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xedc86987 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xeddbd14d rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xee4d01e2 crypto_aes_set_key +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 0xeeac2ac5 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xeedfdaf8 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xeee3b568 get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0xeeef6919 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xef1462ba xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xef1c702c blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xef269aae device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xef423928 user_update +EXPORT_SYMBOL_GPL vmlinux 0xef45f056 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xef4fd145 remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xef51f9d9 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef628d3b __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xef6541a7 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef71e3c5 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef939c2f of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xef997643 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb5f9ce tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xefbf9977 device_create +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf02e856d dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04ebc65 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf0549459 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xf0703d38 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07f8451 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xf0ca1bd0 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xf0cabd31 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xf0d2edd8 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf0d4894e driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf108e4b0 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xf11d523a fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xf154b23f __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1ba4d5f vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xf1d0d1b4 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf21c7b2c wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22204ba crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf2388195 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xf23c9acd devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf267f2c7 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf29c0d5e wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf29d0388 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xf2ac88fb pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xf2ae9092 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xf2b24a84 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf2b70093 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xf2b72c58 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f62507 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xf2f9e084 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf300a9e8 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf307aa1f regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31ea6ec scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34012fd usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf3448c2c kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xf34684ff rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xf3522052 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xf35da3c5 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf36afb25 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf36ed389 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf39cc838 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b61c85 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d81240 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf41c1e8b watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xf438927a simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf43a03c7 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf43ee3eb sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf46f30b1 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a8ea16 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xf4b10978 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xf4c36bc5 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xf4d5dddd of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf4e1538e mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf4e70735 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xf4f65818 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf52016fd __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xf528116d cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf5514bff __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55b8e14 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf5823431 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xf58ecfec fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xf5931e35 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xf59ec501 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5af20f8 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf5b1d211 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xf5e0937e __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xf5e1d925 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf5ef6f9b __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xf5f7524d power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xf6117270 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xf620e0ec led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf621b413 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xf66552da regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xf66b9823 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xf67705d0 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6ccdd6c ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xf6d27832 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f5a395 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xf701d8ec crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xf74276ea fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf7581620 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xf75c4b4e md_stop +EXPORT_SYMBOL_GPL vmlinux 0xf75d5351 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf760fb31 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xf76531fb virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xf7892bbf wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf7925a66 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7a480a7 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xf7a62087 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xf7b19e42 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf7b3aa12 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf7bbd93c ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf7c6d172 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf7e8e5d3 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf827f5fb ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xf82ac8c9 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf836b8f7 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf857e6d6 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8a507e3 devm_phy_put +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 0xf902e843 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xf90e311c power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf934f606 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xf941e2e0 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf94848c8 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf98eaba0 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c0b6d9 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xfa176240 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa52ea6f rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xfa6d06a8 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xfa74297a dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xfa7450a1 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xfa817d97 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xfa885360 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9c509d rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xfaad778a ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xfab5fd89 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfad39a05 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xfaed9af0 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xfaf54228 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xfaf8ba7f ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xfb19ac58 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb44a7a1 opal_ipmi_recv +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb879579 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfb89d930 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc3c15a gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xfbd1bc5a raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xfbd3a24d opal_message_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc323094 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xfc334ce6 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc3fb3e0 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xfc466299 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xfc641029 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xfca10602 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xfca44dd4 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdc1f9a usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xfd1f26cc __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xfd56a0f1 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xfd62cdb7 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xfd657783 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfdb3620b virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xfddd285f mm_iommu_ua_to_hpa +EXPORT_SYMBOL_GPL vmlinux 0xfe0099a9 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0xfe0945d8 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe3bdf5e tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xfe3c8144 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe5b7f9a ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xfe73ad8c sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xfe7d6746 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xfe81b3b2 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xfe83b3c5 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xfe8fb3a4 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfebc837b ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed4c4ac tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xfedbffd1 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xfedecc62 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xfedeeaec __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff732174 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xffc41779 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xffc50483 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xffef3bbb sata_sff_hardreset --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-35.40/ppc64el/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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-35.40/ppc64el/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-35.40/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,18306 @@ +linux (4.2.0-36.41) wily; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1571667 + + [ Benjamin Tissoires ] + + * SAUCE: Input: synaptics - handle spurious release of trackstick + buttons, again + - LP: #1553811 + + [ dann frazier ] + + * Revert "SAUCE: arm64, numa, dt: adding dt based numa support using dt + node property arm, associativity" + - LP: #1558828 + * Revert "SAUCE: Documentation: arm64/arm: dt bindings for numa." + - LP: #1558828 + * Revert "SAUCE: arm64, numa: adding numa support for arm64 platforms." + - LP: #1558828 + * Revert "[Config] Enable NUMA on ARM64" + - LP: #1558828 + + [ K. Y. Srinivasan ] + + * SAUCE: (noup): Drivers: hv: vmbus: Fix a bug in + hv_need_to_signal_on_read() + - LP: #1556264 + + [ Kamal Mostafa ] + + * [debian] BugLink: close LP: bugs only for Launchpad urls + * [Config] updateconfigs after v4.2.8-ckt7 + + [ Upstream Kernel Changes ] + + * Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin" + - LP: #1561677 + * tipc: fix connection abort during subscription cancel + - LP: #1561677 + * tipc: fix nullptr crash during subscription cancel + - LP: #1561677 + * s390/mm: four page table levels vs. fork + - LP: #1561677 + * Input: aiptek - fix crash on detecting device without endpoints + - LP: #1561677 + * wext: fix message delay/ordering + - LP: #1561677 + * cfg80211/wext: fix message ordering + - LP: #1561677 + * mac80211: fix use of uninitialised values in RX aggregation + - LP: #1561677 + * mac80211: minstrel: Change expected throughput unit back to Kbps + - LP: #1561677 + * libata: fix HDIO_GET_32BIT ioctl + - LP: #1561677 + * iwlwifi: mvm: inc pending frames counter also when txing non-sta + - LP: #1561677 + * [media] adv7604: fix tx 5v detect regression + - LP: #1561677 + * ahci: add new Intel device IDs + - LP: #1561677 + * ahci: Order SATA device IDs for codename Lewisburg + - LP: #1561677 + * Adding Intel Lewisburg device IDs for SATA + - LP: #1561677 + * ASoC: samsung: Use IRQ safe spin lock calls + - LP: #1561677 + * mac80211: minstrel_ht: set default tx aggregation timeout to 0 + - LP: #1561677 + * usb: chipidea: otg: change workqueue ci_otg as freezable + - LP: #1561677 + * jffs2: Fix page lock / f->sem deadlock + - LP: #1561677 + * Fix directory hardlinks from deleted directories + - LP: #1561677 + * iommu/amd: Fix boot warning when device 00:00.0 is not iommu covered + - LP: #1561677 + * iommu/amd: Apply workaround for ATS write permission check + - LP: #1561677 + * libata: Align ata_device's id on a cacheline + - LP: #1561677 + * can: gs_usb: fixed disconnect bug by removing erroneous use of kfree() + - LP: #1561677 + * fbcon: set a default value to blink interval + - LP: #1561677 + * KVM: x86: fix root cause for missed hardware breakpoints + - LP: #1561677 + * arm64: vmemmap: use virtual projection of linear region + - LP: #1561677 + * vfio: fix ioctl error handling + - LP: #1561677 + * ALSA: ctl: Fix ioctls for X32 ABI + - LP: #1561677 + * ALSA: pcm: Fix ioctls for X32 ABI + - LP: #1561677 + * ALSA: rawmidi: Fix ioctls X32 ABI + - LP: #1561677 + * ALSA: timer: Fix broken compat timer user status ioctl + - LP: #1561677 + * ALSA: timer: Fix ioctls for X32 ABI + - LP: #1561677 + * cifs: fix out-of-bounds access in lease parsing + - LP: #1561677 + * CIFS: Fix SMB2+ interim response processing for read requests + - LP: #1561677 + * Fix cifs_uniqueid_to_ino_t() function for s390x + - LP: #1561677 + * arm/arm64: KVM: Fix ioctl error handling + - LP: #1561677 + * MIPS: kvm: Fix ioctl error handling. + - LP: #1561677 + * ALSA: hdspm: Fix wrong boolean ctl value accesses + - LP: #1561677 + * ALSA: hdspm: Fix zero-division + - LP: #1561677 + * ALSA: hdsp: Fix wrong boolean ctl value accesses + - LP: #1561677 + * use ->d_seq to get coherency between ->d_inode and ->d_flags + - LP: #1561677 + * USB: qcserial: add Dell Wireless 5809e Gobi 4G HSPA+ (rev3) + - LP: #1561677 + * USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder + - LP: #1561677 + * ASoC: dapm: Fix ctl value accesses in a wrong type + - LP: #1561677 + * ASoC: wm8958: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * ASoC: wm8994: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * ASoC: wm_adsp: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * USB: serial: option: add support for Telit LE922 PID 0x1045 + - LP: #1561677 + * USB: serial: option: add support for Quectel UC20 + - LP: #1561677 + * ALSA: usb-audio: Add a quirk for Plantronics DA45 + - LP: #1561677 + * mac80211: check PN correctly for GCMP-encrypted fragmented MPDUs + - LP: #1561677 + * mac80211: Fix Public Action frame RX in AP mode + - LP: #1561677 + * i2c: brcmstb: allocate correct amount of memory for regmap + - LP: #1561677 + * ALSA: seq: oss: Don't drain at closing a client + - LP: #1561677 + * parisc: Fix ptrace syscall number and return value modification + - LP: #1561677 + * drm/ast: Fix incorrect register check for DRAM width + - LP: #1561677 + * USB: qcserial: add Sierra Wireless EM74xx device ID + - LP: #1561677 + * drm/amdgpu/pm: update current crtc info after setting the powerstate + - LP: #1561677 + * drm/radeon/pm: update current crtc info after setting the powerstate + - LP: #1561677 + * drm/amdgpu: return from atombios_dp_get_dpcd only when error + - LP: #1561677 + * PM / sleep / x86: Fix crash on graph trace through x86 suspend + - LP: #1561677 + * ALSA: hda - Fix mic issues on Acer Aspire E1-472 + - LP: #1561677 + * ovl: fix working on distributed fs as lower layer + - LP: #1561677 + * ovl: fix getcwd() failure after unsuccessful rmdir + - LP: #1561677 + * ovl: ignore lower entries when checking purity of non-directory entries + - LP: #1561677 + * MIPS: traps: Fix SIGFPE information leak from `do_ov' and + `do_trap_or_bp' + - LP: #1561677 + * ubi: Fix out of bounds write in volume update code + - LP: #1561677 + * target: Drop incorrect ABORT_TASK put for completed commands + - LP: #1561677 + * ARM: OMAP2+: hwmod: Introduce ti,no-idle dt property + - LP: #1561677 + * ARM: dts: dra7: do not gate cpsw clock due to errata i877 + - LP: #1561677 + * PCI: Allow a NULL "parent" pointer in pci_bus_assign_domain_nr() + - LP: #1561677 + * KVM: PPC: Book3S HV: Sanitize special-purpose register values on guest + exit + - LP: #1561677 + * ncpfs: fix a braino in OOM handling in ncp_fill_cache() + - LP: #1561677 + * jffs2: reduce the breakage on recovery from halfway failed rename() + - LP: #1561677 + * KVM: VMX: disable PEBS before a guest entry + - LP: #1561677 + * arm64: account for sparsemem section alignment when choosing vmemmap + offset + - LP: #1561677 + * tracing: Fix check for cpu online when event is disabled + - LP: #1561677 + * KVM: MMU: fix ept=0/pte.u=1/pte.w=0/CR0.WP=0/CR4.SMEP=1/EFER.NX=0 combo + - LP: #1561677 + * dmaengine: at_xdmac: fix residue computation + - LP: #1561677 + * MIPS: Fix build error when SMP is used without GIC + - LP: #1561677 + * IB/core: Use GRH when the path hop-limit > 0 + - LP: #1561677 + * dmaengine: pxa_dma: fix cyclic transfers + - LP: #1561677 + * MIPS: smp.c: Fix uninitialised temp_foreign_map + - LP: #1561677 + * tcp: fix tcpi_segs_in after connection establishment + - LP: #1561677 + * be2net: Don't leak iomapped memory on removal. + - LP: #1561677 + * tcp: convert cached rtt from usec to jiffies when feeding initial rto + - LP: #1561677 + * ext4: iterate over buffer heads correctly in move_extent_per_page() + - LP: #1561677 + * ppp: release rtnl mutex when interface creation fails + - LP: #1561677 + * net/mlx4_core: Allow resetting VF admin mac to zero + - LP: #1561677 + * ipv6: re-enable fragment header matching in ipv6_find_hdr + - LP: #1561677 + * net/mlx5e: Remove wrong poll CQ optimization + - LP: #1561677 + * cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind + - LP: #1561677 + * net: qca_spi: Don't clear IFF_BROADCAST + - LP: #1561677 + * net: moxa: fix an error code + - LP: #1561677 + * mld, igmp: Fix reserved tailroom calculation + - LP: #1561677 + * Linux 4.2.8-ckt6 + - LP: #1561677 + * (upstream) net/mlx5e: Avoid NULL pointer access in case of + configuration failure + - LP: #1528466 + * PCI: Disable IO/MEM decoding for devices with non-compliant BARs + - LP: #1559929 + * x86/PCI: Mark Broadwell-EP Home Agent & PCU as having non-compliant + BARs + - LP: #1559929 + * fuse: do not use iocb after it may have been freed + - LP: #1505948 + * fuse: Add reference counting for fuse_io_priv + - LP: #1505948 + * intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled + - LP: #1559918 + * crypto: skcipher - Add crypto_skcipher_has_setkey + - LP: #1556562 + * crypto: algif_skcipher - Add key check exception for cipher_null + - LP: #1556562 + * crypto: algif_skcipher - Do not assume that req is unchanged + - LP: #1556562 + * crypto: algif_skcipher - Do not dereference ctx without socket lock + - LP: #1556562 + * proc: revert /proc//maps [stack:TID] annotation + - LP: #1547231 + * ACPI / processor: Request native thermal interrupt handling via _OSC + - LP: #1559923 + * gpiolib: do not allow to insert an empty gpiochip + - LP: #1566544 + * gpio: add a data pointer to gpio_chip + - LP: #1566544 + * gpio: rcar: Add Runtime PM handling for interrupts + - LP: #1566544 + * ipv4: Don't do expensive useless work during inetdev destroy. + - LP: #1566544 + * Input: powermate - fix oops with malicious USB descriptors + - LP: #1566544 + * USB: iowarrior: fix oops with malicious USB descriptors + - LP: #1566544 + * ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk() + - LP: #1566544 + * ALSA: usb-audio: Add sanity checks for endpoint accesses + - LP: #1566544 + * include/linux/poison.h: fix LIST_POISON{1,2} offset + - LP: #1566544 + * Input: ati_remote2 - fix crashes on detecting device with invalid + descriptor + - LP: #1566544 + * USB: cdc-acm: more sanity checking + - LP: #1566544 + * drm/i915: Workaround CHV pipe C cursor fail + - LP: #1566544 + * EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr() + - LP: #1566544 + * crypto: ccp - Add hash state import and export support + - LP: #1566544 + * clk: rockchip: add pclk_cpu to the list of rk3188 critical clocks + - LP: #1566544 + * clk: rockchip: Add pclk_peri to critical clocks on RK3066/RK3188 + - LP: #1566544 + * clk: rockchip: add hclk_cpubus to the list of rk3188 critical clocks + - LP: #1566544 + * tty: Fix GPF in flush_to_ldisc(), part 2 + - LP: #1566544 + * media: v4l2-compat-ioctl32: fix missing length copy in + put_v4l2_buffer32 + - LP: #1566544 + * pwc: Add USB id for Philips Spc880nc webcam + - LP: #1566544 + * crypto: ccp - Limit the amount of information exported + - LP: #1566544 + * crypto: ccp - Don't assume export/import areas are aligned + - LP: #1566544 + * 8250: use callbacks to access UART_DLL/UART_DLM + - LP: #1566544 + * net: irda: Fix use-after-free in irtty_open() + - LP: #1566544 + * mei: bus: check if the device is enabled before data transfer + - LP: #1566544 + * staging: comedi: ni_tiocmd: change mistaken use of start_src for + start_arg + - LP: #1566544 + * tools/hv: Use include/uapi with __EXPORTED_HEADERS__ + - LP: #1566544 + * tpm: fix the rollback in tpm_chip_register() + - LP: #1566544 + * tpm: fix the cleanup of struct tpm_chip + - LP: #1566544 + * ARM: dts: armada-375: use armada-370-sata for SATA + - LP: #1566544 + * usb: retry reset if a device times out + - LP: #1566544 + * HID: fix hid_ignore_special_drivers module parameter + - LP: #1566544 + * scripts/coccinelle: modernize & + - LP: #1566544 + * adv7511: TX_EDID_PRESENT is still 1 after a disconnect + - LP: #1566544 + * saa7134: Fix bytesperline not being set correctly for planar formats + - LP: #1566544 + * tpm_crb: tpm2_shutdown() must be called before tpm_chip_unregister() + - LP: #1566544 + * perf tools: Dont stop PMU parsing on alias parse error + - LP: #1566544 + * Bluetooth: btusb: Add new AR3012 ID 13d3:3395 + - LP: #1542564, #1566544 + * Bluetooth: Add new AR3012 ID 0489:e095 + - LP: #1542944, #1566544 + * aacraid: Fix RRQ overload + - LP: #1566544 + * aacraid: Fix memory leak in aac_fib_map_free + - LP: #1566544 + * aic7xxx: Fix queue depth handling + - LP: #1566544 + * mtd: onenand: fix deadlock in onenand_block_markbad + - LP: #1566544 + * md/raid5: Compare apples to apples (or sectors to sectors) + - LP: #1566544 + * RAID5: check_reshape() shouldn't call mddev_suspend + - LP: #1566544 + * RAID5: revert e9e4c377e2f563 to fix a livelock + - LP: #1566544 + * crypto: ccp - memset request context to zero during import + - LP: #1566544 + * Bluetooth: btusb: Add a new AR3012 ID 04ca:3014 + - LP: #1546694, #1566544 + * mmc: sdhci: fix data timeout (part 1) + - LP: #1566544 + * mmc: sdhci: fix data timeout (part 2) + - LP: #1566544 + * perf tools: Fix python extension build + - LP: #1566544 + * IB/srpt: Simplify srpt_handle_tsk_mgmt() + - LP: #1566544 + * bttv: Width must be a multiple of 16 when capturing planar formats + - LP: #1566544 + * watchdog: rc32434_wdt: fix ioctl error handling + - LP: #1566544 + * nfsd4: fix bad bounds checking + - LP: #1566544 + * xfs: fix two memory leaks in xfs_attr_list.c error paths + - LP: #1566544 + * quota: Fix possible GPF due to uninitialised pointers + - LP: #1566544 + * mtip32xx: Fix broken service thread handling + - LP: #1566544 + * mtip32xx: Remove unwanted code from taskfile error handler + - LP: #1566544 + * mtip32xx: Print exact time when an internal command is interrupted + - LP: #1566544 + * mtip32xx: Avoid issuing standby immediate cmd during FTL rebuild + - LP: #1566544 + * mtip32xx: Fix for rmmod crash when drive is in FTL rebuild + - LP: #1566544 + * mtip32xx: Handle safe removal during IO + - LP: #1566544 + * mtip32xx: Handle FTL rebuild failure state during device initialization + - LP: #1566544 + * of: alloc anywhere from memblock if range not specified + - LP: #1566544 + * usb: hub: fix a typo in hub_port_init() leading to wrong logic + - LP: #1566544 + * KVM: i8254: change PIT discard tick policy + - LP: #1566544 + * sched/cputime: Fix steal time accounting vs. CPU hotplug + - LP: #1566544 + * libnvdimm: Fix security issue with DSM IOCTL. + - LP: #1566544 + * rt2x00: add new rt2800usb device Buffalo WLI-UC-G450 + - LP: #1566544 + * pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing + - LP: #1566544 + * perf/core: Fix perf_sched_count derailment + - LP: #1566544 + * perf/x86/intel: Use PAGE_SIZE for PEBS buffer size on Core2 + - LP: #1566544 + * perf/x86/intel: Fix PEBS warning by only restoring active PMU in pmi + - LP: #1566544 + * sched/cputime: Fix steal_account_process_tick() to always return + jiffies + - LP: #1566544 + * bcache: fix race of writeback thread starting before complete + initialization + - LP: #1566544 + * bcache: cleaned up error handling around register_cache() + - LP: #1566544 + * bcache: fix cache_set_flush() NULL pointer dereference on OOM + - LP: #1566544 + * be2iscsi: set the boot_kset pointer to NULL in case of failure + - LP: #1566544 + * md/raid5: preserve STRIPE_PREREAD_ACTIVE in break_stripe_batch_list + - LP: #1566544 + * drm/radeon: Don't drop DP 2.7 Ghz link setup on some cards. + - LP: #1566544 + * sg: fix dxferp in from_to case + - LP: #1566544 + * jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount + path + - LP: #1566544 + * ALSA: hda - Apply reboot D3 fix for CX20724 codec, too + - LP: #1566544 + * EDAC/sb_edac: Fix computation of channel address + - LP: #1566544 + * Bluetooth: btusb: Add a new AR3012 ID 13d3:3472 + - LP: #1552925, #1566544 + * ALSA: pcm: Avoid "BUG:" string for warnings again + - LP: #1566544 + * dm snapshot: disallow the COW and origin devices from being identical + - LP: #1566544 + * dm thin metadata: don't issue prefetches if a transaction abort has + failed + - LP: #1566544 + * dm cache: make sure every metadata function checks fail_io + - LP: #1566544 + * iser-target: Fix identification of login rx descriptor type + - LP: #1566544 + * iser-target: Add new state ISER_CONN_BOUND to isert_conn + - LP: #1566544 + * iser-target: Separate flows for np listeners and connections cma events + - LP: #1566544 + * ALSA: hda - fix the mic mute button and led problem for a Lenovo AIO + - LP: #1555912, #1566544 + * xtensa: ISS: don't hang if stdin EOF is reached + - LP: #1566544 + * xtensa: fix preemption in {clear,copy}_user_highpage + - LP: #1566544 + * xtensa: clear all DBREAKC registers on start + - LP: #1566544 + * Bluetooth: Fix potential buffer overflow with Add Advertising + - LP: #1566544 + * ARC: [BE] readl()/writel() to work in Big Endian CPU configuration + - LP: #1566544 + * bus: imx-weim: Take the 'status' property value into account + - LP: #1566544 + * ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41. + - LP: #1566544 + * s390/pci: enforce fmb page boundary rule + - LP: #1566544 + * drm/radeon: rework fbdev handling on chips with no connectors + - LP: #1566544 + * md: multipath: don't hardcopy bio in .make_request path + - LP: #1566544 + * net: mvneta: enable change MAC address when interface is up + - LP: #1566544 + * dm: fix rq_end_stats() NULL pointer in dm_requeue_original_request() + - LP: #1566544 + * HID: i2c-hid: fix OOB write in i2c_hid_set_or_send_report() + - LP: #1566544 + * ALSA: hda - Fix unconditional GPIO toggle via automute + - LP: #1566544 + * mmc: mmc_spi: Add Card Detect comments and fix CD GPIO case + - LP: #1566544 + * nfsd: fix deadlock secinfo+readdir compound + - LP: #1566544 + * vfs: show_vfsstat: do not ignore errors from show_devname method + - LP: #1566544 + * x86/iopl: Fix iopl capability check on Xen PV + - LP: #1566544 + * crypto: marvell/cesa - forward devm_ioremap_resource() error code + - LP: #1566544 + * mmc: sdhci: Fix override of timeout clk wrt max_busy_timeout + - LP: #1566544 + * drm/amdgpu: include the right version of gmc header files for iceland + - LP: #1566544 + * Input: ims-pcu - sanity check against missing interfaces + - LP: #1566544 + * watchdog: don't run proc_watchdog_update if new value is same as old + - LP: #1566544 + * mm: memcontrol: reclaim when shrinking memory.high below usage + - LP: #1566544 + * mm: memcontrol: reclaim and OOM kill when shrinking memory.max below + usage + - LP: #1566544 + * x86/apic: Fix suspicious RCU usage in + smp_trace_call_function_interrupt() + - LP: #1566544 + * USB: usb_driver_claim_interface: add sanity checking + - LP: #1566544 + * USB: uas: Reduce can_queue to MAX_CMNDS + - LP: #1566544 + * tracing: Have preempt(irqs)off trace preempt disabled functions + - LP: #1566544 + * tracing: Fix crash from reading trace_pipe with sendfile + - LP: #1566544 + * splice: handle zero nr_pages in splice_to_pipe() + - LP: #1566544 + * ALSA: usb-audio: add Microsoft HD-5001 to quirks + - LP: #1566544 + * writeback, cgroup: fix premature wb_put() in + locked_inode_to_wb_and_lock_list() + - LP: #1566544 + * fs-writeback: unplug before cond_resched in writeback_sb_inodes + - LP: #1566544 + * writeback, cgroup: fix use of the wrong bdi_writeback which mismatches + the inode + - LP: #1566544 + * bitops: Do not default to __clear_bit() for __clear_bit_unlock() + - LP: #1566544 + * target: Fix target_release_cmd_kref shutdown comp leak + - LP: #1566544 + * KVM: VMX: avoid guest hang on invalid invept instruction + - LP: #1566544 + * KVM: fix spin_lock_init order on x86 + - LP: #1566544 + * tracing: Fix trace_printk() to print when not using bprintk() + - LP: #1566544 + * fs/coredump: prevent fsuid=0 dumps into user-controlled directories + - LP: #1566544 + * rapidio/rionet: fix deadlock on SMP + - LP: #1566544 + * staging: comedi: ni_mio_common: fix the ni_write[blw]() functions + - LP: #1566544 + * staging: android: ion_test: fix check of + platform_device_register_simple() error code + - LP: #1566544 + * ideapad-laptop: Add ideapad Y700 (15) to the no_hw_rfkill DMI list + - LP: #1566544 + * MAINTAINERS: Update mailing list and web page for hwmon subsystem + - LP: #1566544 + * ocfs2/dlm: fix race between convert and recovery + - LP: #1566544 + * ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list + - LP: #1566544 + * mm/page_alloc: prevent merging between isolated and other pageblocks + - LP: #1566544 + * mac80211: avoid excessive stack usage in sta_info + - LP: #1566544 + * clk: xgene: Add missing parenthesis when clearing divider value + - LP: #1566544 + * clk: qcom: msm8960: Fix ce3_src register offset + - LP: #1566544 + * xen kconfig: don't "select INPUT_XEN_KBDDEV_FRONTEND" + - LP: #1566544 + * ppp: take reference on channels netns + - LP: #1566544 + * mdio-sun4i: oops in error handling in probe + - LP: #1566544 + * clk: rockchip: free memory in error cases when registering clock + branches + - LP: #1566544 + * ARC: bitops: Remove non relevant comments + - LP: #1566544 + * mac80211: fix txq queue related crashes + - LP: #1566544 + * net: Fix use after free in the recvmmsg exit path + - LP: #1566544 + * ath9k: fix misleading indentation + - LP: #1566544 + * sctp: fix the transports round robin issue when init is retransmitted + - LP: #1566544 + * ethernet: micrel: fix some error codes + - LP: #1566544 + * megaraid_sas: add missing curly braces in ioctl handler + - LP: #1566544 + * clk-divider: make sure read-only dividers do not write to their + register + - LP: #1566544 + * misc/bmp085: Enable building as a module + - LP: #1566544 + * HID: logitech: fix Dual Action gamepad support + - LP: #1566544 + * net/mlx5: Make command timeout way shorter + - LP: #1566544 + * ASoC: ssm4567: Reset device before regcache_sync() + - LP: #1566544 + * fbdev: da8xx-fb: fix videomodes of lcd panels + - LP: #1566544 + * clk: qcom: msm8960: fix ce3_core clk enable register + - LP: #1566544 + * ipvs: correct initial offset of Call-ID header search in SIP + persistence engine + - LP: #1566544 + * drm/i915: Cleanup phys status page too + - LP: #1566544 + * ata: ahci_xgene: dereferencing uninitialized pointer in probe + - LP: #1566544 + * ath9k: fix buffer overrun for ar9287 + - LP: #1566544 + * perf tools: handle spaces in file names obtained from /proc/pid/maps + - LP: #1566544 + * rtc: ds1685: passing bogus values to irq_restore + - LP: #1566544 + * ARM: davinci: make I2C support optional + - LP: #1566544 + * drm/amdkfd: uninitialized variable in + dbgdev_wave_control_set_registers() + - LP: #1566544 + * mtd: map: fix .set_vpp() documentation + - LP: #1566544 + * ARM: OMAP3: Add cpuidle parameters table for omap3430 + - LP: #1566544 + * efi: Expose non-blocking set_variable() wrapper to efivars + - LP: #1566544 + * rtc: vr41xx: Wire up alarm_irq_enable + - LP: #1566544 + * sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a + race + - LP: #1566544 + * ipv4: fix broadcast packets reception + - LP: #1566544 + * lpfc: fix misleading indentation + - LP: #1566544 + * sched/preempt, sh: kmap_coherent relies on disabled preemption + - LP: #1566544 + * ipip: Properly mark ipip GRO packets as encapsulated. + - LP: #1566544 + * spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs + - LP: #1566544 + * ASoC: s3c24xx: use const snd_soc_component_driver pointer + - LP: #1566544 + * mlx4: add missing braces in verify_qp_parameters + - LP: #1566544 + * clk: meson: Fix meson_clk_register_clks() signature type mismatch + - LP: #1566544 + * coda: fix error path in case of missing pdata on non-DT platform + - LP: #1566544 + * kbuild/mkspec: fix grub2 installkernel issue + - LP: #1566544 + * bpf: avoid copying junk bytes in bpf_get_current_comm() + - LP: #1566544 + * mac80211: fix unnecessary frame drops in mesh fwding + - LP: #1566544 + * mtd: brcmnand: Fix v7.1 register offsets + - LP: #1566544 + * mac80211: fix ibss scan parameters + - LP: #1566544 + * at803x: fix reset handling + - LP: #1566544 + * rtc: hym8563: fix invalid year calculation + - LP: #1566544 + * perf pmu: Fix misleadingly indented assignment (whitespace) + - LP: #1566544 + * paride: make 'verbose' parameter an 'int' again + - LP: #1566544 + * regulator: s5m8767: fix get_register() error handling + - LP: #1566544 + * ppp: ensure file->private_data can't be overridden + - LP: #1566544 + * clk: versatile: sp810: support reentrance + - LP: #1566544 + * net: add description for len argument of dev_get_phys_port_name + - LP: #1566544 + * net: bcmgenet: fix dma api length mismatch + - LP: #1566544 + * ARM: prima2: always enable reset controller + - LP: #1566544 + * drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors + - LP: #1566544 + * perf stat: Document --detailed option + - LP: #1566544 + * v4l: vsp1: Set the SRU CTRL0 register when starting the stream + - LP: #1566544 + * ipvs: drop first packet to redirect conntrack + - LP: #1566544 + * rtc: max77686: Properly handle regmap_irq_get_virq() error code + - LP: #1566544 + * x86/iopl/64: Properly context-switch IOPL on Xen PV + - LP: #1566544 + * Linux 4.2.8-ckt7 + - LP: #1566544 + * PKCS#7: pkcs7_validate_trust(): initialize the _trusted output argument + - LP: #1571027 + * ALSA: hda - Asus N750JV external subwoofer fixup + - LP: #1571027 + * ALSA: hda - Fix white noise on Asus N750JV headphone + - LP: #1571027 + * ALSA: hda - Apply fix for white noise on Asus N550JV, too + - LP: #1571027 + * drm/radeon: add a dpm quirk for sapphire Dual-X R7 370 2G D5 + - LP: #1571027 + * fs: add file_dentry() + - LP: #1571027 + * nfs: use file_dentry() + - LP: #1571027 + * hwmon: (max1111) Return -ENODEV from max1111_read_channel if not + instantiated + - LP: #1571027 + * drm/radeon: add another R7 370 quirk + - LP: #1571027 + * drm/radeon: add a dpm quirk for all R7 370 parts + - LP: #1571027 + * powerpc/mm: Fixup preempt underflow with huge pages + - LP: #1571027 + * pinctrl: pistachio: fix mfio84-89 function description and pinmux. + - LP: #1571027 + * pinctrl: sunxi: Fix A33 external interrupts not working + - LP: #1571027 + * usb: renesas_usbhs: avoid NULL pointer derefernce in + usbhsf_pkt_handler() + - LP: #1571027 + * usb: renesas_usbhs: disable TX IRQ before starting TX DMAC transfer + - LP: #1571027 + * btrfs: fix crash/invalid memory access on fsync when using overlayfs + - LP: #1571027 + * ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk() + - LP: #1571027 + * ALSA: usb-audio: Fix double-free in error paths after + snd_usb_add_audio_stream() call + - LP: #1571027 + * USB: mct_u232: add sanity checking in probe + - LP: #1571027 + - CVE-2016-3136 + * USB: cypress_m8: add endpoint sanity check + - LP: #1571027 + - CVE-2016-3137 + * USB: digi_acceleport: do sanity checking for the number of ports + - LP: #1571027 + * [media] au0828: fix au0828_v4l2_close() dev_state race condition + - LP: #1571027 + * [media] au0828: Fix dev_state handling + - LP: #1571027 + * sd: Fix excessive capacity printing on devices with blocks bigger than + 512 bytes + - LP: #1571027 + * drm/dp: move hw_mutex up the call stack + - LP: #1571027 + * drm/udl: Use unlocked gem unreferencing + - LP: #1571027 + * ext4: add lockdep annotations for i_data_sem + - LP: #1571027 + * ALSA: hda - fix front mic problem for a HP desktop + - LP: #1564712, #1571027 + * KVM: x86: Inject pending interrupt even if pending nmi exist + - LP: #1571027 + * ALSA: timer: Use mod_timer() for rearming the system timer + - LP: #1571027 + * mm: fix invalid node in alloc_migrate_target() + - LP: #1571027 + * iio: st_magn: always define ST_MAGN_TRIGGER_SET_STATE + - LP: #1571027 + * ext4: ignore quota mount options if the quota feature is enabled + - LP: #1571027 + * xen/events: Mask a moving irq + - LP: #1571027 + * usb: renesas_usbhs: fix to avoid using a disabled ep in + usbhsg_queue_done() + - LP: #1571027 + * mac80211: properly deal with station hashtable insert errors + - LP: #1571027 + * compiler-gcc: disable -ftracer for __noclone functions + - LP: #1571027 + * rbd: use GFP_NOIO consistently for request allocations + - LP: #1571027 + * Btrfs: fix file/data loss caused by fsync after rename and new inode + - LP: #1571027 + * USB: serial: ftdi_sio: Add support for ICP DAS I-756xU devices + - LP: #1571027 + * USB: serial: cp210x: Adding GE Healthcare Device ID + - LP: #1571027 + * USB: option: add "D-Link DWM-221 B1" device id + - LP: #1571027 + * virtio: virtio 1.0 cs04 spec compliance for reset + - LP: #1571027 + * libnvdimm: fix smart data retrieval + - LP: #1571027 + * gpio: pca953x: Use correct u16 value for register word write + - LP: #1571027 + * parisc: Avoid function pointers for kernel exception routines + - LP: #1571027 + * parisc: Fix kernel crash with reversed copy_from_user() + - LP: #1571027 + * parisc: Unbreak handling exceptions from kernel modules + - LP: #1571027 + * net: macb: replace macb_writel() call by queue_writel() to update queue + ISR + - LP: #1571027 + * net: bcmgenet: fix dev->stats.tx_bytes accounting + - LP: #1571027 + * net: bcmgenet: fix skb_len in bcmgenet_xmit_single() + - LP: #1571027 + * ipv6: udp: fix UDP_MIB_IGNOREDMULTI updates + - LP: #1571027 + * pinctrl: nomadik: fix pull debug print inversion + - LP: #1571027 + * ip6_tunnel: set rtnl_link_ops before calling register_netdevice + - LP: #1571027 + * KVM: x86: move steal time initialization to vcpu entry time + - LP: #1571027 + * lib/ucs2_string: Add ucs2 -> utf8 helper functions + - LP: #1571027 + * efi: Use ucs2_as_utf8 in efivarfs instead of open coding a bad version + - LP: #1571027 + * efi: Do variable name validation tests in utf8 + - LP: #1571027 + * efi: Make our variable validation list include the guid + - LP: #1571027 + * efi: Make efivarfs entries immutable by default + - LP: #1571027 + * efi: Add pstore variables to the deletion whitelist + - LP: #1571027 + * lib/ucs2_string: Correct ucs2 -> utf8 conversion + - LP: #1571027 + * ipr: Fix out-of-bounds null overwrite + - LP: #1571027 + * ipr: Fix regression when loading firmware + - LP: #1571027 + * perf/x86/intel: Fix PEBS data source interpretation on Nehalem/Westmere + - LP: #1571027 + * ALSA: hda - Add new GPU codec ID 0x10de0082 to snd-hda + - LP: #1571027 + * mwifiex: fix corner case association failure + - LP: #1571027 + * net: phy: at803x: Request 'reset' GPIO only for AT8030 PHY + - LP: #1571027 + * Linux 4.2.8-ckt8 + - LP: #1571027 + + -- Kamal Mostafa Mon, 18 Apr 2016 06:54:19 -0700 + +linux (4.2.0-35.40) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1557706 + + [ Upstream Kernel Changes ] + + * Revert "workqueue: make sure delayed work run in local cpu" + - LP: #1556269 + * Revert "ALSA: hda - Fix noise on Gigabyte Z170X mobo" + - LP: #1556269 + * KVM: VMX: Fix host initiated access to guest MSR_TSC_AUX + - LP: #1552592 + * locking/qspinlock: Move __ARCH_SPIN_LOCK_UNLOCKED to qspinlock_types.h + - LP: #1545330 + * [media] usbvision fix overflow of interfaces array + - LP: #1556269 + * [media] usbvision: fix crash on detecting device with invalid + configuration + - LP: #1556269 + * ASN.1: Fix non-match detection failure on data overrun + - LP: #1556269 + * iw_cxgb3: Fix incorrectly returning error on success + - LP: #1556269 + * EVM: Use crypto_memneq() for digest comparisons + - LP: #1556269 + * vmstat: explicitly schedule per-cpu work on the CPU we need it to run + on + - LP: #1556269 + * x86/entry/compat: Add missing CLAC to entry_INT80_32 + - LP: #1556269 + * iio-light: Use a signed return type for ltr501_match_samp_freq() + - LP: #1556269 + * iio: add IIO_TRIGGER dependency to STK8BA50 + - LP: #1556269 + * iio: add HAS_IOMEM dependency to VF610_ADC + - LP: #1556269 + * iio: dac: mcp4725: set iio name property in sysfs + - LP: #1556269 + * iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG + - LP: #1556269 + * iio: light: acpi-als: Report data as processed + - LP: #1556269 + * iio:adc:ti_am335x_adc Fix buffered mode by identifying as software + buffer. + - LP: #1556269 + * ASoC: rt5645: fix the shift bit of IN1 boost + - LP: #1556269 + * ARCv2: STAR 9000950267: Handle return from intr to Delay Slot #2 + - LP: #1556269 + * cgroup: make sure a parent css isn't offlined before its children + - LP: #1556269 + * ARM: OMAP2+: Fix wait_dll_lock_timed for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix l2dis_3630 for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix save_secure_ram_context for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix l2_inv_api_params for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix ppa_zero_params and ppa_por_params for rodata + - LP: #1556269 + * rtlwifi: rtl8821ae: Fix 5G failure when EEPROM is incorrectly encoded + - LP: #1556269 + * PCI/AER: Flush workqueue on device remove to avoid use-after-free + - LP: #1556269 + * ARM: dts: Fix wl12xx missing clocks that cause hangs + - LP: #1556269 + * libata: disable forced PORTS_IMPL for >= AHCI 1.3 + - LP: #1556269 + * mac80211: Requeue work after scan complete for all VIF types. + - LP: #1556269 + * rfkill: fix rfkill_fop_read wait_event usage + - LP: #1556269 + * ARM: dts: at91: sama5d4: fix instance id of DBGU + - LP: #1556269 + * ARM: dts: at91: sama5d4ek: add phy address and IRQ for macb0 + - LP: #1556269 + * ARM: dts: at91: sama5d4 xplained: fix phy0 IRQ type + - LP: #1556269 + * crypto: shash - Fix has_key setting + - LP: #1556269 + * Input: vmmouse - fix absolute device registration + - LP: #1556269 + * spi: atmel: fix gpio chip-select in case of non-DT platform + - LP: #1556269 + * drm/i915/dp: fall back to 18 bpp when sink capability is unknown + - LP: #1556269 + * ALSA: usb-audio: Fix OPPO HA-1 vendor ID + - LP: #1556269 + * ALSA: usb-audio: Add native DSD support for PS Audio NuWave DAC + - LP: #1556269 + * ALSA: usb-audio: Add quirk for Microsoft LifeCam HD-6000 + - LP: #1556269 + * target: Fix WRITE_SAME/DISCARD conversion to linux 512b sectors + - LP: #1556269 + * crypto: algif_hash - wait for crypto_ahash_init() to complete + - LP: #1556269 + * iio: inkern: fix a NULL dereference on error + - LP: #1556269 + * iio: pressure: mpl115: fix temperature offset sign + - LP: #1556269 + * intel_scu_ipcutil: underflow in scu_reg_access() + - LP: #1556269 + * ALSA: seq: Fix race at closing in virmidi driver + - LP: #1556269 + * ALSA: rawmidi: Remove kernel WARNING for NULL user-space buffer check + - LP: #1556269 + * ALSA: pcm: Fix potential deadlock in OSS emulation + - LP: #1556269 + * ALSA: seq: Fix yet another races among ALSA timer accesses + - LP: #1556269 + * ALSA: timer: Code cleanup + - LP: #1556269 + * ALSA: timer: Fix link corruption due to double start or stop + - LP: #1556269 + * libata: fix sff host state machine locking while polling + - LP: #1556269 + * MIPS: Fix buffer overflow in syscall_get_arguments() + - LP: #1556269 + * cputime: Prevent 32bit overflow in time[val|spec]_to_cputime() + - LP: #1556269 + * drm: add helper to check for wc memory support + - LP: #1556269 + * drm/radeon: mask out WC from BO on unsupported arches + - LP: #1556269 + * drm/amdgpu: mask out WC from BO on unsupported arches + - LP: #1556269 + * ASoC: dpcm: fix the BE state on hw_free + - LP: #1556269 + * drm/amdgpu: move gmc7 support out of CIK dependency + - LP: #1556269 + * drm/amdgpu: iceland use CI based MC IP + - LP: #1556269 + * drm/amdgpu: The VI specific EXE bit should only apply to GMC v8.0 above + - LP: #1556269 + * drm/amdgpu: pull topaz gmc bits into gmc_v7 + - LP: #1556269 + * drm/amdgpu: drop topaz support from gmc8 module + - LP: #1556269 + * modules: fix modparam async_probe request + - LP: #1556269 + * module: wrapper for symbol name. + - LP: #1556269 + * ALSA: hda - Add fixup for Mac Mini 7,1 model + - LP: #1556269 + * ALSA: rawmidi: Make snd_rawmidi_transmit() race-free + - LP: #1556269 + * ALSA: rawmidi: Fix race at copying & updating the position + - LP: #1556269 + * ALSA: seq: Fix lockdep warnings due to double mutex locks + - LP: #1556269 + * drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration + - LP: #1556269 + * radix-tree: fix race in gang lookup + - LP: #1556269 + * drivers/hwspinlock: fix race between radix tree insertion and lookup + - LP: #1556269 + * btrfs: fix clone / extent-same deadlocks + - LP: #1556269 + * Btrfs: fix invalid page accesses in extent_same (dedup) ioctl + - LP: #1556269 + * Btrfs: fix page reading in extent_same ioctl leading to csum errors + - LP: #1556269 + * usb: xhci: handle both SSIC ports in PME stuck quirk + - LP: #1556269 + * usb: xhci: add a quirk bit for ssic port unused + - LP: #1556269 + * usb: xhci: set SSIC port unused only if xhci_suspend succeeds + - LP: #1556269 + * usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Broxton-M platforms + - LP: #1556269 + * xhci: Fix list corruption in urb dequeue at host removal + - LP: #1556269 + * target: Invoke release_cmd() callback without holding a spinlock + - LP: #1556269 + * target: Fix LUN_RESET active I/O handling for ACK_KREF + - LP: #1556269 + * target: Fix LUN_RESET active TMR descriptor handling + - LP: #1556269 + * target: Fix TAS handling for multi-session se_node_acls + - LP: #1556269 + * [media] tda1004x: only update the frontend properties if locked + - LP: #1556269 + * ALSA: timer: Fix leftover link at closing + - LP: #1556269 + * [media] saa7134-alsa: Only frees registered sound cards + - LP: #1556269 + * ARM: nomadik: fix up SD/MMC DT settings + - LP: #1556269 + * Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl + - LP: #1556269 + * scsi_dh_rdac: always retry MODE SELECT on command lock violation + - LP: #1556269 + * SCSI: Add Marvell Console to VPD blacklist + - LP: #1556269 + * drm: fix missing reference counting decrease + - LP: #1556269 + * drm: Add drm_fixp_from_fraction and drm_fixp2int_ceil + - LP: #1556269 + * drm/dp/mst: Calculate MST PBN with 31.32 fixed point + - LP: #1556269 + * drm/dp/mst: Reverse order of MST enable and clearing VC payload table. + - LP: #1556269 + * drm/dp/mst: deallocate payload on port destruction + - LP: #1556269 + * ALSA: hda - Fix static checker warning in patch_hdmi.c + - LP: #1556269 + * target: Fix remote-port TMR ABORT + se_cmd fabric stop + - LP: #1556269 + * dump_stack: avoid potential deadlocks + - LP: #1556269 + * mm, vmstat: fix wrong WQ sleep when memory reclaim doesn't make any + progress + - LP: #1556269 + * ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery + cleanup + - LP: #1556269 + * mm: replace vma_lock_anon_vma with anon_vma_lock_read/write + - LP: #1556269 + * radix-tree: fix oops after radix_tree_iter_retry + - LP: #1556269 + * crypto: user - lock crypto_alg_list on alg dump + - LP: #1556269 + * crypto: algif_skcipher - Do not set MAY_BACKLOG on the async path + - LP: #1556269 + * crypto: atmel-sha - fix atmel_sha_remove() + - LP: #1556269 + * crypto: marvell/cesa - fix test in mv_cesa_dev_dma_init() + - LP: #1556269 + * target: Fix race with SCF_SEND_DELAYED_TAS handling + - LP: #1556269 + * qla2xxx: Fix stale pointer access. + - LP: #1556269 + * serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) + - LP: #1556269 + * tty: Add support for PCIe WCH382 2S multi-IO card + - LP: #1556269 + * pty: fix possible use after free of tty->driver_data + - LP: #1556269 + * pty: make sure super_block is still valid in final /dev/tty close + - LP: #1556269 + * ALSA: hda - Fix speaker output from VAIO AiO machines + - LP: #1556269 + * klist: fix starting point removed bug in klist iterators + - LP: #1556269 + * ALSA: dummy: Implement timer backend switching more safely + - LP: #1556269 + * drm/i915/dsi: defend gpio table against out of bounds access + - LP: #1556269 + * drm/i915/dsi: don't pass arbitrary data to sideband + - LP: #1556269 + * powerpc: Fix dedotify for binutils >= 2.26 + - LP: #1556269 + * ALSA: timer: Fix wrong instance passed to slave callbacks + - LP: #1556269 + * ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz() + - LP: #1556269 + * xen/scsiback: correct frontend counting + - LP: #1556269 + * nfs: fix nfs_size_to_loff_t + - LP: #1556269 + * ALSA: timer: Fix race between stop and interrupt + - LP: #1556269 + * ALSA: hda - Fix bad dereference of jack object + - LP: #1556269 + * ALSA: timer: Fix race at concurrent reads + - LP: #1556269 + * phy: core: fix wrong err handle for phy_power_on + - LP: #1556269 + * phy: twl4030-usb: Relase usb phy on unload + - LP: #1556269 + * phy: twl4030-usb: Fix unbalanced pm_runtime_enable on module reload + - LP: #1556269 + * drm/i915/skl: Don't skip mst encoders in skl_ddi_pll_select() + - LP: #1556269 + * drm/i915: fix error path in intel_setup_gmbus() + - LP: #1556269 + * ahci: Intel DNV device IDs SATA + - LP: #1556269 + * workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup + - LP: #1556269 + * drm/amdgpu: fix s4 resume + - LP: #1556269 + * drm/amdgpu: remove unnecessary forward declaration + - LP: #1556269 + * drm/radeon: hold reference to fences in radeon_sa_bo_new + - LP: #1556269 + * drm/amdgpu: fix issue with overlapping userptrs + - LP: #1556269 + * cifs: fix erroneous return value + - LP: #1556269 + * s390/dasd: prevent incorrect length error under z/VM after PAV changes + - LP: #1556269 + * s390/dasd: fix refcount for PAV reassignment + - LP: #1556269 + * ARM: 8519/1: ICST: try other dividends than 1 + - LP: #1556269 + * btrfs: properly set the termination value of ctx->pos in readdir + - LP: #1556269 + * irqchip/gic-v3-its: Fix double ICC_EOIR write for LPI in EOImode==1 + - LP: #1556269 + * scsi: fix soft lockup in scsi_remove_target() on module removal + - LP: #1556269 + * ext4: fix potential integer overflow + - LP: #1556269 + * ext4: don't read blocks from disk after extents being swapped + - LP: #1556269 + * bio: return EINTR if copying to user space got interrupted + - LP: #1556269 + * iwlwifi: mvm: don't allow sched scans without matches to be started + - LP: #1556269 + * powerpc/eeh: Fix stale cached primary bus + - LP: #1556269 + * xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY + - LP: #1556269 + * xen/pciback: Save the number of MSI-X entries to be copied later. + - LP: #1556269 + * xen/pcifront: Fix mysterious crashes when NUMA locality information was + extracted. + - LP: #1556269 + * ALSA: seq: Fix leak of pool buffer at concurrent writes + - LP: #1556269 + * ALSA: hda - Cancel probe work instead of flush at remove + - LP: #1556269 + * dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer + - LP: #1556269 + * tracepoints: Do not trace when cpu is offline + - LP: #1556269 + * tracing: Fix freak link error caused by branch tracer + - LP: #1556269 + * ALSA: seq: Fix double port list deletion + - LP: #1556269 + * drm/amdgpu: use post-decrement in error handling + - LP: #1556269 + * drm/radeon: use post-decrement in error handling + - LP: #1556269 + * drm/qxl: use kmalloc_array to alloc reloc_info in + qxl_process_single_command + - LP: #1556269 + * drm: Fix treatment of drm_vblank_offdelay in drm_vblank_on() (v2) + - LP: #1556269 + * x86/uaccess/64: Make the __copy_user_nocache() assembly code more + readable + - LP: #1556269 + * x86/uaccess/64: Handle the caching of 4-byte nocache copies properly in + __copy_user_nocache() + - LP: #1556269 + * usb: dwc3: Fix assignment of EP transfer resources + - LP: #1556269 + * powerpc/ioda: Set "read" permission when "write" is set + - LP: #1556269 + * NFSv4: Fix a dentry leak on alias use + - LP: #1556269 + * x86/mm: Fix vmalloc_fault() to handle large pages properly + - LP: #1556269 + * ALSA: pcm: Fix rwsem deadlock for non-atomic PCM stream + - LP: #1556269 + * USB: option: add support for SIM7100E + - LP: #1556269 + * USB: cp210x: add IDs for GE B650V3 and B850V3 boards + - LP: #1556269 + * USB: option: add "4G LTE usb-modem U901" + - LP: #1556269 + * mm: fix regression in remap_file_pages() emulation + - LP: #1556269 + * ipc: convert invalid scenarios to use WARN_ON + - LP: #1556269 + * ipc/shm: handle removed segments gracefully in shm_mmap() + - LP: #1556269 + * hwmon: (ads1015) Handle negative conversion values correctly + - LP: #1556269 + * ext4: fix bh->b_state corruption + - LP: #1556269 + * ext4: fix crashes in dioread_nolock mode + - LP: #1556269 + * nfit: fix multi-interface dimm handling, acpi6.1 compatibility + - LP: #1556269 + * hwmon: (gpio-fan) Remove un-necessary speed_index lookup for thermal + hook + - LP: #1556269 + * kernel/resource.c: fix muxed resource handling in __request_region() + - LP: #1556269 + * drivers: android: correct the size of struct binder_uintptr_t for + BC_DEAD_BINDER_DONE + - LP: #1556269 + * can: ems_usb: Fix possible tx overflow + - LP: #1556269 + * dm: fix dm_rq_target_io leak on faults with .request_fn DM w/ blk-mq + paths + - LP: #1556269 + * s390/compat: correct restore of high gprs on signal return + - LP: #1556269 + * drm/amdgpu/pm: adjust display configuration after powerstate + - LP: #1556269 + * ARM: OMAP2+: Fix onenand initialization to avoid filesystem corruption + - LP: #1556269 + * sunrpc/cache: fix off-by-one in qword_get() + - LP: #1556269 + * KVM: arm/arm64: vgic: Ensure bitmaps are long enough + - LP: #1556269 + * ARCv2: SMP: Emulate IPI to self using software triggered interrupt + - LP: #1556269 + * KVM: x86: fix missed hardware breakpoints + - LP: #1556269 + * KVM: async_pf: do not warn on page allocation failures + - LP: #1556269 + * tracing: Fix showing function event in available_events + - LP: #1556269 + * libceph: don't bail early from try_read() when skipping a message + - LP: #1556269 + * libceph: use the right footer size when skipping a message + - LP: #1556269 + * ALSA: hda - Fixing background noise on Dell Inspiron 3162 + - LP: #1549620, #1556269 + * KVM: x86: MMU: fix ubsan index-out-of-range warning + - LP: #1556269 + * ALSA: hda/realtek - Support Dell headset mode for ALC225 + - LP: #1556269 + * ALSA: hda - Fixup speaker pass-through control for nid 0x14 on ALC225 + - LP: #1549660, #1556269 + * ALSA: hda - Fix headset support and noise on HP EliteBook 755 G2 + - LP: #1556269 + * ALSA: hda - Loop interrupt handling until really cleared + - LP: #1556269 + * x86/mpx: Fix off-by-one comparison with nr_registers + - LP: #1556269 + * mm: thp: fix SMP race condition between THP page fault and + MADV_DONTNEED + - LP: #1556269 + * ocfs2: unlock inode if deleting inode from orphan fails + - LP: #1556269 + * hpfs: don't truncate the file when delete fails + - LP: #1556269 + * do_last(): don't let a bogus return value from ->open() et.al. to + confuse us + - LP: #1556269 + * namei: ->d_inode of a pinned dentry is stable only for positives + - LP: #1556269 + * should_follow_link(): validate ->d_seq after having decided to follow + - LP: #1556269 + * do_last(): ELOOP failure exit should be done after leaving RCU mode + - LP: #1556269 + * af_iucv: Validate socket address length in iucv_sock_bind() + - LP: #1556269 + * net: dp83640: Fix tx timestamp overflow handling. + - LP: #1556269 + * tcp: fix NULL deref in tcp_v4_send_ack() + - LP: #1556269 + * af_unix: fix struct pid memory leak + - LP: #1556269 + * pptp: fix illegal memory access caused by multiple bind()s + - LP: #1556269 + * sctp: allow setting SCTP_SACK_IMMEDIATELY by the application + - LP: #1556269 + * switchdev: Require RTNL mutex to be held when sending FDB notifications + - LP: #1556269 + * tcp: beware of alignments in tcp_get_info() + - LP: #1556269 + * ipv6: enforce flowi6_oif usage in ip6_dst_lookup_tail() + - LP: #1556269 + * ipv6/udp: use sticky pktinfo egress ifindex on connect() + - LP: #1556269 + * net/ipv6: add sysctl option accept_ra_min_hop_limit + - LP: #1556269 + * ipv6: addrconf: Fix recursive spin lock call + - LP: #1556269 + * ipv6: fix a lockdep splat + - LP: #1556269 + * unix: correctly track in-flight fds in sending process user_struct + - LP: #1556269 + * net:Add sysctl_max_skb_frags + - LP: #1556269 + * tg3: Fix for tg3 transmit queue 0 timed out when too many gso_segs + - LP: #1556269 + * sctp: translate network order to host order when users get a hmacid + - LP: #1556269 + * flow_dissector: Fix unaligned access in __skb_flow_dissector when used + by eth_get_headlen + - LP: #1556269 + * net: Copy inner L3 and L4 headers as unaligned on GRE TEB + - LP: #1556269 + * bpf: fix branch offset adjustment on backjumps after patching ctx + expansion + - LP: #1556269 + * bonding: Fix ARP monitor validation + - LP: #1556269 + * ipv4: fix memory leaks in ip_cmsg_send() callers + - LP: #1556269 + * af_unix: Guard against other == sk in unix_dgram_sendmsg + - LP: #1556269 + * qmi_wwan: add "4G LTE usb-modem U901" + - LP: #1556269 + * net/mlx4_en: Count HW buffer overrun only once + - LP: #1556269 + * net/mlx4_en: Choose time-stamping shift value according to HW frequency + - LP: #1556269 + * net/mlx4_en: Avoid changing dev->features directly in run-time + - LP: #1556269 + * l2tp: Fix error creating L2TP tunnels + - LP: #1556269 + * pppoe: fix reference counting in PPPoE proxy + - LP: #1556269 + * route: check and remove route cache when we get route + - LP: #1556269 + * rtnl: RTM_GETNETCONF: fix wrong return value + - LP: #1556269 + * unix_diag: fix incorrect sign extension in unix_lookup_by_ino + - LP: #1556269 + * sctp: Fix port hash table size computation + - LP: #1556269 + * net/mlx4_core: Do not BUG_ON during reset when PCI is offline + - LP: #1556269 + * s390/perf_event: fix address range for asynchronous stack + - LP: #1556269 + * batman-adv: Avoid endless loop in bat-on-bat netdevice check + - LP: #1556269 + * af_unix: Don't set err in unix_stream_read_generic unless there was an + error + - LP: #1556269 + * netlink: not trim skb for mmaped socket when dump + - LP: #1556269 + * Input: xpad - remove unused function + - LP: #1556269 + * ARM: dts: kirkwood: use unique machine name for ds112 + - LP: #1556269 + * s390/stacktrace: fix address ranges for asynchronous and panic stack + - LP: #1556269 + * MAINTAINERS: Remove stale entry for BCM33xx chips + - LP: #1556269 + * [media] exynos4-is: fix a format string bug + - LP: #1556269 + * net/mlx4_core: Fix potential corruption in counters database + - LP: #1556269 + * net: phy: bcm7xxx: Fix shadow mode 2 disabling + - LP: #1556269 + * writeback: initialize inode members that track writeback history + - LP: #1556269 + * bonding: don't use stale speed and duplex information + - LP: #1556269 + * net: phy: bcm7xxx: Fix bcm7xxx_config_init() check + - LP: #1556269 + * s390/oprofile: fix address range for asynchronous stack + - LP: #1556269 + * net: phy: Fix phy_mac_interrupt() + - LP: #1556269 + * net: phy: Avoid polling PHY with PHY_IGNORE_INTERRUPTS + - LP: #1556269 + * net: phy: bcm7xxx: Fix 40nm EPHY features + - LP: #1556269 + * netfilter: nfnetlink: correctly validate length of batch messages + - LP: #1556269 + * pipe: limit the per-user amount of pages allocated in pipes + - LP: #1556269 + * Linux 4.2.8-ckt5 + - LP: #1556269 + * x86/mm: Fix slow_virt_to_phys() for X86_PAE again + - LP: #1549601 + * Drivers: hv: vss: run only on supported host versions + - LP: #1496927 + * ovl: copy new uid/gid into overlayfs runtime inode + - LP: #1555997 + * sched/numa: Fix use-after-free bug in the task_numa_compare + - LP: #1527643 + + -- Brad Figg Tue, 15 Mar 2016 11:48:50 -0700 + +linux (4.2.0-34.39) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1555821 + + [ Florian Westphal ] + + * SAUCE: [nf] netfilter: x_tables: check for size overflow + - LP: #1555353 + * SAUCE: [nf,v2] netfilter: x_tables: don't rely on well-behaving + userspace + - LP: #1555338 + + -- Brad Figg Thu, 10 Mar 2016 13:46:44 -0800 + +linux (4.2.0-33.38) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1554649 + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon: call hpd_irq_event on resume" + - LP: #1554608 + * cxl: Fix PSL timebase synchronization detection + - LP: #1532914 + + -- Brad Figg Tue, 08 Mar 2016 10:32:44 -0800 + +linux (4.2.0-32.37) wily; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1550045 + + [ Kamal Mostafa ] + + * Merged back Ubuntu-4.2.0-31.36 + + -- Kamal Mostafa Thu, 25 Feb 2016 17:47:15 -0800 + +linux (4.2.0-31.36) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1548579 + + [ Andy Whitcroft ] + + * [Debian] hv: hv_set_ifconfig -- convert to python3 + - LP: #1506521 + * [Debian] hv: hv_set_ifconfig -- switch to approved indentation + - LP: #1540586 + * [Debian] hv: hv_set_ifconfig -- fix numerous parameter handling issues + - LP: #1540586 + + [ Carol L Soto ] + + * SAUCE: IB/IPoIB: Do not set skb truesize since using one linearskb + - LP: #1541326 + + [ Dan Streetman ] + + * SAUCE: nbd: ratelimit error msgs after socket close + - LP: #1505564 + + [ Tim Gardner ] + + * Revert "SAUCE: (noup) cxlflash: Fix to avoid virtual LUN failover + failure" + - LP: #1541635 + * Revert "SAUCE: (noup) cxlflash: Fix to escalate LINK_RESET also on port + 1" + - LP: #1541635 + * [Config] ARMV8_DEPRECATED=y + - LP: #1545542 + + [ Upstream Kernel Changes ] + + * x86/xen/p2m: hint at the last populated P2M entry + - LP: #1542941 + * mm: add dma_pool_zalloc() call to DMA API + - LP: #1543737 + * sctp: Prevent soft lockup when sctp_accept() is called during a timeout + event + - LP: #1543737 + * xen-netback: respect user provided max_queues + - LP: #1543737 + * xen-netfront: respect user provided max_queues + - LP: #1543737 + * xen-netfront: update num_queues to real created + - LP: #1543737 + * iio: adis_buffer: Fix out-of-bounds memory access + - LP: #1543737 + * KVM: PPC: Fix emulation of H_SET_DABR/X on POWER8 + - LP: #1543737 + * KVM: PPC: Fix ONE_REG AltiVec support + - LP: #1543737 + * x86/irq: Call chip->irq_set_affinity in proper context + - LP: #1543737 + * drm/amdgpu: fix tonga smu resume + - LP: #1543737 + * perf kvm record/report: 'unprocessable sample' error while + recording/reporting guest data + - LP: #1543737 + * hrtimer: Handle remaining time proper for TIME_LOW_RES + - LP: #1543737 + * timerfd: Handle relative timers with CONFIG_TIME_LOW_RES proper + - LP: #1543737 + * posix-timers: Handle relative timers with CONFIG_TIME_LOW_RES proper + - LP: #1543737 + * itimers: Handle relative timers with CONFIG_TIME_LOW_RES proper + - LP: #1543737 + * drm/amdgpu: Use drm_calloc_large for VM page_tables array + - LP: #1543737 + * drm/amdgpu: fix amdgpu_bo_pin_restricted VRAM placing v2 + - LP: #1543737 + * drm/radeon: properly byte swap vce firmware setup + - LP: #1543737 + * ACPI: Revert "ACPI / video: Add Dell Inspiron 5737 to the blacklist" + - LP: #1543737 + * ACPI / PCI / hotplug: unlock in error path in acpiphp_enable_slot() + - LP: #1543737 + * hwmon: (dell-smm) Blacklist Dell Studio XPS 8000 + - LP: #1543737 + * usb: cdc-acm: handle unlinked urb in acm read callback + - LP: #1543737 + * usb: cdc-acm: send zero packet for intel 7260 modem + - LP: #1543737 + * cdc-acm:exclude Samsung phone 04e8:685d + - LP: #1543737 + * usb: hub: do not clear BOS field during reset device + - LP: #1543737 + * USB: cp210x: add ID for IAI USB to RS485 adaptor + - LP: #1543737 + * USB: visor: fix null-deref at probe + - LP: #1543737 + * USB: serial: visor: fix crash on detecting device without write_urbs + - LP: #1543737 + * USB: serial: option: Adding support for Telit LE922 + - LP: #1543737 + * ALSA: seq: Fix incorrect sanity check at snd_seq_oss_synth_cleanup() + - LP: #1543737 + * ALSA: seq: Degrade the error message for too many opens + - LP: #1543737 + * USB: serial: ftdi_sio: add support for Yaesu SCU-18 cable + - LP: #1543737 + * arm64: kernel: fix architected PMU registers unconditional access + - LP: #1543737 + * USB: option: fix Cinterion AHxx enumeration + - LP: #1543737 + * ALSA: compress: Disable GET_CODEC_CAPS ioctl for some architectures + - LP: #1543737 + * ALSA: usb-audio: Fix TEAC UD-501/UD-503/NT-503 usb delay + - LP: #1543737 + * virtio_pci: fix use after free on release + - LP: #1543737 + * ALSA: bebob: Use a signed return type for get_formation_index + - LP: #1543737 + * arm64: errata: Add -mpc-relative-literal-loads to build flags + - LP: #1533009, #1543737 + * arm64: mm: avoid calling apply_to_page_range on empty range + - LP: #1543737 + * x86/mm: Fix types used in pgprot cacheability flags translations + - LP: #1543737 + * powerpc/eeh: Fix PE location code + - LP: #1543737 + * SCSI: fix crashes in sd and sr runtime PM + - LP: #1543737 + * tty: Fix unsafe ldisc reference via ioctl(TIOCGETD) + - LP: #1543737 + * n_tty: Fix unsafe reference to "other" ldisc + - LP: #1543737 + * staging/speakup: Use tty_ldisc_ref() for paste kworker + - LP: #1543737 + * tick/nohz: Set the correct expiry when switching to nohz/lowres mode + - LP: #1543737 + * irqchip/atmel-aic: Fix wrong bit operation for IRQ priority + - LP: #1543737 + * seccomp: always propagate NO_NEW_PRIVS on tsync + - LP: #1543737 + * drm/radeon: cleaned up VCO output settings for DP audio + - LP: #1543737 + * drm/radeon: Add a common function for DFS handling + - LP: #1543737 + * drm/radeon: fix DP audio support for APU with DCE4.1 display engine + - LP: #1543737 + * cpufreq: Fix NULL reference crash while accessing policy->governor_data + - LP: #1543737 + * cpufreq: pxa2xx: fix pxa_cpufreq_change_voltage prototype + - LP: #1543737 + * ALSA: dummy: Disable switching timer backend via sysfs + - LP: #1543737 + * drm/vmwgfx: respect 'nomodeset' + - LP: #1543737 + * Staging: speakup: Fix getting port information + - LP: #1543737 + * x86/mm/pat: Avoid truncation when converting cpa->numpages to address + - LP: #1543737 + * serial: 8250_pci: Add Intel Broadwell ports + - LP: #1543737 + * perf annotate browser: Fix behaviour of Shift-Tab with nothing focussed + - LP: #1543737 + * perf hists: Fix HISTC_MEM_DCACHELINE width setting + - LP: #1543737 + * powerpc/perf: Remove PPMU_HAS_SSLOT flag for Power8 + - LP: #1543737 + * Linux 4.2.8-ckt4 + - LP: #1543737 + * cxlflash: Resolve oops in wait_port_offline + - LP: #1541635 + * cxlflash: Fix to resolve cmd leak after host reset + - LP: #1541635 + * cxlflash: Removed driver date print + - LP: #1541635 + * cxlflash: drop unlikely before IS_ERR_OR_NULL + - LP: #1541635 + * powerpc/powernv: Panic on unhandled Machine Check + - LP: #1541635 + * cxlflash: Fix to avoid virtual LUN failover failure + - LP: #1541635 + * cxlflash: Fix to escalate LINK_RESET also on port 1 + - LP: #1541635 + * IB/ipoib: Suppress warning for send only join failures + - LP: #1542444 + * IB/ipoib: Expire sendonly multicast joins + - LP: #1542444 + * IB/ipoib: increase the max mcast backlog queue + - LP: #1542444 + * IB/ipoib: For sendonly join free the multicast group on leave + - LP: #1542444 + * qeth: initialize net_device with carrier off + - LP: #1541907 + * mwifiex: remove USB8897 chipset support + - LP: #1494593 + * powerpc/powernv: Fix stale PE primary bus + - LP: #1546145 + * ALSA: usb-audio: avoid freeing umidi object twice + - LP: #1546177 + - CVE-2016-2384 + + -- Brad Figg Mon, 22 Feb 2016 17:29:33 -0800 + +linux (4.2.0-30.36) wily; urgency=high + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1550037 + + [ Upstream Kernel Changes ] + + * drm/vmwgfx: Fix an fb unlocking bug + - LP: #1548587 + + -- Kamal Mostafa Thu, 25 Feb 2016 15:02:05 -0800 + +linux (4.2.0-30.35) wily; urgency=low + + [ Seth Forshee ] + + * SAUCE: cred: Add clone_cred() interface + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Use mounter's credentials instead of selectively + raising caps + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Skip permission checking for trusted.overlayfs.* + xattrs + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Be more careful about copying up sxid files + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Propogate nosuid from lower and upper mounts + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + + -- Luis Henriques Fri, 19 Feb 2016 10:25:02 +0000 + +linux (4.2.0-29.34) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1543167 + + [ Brad Figg ] + + * Revert "SAUCE: apparmor: fix sleep from invalid context" + - LP: #1542049 + + [ Upstream Kernel Changes ] + + * Revert "af_unix: Revert 'lock_interruptible' in stream receive code" + - LP: #1540731 + + -- Luis Henriques Mon, 08 Feb 2016 15:22:46 +0000 + +linux (4.2.0-28.33) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1540634 + + [ Brad Figg ] + + * CONFIG: CONFIG_DEBUG_UART_BCM63XX is not set + + [ J. R. Okajima ] + + * SAUCE: ubuntu: aufs: tiny, extract a new func xino_fwrite_wkq() + - LP: #1533043 + * SAUCE: ubuntu: aufs: for 4.3, XINO handles EINTR from the dying process + - LP: #1533043 + + [ John Johansen ] + + * SAUCE: (no-up): apparmor: fix for failed mediation of socket that is + being shutdown + - LP: #1446906 + * SAUCE: apparmor: fix sleep from invalid context + - LP: #1539349 + + [ Tim Gardner ] + + * [Config] Add pvpanic to virtual flavour + - LP: #1537923 + + [ Upstream Kernel Changes ] + + * Revert "ACPI / LPSS: allow to use specific PM domain during ->probe()" + - LP: #1540532 + * tools: Add a "make all" rule + - LP: #1536370 + * vf610_adc: Fix internal temperature calculation + - LP: #1536370 + * iio: lpc32xx_adc: fix warnings caused by enabling unprepared clock + - LP: #1536370 + * iio:ad5064: Make sure ad5064_i2c_write() returns 0 on success + - LP: #1536370 + * iio: ad5064: Fix ad5629/ad5669 shift + - LP: #1536370 + * iio:ad7793: Fix ad7785 product ID + - LP: #1536370 + * iio: adc: vf610_adc: Fix division by zero error + - LP: #1536370 + * mmc: mmc: Improve reliability of mmc_select_hs200() + - LP: #1536370 + * mmc: mmc: Fix HS setting in mmc_select_hs400() + - LP: #1536370 + * mmc: mmc: Move mmc_switch_status() + - LP: #1536370 + * mmc: mmc: Improve reliability of mmc_select_hs400() + - LP: #1536370 + * crypto: qat - don't use userspace pointer + - LP: #1536370 + * iio: si7020: Swap data byte order + - LP: #1536370 + * iio: adc: xilinx: Fix VREFN scale + - LP: #1536370 + * ipmi: Start the timer and thread on internal msgs + - LP: #1536370 + * drm/i915: quirk backlight present on Macbook 4, 1 + - LP: #1536370 + * drm/i915: get runtime PM reference around GEM set_caching IOCTL + - LP: #1536370 + * drm/radeon: Disable uncacheable CPU mappings of GTT with RV6xx + - LP: #1536370 + * drm/radeon: unconditionally set sysfs_initialized + - LP: #1536370 + * drm/amdgpu: Fix default page access routing + - LP: #1536370 + * USB: qcserial: Fix support for HP lt4112 LTE/HSPA+ Gobi 4G Modem + - LP: #1536370 + * ext2, ext4: warn when mounting with dax enabled + - LP: #1536370 + * arm64: mm: use correct mapping granularity under DEBUG_RODATA + - LP: #1536370 + * drm/i915: Don't clobber the addfb2 ioctl params + - LP: #1536370 + * arm64: kernel: pause/unpause function graph tracer in cpu_suspend() + - LP: #1536370 + * usb: chipidea: debug: disable usb irq while role switch + - LP: #1536370 + * xhci: Fix a race in usb2 LPM resume, blocking U3 for usb2 devices + - LP: #1536370 + * fat: fix fake_offset handling on error path + - LP: #1536370 + * kernel/signal.c: unexport sigsuspend() + - LP: #1536370 + * parisc: Drop unused MADV_xxxK_PAGES flags from asm/mman.h + - LP: #1536370 + * mmc: remove bondage between REQ_META and reliable write + - LP: #1536370 + * stmmac: avoid ipq806x constant overflow warning + - LP: #1536370 + * perf symbols: Fix dso lookup by long name and missing buildids + - LP: #1536370 + * net/mlx4_core: Avoid returning success in case of an error flow + - LP: #1536370 + * mtd: nand: fix shutdown/reboot for multi-chip systems + - LP: #1536370 + * FS-Cache: Add missing initialization of ret in cachefiles_write_page() + - LP: #1536370 + * ipvlan: fix leak in ipvlan_rcv_frame + - LP: #1536370 + * ipvlan: fix use after free of skb + - LP: #1536370 + * macvlan: fix leak in macvlan_handle_frame + - LP: #1536370 + * ALSA: hda - Fix noise on Dell Latitude E6440 + - LP: #1536370 + * dm thin: restore requested 'error_if_no_space' setting on OODS to WRITE + transition + - LP: #1536370 + * ALSA: hda - Add fixup for Acer Aspire One Cloudbook 14 + - LP: #1536370 + * dm crypt: fix a possible hang due to race condition on exit + - LP: #1536370 + * mac: validate mac_partition is within sector + - LP: #1536370 + * ALSA: hda - Apply HP headphone fixups more generically + - LP: #1536370 + * blk-mq: fix calling unplug callbacks with preempt disabled + - LP: #1536370 + * ARM: imx: add platform irq type setting in gpc + - LP: #1536370 + * watchdog: omap_wdt: fix null pointer dereference + - LP: #1536370 + * ARC: dw2 unwind: Remove falllback linear search thru FDE entries + - LP: #1536370 + * dm thin: fix regression in advertised discard limits + - LP: #1536370 + * fix sysvfs symlinks + - LP: #1536370 + * vfs: Make sendfile(2) killable even better + - LP: #1536370 + * vfs: Avoid softlockups with sendfile(2) + - LP: #1536370 + * nfs4: limit callback decoding to received bytes + - LP: #1536370 + * ALSA: hda - Fix headphone noise after Dell XPS 13 resume back from S3 + - LP: #1519168, #1536370 + * ARM: dts: vfxxx: Fix dspi[01] spi-num-chipselects. + - LP: #1536370 + * ARM/arm64: KVM: test properly for a PTE's uncachedness + - LP: #1536370 + * arm64: KVM: Fix AArch32 to AArch64 register mapping + - LP: #1536370 + * drm/radeon: make rv770_set_sw_state failures non-fatal + - LP: #1536370 + * PCI: Prevent out of bounds access in numa_node override + - LP: #1536370 + * ALSA: hda - Fix noise on Gigabyte Z170X mobo + - LP: #1536370 + * ARM: dove: Fix legacy get_irqnr_and_base + - LP: #1536370 + * ARM: orion5x: Fix legacy get_irqnr_and_base + - LP: #1536370 + * drm/radeon: make some dpm errors debug only + - LP: #1536370 + * NFSv4.1/pNFS: Don't request a minimal read layout beyond the end of + file + - LP: #1536370 + * nfs4: resend LAYOUTGET when there is a race that changes the seqid + - LP: #1536370 + * xen/gntdev: Grant maps should not be subject to NUMA balancing + - LP: #1536370 + * iscsi-target: Fix rx_login_comp hang after login failure + - LP: #1536370 + * target: Fix race for SCF_COMPARE_AND_WRITE_POST checking + - LP: #1536370 + * target: fix COMPARE_AND_WRITE non zero SGL offset data corruption + - LP: #1536370 + * thermal: fix thermal_zone_bind_cooling_device prototype + - LP: #1536370 + * ARM: 8454/1: OF implies OF_FLATTREE + - LP: #1536370 + * ARM: dts: Kirkwood: Fix QNAP TS219 power-off + - LP: #1536370 + * ASoC: rsnd: fixup SCU_SYS_INT_EN1 address + - LP: #1536370 + * Bluetooth: Fix l2cap_chan leak in SMP + - LP: #1536370 + * crypto: nx - Fix timing leak in GCM and CCM decryption + - LP: #1536370 + * crypto: talitos - Fix timing leak in ESP ICV verification + - LP: #1536370 + * ASoC: wm8962: correct addresses for HPF_C_0/1 + - LP: #1536370 + * rtlwifi: rtl8821ae: Fix lockups on boot + - LP: #1536370 + * mac80211: mesh: fix call_rcu() usage + - LP: #1536370 + * advansys: fix big-endian builds + - LP: #1536370 + * mac80211: ensure we don't update tx power on a non-running sdata + - LP: #1536370 + * drm/i915: Mark uneven memory banks on gen4 desktop as unknown swizzling + - LP: #1536370 + * ring-buffer: Update read stamp with first real commit on page + - LP: #1536370 + * drm/i915: Don't override output type for DDI HDMI + - LP: #1536370 + * block: Always check queue limits for cloned requests + - LP: #1536370 + * direct-io: Fix negative return from dio read beyond eof + - LP: #1536370 + * drm/amdgpu: fix userptr flags check + - LP: #1536370 + * virtio-gpu: use no-merge for fill-modes + - LP: #1536370 + * Fix a memory leak in scsi_host_dev_release() + - LP: #1536370 + * wan/x25: Fix use-after-free in x25_asy_open_tty() + - LP: #1536370 + * mac80211: do not actively scan DFS channels + - LP: #1536370 + * PM / Domains: Fix bad of_node_put() in failure paths of + genpd_dev_pm_attach() + - LP: #1536370 + * drm: Fix an unwanted master inheritance v2 + - LP: #1536370 + * sched/core: Clear the root_domain cpumasks in init_rootdomain() + - LP: #1536370 + * ARM/arm64: KVM: correct PTE uncachedness check + - LP: #1536370 + * drm/amdgpu: partially revert "drm/amdgpu: fix + VM_CONTEXT*_PAGE_TABLE_END_ADDR" v2 + - LP: #1536370 + * x86/mpx: Fix instruction decoder condition + - LP: #1536370 + * x86/signal: Fix restart_syscall number for x32 tasks + - LP: #1536370 + * Don't reset ->total_link_count on nested calls of vfs_path_lookup() + - LP: #1536370 + * net: mvneta: fix bit assignment in MVNETA_RXQ_CONFIG_REG + - LP: #1536370 + * net: mvneta: fix bit assignment for RX packet irq enable + - LP: #1536370 + * net: mvneta: add configuration for MBUS windows access protection + - LP: #1536370 + * iwlwifi: mvm: don't overwrite the key indices in D3 entry + - LP: #1536370 + * mac80211: fix off-channel mgmt-tx uninitialized variable usage + - LP: #1536370 + * drm/rockchip: unset pgoff when mmap'ing gems + - LP: #1536370 + * remoteproc: avoid stack overflow in debugfs file + - LP: #1536370 + * sched/rt: Hide the push_irq_work_func() declaration + - LP: #1536370 + * drm: imx: convert to drm_crtc_send_vblank_event() + - LP: #1536370 + * sched/wait: Fix signal handling in bit wait helpers + - LP: #1536370 + * ACPI / property: fix compile error for + acpi_node_get_property_reference() when CONFIG_ACPI=n + - LP: #1536370 + * ipv4: igmp: Allow removing groups from a removed interface + - LP: #1536370 + * isdn: Partially revert debug format string usage clean up + - LP: #1536370 + * sched/core: Remove false-positive warning from wake_up_process() + - LP: #1536370 + * gpio: omap: drop omap1 mpuio specific irq_mask/unmask callbacks + - LP: #1536370 + * SUNRPC: Fix callback channel + - LP: #1536370 + * cuse: fix memory leak + - LP: #1536370 + * fuse: break infinite loop in fuse_fill_write_pages() + - LP: #1536370 + * usb: gadget: pxa27x: fix suspend callback + - LP: #1536370 + * iio: fix some warning messages + - LP: #1536370 + * iio: adc: spmi-vadc: add missing of_node_put + - LP: #1536370 + * USB: cp210x: Remove CP2110 ID from compatibility list + - LP: #1536370 + * USB: cdc_acm: Ignore Infineon Flash Loader utility + - LP: #1536370 + * USB: serial: Another Infineon flash loader USB ID + - LP: #1536370 + * ext4: Fix handling of extended tv_sec + - LP: #1536370 + * jbd2: Fix unreclaimed pages after truncate in data=journal mode + - LP: #1536370 + * drm/ttm: Fixed a read/write lock imbalance + - LP: #1536370 + * ext4: fix an endianness bug in ext4_encrypted_zeroout() + - LP: #1536370 + * ext4: fix an endianness bug in ext4_encrypted_follow_link() + - LP: #1536370 + * AHCI: Fix softreset failed issue of Port Multiplier + - LP: #1536370 + * sata_sil: disable trim + - LP: #1536370 + * usb-storage: Fix scsi-sd failure "Invalid field in cdb" for USB adapter + JMicron + - LP: #1536370 + * staging: lustre: echo_copy.._lsm() dereferences userland pointers + directly + - LP: #1536370 + * irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB + - LP: #1536370 + * usb: core : hub: Fix BOS 'NULL pointer' kernel panic + - LP: #1536370 + * USB: whci-hcd: add check for dma mapping error + - LP: #1536370 + * usb: Use the USB_SS_MULT() macro to decode burst multiplier for log + message + - LP: #1536370 + * dm btree: fix leak of bufio-backed block in btree_split_sibling error + path + - LP: #1536370 + * dm thin metadata: fix bug in dm_thin_remove_range() + - LP: #1536370 + * perf: Fix PERF_EVENT_IOC_PERIOD deadlock + - LP: #1536370 + * xhci: Fix memory leak in xhci_pme_acpi_rtd3_enable() + - LP: #1536370 + * usb: xhci: fix config fail of FS hub behind a HS hub with MTT + - LP: #1536370 + * jbd2: fix null committed data return in undo_access + - LP: #1536370 + * block: detach bdev inode from its wb in __blkdev_put() + - LP: #1536370 + * ALSA: rme96: Fix unexpected volume reset after rate changes + - LP: #1536370 + * ALSA: hda - Add inverted dmic for Packard Bell DOTS + - LP: #1523232, #1536370 + * vhost: relax log address alignment + - LP: #1536370 + * virtio: fix memory leak of virtio ida cache layers + - LP: #1536370 + * IB/srp: Fix a memory leak + - LP: #1536370 + * IB/srp: Fix possible send queue overflow + - LP: #1536370 + * powerpc/opal-irqchip: Fix double endian conversion + - LP: #1536370 + * powerpc/opal-irqchip: Fix deadlock introduced by "Fix double endian + conversion" + - LP: #1536370 + * cxl: Set endianess of kernel contexts + - LP: #1536370 + * ALSA: hda - Fixing speaker noise on the two latest thinkpad models + - LP: #1523517, #1536370 + * of/fdt: Add mutex protection for calls to __unflatten_device_tree() + - LP: #1536370 + * 9p: ->evict_inode() should kick out ->i_data, not ->i_mapping + - LP: #1536370 + * fix the regression from "direct-io: Fix negative return from dio read + beyond eof" + - LP: #1536370 + * radeon/cik: Fix GFX IB test on Big-Endian + - LP: #1536370 + * radeon: Fix VCE ring test for Big-Endian systems + - LP: #1536370 + * radeon: Fix VCE IB test on Big-Endian systems + - LP: #1536370 + * ALSA: hda - Fix noise problems on Thinkpad T440s + - LP: #1536370 + * ALSA: hda/ca0132 - quirk for Alienware 17 2015 + - LP: #1536370 + * dm thin metadata: fix bug when taking a metadata snapshot + - LP: #1536370 + * dm space map metadata: fix ref counting bug when bootstrapping a new + space map + - LP: #1536370 + * ipmi: move timer init to before irq is setup + - LP: #1536370 + * dm btree: fix bufio buffer leaks in dm_btree_del() error path + - LP: #1536370 + * vgaarb: fix signal handling in vga_get() + - LP: #1536370 + * ARM: dts: vf610: use reset values for L2 cache latencies + - LP: #1536370 + * xhci: fix usb2 resume timing and races. + - LP: #1536370 + * USB: add quirk for devices with broken LPM + - LP: #1536370 + * parisc iommu: fix panic due to trying to allocate too large region + - LP: #1536370 + * mm: hugetlb: fix hugepage memory leak caused by wrong reserve count + - LP: #1536370 + * mm, vmstat: allow WQ concurrency to discover memory reclaim doesn't + make any progress + - LP: #1536370 + * mm: hugetlb: call huge_pte_alloc() only if ptep is null + - LP: #1536370 + * drivers/base/memory.c: prohibit offlining of memory blocks with missing + sections + - LP: #1536370 + * ocfs2: fix SGID not inherited issue + - LP: #1536370 + * sh64: fix __NR_fgetxattr + - LP: #1536370 + * sched/wait: Fix the signal handling fix + - LP: #1536370 + * sata/mvebu: use #ifdef around suspend/resume code + - LP: #1536370 + * usb: musb: USB_TI_CPPI41_DMA requires dmaengine support + - LP: #1536370 + * i2c: rk3x: populate correct variable for sda_falling_time + - LP: #1536370 + * i2c: mv64xxx: The n clockdiv factor is 0 based on sunxi SoCs + - LP: #1536370 + * xen/events/fifo: Consume unprocessed events when a CPU dies + - LP: #1536370 + * ARM: 8465/1: mm: keep reserved ASIDs in sync with mm after multiple + rollovers + - LP: #1536370 + * net: mvpp2: fix missing DMA region unmap in egress processing + - LP: #1536370 + * net: mvpp2: fix buffers' DMA handling on RX path + - LP: #1536370 + * net: mvpp2: fix refilling BM pools in RX path + - LP: #1536370 + * dmaengine: at_xdmac: fix macro typo + - LP: #1536370 + * video: fbdev: fsl: Fix kernel crash when diu_ops is not implemented + - LP: #1536370 + * crypto: skcipher - Copy iv from desc even for 0-len walks + - LP: #1536370 + * ASoC: es8328: Fix deemphasis values + - LP: #1536370 + * KVM: PPC: Book3S HV: Prohibit setting illegal transaction state in MSR + - LP: #1536370 + * dmaengine: at_xdmac: fix at_xdmac_prep_dma_memcpy() + - LP: #1536370 + * rfkill: copy the name into the rfkill struct + - LP: #1536370 + * ses: Fix problems with simple enclosures + - LP: #1536370 + * ASoC: davinci-mcasp: Fix XDATA check in mcasp_start_tx + - LP: #1536370 + * ses: fix additional element traversal bug + - LP: #1536370 + * powercap / RAPL: fix BIOS lock check + - LP: #1536370 + * ARCv2: intc: Fix random perf irq disabling in SMP setup + - LP: #1536370 + * i2c: designware: reverts "i2c: designware: Add support for AMD I2C + controller" + - LP: #1536370 + * i2c: designware: fix IO timeout issue for AMD controller + - LP: #1536370 + * ASoC: wm8974: set cache type for regmap + - LP: #1536370 + * n_tty: Fix poll() after buffer-limited eof push read + - LP: #1536370 + * tty: Fix GPF in flush_to_ldisc() + - LP: #1536370 + * ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest + DragonFly + - LP: #1536370 + * ALSA: usb-audio: Add sample rate inquiry quirk for AudioQuest DragonFly + - LP: #1536370 + * drm: Don't overwrite UNVERFIED mode status to OK + - LP: #1536370 + * ARM: dts: imx6: Fix Ethernet PHY mode on Ventana boards + - LP: #1536370 + * ARM: 8471/1: need to save/restore arm register(r11) when it is + corrupted + - LP: #1536370 + * ALSA: hda - Fix headphone mic input on a few Dell ALC293 machines + - LP: #1526330, #1536370 + * ALSA: hda - Apply click noise workaround for Thinkpads generically + - LP: #1536370 + * ALSA: hda - Set codec to D3 at reboot/shutdown on Thinkpads + - LP: #1536370 + * ALSA: hda - Add a fixup for Thinkpad X1 Carbon 2nd + - LP: #1536370 + * spi: fix parent-device reference leak + - LP: #1536370 + * scripts: recordmcount: break hardlinks + - LP: #1536370 + * dma-debug: Fix dma_debug_entry offset calculation + - LP: #1536370 + * ftrace/scripts: Have recordmcount copy the object file + - LP: #1536370 + * mtd: ubi: fixup error correction in do_sync_erase() + - LP: #1536370 + * mtd: ubi: don't leak e if schedule_erase() fails + - LP: #1536370 + * ARC: dw2 unwind: Reinstante unwinding out of modules + - LP: #1536370 + * ARC: dw2 unwind: Ignore CIE version !=1 gracefully instead of bailing + - LP: #1536370 + * powerpc/powernv: pr_warn_once on unsupported OPAL_MSG type + - LP: #1536370 + * drm/nouveau/bios/fan: hardcode the fan mode to linear + - LP: #1536370 + * md/raid10: fix data corruption and crash during resync + - LP: #1536370 + * ALSA: hda - Set SKL+ hda controller power at freeze() and thaw() + - LP: #1536370 + * s390/dis: Fix handling of format specifiers + - LP: #1536370 + * [media] Revert "[media] ivtv: avoid going past input/audio array" + - LP: #1536370 + * [media] airspy: increase USB control message buffer size + - LP: #1536370 + * USB: ipaq.c: fix a timeout loop + - LP: #1536370 + * USB: fix invalid memory access in hub_activate() + - LP: #1536370 + * i2c: rcar: disable runtime PM correctly in slave mode + - LP: #1536370 + * md: remove check for MD_RECOVERY_NEEDED in action_store. + - LP: #1536370 + * parisc: Fix syscall restarts + - LP: #1536370 + * ALSA: hda/realtek - Fix silent headphone output on MacPro 4,1 (v2) + - LP: #1536370 + * MIPS: uaccess: Fix strlen_user with EVA + - LP: #1536370 + * drm/i915: Break busywaiting for requests on pending signals + - LP: #1536370 + * drm/i915: Limit the busy wait on requests to 5us not 10ms! + - LP: #1536370 + * drm/i915: Only spin whilst waiting on the current request + - LP: #1536370 + * MIPS: CPS: drop .set mips64r2 directives + - LP: #1536370 + * KVM: MTRR: fix fixed MTRR segment look up + - LP: #1536370 + * KVM: MTRR: observe maxphyaddr from guest CPUID, not host + - LP: #1536370 + * KVM: MTRR: treat memory as writeback if MTRR is disabled in guest CPUID + - LP: #1536370 + * arm: fix handling of F_OFD_... in oabi_fcntl64() + - LP: #1536370 + * ocfs2: fix BUG when calculate new backup super + - LP: #1536370 + * mm/memory_hotplug.c: check for missing sections in + test_pages_in_a_zone() + - LP: #1536370 + * ipv6/addrlabel: fix ip6addrlbl_get() + - LP: #1536370 + * xfrm: add rcu protection to sk->sk_policy[] + - LP: #1536370 + * amd-xgbe: fix a couple timeout loops + - LP: #1536370 + * phy: sun9i-usb: add USB dependency + - LP: #1536370 + * sctp: convert sack_needed and sack_generation to bits + - LP: #1536370 + * sctp: start t5 timer only when peer rwnd is 0 and local state is + SHUTDOWN_PENDING + - LP: #1536370 + * serial: 8250_uniphier: fix dl_read and dl_write functions + - LP: #1536370 + * net: fix warnings in 'make htmldocs' by moving macro definition out of + field declaration + - LP: #1536370 + * netfilter: nfnetlink_queue: Unregister pernet subsys in case of init + failure + - LP: #1536370 + * addrconf: always initialize sysctl table data + - LP: #1536370 + * ser_gigaset: fix deallocation of platform device structure + - LP: #1536370 + * pinctrl: bcm2835: Fix initial value for direction_output + - LP: #1536370 + * mISDN: fix a loop count + - LP: #1536370 + * sh_eth: fix TX buffer byte-swapping + - LP: #1536370 + * qlcnic: fix a timeout loop + - LP: #1536370 + * dmaengine: bcm2835-dma: Convert to use DMA pool + - LP: #1536370 + * net: phy: mdio-mux: Check return value of mdiobus_alloc() + - LP: #1536370 + * include/linux/mmdebug.h: should include linux/bug.h + - LP: #1536370 + * genirq: Prevent chip buslock deadlock + - LP: #1536370 + * x86/mce: Ensure offline CPUs don't participate in rendezvous process + - LP: #1536370 + * x86/paravirt: Prevent rtc_cmos platform device init on PV guests + - LP: #1536370 + * ASoC: arizona: Fix bclk for sample rates that are multiple of 4kHz + - LP: #1536370 + * ALSA: hda - Add mic mute hotkey quirk for Lenovo ThinkCentre AIO + - LP: #1536370 + * ALSA: hda - Add keycode map for alc input device + - LP: #1536370 + * ftrace/scripts: Fix incorrect use of sprintf in recordmcount + - LP: #1536370 + * tracing: Fix setting of start_index in find_next() + - LP: #1536370 + * tile: provide CONFIG_PAGE_SIZE_64KB etc for tilepro + - LP: #1536370 + * ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption + - LP: #1536370 + * ARM: versatile: fix MMC/SD interrupt assignment + - LP: #1536370 + * async_tx: use GFP_NOWAIT rather than GFP_IO + - LP: #1536370 + * dts: vt8500: Add SDHC node to DTS file for WM8650 + - LP: #1536370 + * ftrace/module: Call clean up function when module init fails early + - LP: #1536370 + * vmstat: allocate vmstat_wq before it is used + - LP: #1536370 + * firmware: dmi_scan: Fix UUID endianness for SMBIOS >= 2.6 + - LP: #1536370 + * kvm: x86: only channel 0 of the i8254 is linked to the HPET + - LP: #1536370 + * ASoC: Use nested lock for snd_soc_dapm_mutex_lock + - LP: #1536370 + * net: sched: fix missing free per cpu on qstats + - LP: #1536370 + * net: filter: make JITs zero A for SKF_AD_ALU_XOR_X + - LP: #1536370 + * sched/core: Reset task's lockless wake-queues on fork() + - LP: #1536370 + * net: possible use after free in dst_release + - LP: #1536370 + * Linux 4.2.8-ckt2 + - LP: #1536370 + * drivers/base/memory.c: fix kernel warning during memory hotplug on + ppc64 + - LP: #1463654 + * xfrm: dst_entries_init() per-net dst_ops + - LP: #1486670 + * powerpc/pseries: Limit EPOW reset event warnings + - LP: #1539102 + * drm/nouveau/nv46: Change mc subdev oclass from nv44 to nv4c + - LP: #1540532 + * ovl: allow zero size xattr + - LP: #1540532 + * ovl: use a minimal buffer in ovl_copy_xattr + - LP: #1540532 + * [media] vb2: fix a regression in poll() behavior for output,streams + - LP: #1540532 + * [media] gspca: ov534/topro: prevent a division by 0 + - LP: #1540532 + * [media] media: dvb-core: Don't force CAN_INVERSION_AUTO in oneshot mode + - LP: #1540532 + * [media] si2157: return -EINVAL if firmware blob is too big + - LP: #1540532 + * tools lib traceevent: Fix output of %llu for 64 bit values read on 32 + bit machines + - LP: #1540532 + * cxl: use correct operator when writing pcie config space values + - LP: #1540532 + * KVM: x86: expose MSR_TSC_AUX to userspace + - LP: #1540532 + * KVM: x86: correctly print #AC in traces + - LP: #1540532 + * drm/amdgpu: call hpd_irq_event on resume + - LP: #1540532 + * drm/radeon: call hpd_irq_event on resume + - LP: #1540532 + * xhci: refuse loading if nousb is used + - LP: #1540532 + * ARM: mvebu: remove duplicated regulator definition in Armada 388 GP + - LP: #1540532 + * arm64: Clear out any singlestep state on a ptrace detach operation + - LP: #1540532 + * time: Avoid signed overflow in timekeeping_get_ns() + - LP: #1540532 + * ovl: root: copy attr + - LP: #1540532 + * Bluetooth: Add support of Toshiba Broadcom based devices + - LP: #1522949, #1540532 + * ext4 crypto: exit cleanly if ext4_derive_key_aes() fails + - LP: #1540532 + * ext4 crypto: add missing locking for keyring_key access + - LP: #1540532 + * rtlwifi: fix memory leak for USB device + - LP: #1540532 + * wlcore/wl12xx: spi: fix oops on firmware load + - LP: #1540532 + * ovl: setattr: check permissions before copy-up + - LP: #1540532 + * ovl: check dentry positiveness in ovl_cleanup_whiteouts() + - LP: #1540532 + * EDAC, mc_sysfs: Fix freeing bus' name + - LP: #1540532 + * EDAC: Robustify workqueues destruction + - LP: #1540532 + * arm64: mm: ensure that the zero page is visible to the page table + walker + - LP: #1540532 + * powerpc: Make value-returning atomics fully ordered + - LP: #1540532 + * powerpc: Make {cmp}xchg* and their atomic_ versions fully ordered + - LP: #1540532 + * dm space map metadata: remove unused variable in brb_pop() + - LP: #1540532 + * Drivers: hv: vmbus: Fix a Host signaling bug + - LP: #1540532 + * tools: hv: vss: fix the write()'s argument: error -> vss_msg + - LP: #1540532 + * clk: exynos: use irqsave version of spin_lock to avoid deadlock with + irqs + - LP: #1540532 + * iommu/io-pgtable-arm: Ensure we free the final level on teardown + - LP: #1540532 + * dm thin: fix race condition when destroying thin pool workqueue + - LP: #1540532 + * drm/radeon: Fix "slow" audio over DP on DCE8+ + - LP: #1540532 + * futex: Drop refcount if requeue_pi() acquired the rtmutex + - LP: #1540532 + * arm64: mdscr_el1: avoid exposing DCC to userspace + - LP: #1540532 + * arm64: kernel: enforce pmuserenr_el0 initialization and restore + - LP: #1540532 + * coresight: checking for NULL string in coresight_name_match() + - LP: #1540532 + * drm/radeon: Fix off-by-one errors in radeon_vm_bo_set_addr + - LP: #1540532 + * drm/amdgpu: Fix off-by-one errors in amdgpu_vm_bo_map + - LP: #1540532 + * drm/radeon: clean up fujitsu quirks + - LP: #1540532 + * mmc: mmc: Fix incorrect use of driver strength switching HS200 and + HS400 + - LP: #1540532 + * mmc: sdhci-pci: Do not default to 33 Ohm driver strength for Intel SPT + - LP: #1540532 + * mmc: sdio: Fix invalid vdd in voltage switch power cycle + - LP: #1540532 + * mmc: sdhci: Fix DMA descriptor with zero data length + - LP: #1540532 + * mmc: sdhci: Fix sdhci_runtime_pm_bus_on/off() + - LP: #1540532 + * regulator: axp20x: Fix GPIO LDO enable value for AXP22x + - LP: #1540532 + * udf: limit the maximum number of indirect extents in a row + - LP: #1540532 + * [media] rc: sunxi-cir: Initialize the spinlock properly + - LP: #1540532 + * nfs: Fix race in __update_open_stateid() + - LP: #1540532 + * USB: cp210x: add ID for ELV Marble Sound Board 1 + - LP: #1540532 + * Thermal: initialize thermal zone device correctly + - LP: #1540532 + * Thermal: handle thermal zone device properly during system sleep + - LP: #1540532 + * Thermal: do thermal zone update after a cooling device registered + - LP: #1540532 + * posix-clock: Fix return code on the poll method's error path + - LP: #1540532 + * rtlwifi: rtl8723be: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8723ae: Fix initialization of module parameters + - LP: #1540532 + * rtlwifi: rtl8821ae: Fix errors in parameter initialization + - LP: #1540532 + * rtlwifi: rtl8188ee: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8192de: Fix incorrect module parameter descriptions + - LP: #1540532 + * rtlwifi: rtl8192se: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8192ce: Fix handling of module parameters + - LP: #1540532 + * rtlwifi: rtl8192cu: Add missing parameter setup + - LP: #1540532 + * NFS: Fix attribute cache revalidation + - LP: #1540532 + * rtlwifi: rtl_pci: Fix kernel panic + - LP: #1540532 + * bcache: fix a livelock when we cause a huge number of cache misses + - LP: #1540532 + * bcache: Add a cond_resched() call to gc + - LP: #1540532 + * bcache: clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing + device + - LP: #1540532 + * bcache: fix a leak in bch_cached_dev_run() + - LP: #1540532 + * bcache: unregister reboot notifier if bcache fails to unregister device + - LP: #1540532 + * bcache: allows use of register in udev to avoid "device_busy" error. + - LP: #1540532 + * bcache: Change refill_dirty() to always scan entire disk if necessary + - LP: #1540532 + * wlcore/wl12xx: spi: fix NULL pointer dereference (Oops) + - LP: #1540532 + * Input: i8042 - add Fujitsu Lifebook U745 to the nomux list + - LP: #1540532 + * libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct + - LP: #1540532 + * x86/xen: don't reset vcpu_info on a cancelled suspend + - LP: #1540532 + * udf: Prevent buffer overrun with multi-byte characters + - LP: #1540532 + * udf: Check output buffer length when converting name to CS0 + - LP: #1540532 + * drm/dp/mst: process broadcast messages correctly + - LP: #1540532 + * drm/dp/mst: always send reply for UP request + - LP: #1540532 + * drm/dp/mst: fix in MSTB RAD initialization + - LP: #1540532 + * drm/dp/mst: fix in RAD element access + - LP: #1540532 + * PCI: Fix minimum allocation address overwrite + - LP: #1540532 + * PCI: host: Mark PCIe/PCI (MSI) IRQ cascade handlers as IRQF_NO_THREAD + - LP: #1540532 + * btrfs: handle invalid num_stripes in sys_array + - LP: #1540532 + * iwlwifi: update and fix 7265 series PCI IDs + - LP: #1540532 + * iwlwifi: pcie: properly configure the debug buffer size for 8000 + - LP: #1540532 + * locks: fix unlock when fcntl_setlk races with a close + - LP: #1540532 + * scsi: add Synology to 1024 sector blacklist + - LP: #1540532 + * ASoC: compress: Fix compress device direction check + - LP: #1540532 + * dm snapshot: fix hung bios when copy error occurs + - LP: #1540532 + * uml: fix hostfs mknod() + - LP: #1540532 + * uml: flush stdout before forking + - LP: #1540532 + * drm/nouveau/kms: take mode_config mutex in connector hotplug path + - LP: #1540532 + * ALSA: usb: Add native DSD support for Oppo HA-1 + - LP: #1540532 + * ALSA: hda - Fixup inverted internal mic for Lenovo E50-80 + - LP: #1529624, #1540532 + * x86/mm: Add barriers and document switch_mm()-vs-flush synchronization + - LP: #1540532 + * x86/boot: Double BOOT_HEAP_SIZE to 64KB + - LP: #1540532 + * s390: fix normalization bug in exception table sorting + - LP: #1540532 + * xfs: inode recovery readahead can race with inode buffer creation + - LP: #1540532 + * xfs: handle dquot buffer readahead in log recovery correctly + - LP: #1540532 + * clocksource/drivers/vt8500: Increase the minimum delta + - LP: #1540532 + * Input: elantech - mark protocols v2 and v3 as semi-mt + - LP: #1540532 + * x86/reboot/quirks: Add iMac10,1 to pci_reboot_dmi_table[] + - LP: #1540532 + * ALSA: seq: Fix missing NULL check at remove_events ioctl + - LP: #1540532 + * ALSA: seq: Fix race at timer setup and close + - LP: #1540532 + * virtio_balloon: fix race by fill and leak + - LP: #1540532 + * virtio_balloon: fix race between migration and ballooning + - LP: #1540532 + * ALSA: hda - Fix white noise on Dell Latitude E5550 + - LP: #1540532 + * parisc: Fix __ARCH_SI_PREAMBLE_SIZE + - LP: #1540532 + * scripts/recordmcount.pl: support data in text section on powerpc + - LP: #1540532 + * powerpc/module: Handle R_PPC64_ENTRY relocations + - LP: #1540532 + * ALSA: hda - fix the headset mic detection problem for a Dell laptop + - LP: #1533461, #1540532 + * ALSA: usb-audio: Fix mixer ctl regression of Native Instrument devices + - LP: #1540532 + * drm/i915: Restore inhibiting the load of the default context + - LP: #1540532 + * drm/i915: intel_hpd_init(): Fix suspend/resume reprobing + - LP: #1540532 + * x86/mm: Improve switch_mm() barrier comments + - LP: #1540532 + * ALSA: timer: Fix double unlink of active_list + - LP: #1540532 + * dmaengine: dw: fix cyclic transfer setup + - LP: #1540532 + * dmaengine: dw: fix cyclic transfer callbacks + - LP: #1540532 + * mmc: mmci: fix an ages old detection error + - LP: #1540532 + * ALSA: timer: Fix race among timer ioctls + - LP: #1540532 + * sparc64: fix incorrect sign extension in sys_sparc64_personality + - LP: #1540532 + * cifs: Ratelimit kernel log messages + - LP: #1540532 + * cifs: fix race between call_async() and reconnect() + - LP: #1540532 + * cifs_dbg() outputs an uninitialized buffer in cifs_readdir() + - LP: #1540532 + * m32r: fix m32104ut_defconfig build fail + - LP: #1540532 + * dma-debug: switch check from _text to _stext + - LP: #1540532 + * scripts/bloat-o-meter: fix python3 syntax error + - LP: #1540532 + * ocfs2/dlm: ignore cleaning the migration mle that is inuse + - LP: #1540532 + * ALSA: hda - Add fixup for Dell Latitidue E6540 + - LP: #1540532 + * ALSA: timer: Harden slave timer list handling + - LP: #1540532 + * zram/zcomp: use GFP_NOIO to allocate streams + - LP: #1540532 + * zram: try vmalloc() after kmalloc() + - LP: #1540532 + * ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba + Portege R700 + - LP: #1540532 + * ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba + Satellite R830 + - LP: #1540532 + * mm: soft-offline: check return value in second __get_any_page() call + - LP: #1540532 + * zram: don't call idr_remove() from zram_remove() + - LP: #1540532 + * memcg: only free spare array when readers are done + - LP: #1540532 + * panic: release stale console lock to always get the logbuf printed out + - LP: #1540532 + * kernel/panic.c: turn off locks debug before releasing console lock + - LP: #1540532 + * printk: do cond_resched() between lines while outputting to consoles + - LP: #1540532 + * ALSA: hda - Fix bass pin fixup for ASUS N550JX + - LP: #1540532 + * crypto: algif_skcipher - Require setkey before accept(2) + - LP: #1540532 + * crypto: af_alg - Disallow bind/setkey/... after accept(2) + - LP: #1540532 + * crypto: af_alg - Fix socket double-free when accept fails + - LP: #1540532 + * crypto: af_alg - Add nokey compatibility path + - LP: #1540532 + * crypto: algif_skcipher - Add nokey compatibility path + - LP: #1540532 + * crypto: hash - Add crypto_ahash_has_setkey + - LP: #1540532 + * crypto: algif_hash - Require setkey before accept(2) + - LP: #1540532 + * crypto: af_alg - Allow af_af_alg_release_parent to be called on nokey + path + - LP: #1540532 + * crypto: algif_hash - Remove custom release parent function + - LP: #1540532 + * crypto: algif_skcipher - Remove custom release parent function + - LP: #1540532 + * crypto: af_alg - Forbid bind(2) when nokey child sockets are present + - LP: #1540532 + * lib: sw842: select crc32 + - LP: #1540532 + * crypto: algif_hash - Fix race condition in hash_check_key + - LP: #1540532 + * crypto: algif_skcipher - Fix race condition in skcipher_check_key + - LP: #1540532 + * ALSA: hrtimer: Fix stall by hrtimer_cancel() + - LP: #1540532 + * dmaengine: at_xdmac: fix resume for cyclic transfers + - LP: #1540532 + * ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode + - LP: #1540532 + * ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode + - LP: #1540532 + * ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0 + - LP: #1540532 + * ARM: debug-ll: fix BCM63xx entry for multiplatform + - LP: #1540532 + * xfs: log mount failures don't wait for buffers to be released + - LP: #1540532 + * crypto: algif_skcipher - Load TX SG list after waiting + - LP: #1540532 + * crypto: crc32c - Fix crc32c soft dependency + - LP: #1540532 + * IB/qib: fix mcast detach when qp not attached + - LP: #1540532 + * IB/qib: Support creating qps with GFP_NOIO flag + - LP: #1540532 + * IB/mlx5: Expose correct maximum number of CQE capacity + - LP: #1540532 + * IB/cm: Fix a recently introduced deadlock + - LP: #1540532 + * ideapad-laptop: Add Lenovo ideapad Y700-17ISK to no_hw_rfkill dmi list + - LP: #1540532 + * Btrfs: fix deadlock running delayed iputs at transaction commit time + - LP: #1540532 + * iscsi-target: Fix potential dead-lock during node acl delete + - LP: #1540532 + * crypto: algif_skcipher - sendmsg SG marking is off by one + - LP: #1540532 + * ALSA: hda - Flush the pending probe work at remove + - LP: #1540532 + * zsmalloc: fix migrate_zspage-zs_free race condition + - LP: #1540532 + * prctl: take mmap sem for writing to protect against others + - LP: #1540532 + * ALSA: timer: Handle disconnection more safely + - LP: #1540532 + * libceph: fix ceph_msg_revoke() + - LP: #1540532 + * MIPS: Loongson-3: Fix SMP_ASK_C0COUNT IPI handler + - LP: #1540532 + * MIPS: hpet: Choose a safe value for the ETIME check + - LP: #1540532 + * ocfs2: NFS hangs in __ocfs2_cluster_lock due to race with + ocfs2_unblock_lock + - LP: #1540532 + * pNFS/flexfiles: Fix an XDR encoding bug in layoutreturn + - LP: #1540532 + * make sure that freeing shmem fast symlinks is RCU-delayed + - LP: #1540532 + * MAINTAINERS: return arch/sh to maintained state, with new maintainers + - LP: #1540532 + * MIPS: Fix some missing CONFIG_CPU_MIPSR6 #ifdefs + - LP: #1540532 + * ideapad-laptop: Add Lenovo Yoga 700 to no_hw_rfkill dmi list + - LP: #1540532 + * drm/i915: On fb alloc failure, unref gem object where it gets refed + - LP: #1540532 + * [media] rc: allow rc modules to be loaded if rc-main is not a module + - LP: #1540532 + * [media] lirc_imon: do not leave imon_probe() with mutex held + - LP: #1540532 + * SCSI: initio: remove duplicate module device table + - LP: #1540532 + * clk: xgene: Fix divider with non-zero shift value + - LP: #1540532 + * clk: st: avoid uninitialized variable use + - LP: #1540532 + * MAINTAINERS: gpio-brcmstb: Remove stray '>' + - LP: #1540532 + * ASoC: Intel: pass correct parameter in sst_alloc_stream_mrfld() + - LP: #1540532 + * PCI/MSI: Initialize MSI capability for all architectures + - LP: #1540532 + * ath9k_htc: check for underflow in ath9k_htc_rx_msg() + - LP: #1540532 + * ASoC: tegra_alc5632: check return value + - LP: #1540532 + * mtd: nand: fix ONFI parameter page layout + - LP: #1540532 + * mac80211: fix mgmt-tx abort cookie and leak + - LP: #1540532 + * mtd: nand: denali: add missing nand_release() call in denali_remove() + - LP: #1540532 + * Drivers: hv: util: catch allocation errors + - LP: #1540532 + * Drivers: hv: utils: use memdup_user in hvt_op_write + - LP: #1540532 + * tpm_tis: Use devm_free_irq not free_irq + - LP: #1540532 + * ALSA: fm801: explicitly free IRQ line + - LP: #1540532 + * ARM: imx: select SRC for i.MX7 + - LP: #1540532 + * ALSA: fm801: propagate TUNER_ONLY bit when autodetected + - LP: #1540532 + * ALSA: fm801: detect FM-only card earlier + - LP: #1540532 + * pinctrl: bcm2835: Fix memory leak in error path + - LP: #1540532 + * mmc: sdhci: restore behavior when setting VDD via external regulator + - LP: #1540532 + * x86/LDT: Print the real LDT base address + - LP: #1540532 + * sysrq: Fix warning in sysrq generated crash. + - LP: #1540532 + * kconfig: return 'false' instead of 'no' in bool function + - LP: #1540532 + * perf/x86: Fix filter_events() bug with event mappings + - LP: #1540532 + * perf/x86: fix PEBS issues on Intel Atom/Core2 + - LP: #1540532 + * power: test_power: correctly handle empty writes + - LP: #1540532 + * firmware: actually return NULL on failed request_firmware_nowait() + - LP: #1540532 + * target: Fix a memory leak in target_dev_lba_map_store() + - LP: #1540532 + * phy: micrel: Fix finding PHY properties in MAC node for KSZ9031. + - LP: #1540532 + * m68k/atari, m68k/sun3: Fix SCSI platform device registration when + driver is modular + - LP: #1540532 + * um: Fix build error and kconfig for i386 + - LP: #1540532 + * net: sctp: prevent writes to cookie_hmac_alg from accessing invalid + memory + - LP: #1540532 + * ipv6: tcp: add rcu locking in tcp_v6_send_synack() + - LP: #1540532 + * bonding: Prevent IPv6 link local address on enslaved devices + - LP: #1540532 + * kbuild: Demote 'sign-compare' warning to W=2 + - LP: #1540532 + * mmc: sd: limit SD card power limit according to cards capabilities + - LP: #1540532 + * net: tcp_memcontrol: properly detect ancestor socket pressure + - LP: #1540532 + * vmstat: make vmstat_updater deferrable again and shut down on idle + - LP: #1540532 + * include/linux/memblock.h: fix ordering of 'flags' argument in comments + - LP: #1540532 + * Btrfs: clean up an error code in btrfs_init_space_info() + - LP: #1540532 + * btrfs: initialize the seq counter in struct btrfs_device + - LP: #1540532 + * bridge: fix lockdep addr_list_lock false positive splat + - LP: #1540532 + * batman-adv: Avoid recursive call_rcu for batadv_bla_claim + - LP: #1540532 + * batman-adv: Avoid recursive call_rcu for batadv_nc_node + - LP: #1540532 + * batman-adv: Drop immediate batadv_orig_ifinfo free function + - LP: #1540532 + * batman-adv: Drop immediate batadv_neigh_node free function + - LP: #1540532 + * batman-adv: Drop immediate neigh_ifinfo free function + - LP: #1540532 + * batman-adv: Drop immediate orig_node free function + - LP: #1540532 + * printk: help pr_debug and pr_devel to optimize out arguments + - LP: #1540532 + * ARM: dts: armadillo800eva Correct extal1 frequency to 24 MHz + - LP: #1540532 + * team: Replace rcu_read_lock with a mutex in team_vlan_rx_kill_vid + - LP: #1540532 + * mmc: debugfs: correct wrong voltage value + - LP: #1540532 + * IB/mlx4: Initialize hop_limit when creating address handle + - LP: #1540532 + * net/mlx4: Remove unused macro + - LP: #1540532 + * NFSv4: Don't perform cached access checks before we've OPENed the file + - LP: #1540532 + * NFS: Ensure we revalidate attributes before using execute_ok() + - LP: #1540532 + * veth: don’t modify ip_summed; doing so treats packets with bad + checksums as good. + - LP: #1540532 + * net: cdc_ncm: avoid changing RX/TX buffers on MTU changes + - LP: #1540532 + * sctp: sctp should release assoc when sctp_make_abort_user return NULL + in sctp_close + - LP: #1540532 + * connector: bump skb->users before callback invocation + - LP: #1540532 + * af_unix: Fix splice-bind deadlock + - LP: #1540532 + * unix: properly account for FDs passed over unix sockets + - LP: #1540532 + * bridge: Only call /sbin/bridge-stp for the initial network namespace + - LP: #1540532 + * tcp_yeah: don't set ssthresh below 2 + - LP: #1540532 + * sched,cls_flower: set key address type when present + - LP: #1540532 + * udp: disallow UFO for sockets with SO_NO_CHECK option + - LP: #1540532 + * net: preserve IP control block during GSO segmentation + - LP: #1540532 + * phonet: properly unshare skbs in phonet_rcv() + - LP: #1540532 + * net: bpf: reject invalid shifts + - LP: #1540532 + * batman-adv: Drop immediate batadv_hard_iface free function + - LP: #1540532 + * vxlan: fix test which detect duplicate vxlan iface + - LP: #1540532 + * ipv6: update skb->csum when CE mark is propagated + - LP: #1540532 + * Linux 4.2.8-ckt3 + - LP: #1540532 + + -- Brad Figg Mon, 01 Feb 2016 13:41:55 -0800 + +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,145 @@ +# +# 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_NR_CPUS=128 +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,8937 @@ +# +# 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_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=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_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=m +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_CP15_BARRIER_EMULATION=y +# 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_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_SETEND_EMULATION=y +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_SWP_EMULATION=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,178 @@ +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/platform/x86/pvpanic.ko +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-1028.36/abiname +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1028.36/abiname @@ -0,0 +1 @@ +1028 --- linux-raspi2-4.2.0.orig/debian.raspi2/abi/4.2.0-1028.36/armhf/raspi2 +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1028.36/armhf/raspi2 @@ -0,0 +1,15211 @@ +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 0x6d8cfb2e crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0xd74e9db8 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 0xb553cfef bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xedb6a3ec 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 0x1f91f422 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x5e283e7c pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x77817bdf paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x7bb2047f paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xa1aa650d pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xaba9f79a pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb38d1b72 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xb8838af7 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc0a24989 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xca11b5f2 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xe6233d6b pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xe8452844 pi_connect +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xadb76919 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 0x6532753b ipmi_smi_add_proc_entry +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 0x7ad3789b 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 0xb1198c7a ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xce9919ce 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 0xf8e4d479 ipmi_get_smi_info +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 0x29a8869e st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x5283147b st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x5a9269b3 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x954e5863 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x3b567cb1 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x5f0e071f xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x617756b5 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x050393b6 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x11ab526f dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x59bcd166 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x823e1500 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xe558518a dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf95f9754 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/pl330 0x90319998 pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0x3d470228 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 0x01009f01 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01599dd2 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x016d0470 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01ce39f5 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x037b85d9 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04afe908 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0527068e drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x068f8c3f drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09dc8e25 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a4c5ed2 drm_master_get +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 0x0b9a8982 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cd44e2a drm_gem_object_release +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 0x109b1f72 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11ccf8eb drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11df1ded drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12377196 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1252c3dc drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14c77400 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14f2ffcc drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x162b1196 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19a4bfd8 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e9d634 __drm_modeset_lock_all +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 0x1b10466a drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c65c21e drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cb5afa6 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1daa3453 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1efeb694 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f69b60e drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21a48513 drm_bridge_pre_enable +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 0x2397725c of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23c78f51 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24b88c43 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24de41b4 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25f02869 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x261d4ec3 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x273298e5 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2835e929 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x285fb0a8 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29cddd9c drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29e30eab drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a18c9a2 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a45022b drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b2966b9 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b3598ee drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bbe554b drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c16326d drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ca201fa drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d67c6f8 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2eeb1e8d drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2efea310 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30dc31b1 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x310ce5bd drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x311b3419 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31bbe653 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32744bbb drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3319d599 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x339b266d drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3489f6d8 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35500b33 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36481a5f drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36993b3f drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37c48193 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x381f38b5 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a9fd5e8 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b4d1352 drm_hdmi_avi_infoframe_from_display_mode +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 0x3bc91b15 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c3b2287 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d879a40 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dac5ad8 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e727849 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c253f7 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c4b0dc drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x423ef82d drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43566f63 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x438f6796 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x443a83e3 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x456ede0c drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47189d57 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x478c3d0f drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x488fc346 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48c1b3de drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a3df53c drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aad5c87 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b6de172 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c895f08 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cbbd121 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ef31b28 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f5fb51b drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fefd125 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5088f226 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50bd006a drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5178ac52 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51c53ebc drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51fc89e3 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52e09aab drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5383d6cc drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541cfc drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56e52e5b drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a53fd10 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ab4a60f drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c9a88c3 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e982d84 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ea2faa3 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f616651 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61ea2c3a drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62168dd2 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x654530fb drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65ae18fe drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x668e3985 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6750ff4e drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67fa96b5 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69a34c99 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69c89de9 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aa75ab6 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6e15e9 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e0fdc38 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71c20eca drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x723b9530 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7269eee3 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x731917fc drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x741614ac drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74291562 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74b95a97 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74fe68a3 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x757039a4 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75804363 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76138abe drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x793fef4a drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x796aaedc drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79fd001e drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9fbf85 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f082509 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff2d593 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x809dd9ef drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x816b322a drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82442382 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82cdc73a drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82d0befc drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x831d1324 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84087b37 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84953f79 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8611bf33 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x869a3574 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86e9684f drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86eebd96 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88548de0 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89428aae drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b42759d drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b7fabee drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bc7b12e drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c084293 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ccc6c5e drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d282eaf drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d5fa523 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e82e45c drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ebb66e0 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fb5b3ce drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9037e51c drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x912e3889 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91dba2c1 drm_crtc_vblank_get +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 0x92bc6da4 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93686ce1 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94243ba0 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9520d298 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97e40ed7 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99c6ffdc drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a71a926 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c4d2ef7 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ce773e9 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eb09095 drm_gem_private_object_init +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 0xa2227ba4 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2d1e15c drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa466fee3 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4aafb86 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4e4fdb6 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7b76db2 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9fc9bc drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab5f7267 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadbfc112 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf07eb47 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb040e29a drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb14d4441 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5ec83f1 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb649e491 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb66fd416 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb96d5335 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba18b27b drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb171d29 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd0ec5b5 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdaf7bc8 drm_select_eld +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 0xc090d53a drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1569d9e drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc25e2571 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc455b218 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc62436bd drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6755b23 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6a646ed drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc70241d5 drm_framebuffer_unregister_private +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 0xcb0c25d5 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb5e8a77 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccbfc0a2 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd620019 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf7ecd33 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd09be232 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1c6bc1a drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2bdda36 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3d86b66 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd402b67c drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd500ee27 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd567afbb drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5c284c9 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5f685c9 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64afb6f drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd76141cc drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd90bc8f8 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd927b9ad drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd963ef70 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdab7e45b drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdae59483 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb717015 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbdd7d15 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbf1d620 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbfc5637 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc4fafa1 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcde380d drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd7d0a83 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdee4d728 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe02bbfc5 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1e930c4 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2196fec drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2c90f96 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe46e95a9 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe50a5159 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe550b691 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5d62a4a drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6a22f06 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f15bc3 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7c67a49 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8382fdc drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe89da780 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9bea417 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9c7078f drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb624e8e drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec1d620e drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed33445f drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed989ca6 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf16e2041 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2a1140d drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf34d4666 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf47a9c4e drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5cf36c7 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf720eaeb drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf75df8d2 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8764ed6 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8b5d326 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa1c2f65 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfafdf015 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb1efb20 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb5c09ec drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc4bc981 drm_mm_dump_table +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 0xfe83e015 drm_mode_equal_no_clocks_no_stereo +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 0x0b2eb91d drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b9d3a18 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e46c070 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f427288 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1530abeb drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16189f85 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 0x16c14ac9 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17b6d098 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17d5dc90 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ba1db31 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c90ae3a drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d276095 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e2889ce drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1eb7404a drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21d38393 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22596022 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x261804ff drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29b37dc2 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c764496 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d304594 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3041fbd6 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32617c3d drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32bf0fee drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36db3265 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f685db9 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43412928 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43d2f54c drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47eebb84 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a729cb4 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a842410 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a9b0353 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b721e2b drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4bd87a39 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5869643b drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59079aee drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5dac2138 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5db3e301 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fa8f083 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61724d8b drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63223ff1 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63d6d3d1 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x652eaa74 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6824499c drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71cacf54 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76b92cf1 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7933c3b0 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ffad1df drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82a1218f drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83fcf9d3 __drm_atomic_helper_crtc_duplicate_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 0x852ec68b __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86580112 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x879bf0f9 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87fb3f59 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d5fdcc5 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ed5a7a6 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90906329 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90f62694 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9139e20a drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92b171e1 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x937191dc drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9959433c drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b8ad4b7 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ba4e131 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa226c26c drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5ef3c1f drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa640a980 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa88f13e5 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa927122d drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa984acc1 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa75bad0 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabdd3510 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb16f6b66 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb199a251 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb44c4355 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5d43295 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb66a3a81 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7fe9e8c drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9a7e644 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbb7e825 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe499c21 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfd02419 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0b7ea63 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc10e3770 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2e8a666 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc83d48eb drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8c6eeb6 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc93af112 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca5b996f drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcaa52974 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xced0781c drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0e11842 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd11366f4 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1f7eb0b drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4a2381c drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd640b3b5 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdce6d9a9 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfc5485e __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1813e33 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe38b18e6 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4783cc1 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5df744e drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6dbc626 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb0ef9ce drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed21497d drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef110290 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf10bdde5 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf10f97fa drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf38fb931 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7a9b122 drm_dp_mst_topology_mgr_destroy +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 0xcd44960e 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 0x5c2f19e7 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x6e127443 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xaf3df61e i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x0766ef1e i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x1bb6568c i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x072f4812 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0819cbb0 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x140d1cb1 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4ddad8d0 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5fc1e5ce mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x72740a74 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9264b8e1 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x965b27fb mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9966c468 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa2f88337 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xaf5859fb mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc656ab99 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe02f439e mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe829f7be mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xecd3560a mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf7548334 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x2c719f53 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xb1672f91 st_accel_common_probe +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 0x59f0de85 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5a5c9940 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7ec4a02f ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xadd0f33c ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb0422654 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x3fddb8da ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xaca0acc9 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xed3f74ee ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x017d298d 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 0x16b86fc3 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x30cb1d1e st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3d5ba569 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4d812819 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x69ff4126 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8385c2ea st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb671d200 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbcb68674 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc14e55f1 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc5120655 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe61623a0 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xeffbe4c3 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf573e0a7 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf8f53e93 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x5ba7451f st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xa08b1c34 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x7d719613 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x144b14df st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xa6343653 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x3105aff0 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x89f29b40 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0ff06050 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x11f3b0c5 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2756e76b iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2a2e5d01 iio_bus_type +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 0x6373c513 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x81d4d9aa iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x825c4f91 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x8425b32e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xa89ef14a iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbc4687ce iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xbcd31a29 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xc09a63aa iio_buffer_init +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 0xf8d31ba3 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x07ffb4aa iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x79462ac5 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x560b64d1 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x901394e1 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa1371911 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xe0fd1785 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x8eeacd30 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xc0d8fac6 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x934185c8 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x389f32c2 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x5e96f18d st_press_common_probe +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0968de7a gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1b1c2516 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4f197044 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5fd86989 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8b341b84 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9cae4025 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd04fd70a gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf36c7974 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfe21a4f9 gameport_unregister_port +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 0x1f575b3e ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xbe78724b 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 0x1da77cd0 capi_ctr_ready +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 0x31dd9225 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4e3e0250 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x53885d6b 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 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7aa2340b capi_ctr_resume_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 0x9a75c6e5 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9dd1fdf3 capi20_register +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 0xb611fdd8 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcc9ac00f capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe088969a 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/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 0x74c67532 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/i4l/isdn 0x9df14af2 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xedac70d7 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfd7387ab register_isdn +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 0x0cf619c9 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x14131f79 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1ed61bfb get_next_bframe +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 0x344c3df1 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b76236e mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f15b11c recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x480c5926 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 0x6a689dfa recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x87014cfd get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x88ed6717 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8aa3e8d3 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8b2755b5 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d42ea9c recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa027d5ba mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb2796610 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb3841619 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc2f29f0f mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3419b1b dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xce0deb31 recv_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 0xdf8ce699 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe44fd895 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf91e7d0f mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xffc6ccc2 bchannel_get_rxbuf +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 0x1b8f1f3e closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x21c7828c bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x2a5a2b17 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3361c614 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b8741a4 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 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb424dfc3 closure_wait +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 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 0x55101941 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x86decf3c dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xf46b7426 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xf8340fae dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x474aaca7 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6e34102f dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc742c79e dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xca1a76f0 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xeae53e06 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xfee8bfc1 dm_exception_store_create +EXPORT_SYMBOL drivers/md/raid456 0x009eff15 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x15b86a5c flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x54922356 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x67f13ae0 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7a552e78 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x987c6f35 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xad7f1e07 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb2b823d6 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb58dc42f flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb946f5c9 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd0c71ebf flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xee501444 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf06680ba flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf87b5405 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/cx2341x 0x0ccaa448 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 0x394f372f cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x480b89e8 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa50d662b 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 0xc3d333fd cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x7c51bb01 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xb84d346b tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x03c481b7 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0aec9d0c dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x11a7672a dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x11b2e624 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17163202 dvb_generic_ioctl +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 0x3d58206a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x41e7febf dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x43b614b6 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x43baf4bb dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4614aadd dvb_frontend_reinitialise +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 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 0x93f5e990 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x968728b4 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9850cb88 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9acd6a88 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa216edb0 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa37e9309 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb7b6caf7 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbddb20f8 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc056440e dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc26068f2 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc512e942 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc79317de dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc9bab779 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdac03b92 dvb_frontend_resume +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 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 0xe8b572f0 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf48116c6 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf6b41a96 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 0xfbc3f462 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x0de60a07 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xb07bdf14 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xca8d1489 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x21b60464 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5c0aba03 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8d42695c au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x94740f31 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x971ae08f au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x99875592 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb345b8ef au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe88c9e86 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xea32c8ea au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x1ee7476a au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xcef563ac bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xd90728c4 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x46a4092f cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x5ad71ace cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xfef2c657 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xdc8ba804 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xdf979f88 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xf5f4b521 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x8329227c cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x48dcd995 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5d1007c5 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6a4a2958 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc3cfc2cb dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe1dfafda dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0f03e447 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x21117ffe dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x270d68ee dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x34a69e10 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3e8577ca dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x42d3ace9 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7125e1bf dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7e8bc555 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7f2ac2d3 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8a12d378 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb0661acf dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbed6d692 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcc836014 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd82aa1ad dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfc962ff3 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x3e06f65a dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x55f27a85 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x643cf85b dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x72ae9f00 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x971eaaf1 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf2275b13 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfdd9dbc3 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x24420d4f dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x764fb08b dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x91ee7dcf dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xee79d8c7 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd73348bc dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc49de7b5 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x08a079ce dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x091c96d1 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x380eb792 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x867b018d dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9a618f75 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x932d5274 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x0eb7792e drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x03a0c2a3 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x51fb132d ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x230dc04c dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xa948aa3f ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xa8dbb187 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x53ef08d8 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xd908abd7 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x3ef6cc18 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x82b040b0 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x0397b6f0 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xc2559385 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xe31932b1 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xf0d053be lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x47f9949d lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xc99dca36 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xf77cac83 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x44aaefcf m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x981ef648 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x78522b70 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xb3641e96 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xba7d807b mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x215de548 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x41e6239a nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x5ea87df3 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x7c6f89ad s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x1191e5fc s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x93271957 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xc4d46f24 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x0c21ab97 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x17d53f86 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x35179445 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x53737565 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xafeffa31 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xca9bdfcc stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xab153153 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x3fedffd7 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x5aef0f4a stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x587c4c1e stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x4d8a79ab stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x34ae7724 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x4cff64e0 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xb6779210 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x0946a875 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x4e9917bc tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x5c6784f6 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x4c9b0a91 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xfd6c7bba tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x161745c5 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x9bee7bd1 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xf259d63f zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xa03b42ca zl10353_attach +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x8a916cb6 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 0x114427e0 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x69e4023b soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x73a0c6da soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7a2027ee soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8087b814 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc9f93c69 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xfe84f1fe 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 0x0fabfb06 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x23b7fb6f snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2bb3fae4 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3f14c38b snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x61622ede snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6c320e4a snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9b27e5ed snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x190d25e8 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x507cb752 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6ee83b8d lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x868c7d3d lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa0cf03fa lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaedefb10 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbd6a9433 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbe746994 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0xd8dc2914 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf071d484 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xe7211294 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x926fb074 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x635b2035 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x74c18290 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xe4f85d76 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x27261444 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xf7cf7c13 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x73d581cc mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xfdea60e0 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x8f8be0d4 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x485737c8 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xc0068e06 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 0x293fea16 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xf2753249 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x8226125b xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x5dd5c58e cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xb5def3b9 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3c2a988f dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x513645da dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x52df4cc1 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6128dd00 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x61cab425 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6a8302d6 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6f13d5f7 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8e5a2155 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd275714c dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x200537c1 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x20f326d3 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3e594d73 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4a14837d dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7916a9c4 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x94dabee5 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa9e33753 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 0x6eb0947c 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 0x196aff59 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x26b57272 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5c459bd8 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x79b78c58 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x87c2bd43 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 0xcd28625d dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xce600526 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd976ddfc dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf308c234 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf9002088 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfec38230 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x09d06e51 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x2aba79e2 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x06c57610 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0a784041 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1150d135 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x53f070cf go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x78dc2cdf go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xaf3aa90f go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbae52664 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xee99be95 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf1764ce7 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2469e2fd gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2e1cb3aa gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x53f4ddc5 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x633119c9 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6c6a5cc7 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x736d72a6 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x894c1be4 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc655ad50 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7246ede9 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xa6140112 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb67bc1e9 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x0e7d09d5 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 0xb783029d v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xe056651e v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x46ae7811 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x489b179f videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x64da602f videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x991798f2 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9f6ca841 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xebd72fd7 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x689d4617 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x000f806b video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x041acb56 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0a4aaa95 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e32b789 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x14948f11 v4l2_subdev_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 0x1be368cf v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2316fa61 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2354125f v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x23816540 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2847aaa3 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x29ab5fd8 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f286e82 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32faa83a __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36d62949 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x395900df v4l2_try_ext_ctrls +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 0x3d377ab0 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40726631 v4l2_query_ext_ctrl +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 0x4ac64e52 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c27af19 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e2ad2e2 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4eba4b52 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x52107908 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x573a6fa1 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5a1ca214 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5de9ea41 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5efa5ad7 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x609deff3 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x61fd6a65 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x62f757c3 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69f79a1d v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69fb0214 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6c3c26d9 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6c64bf44 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72fda032 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76453c58 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x778c9003 v4l2_subdev_init +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 0x7af82ffb v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b846f7f v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f755fc7 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80cceed4 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x812dec20 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87056597 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8b678d22 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8d70c03d v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x93a62b10 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98e47d98 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9aef29c8 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa252fa85 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa3dd7c27 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa40f9de9 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7593db8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa098b36 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab9bc37d v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf919e22 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb156d1bf v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb2a4734e v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb47a1cee v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb96d5396 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc33e38d v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1f7ef8c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc48fbf65 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7a4ee78 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca53c46e v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcc225748 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1d9f451 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd30268d5 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc553ab6 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde5de97a v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe0098388 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4c243b4 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb771b13 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/memstick/core/memstick 0x060851a9 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0880124e memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1b7c50bd memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x35db1158 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4511c446 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4a42794e memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5e25545f memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6bad9301 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x93b9db78 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9b4be1bd memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbe4b46d3 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdedde422 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe07bdf17 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfaf94894 memstick_register_driver +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 0x36f3459e dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xc8c57015 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xfc0da008 dln2_unregister_event_cb +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 0x7c639b3f tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x8c730c2e tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xdca681a4 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 0xa52ff774 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xeefd365b wm8994_irq_init +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 0x1a112334 bcm2835_smi_get +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 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 0x7739f7a9 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xe41d8f03 c2port_device_register +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x09245e06 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x36e7a6a3 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xabe1b015 dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xb799c3c5 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x19ff942a mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xef9f934d mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x3651509b 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 0x3a18b781 tmio_mmc_host_free +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x56192f7a 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 0x885d633c tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xb8f97f52 tmio_mmc_host_alloc +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xbbd39815 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2c93aeb2 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4ba2f201 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8a4c1f22 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x900d3df4 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x944a27ab cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd30e51cd cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xddc7cf14 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x5bb195c1 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xf65392ba lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0x1271273d denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc20e413d denali_remove +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x32c17e39 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x60baf340 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7cf1ef29 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe942873f onenand_scan_bbt +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0d858d29 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x47e80d6a hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9ddb1132 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb906ff0f hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd17505b8 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2919c0a8 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x54204e6e irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x75c75e80 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8cb36c8d sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x95f63333 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcb7e9379 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe0de8d46 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf37ccc5a sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf7046f8c sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfbdbf954 sirdev_get_instance +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x0b72272d alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x8aebf95a free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x2ce68de7 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x172c2669 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x95994a0a pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xda6d389c register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/team/team 0x040a2c3e team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x27b4a2c5 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x318f8a96 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x4c5120ab team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x549b367f team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xc2a9fe3a team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xccb0639c team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xed24d37e team_mode_register +EXPORT_SYMBOL drivers/net/wan/hdlc 0x03059cb6 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2ba40f68 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3760149a unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4d2ea703 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x570053ae detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5ca03f39 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5eab10f9 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7458e40c unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xaae5f9a0 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xab597e4c alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf21d1441 hdlc_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xd7169f39 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x03cf565e ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x182f6fc4 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x19269bc1 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1f07c5c5 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x205adbfb ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x32e320a0 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3afabf3f ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x92632aaa ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x97580529 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc9f9d375 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcecb648b dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe5d67af2 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 0x085977fa ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1730a08d ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x282c1f7a ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x32629034 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4cf25442 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x69dc90c8 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8f54e446 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9476052d ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbde34ae3 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd483aaca ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xda8d94a9 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0ae3e437 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x49a0703f ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4b0d1fdc ath6kl_core_create +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 0x9659a04d ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa42b2fc2 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa5b54ad2 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xba017964 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbee8511b ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe37c9f7c ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfd245bd9 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x09550974 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x09721415 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1e7466ba ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2745aa6f ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3a23bc85 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x40d77948 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5e29e3de ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x669b4a7f ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7b8188b6 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7e3faf87 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7f3ba62f ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8632e17a ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8a84505a ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8ba2b12c ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x936ed084 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9701da8c ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa0bf7042 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa5760fc6 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd23f6d22 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd376487b ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe6276fa1 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf09a4b9a ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf2bbc4da ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x010ebf91 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b03641f ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c24f467 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e742708 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fdd84c6 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x113342d8 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13e2a98f ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1755b91b ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x197366fd ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b8bf7aa ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c2c38c5 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1eff8546 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21d56b32 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21eacbf2 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x241bbad5 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x270e8333 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27c55f04 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d491300 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e81f2a9 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ecf2ab8 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2fa0c7fa ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32677e82 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35398c8c ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x377aab76 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37b07f74 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3cf457c5 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4112f666 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4126cfc1 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46f052a3 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x490b9061 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4bfc5a09 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f5ae25b ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56783f70 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56ff8012 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58152897 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x586c9694 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x586e4df4 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x588ac696 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60a532cd ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63fb47fe ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64a5f80e ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66e40e88 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66eff3d5 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67e79c77 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b925037 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ea3974c ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72f22dbc ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a28052e ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7af25dfa ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x806f6047 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82fa4c05 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89f4b343 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a5e5bf7 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b9d8363 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ec65b37 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96993425 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99b1fc2f ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ac4e91c ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b19973b ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c874580 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ca0e7d9 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e74831a ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa069abcb ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa712d2c3 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7ed8371 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8a63da6 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa0ba1e9 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac35dded ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xada576bd ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafa8af99 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2940167 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb456e4b3 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6a58377 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9095e3d ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb0ce731 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfbc3c71 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbf55c88 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce38434c ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcee204ba ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfa03c2f ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1c3b35e ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd2642d44 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3f66200 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd455ccc3 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5074eac ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7800601 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd5016c4 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe11d651b ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3a54fc4 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3e51535 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe446145a ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6a77315 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea01da32 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea434de4 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xead77003 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee06bc0e ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee778783 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef31211b ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef39c174 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf02dc663 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1d78fc2 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf39f05d8 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf533131f ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfcd51b15 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0085528d brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0af8d389 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x12acb21f brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4bcaca25 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x66492a4a brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x67ff821a brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6fa2ad19 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x70647a4f brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbd407135 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd870565d brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe3fc5caa brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xec1e8dfb brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf251fca5 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0088fdb7 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x070350e8 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x117e0334 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1d4bbd96 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x22db6d2b hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2684c488 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x29335014 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x312e6071 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x31ee431a hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x380565d1 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4f82300a hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x540d48ad prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6a14cbe4 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6c231bee hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x75a3a685 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7df80129 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8404e330 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaa529e18 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xae980940 hostap_set_hostapd_sta +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 0xb8d329c4 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc5ed474b hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc98a3ca6 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd3439371 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe1f24d50 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfbab333b hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6e48c156 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9079c502 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbdc37118 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd547e48c wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x2b2282e3 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x5b3d2b05 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x630d51f5 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xe6da3d2e nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xf495e026 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x84ad938f pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x9843e017 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0195b8e4 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2975f3ef ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3adb4d8c st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4522c4f6 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7acfb3cd ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x924e032e st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9be415b2 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa67410ca ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xcee91ac2 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x17cc82d9 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x17e0f1f4 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4933fe11 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5bf70119 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7431a2a2 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7727255b st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x868818a1 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8f0e89ab st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x913e2e67 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa2407a49 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xae57af77 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb80e0b37 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbb2c7e44 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd5b93974 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe1b30bc0 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe3ec456a st21nfca_hci_probe +EXPORT_SYMBOL drivers/parport/parport 0x0b0da5c7 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x0d8731b1 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x17a9b1e0 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x1daab290 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x228eee8a parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x29c5dc53 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x2d41d1c2 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x339e7e22 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x442ed12d parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x4b71822b parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x4ccd05d5 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5975726b parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x5db5b89f parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x5dbc381e parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x715e94ca parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x81668519 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x842ab01d parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9317031b parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x9b2c8720 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x9d326727 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xa68dce65 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xa7a14d6b parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xb8e67108 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xbef697c0 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xbfbc86c9 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xc1a57f0d parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xdadb1fa4 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xe4e73853 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xeb011c33 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xefb0e50c parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xf4977596 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xfc043648 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport_pc 0x9fabab85 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xc1509267 parport_pc_probe_port +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x9ae37a05 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x28b2311c fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5507c9c1 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x58638932 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x75c95887 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x987efd87 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb409d6e2 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc0343d24 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd4a4c379 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe99ed76f fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xea009cc4 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf200f288 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf32facc5 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0d9b570c fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16c611fd fc_set_rport_loss_tmo +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 0x359b11d1 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3c2cdb9b fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3c7a62d6 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3dee4c05 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f90033c fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x45255fe7 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4e178dc3 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x532e07e1 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x59021a33 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x61e6396e fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66e388f6 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ac7e07b fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74075378 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x740a8949 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7888fbe4 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x79358b27 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82286298 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dfba0cb fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8fd3c815 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x938a8cd4 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9788c3f4 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99e54909 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9a3fb469 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4a1d42c fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa757cd58 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb223a96e fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc742d05 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf08503a fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf7de2be fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc319b742 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc330f7b5 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3fe023d fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd19069d1 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd486bc26 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4ba9ae3 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc82988f fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xddc5dcf6 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xde302fcb fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xec1f8beb fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xef10c5a4 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf82d90dc fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x79dc02dc sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7ee2d18d sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xdb5e9065 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xea83c09a sas_resume_ha +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0013a1b2 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0fe77979 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13d738d2 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x19bf772f osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d9b8304 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x24008ebf osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x26cddc44 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2a136b45 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2af516ed osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x331a0fc9 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x39aa2f0e osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x46273d8a osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x490a12b0 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4f287825 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x59236cb8 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5f1750ad osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6b122af3 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x723431cf osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x77ffa864 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x87d0886e osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x910af9fb osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x911cec60 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f3190fc osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa6fcf9f0 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa75c6928 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb123d70b osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbd151172 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc03b87bf osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc9eaf59c osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb841621 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd69318da osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd9714971 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe5f86deb osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe66da7eb osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe9620e58 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf416dd1f osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0ceff702 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2e75df27 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x57486ff9 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x70dbe3fe osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x752463b9 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa7a580eb osduld_device_same +EXPORT_SYMBOL drivers/scsi/raid_class 0x8697a458 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xa4047c02 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xfdc3dacc raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x30b630bf fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3a3bc1c5 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3b02596a fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x49f3efa9 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x51c3daab fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x54dde9db fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6338b118 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x922315db scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbfbaf9c8 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc2c45e19 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd3b86173 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd58b3707 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf15bbcf3 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02736d51 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0682ed35 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0d144ced sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x152d33e4 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1fbe73ce sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2679a02f sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x32b072c5 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x358d6d5a sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x47634630 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d3a0a1c sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x65aece2b sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7c67926d sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x80b56f19 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81a5c180 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x863fca5a scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x89fa5d20 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8ab0c99d sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa0f615a1 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa4e88117 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xada0d86a sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xadb3c137 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb2b56fe8 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb7c5199c sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9f77cca sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca4dfafd sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf1671304 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf5c5e051 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf90d89cb sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x24c5944f spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4c76f0e3 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x96e8f513 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa7e27924 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xda4cbefc spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x27e48756 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x9f9640a4 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xc154e4c4 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xe5da7ee7 srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x0085112e ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4e257732 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x51f7d556 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd1fc1418 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe32d5c54 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xeb4530ad ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf762a07d ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x007ac9b7 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x0dc0d722 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x317640c9 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x45ba6c1c __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x48046d54 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4bd5d48c ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x4bebd81b ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x5202c915 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x6ebfded8 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x7109a3c8 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x7250e7fd ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x78155082 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x7fc684d8 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x9b794dca ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x9d8fab75 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xb14945d5 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xce054aa9 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe63cdcdd ssb_dma_translation +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x00dde95a fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x02f69881 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0671c486 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1d38ac20 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1fdaa544 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x239e50ad fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x37f565eb fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3e43333d fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4ecc33b1 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x58f0a01a fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x64931129 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x75969dfb fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x78271d4b fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x997cbb87 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9cfdfdc0 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xae072d15 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb62a176f fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbf70d81a fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd18013cb fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xde20eeb3 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe022c73f fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe38d1b56 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xeee5a6fe fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xefa9a2ea fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xb8134989 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 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x187c64af lnet_create_reply_msg +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 0x26a492d4 lnet_sock_getbuf +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 0x2b06e63d the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x30f68a29 lnet_unregister_lnd +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 0x424fb705 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x44f58b59 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x52416622 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x54106b48 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 0x5a686698 lnet_copy_iov2kiov +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 0x6535d2a1 lnet_kiov_nob +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 0x7018dd94 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x703d80d0 lnet_sock_connect +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 0x7feb5869 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x823b04f2 lnet_notify +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 0xa3f74f6f lnet_copy_kiov2iov +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 0xab54153d lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb2d1a80d lnet_finalize +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 0xc339555b lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd2d00054 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd3333110 lnet_set_reply_msg_len +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 0xf12b4c6c lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf65ebcf8 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfba8ab6d lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x0232cce0 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x0dc1ad6d client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1e8a92b3 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x478415b7 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x78b3b694 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 0xce788e19 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf7ec7a67 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1295179d fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x52348468 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x63ed0119 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc8d2445b fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd6a10743 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd8c45524 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf44cf9c0 fld_client_fini +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 0x1f14c25f libcfs_kkuc_msg_put +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 0x242f3351 libcfs_kkuc_group_add +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 0x76ef9795 cfs_crypto_hash_update_page +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 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 0xeb4c8c7d 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 0xf67e278f cfs_hash_debug_header +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 0x15945cab ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x675f0f47 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x7285f156 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xd847120e ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1d3dd556 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x26c57609 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x42915639 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x466c6625 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xbda8fe67 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xfe367463 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 0x0054ab4b cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00f31044 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0188ed4c cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01963b06 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02bdd21b llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02f41156 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03086a1d cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x032e8422 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0352e56a lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035bf16f cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03a14211 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05935516 lprocfs_rd_atomic +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 0x06202925 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0659d99a llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06ee269c lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0782449a llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x078b10fc cl_page_find_sub +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 0x0836c7d0 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0870f0b2 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08f0915a lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09ff52cd cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b429267 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c0c108e lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c761b32 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1062fa1b lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1176c832 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11966d68 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x119ddb26 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1201d5ad cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1211acff cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x121212eb lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12603062 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13687ef7 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x154b82a2 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1550873b cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x157154aa cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15c4693d cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1602c430 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x169c5700 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17fba635 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18415eec llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18985c61 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1990bbbc dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19f2ad9d cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a198789 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bdf1814 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc487c7 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d09eca8 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3dfb0d lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f5068f2 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fa04cb2 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x203fa89d obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20437539 cl_object_header_fini +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 0x22d8b7ef lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22ebdd9f cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2304b267 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x235edc71 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23ca65d6 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x246f1ff8 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252407df lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25419b62 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x255283e3 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25ec3248 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x262e2eae cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26d77099 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2765b642 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2897873c lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a43f4bf obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2aa045cf lu_object_put_nocache +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 0x2ce5377a dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cf22e7f cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e5813ea dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x311f228c llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31748fd6 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31bfc5c3 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x339108bc cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34ce9085 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35b935d2 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36d386fa lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3834abb7 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x395cf104 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39b31fcd lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a3153ed cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a3ac96b cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b7a7b77 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bdef4a8 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dafc981 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f72dc0b cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f9fd355 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x400faa9f class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41ad86d6 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42f81e4e llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43175655 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4456bcde cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x446949fc cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4547522a lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4595bd0d cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45d82319 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x460d898c iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x463123e4 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4719dd9b lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x471e2379 class_exp2obd +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 0x47f7eca8 llog_cancel +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 0x4a03a41c cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a622a78 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4aa0cb24 class_import_put +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 0x4aeca609 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c119609 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c590334 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c758acb lu_object_anon +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 0x4d673401 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4dbf1d88 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e31bd88 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e40ed8a llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e72376c lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x506e1633 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50b3805b cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50e4d794 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x516638e9 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52e2ae23 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x530fa88a dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x534a1a83 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53539a7e cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5434baf5 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5475e5e6 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54c0afc5 llog_sync +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 0x565e48a0 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56f5176f ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57239187 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x575174fd lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59133836 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59cf6244 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a4a01d2 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a5264fa cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a64d92d lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b124e61 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cdcf07a lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5db1bfb2 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de01627 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e7dd7d1 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ee2caff llog_process_or_fork +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 0x6101dc10 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61180e4b cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6158931c cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x636fa3e2 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63b54307 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64dc85bf llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6556d6bf cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6585c4e9 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x659a51c0 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6664eb80 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675408af dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6835d0ca cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69337530 cl_page_unmap +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 0x69a5c559 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69ec0ce2 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a0099e7 cl_io_lock_alloc_add +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 0x6bd82f32 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c57a7b1 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d19528b cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6de953db lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e43ac8c cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e6d014f cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6efe183a lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fa14da8 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fdb3af1 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fe673a7 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7027c4f6 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x721ee928 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x729bd865 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x730efa34 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73d490a8 class_config_llog_handler +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 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 0x75a97e55 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75c3c176 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75d262f0 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x770f5a2a cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x771200b5 cl_page_cancel +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 0x790ea8da cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7965da18 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79cc00e6 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a9dfe18 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b60cfdf dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b873c58 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bfb4a27 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c7b4df4 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cca7c56 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7dae93cf llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e54ad18 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7faa7e6d class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fd8f118 ldebugfs_obd_seq_create +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 0x80477c6a lu_object_put +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 0x8106665e dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81232ce3 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81350802 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x815fbfc2 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x819c132c lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81a1dfc4 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81a44daa cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81d46999 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x824c44d8 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82c52be2 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83cdbab3 lu_object_find +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 0x848f9cd6 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d40144 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86256f77 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8649dcf3 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8666a019 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86a64238 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8707a2f4 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x881a0dde cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8936043f cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89fef4de cl_page_list_splice +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 0x8c776a43 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d7750d9 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d9502bd obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8dae2ba5 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e9f4369 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fb85d70 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9055b1d4 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c8d327 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x918e89e1 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9213f512 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92a4092c cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x937550ac class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93a8e5bb lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93d30789 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94677235 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x953c81ea class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x954ac947 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 0x96e4302e lprocfs_alloc_md_stats +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 0x983b4e9e cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x984c7d5f cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9aa068ae class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ab2f715 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9abc4f22 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d54a657 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e0380a3 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e253b35 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e535c82 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e71975e cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0a3401c llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa12ae801 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1e13523 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa28792d4 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2c4924f cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2f71462 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3ef845d class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa42633d8 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4335379 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa573c4a8 lu_site_print +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 0xa6b328cf cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6baec54 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa74fa850 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa85d948c cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa862d221 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8a9ab27 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa95a2586 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa0b5397 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaab64688 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab2c2a39 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab2d8d0a dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabbcc937 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac522086 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xada2cdc7 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae14e7d4 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae45c270 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf069f81 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf4af5b6 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0895ae6 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb270f3ed ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2d7fa7e llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3700279 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3799a44 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb387cdf7 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3e7fe17 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4b305df cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5af1c99 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb63475ff cl_pages_prune +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 0xb7e3a332 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb82dd381 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb84f581d lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8657ad4 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8b87bf6 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8d6b7b7 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9a1e5b4 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9dfa513 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba3a0058 cl_page_list_add +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 0xbaeb12a3 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb734c5d obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb9adb5e cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbeb24423 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbebe506f cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbebfae3f dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9e695e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc114a57e cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc14a4cd8 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b9a319 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc241429e cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc316a2bb llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc388925f class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc640d016 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6ff5b74 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7b6376f llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8266ecc class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc855f978 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc85d935c class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9aecc64 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbafb7e2 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbc4ca45 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccc2a649 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd60f68b __llog_ctxt_put +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 0xcdbfe0d7 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcea5b47a class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0103eae cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd05fb671 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd076e2f2 lu_context_key_degister +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 0xd136a3e2 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd371fb96 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4add1d9 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5be2116 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd64a152e llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd73ad7dd cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7787030 cl_queue_match +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 0xd8ee4131 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd90e4924 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd94212be lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd96829dc cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9979d90 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9c8fdd9 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda29496e obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda551a95 cl_req_slice_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 0xdb05243a ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb808bea cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdba2a06e cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbac3f17 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd806732 cl_page_lookup +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 0xdf2fe6f0 cl_io_lock_add +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 0xe0737543 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe21d8aa4 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe28df0a3 cl_offset +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 0xe31573a3 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe39dbd4f dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe42b8e7e cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4d7c3d5 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe58603f1 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5e5f949 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe85af4ca lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe85dc79b dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8798719 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8837b23 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8f66ae5 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb2538d8 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed1f4006 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee1f10a9 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee43fca7 lu_dev_add_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 0xeeed6c55 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef399a0c class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef8c48b1 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefe385d0 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0228a20 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf32f8f1e cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf37191da class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3b52505 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3d036ea lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3d09c9a class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4bf9256 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5e495b5 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5eedc29 cl_use_try +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 0xf7900f3d cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7b92083 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f42641 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8ef3d5e class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa2475a5 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa992241 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb5745f2 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc397d4b cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc4788db llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd290138 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd4e5d6a cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd700df1 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfda776ca lprocfs_rd_uint +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 0xffe35470 cl_lock_at_pgoff +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 0x0240cd3f ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02657871 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02a45e8f sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x046925a3 ldlm_extent_shift_kms +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 0x05c14673 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x064b8ebb req_capsule_server_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 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0946c4a8 req_capsule_filled_sizes +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 0x0a8300ae ldlm_cli_update_pool +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 0x0b04fc6f ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b68c96f ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bbda3bf ptlrpc_hpreq_handler +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 0x0c699a82 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e16becb ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f17f192 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fab6f13 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10167922 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10b0a410 unlock_res_and_lock +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 0x11719ea5 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11ac044c sptlrpc_conf_client_adapt +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 0x153d5abc ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1647c1f1 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x170a5a72 ptl_send_rpc +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 0x176d4e8b ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1797e6da ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17a13f5c ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18c71b27 ldlm_prep_enqueue_req +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 0x1bba3df3 sptlrpc_get_bulk_checksum +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 0x1d2d770d ptlrpc_abort_inflight +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 0x1fe7a25c ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20bd4c7e ldlm_init_flock_export +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 0x21d75cfe ptlrpc_commit_replies +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 0x2523e1bd ldlm_namespace_put +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 0x26a914d1 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x273d5448 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x27688565 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28624014 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28a63b5c req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29b92b5f ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29f7aa83 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2adc7420 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b9fd414 sptlrpc_target_update_exp_flavor +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 0x2d0cf878 ldlm_pool_init +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 0x2e559704 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ef0e5f4 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f3a17d0 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f927808 lprocfs_rd_pinger_recov +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 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x34a834c3 ptlrpc_invalidate_import +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 0x38aa5712 ptlrpc_register_bulk +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 0x3a49a970 ptlrpc_request_committed +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 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bf42dfe ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c29fd69 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c536b4e ptlrpc_recover_import +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 0x3ce51a28 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7369e6 lprocfs_wr_pinger_recov +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 0x3fedfec6 ptlrpc_lprocfs_brw +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 0x43af357f ptlrpc_register_service +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 0x442d20b6 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4484ae5c __ldlm_handle2lock +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 0x46dff3fa ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47953d36 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +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 0x49ee6188 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a68641a lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ad9b8d3 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cc25ff0 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d336957 ldlm_cli_cancel_list +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 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50697985 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x508fda88 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x520f2fc0 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x523571a7 sptlrpc_gc_del_sec +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 0x54aa9199 _debug_req +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 0x55e17de5 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x566f37be sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58b09350 ldlm_cancel_resource_local +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 0x599c2e8d sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a179d35 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a92a0f4 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 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 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 0x61d037d5 ldlm_lock_downgrade +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 0x680b45e0 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6838f339 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x686a8264 ptlrpc_obd_ping +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 0x69db4e10 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ad86f1b req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c428fc9 client_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 0x6de5d021 ptlrpc_nrs_policy_unregister +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 0x6f4b2b5e client_disconnect_export +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 0x73d0e04a ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e5aec0 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x757d41f5 req_capsule_extend +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 0x77066ffd ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7751e4e7 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x777ea360 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78390e8e ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7982c369 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a78675c ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ab59cb0 ptlrpcd_alloc_work +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 0x7bfdb328 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ce9369d ldlm_init_export +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 0x7d7c451e 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 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 0x7ff743fd ptlrpc_prep_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 0x8143dd08 ldlm_blocking_ast_nocheck +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 0x8315d3e1 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8334695a ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8417406d _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85292b46 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x855d5acb req_capsule_other_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 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 0x880c7b0f lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88e3947b ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x895c9c52 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89853a5b lustre_pack_request +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 0x8c479c0c sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d3e6356 ptlrpc_req_finished_with_imp_lock +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 0x8db608d2 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e5b3826 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e5fa4ff ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ed5d41a ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fd516c5 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fdd3d65 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x918c6785 req_capsule_server_pack +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 0x927bbc19 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x935145d3 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94868fa8 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x953781e9 client_obd_setup +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 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98206dc7 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x995ac2cc client_import_add_conn +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 0x9a2d9391 target_pack_pool_reply +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 0x9cd2ab12 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ceece90 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d554fe9 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9db4e4c9 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e1419a0 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e4cf05b ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fcc26df ldlm_cli_enqueue_local +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 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 0xa60c0b05 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa686054b req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6f1c139 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa76a9415 sptlrpc_sec_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 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 0xabef146c ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd31d21 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad7c5429 ldlm_lock_fail_match_locked +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 0xaebd6cb8 do_set_info_async +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 0xaffbd86d ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0470939 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0d6d077 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb122ef6e ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb23b3f24 ptlrpc_unregister_service +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 0xb3ac1664 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb43e696f target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4f0968d ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5a4fb44 sptlrpc_cli_unwrap_bulk_read +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 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9637870 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9ea2cc4 ldlm_lock2desc +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 0xbc2508bc ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbcbdc671 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd2b28bb ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbdc76c55 ptlrpc_deactivate_import +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 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc01ff58e ptlrpc_request_alloc_pool +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 0xc0bb9159 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1117615 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc167ee04 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc18481ec ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc201621f ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc23e5a75 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2aefcf8 ptlrpc_pinger_add_import +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 0xc3b3648d sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3dfd470 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc55c4ac6 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc65e1792 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6d1ebfe ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7953a7c ptlrpc_activate_import +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 0xc822f8e9 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc888cc32 ptlrpc_save_lock +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 0xca94cb30 target_send_reply +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 0xcb45a92b ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcda5088d ptlrpc_resend +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 0xd01ab7c3 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd04a7f9a client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd082f4ea ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd114fc4b lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1e54c95 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1fe773a ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd25ff844 ptlrpc_request_set_replen +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 0xd3cfb6e9 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd46d42ad ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd639993e req_capsule_fini +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 0xd6ff6069 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd73d5ca6 req_capsule_shrink +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 0xd9b1d97b ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdaa43493 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb04c049 ldlm_enqueue_pack +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 0xdcc078ab sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf89914 ldlm_pool_set_clv +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 0xdd9ccba0 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddbfe30b ldlm_resource_unlink_lock +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 0xde211daf sptlrpc_cli_ctx_wakeup +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 0xdef38ff3 sptlrpc_enc_pool_get_pages +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 0xe0bac0ba ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0eb1fe0 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe32fcf29 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4928477 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4ff6401 ldlm_lock2handle +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 0xe5f655f7 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6d9db15 client_destroy_import +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 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabe9e7c req_capsule_server_grow +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 0xed0b4c93 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedc5fdc4 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee70f9dc lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef9fb16e ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefb1d1c8 req_capsule_init_area +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 0xf139db17 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2280280 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 0xf2c7f793 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3130131 ldlm_pool_shrink +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 0xf459b3ab sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45ba2a3 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf49fdc10 ptlrpcd_wake +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 0xf5bd8282 sptlrpc_register_policy +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 0xf8485e3d llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf856c7d2 ldlm_pool_get_limit +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 0xf8c2d47b ptlrpc_pinger_sending_on_import +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 0xf9fcece2 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa792531 ptlrpc_nrs_policy_register +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 0xfc331cfd ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd0300df ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd12976f ldlm_completion_ast +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 0xff8eb690 ptlrpc_error +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/target/iscsi/iscsi_target_mod 0x0a9d3aa1 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0e953c1e iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x12c9e6fb iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x151e12ad iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1794a2ae iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1810f75e iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1c74ce22 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2a6a68b7 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3f341974 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x401df187 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4056d088 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x40735420 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4dcd9f8b iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4f61dba3 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x55470a30 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x66c6f499 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x75fd42ac iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x78405702 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7ed742b1 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x80241138 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9b94c187 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ee14721 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb59f97bf iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc04b37a2 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc1ade741 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc662de66 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf2f0a6f6 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xffc9b3a8 iscsit_build_reject +EXPORT_SYMBOL drivers/target/target_core_mod 0x01097842 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x02b5ae36 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x080f8914 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c4b2e17 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x0da54879 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f9d6ce0 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x0fbc9710 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x12373c92 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x17e2b42c transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x1c0eb8a0 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ff45d3a core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x247f675b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x26c66b05 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a594ecd transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b5ce47e target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e33ca82 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x30190f04 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x30dc567e target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x31bc9950 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x381cc217 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a0d9873 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c90d0dc core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x4277dd1e transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x458b98ef target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x45ef3556 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x4aed2616 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4cda52cf core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d16d949 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x56d73c0a target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x647c95b9 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x66e3319a core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a942020 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ca14d96 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7227d4c0 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x72fb4b22 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x76feeed3 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x80a4b70d transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x82951399 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x83d79b97 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x86e0b56d transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e149bef target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x90da4bd0 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x911da6d6 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xa49320b1 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xa790b75f target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa92d6317 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xaaae56a7 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xad392778 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1efdac9 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xb9e4f58d transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xbae30892 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb1b98c4 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc08bbe60 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3018844 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd1e580c target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xd195e000 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9ce36ef target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xdbb2458e target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdde25aea sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xe7c2f4ff sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb7e1cd0 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf15de98c target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c91646 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4cac20e transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4ef6e94 transport_free_session +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x7ee70b1f usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xed74edbd sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00acfcdf usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0b9f52be usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5dc898d1 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x66d19b2f usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7e892126 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7ef72601 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x910ff987 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9de8c435 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9f835694 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xac347a26 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc480e516 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf7a3487d usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x64b4fb0d usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x81bd7c3f usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/lcd 0x41ca9619 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6db7abca lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb355a72f lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xbbbaaae8 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x8cdbeb37 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x25ccec89 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xa055f9d4 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 0x1846baae w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x36a1e05d w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x527f4fda w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x792d9556 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 0x0342b3e4 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x62795b60 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x6e862738 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xacd08daf ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xb4602dfd ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xdace24e3 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xeb4eec17 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xf3a37886 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xf5edf407 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xff3fd8ca ore_get_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x0bbf2f96 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x10c3fad8 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x177eb062 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x1edba971 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x29ba8cf3 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x2b7810c2 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x2f82b6d9 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x305c1dfe fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x31c52c84 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4aa59618 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x4e8b05f3 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5334ee38 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x54e358a6 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5a59864a __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x5e8e997f __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x6b0c31bb __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x729a3db3 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x774f4833 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x78bf9bbf fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x7fa58398 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x84540ea1 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x8613a14d fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x92a5483b __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x953ec0c1 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa2b5f79e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xa989afd1 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xb1680031 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xbc6a5614 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xca99f572 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xcca7ae95 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xce0305c5 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xd021d14a fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd27b8447 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xda88f1e3 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xe0742475 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xe42aa7e2 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xe6136812 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xf49b53c1 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xfea75c25 __fscache_acquire_cookie +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 0x1effbf27 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x3767d8b2 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x99047dba unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xa36350d3 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x66ef5dcb make_8023_client +EXPORT_SYMBOL net/802/p8023 0x69fef047 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x38cbdd63 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xd0de5d13 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x106ed144 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x138b7b59 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x13ce59b1 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x25374bce p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x29b8f3b6 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x2b8b23eb p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x2c004605 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x2f364b04 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x2f6a8704 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x2f7c204a p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x34c7471d p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3c6b0fb5 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3c94a2c4 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44391077 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45946329 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x505c6861 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5d82a61c p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x642fb041 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x653049c4 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x7a720bfe p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x81189111 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x86b86501 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x88d545c7 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x928e30e3 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x9c16510d p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x9ce58e4f p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xa36d6dec p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xa9e067b7 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xb2f6eab4 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb98ff5df p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xb9c46908 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd2a713a4 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xd3031cf8 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xd4592099 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xd47e30dd p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xded6fa5b p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xe277b0d4 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe6a5ee21 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xec929394 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf93a8e2a p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfdbd160d p9_client_open +EXPORT_SYMBOL net/appletalk/appletalk 0x40e9bfb8 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x8dd4bd67 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xa7fd6494 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xad508e7e atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x39f27fc5 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4532bf0a vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x4581361c register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x45d824cd atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x53999ccb atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x54094378 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x6f9ff48e deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x715bb142 atm_charge +EXPORT_SYMBOL net/atm/atm 0x71d0bad1 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x792a1ce2 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x8d382c6e 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 0xd3cf3f1a vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xec4f0941 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xf1774b53 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x19faff7c ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x32ae41d4 ax25_linkfail_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 0x557282af ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x6257c09a ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x637a885c ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9d6423a3 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xbbbaea27 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc8dd6b42 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x006367d5 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0312aedf hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x05901e08 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06b48fa0 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f2b18be hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2309a89f hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x27115caf bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2abd0edc hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ad2b3a5 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e8f5ceb hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ec688e5 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x39d98f66 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44796e4f l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x479a3fd5 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x58d56953 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d119b1a bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6384c1a1 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x655d73b8 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x878a4da9 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x89e223ba hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8a056d40 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x99972836 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa234ef24 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa51aa39a hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa7c7dab4 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa871af3e bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae511aa8 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaef6d9fa bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb75dfd58 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb8786f43 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb8e2ce35 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe85e16d bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd1f24669 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd8553e2f hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe30af1a8 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe3cf827e hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe97b3755 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf1ae71f1 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfca5b15b l2cap_register_user +EXPORT_SYMBOL net/bridge/bridge 0x5aa3d9f7 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x235664e4 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2bc05d07 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc0e8b8a0 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x0357a3dd cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x0720968c caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x175d1211 get_cfcnfg +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 0x41d0fd33 caif_connect_client +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 0xb7d54d1c caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x218e5bb4 can_ioctl +EXPORT_SYMBOL net/can/can 0x71fa0349 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x8ac5c914 can_send +EXPORT_SYMBOL net/can/can 0xa6533cd5 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xf4e81a43 can_proto_register +EXPORT_SYMBOL net/can/can 0xfceae15c can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x0135d6eb ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x01520ed0 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x01614cad ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x023ea3af ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x0808a67e ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x12883ec8 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x12c0cee5 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x14c71ebb ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x1581ae22 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x16bab112 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x17f61975 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x194ea85d osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x1fafd141 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x23b8b25d ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x26117d57 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x28426bfa osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x28a0791b __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x2d91222c osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2f66f589 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x35500dbe ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x37cb35e8 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3c404588 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x4128ef98 ceph_get_direct_page_vector +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 0x4491bf60 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47373ba6 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x480ca06a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x4a2ca7ac osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x4bd8fdf6 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54573d09 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x642108a1 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6d6aa0c2 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x6dc0e00f ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6e4da9ae ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x6fe4ce03 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x6fe942a4 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x72f1627c ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x7a38fb6f ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x7bf27fc9 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x806c4372 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x8794aa2d osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x904ebda8 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x924514a3 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x94e3dcba ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x983a627e ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa3196097 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xa33f30c0 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xa3a9300f ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xa42464c3 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xa628d1f3 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xae94db64 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb2eee15a ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xb4f237c8 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb8b9b106 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xbef9315f ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xbf345655 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xc0549c3f ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc6c09a3d ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xc70de9da ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xc7e702ac osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca92ae79 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcd48d7b2 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xcd49c241 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xcddf71c8 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd0168384 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4571887 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd7078a25 osd_req_op_cls_response_data +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 0xdfbb1d8c ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe2d87e23 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xe4a443ca ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe7159b54 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xe7f4611e ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xe88ff07c ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xea63b9da ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xec22cde3 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xeda5c6bf osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xef814718 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf512d28d ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xfc65edc3 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfc6fe620 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xfca4f853 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xfd4b7300 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x0f9f9ad7 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x75f7fa58 dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x4f6a60fb lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7ec02126 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x84806a3d wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8ee00de4 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd2d6ad67 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe48494e5 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf4a2e091 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x1a41e88f gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xd6083130 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x2fe37417 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x67d6a39c ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x78d32b92 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xade988c2 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd3424af7 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xda97ab50 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x24fb5ae7 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x5cce4bf6 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x87df4d3b arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x40cd4a5e ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5bf9bd92 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf49c681a ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x67ed05fa xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xcf3c29a0 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x715372ea udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2b500b53 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x36ad1750 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3bf55c4f ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xba01bd3e ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0f5cd121 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x2e5a36fb ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xca0d3f66 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xa50dac86 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xb3df3be9 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xac60d74c xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xfade3072 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x19bdf54f ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2010fb07 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x24ccc851 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3162418d ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6e20bfb4 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x77a2aa80 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x955fb902 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb3e153b2 ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x0612178b 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 0x09036e61 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x0a812341 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x0fe0402a irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +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 0x4fc45828 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x51cd04c4 irlap_close +EXPORT_SYMBOL net/irda/irda 0x51d99cb2 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x5414ee72 iriap_open +EXPORT_SYMBOL net/irda/irda 0x56e22f1d irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x6250c0f2 async_unwrap_char +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 0x725061a7 iriap_close +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 0x80a22a9c irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x8b7169a2 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x8d8f1800 async_wrap_skb +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 0x9bb17a7b irttp_dup +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xadc5fc0b irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xb0f815dc irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb5ecdd11 irttp_flow_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 0xbf7dd554 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xbfa7c08d hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xc05f8be0 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xc0fd8c9a irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xc477368d irias_find_object +EXPORT_SYMBOL net/irda/irda 0xcf4d2638 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xd5f8778e iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xdb42e027 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xdb71d29a irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xefb496d7 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/l2tp/l2tp_core 0xd995a705 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1b00ffb3 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x304584af lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x3065b417 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x4585808e lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xa9f2aa73 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xd38347ce lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xef18cef1 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xef80181f lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x1a9244ad llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x2c4fa59e llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x313ba50c llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x47b76f7a llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x5117828c llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x72564bbe llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x7e7a9a7b llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/mac80211/mac80211 0x01976908 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x057ba805 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x06291bfa ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x097a3568 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0eeba5ae ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x15fba3e3 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x1cc82a71 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x1db92d46 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x25113ecc ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x2734b954 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2acf4bb4 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x2f5a5a5d ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3263d998 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x35d10354 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x3e4c1e94 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x47b5a545 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x4c4a6bcc ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x4da68ffb ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x52ba1726 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x542f9954 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x564e46f6 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x5bdbc0b1 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x5c71f6c5 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5cbc49ad ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x6004e964 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x6189ba70 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x661cc1d1 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x6905b753 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6b30b7d1 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x6b388bee ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x6cbe16e6 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x6ee464ab ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x707fdbcc ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7198f874 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x71e7bce3 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x72ac8536 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x73cea4a4 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x75d8bb7a ieee80211_restart_hw +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 0x7855cd8e ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x791ae7cb ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x7947d138 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x7e0bc38b ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8d779011 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x933162c4 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x9337c94c ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x940f9eae ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x963116d3 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x98b17706 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9d79febf ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x9e6813da ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xa100c915 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xa1877a9d ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa86384cc ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb254cfb2 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb2934802 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xb2e72e7f wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb5777fc2 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb5a3ad70 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xbadf9907 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc128393a ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xc938f07d ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xcc277857 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd1bbe520 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xd25fdfdb ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xde17e36b ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xe6702c3e ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe7cac63e ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xeb244e2d ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xec672d44 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xecaa8a42 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xedba17e8 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf4037ab6 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xf7d56514 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf7dab53c ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xf8117d7f ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xf98e0fd0 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xf9a877eb __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xffabad1a ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac802154/mac802154 0x054a76dc ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x09e36c9a ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x1ed31f79 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5762f1e8 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x64e22074 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x6d89289d ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xb5d98f84 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xc5f6a1e8 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xf61280b4 ieee802154_alloc_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0e7cde01 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x15675b5f ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1c0f2c81 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x263bb8e4 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x375c2584 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4a505621 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x57af8082 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6c1d820d ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7b282e3d register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7bba72cc unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8128a00a unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd0ba10a9 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe318727e ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf04da68b ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x7d4e5ffb nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x9a019d14 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xbf6eaf5e __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x15f73dcb nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x36b47811 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x5079b158 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x71ec176c __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x7f6d7015 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xcd8846ad nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x1891a0b7 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x1cfce11c xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x3d530cdd xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x66f3231a xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x786f858b xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7bd22006 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8fe92e9f xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x96abdaf5 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa00672e1 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa5435728 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/nfc/hci/hci 0x069a789b nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x0c9c0e04 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x1306e97c nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1ffe0dd0 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x227b60c8 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x2ece3f60 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x3a7f1a93 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x5d3c5983 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x6010cd84 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x73bb219e nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xa7afb6d6 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xa7eef368 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xb07edb0d nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc05ec646 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xc186674d nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xc2e623f3 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xd239d7ae nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xdc3c265f nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf36f383a nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x1484be6c nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x3cb6e243 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4089fd58 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x48e566b1 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x6032ebee nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x63a19b2e nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x69ed89fa nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x7927260c nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xa0d1c205 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xafea80d8 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xb082d76b nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xb0b3edb4 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc0e59f54 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xcdee3f24 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xd1be6f98 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd768206e nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xe7e2517f nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xe879dd6a nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xeb5dbee0 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nfc 0x06b55532 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x0a6e6e52 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x0e4c200a nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x355a1fa9 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x46b9394c nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x4db5b6f7 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x5cf1793d nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x6d12191e nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x6e8b1b71 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x7750dbc3 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x7b734157 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x847f2d9a nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x98bb4a30 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xa1b9b4d1 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xa40db2b2 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xaae38f83 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xadebaf55 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xb2eb2a41 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xc5c21714 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xcb39fe30 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xcccb81c6 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xfd835e42 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x2f7addfc nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x49243117 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x5fdacc35 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xde35615b nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x6d2acb2e pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x83716add phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x87ad9721 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xa585223d pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xb7fd7322 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xc8f43831 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xcbbcc5c0 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xfa210d96 phonet_header_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x32bf5c3a rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3b0f6573 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x419a6e19 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x49eba1b9 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e07abf2 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x84dbb51c rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x91163323 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x980272ad rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9e97ee59 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa26eac00 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa31e5068 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb947999e rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcd5af6ac key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xea1db8f8 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xefa9aed9 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/sctp/sctp 0xc844ad71 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x3e2ef6c9 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa76ac043 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb897f494 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x2b26ba01 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x7a9a0606 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x85e91dcf xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x7c43057f wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x83038292 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x0160acfa wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x033a0ca8 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x03f7bd9b cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x040428e1 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x05aafb47 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x06612d7f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x068e69fc cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a724bdf cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x0b834424 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x0d86b6ec ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x0f9822c2 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18aa5997 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1bc69410 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x1cae0961 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x21ada60f cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x28c4bb6d cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2dd534af cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x302f827b cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x3893fc14 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x41b7205f cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x420c9004 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x44adce39 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4a005399 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x4b0e6f00 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x4c1e5842 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x50b3feab ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x50b56798 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x527b1ee5 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x55d34a21 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x57e60baa cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x59a72eb6 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x5d6820ad wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x5d9011ba cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x62aa7902 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x64a2f1d8 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x65e2c957 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6bfb13e8 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x70df3ab5 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x7b78682c cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x7b998458 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7bc19b2b __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7dcc3649 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x7ee1541e cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x81cc83f0 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8616fb96 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x8843c9de wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8abbaabd cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8e994cab cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9172a300 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x952eca4d cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x964692f5 cfg80211_notify_new_peer_candidate +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 0x990bbfce __cfg80211_send_event_skb +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 0xa29eb711 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xa2a5497c cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xa76191a3 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xad61ee83 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xb3a3d8f8 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xb3f19200 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xb8af79cd freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xbc5c1bc3 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc105f0c0 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xc2150a72 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc6409d9e wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xc6bf448e cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xd0a76497 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd9e546ab ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xda6a04b1 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xdb0d899e wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xddd60f35 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xe3a083e7 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xe6ed724b cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xe8e99eb8 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xe910ad51 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe94b2d47 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6237a0 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xeb7e291e cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xecae3c04 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf2d62d78 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xf8c78509 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xfb43bd01 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xfe937055 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x307e0282 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x35e2630e lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x72daddde lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8bcfead8 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x91b3ce42 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xe85f0a01 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x4bb276a7 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 0x38190a0d snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x5560e4e9 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 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 0xeac844dc snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf200d4fa snd_seq_kernel_client_enqueue_blocking +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 0x39d2ceee 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-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 0xac7007cf snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x03d272e8 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x171a23d6 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1d05fe52 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3c108779 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3c59a3f9 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4425bb4e snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x52675602 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7883dcbe snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x83dd7ffb snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x93f2872e snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x98f2ff1b snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbee4b042 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc60fcca9 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc68eede2 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd391f194 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe126dc58 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe48853e4 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe6517f43 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf3ad6f70 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb1e12cd snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x5a71ebf0 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/pci/ac97/snd-ac97-codec 0x0c5210ba snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x103543fb snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2076bcde snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x20d6a753 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4e723e9c snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4ebf850c snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4f980cd3 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x56cb39c6 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5a018b94 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x64f90054 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x679d25da snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6a1badde snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7c9b1301 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd2a115ea snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xebd73b52 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xedf99b86 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf619989b 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 0x19284289 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xb56aec34 tlv320aic23_probe +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x58747dcd 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 0x00044533 __napi_complete +EXPORT_SYMBOL vmlinux 0x00135b8e jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x0024d631 __skb_checksum +EXPORT_SYMBOL vmlinux 0x00336d0e mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x00668076 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x006e4c36 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x00805289 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x0098f03f nf_afinfo +EXPORT_SYMBOL vmlinux 0x009fd36d netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x00b5405c dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x00bda9bc mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x00e7fb31 neigh_seq_next +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 0x0156041e ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01bf0e86 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x02039f4c nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x0222a746 bdi_destroy +EXPORT_SYMBOL vmlinux 0x023aa380 snd_component_add +EXPORT_SYMBOL vmlinux 0x024349a8 phy_device_register +EXPORT_SYMBOL vmlinux 0x024ad9dd phy_connect +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026ce228 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x02749287 bio_chain +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x0283e1e3 tty_check_change +EXPORT_SYMBOL vmlinux 0x02955cbb snd_power_wait +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b2aaad wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x02bafafa end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef742b percpu_counter_set +EXPORT_SYMBOL vmlinux 0x030045e0 register_sound_dsp +EXPORT_SYMBOL vmlinux 0x03026722 mempool_alloc +EXPORT_SYMBOL vmlinux 0x0303ff35 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x03112f13 dwc_cc_if_alloc +EXPORT_SYMBOL vmlinux 0x032f615f nand_scan_tail +EXPORT_SYMBOL vmlinux 0x033289b9 __scsi_alloc_queue +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 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03aee669 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03c2836f kernel_read +EXPORT_SYMBOL vmlinux 0x03cf4580 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x03e02ef1 __frontswap_store +EXPORT_SYMBOL vmlinux 0x03e1b72e napi_get_frags +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04066003 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044c7e5c dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x0451a443 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x0467866f __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x047053bb cfb_fillrect +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048f607e crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x049f95ae release_sock +EXPORT_SYMBOL vmlinux 0x04b0022d sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x04bb756a led_blink_set +EXPORT_SYMBOL vmlinux 0x04c2d52d mdiobus_read +EXPORT_SYMBOL vmlinux 0x04c819b4 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x04c961d7 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04e3bc93 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ef16ea scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x05059de6 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0539bddd netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x0549470a cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x05a8ad25 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x05b934d6 devm_iounmap +EXPORT_SYMBOL vmlinux 0x05c4190a alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x05d52b55 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05e0aac6 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x05e66b2b get_acl +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06581ec6 _dev_info +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06872817 DWC_STRLEN +EXPORT_SYMBOL vmlinux 0x068a9713 netlink_unicast +EXPORT_SYMBOL vmlinux 0x06bb7b73 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x06c1ebe9 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x06d2a768 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x06e4763f jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06feeb2d mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x071c62e9 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x072a8f8d __set_fiq_regs +EXPORT_SYMBOL vmlinux 0x073569e2 unregister_netdev +EXPORT_SYMBOL vmlinux 0x074887d1 set_groups +EXPORT_SYMBOL vmlinux 0x074ee807 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x0750fff0 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x075698a8 inet_accept +EXPORT_SYMBOL vmlinux 0x07966ae9 d_alloc_name +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07c0287a snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf9099 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x07d744e5 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x07e0bc42 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x07f75d96 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x07fddbb3 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x080ddce6 DWC_TIME +EXPORT_SYMBOL vmlinux 0x081a8b7e md_error +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0841b588 DWC_STRCMP +EXPORT_SYMBOL vmlinux 0x084f50c1 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x085226d1 param_set_copystring +EXPORT_SYMBOL vmlinux 0x08581671 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x086ea6e6 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x086f566f locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x089d677c drop_nlink +EXPORT_SYMBOL vmlinux 0x08b5f2f9 search_binary_handler +EXPORT_SYMBOL vmlinux 0x08cadab4 padata_free +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08ef4aae lease_get_mtime +EXPORT_SYMBOL vmlinux 0x08f8a462 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x091ab75f page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x0921f990 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x09405d06 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x0944e11a register_netdevice +EXPORT_SYMBOL vmlinux 0x094a1dba sock_create_lite +EXPORT_SYMBOL vmlinux 0x094fb248 rt6_lookup +EXPORT_SYMBOL vmlinux 0x09554c54 param_set_short +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096197d6 simple_getattr +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x09811cac tcp_init_sock +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09ae9e6e generic_listxattr +EXPORT_SYMBOL vmlinux 0x09b60f83 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09df9212 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x09e0d37a __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x09f9b9c1 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a1e737f __init_rwsem +EXPORT_SYMBOL vmlinux 0x0a20ea0d __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a28bf3e dcb_setapp +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a390e46 single_open_size +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a5259f4 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x0a552379 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x0a7bb251 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x0a893877 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0ab08161 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x0acbc195 sync_filesystem +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0af02cd6 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x0b02b1fe generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x0b0be91c netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b19df30 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b35a6c7 free_user_ns +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b496eef buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x0b66a4d5 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b86f4ef inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x0b911375 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x0ba0fe1d sock_no_listen +EXPORT_SYMBOL vmlinux 0x0bad945a set_user_nice +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bbd053e nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x0bc2093a input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd46f31 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x0beff839 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x0bf5bde8 skb_store_bits +EXPORT_SYMBOL vmlinux 0x0c12b152 elevator_init +EXPORT_SYMBOL vmlinux 0x0c2a3acc uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x0c2dc5e0 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x0c2e976a twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x0c394935 bio_put +EXPORT_SYMBOL vmlinux 0x0c3d13f0 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x0c3eec77 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c4eead2 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x0c5334c6 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x0c586e9b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca23da1 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb71f19 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x0cdd158d sg_alloc_table +EXPORT_SYMBOL vmlinux 0x0cdee52d generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x0ce8ca2b swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x0ced22d5 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x0cf8c335 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d053b51 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x0d274dde nf_ct_attach +EXPORT_SYMBOL vmlinux 0x0d2bb7cd inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d403dad zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x0d47139a bio_advance +EXPORT_SYMBOL vmlinux 0x0d48b7af from_kuid +EXPORT_SYMBOL vmlinux 0x0d491646 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5527bc pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d788d18 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x0d944d9b snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db2d7dc block_write_begin +EXPORT_SYMBOL vmlinux 0x0dbc2ea4 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x0dbfb669 install_exec_creds +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dd9848a tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x0de9707c simple_open +EXPORT_SYMBOL vmlinux 0x0dec6086 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x0dec9bc3 inet6_release +EXPORT_SYMBOL vmlinux 0x0df0b4d3 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x0e024c5f dentry_path_raw +EXPORT_SYMBOL vmlinux 0x0e56d3be scm_fp_dup +EXPORT_SYMBOL vmlinux 0x0e609078 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8c4b19 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x0ea45d01 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0eb9652c proto_register +EXPORT_SYMBOL vmlinux 0x0ec8764f snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x0ed1e9e3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x0ee81db2 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f399595 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x0f4160d8 processor +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3055 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fa82d25 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fba3d5d d_drop +EXPORT_SYMBOL vmlinux 0x0fd177ad dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ffebf26 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x10030148 vfs_readf +EXPORT_SYMBOL vmlinux 0x1021d379 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x10446c1b filemap_fdatawait_range +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 0x10822904 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x108f12b8 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x10a5857d cdev_add +EXPORT_SYMBOL vmlinux 0x10b333e7 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x10ece1db simple_readpage +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f2dfc2 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110de942 inet6_bind +EXPORT_SYMBOL vmlinux 0x1120a648 uart_match_port +EXPORT_SYMBOL vmlinux 0x1121c177 serio_close +EXPORT_SYMBOL vmlinux 0x1142d9a6 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x117ad60c padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x1186663b unlock_buffer +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x118c41f5 genlmsg_put +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a37dc1 clk_add_alias +EXPORT_SYMBOL vmlinux 0x11af38f8 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x11c0e5ea tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x11ec9f90 nonseekable_open +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x1202a67b dm_register_target +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x120ff2c1 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x121529c2 dcb_getapp +EXPORT_SYMBOL vmlinux 0x1225ad20 phy_init_eee +EXPORT_SYMBOL vmlinux 0x123ed823 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x12597a0f find_inode_nowait +EXPORT_SYMBOL vmlinux 0x125d1edf amba_find_device +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12cfe3f6 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12dd564a bioset_free +EXPORT_SYMBOL vmlinux 0x12e526d0 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x12e82cf9 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x130aabf7 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x13185ab4 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x133f5011 mmc_get_card +EXPORT_SYMBOL vmlinux 0x134da1d9 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x134fee6d phy_start_aneg +EXPORT_SYMBOL vmlinux 0x135ad424 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x136201f4 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x1372fe94 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x139d8fa3 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x13a5efad delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x13bb75ad scsi_remove_target +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f23590 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f5129c sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x13f8ded5 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x1402ef75 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x1407522b tcf_exts_change +EXPORT_SYMBOL vmlinux 0x141bc20a __devm_request_region +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1434c779 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x145dc721 seq_lseek +EXPORT_SYMBOL vmlinux 0x148db7ae submit_bio_wait +EXPORT_SYMBOL vmlinux 0x14999890 DWC_MUTEX_FREE +EXPORT_SYMBOL vmlinux 0x14c32de4 d_make_root +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14da632f inet_select_addr +EXPORT_SYMBOL vmlinux 0x1530f058 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15599345 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x158dd4f7 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x1596e859 generic_perform_write +EXPORT_SYMBOL vmlinux 0x15a9f46d km_policy_expired +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c75193 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x15ed1fb2 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x161390fe scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x1627a1ca d_tmpfile +EXPORT_SYMBOL vmlinux 0x162b56e0 neigh_lookup +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 0x16545493 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x16746b27 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x1682f7b3 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16a2209f DWC_SPINLOCK +EXPORT_SYMBOL vmlinux 0x16af732c iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x16d23351 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x16d4b958 __d_drop +EXPORT_SYMBOL vmlinux 0x16d97fa4 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e4af71 __register_binfmt +EXPORT_SYMBOL vmlinux 0x16f801f9 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0x172ec730 DWC_WORKQ_PENDING +EXPORT_SYMBOL vmlinux 0x172f7e00 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x17457192 tty_unlock +EXPORT_SYMBOL vmlinux 0x1747652f gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x1755cc02 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x175bed58 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x175f9ef0 __check_sticky +EXPORT_SYMBOL vmlinux 0x17945c46 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x1795c016 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17a27432 DWC_IN_IRQ +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17cdba87 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x18072635 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183aa8d7 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x187ddc33 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188bd31d inet6_del_offload +EXPORT_SYMBOL vmlinux 0x188cccaf __seq_open_private +EXPORT_SYMBOL vmlinux 0x18940a98 icmp_send +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189e58c5 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x189f2fff param_ops_charp +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18d179df new_inode +EXPORT_SYMBOL vmlinux 0x18f227ff DWC_UDELAY +EXPORT_SYMBOL vmlinux 0x18ff3cdb init_special_inode +EXPORT_SYMBOL vmlinux 0x191243cd xfrm_init_state +EXPORT_SYMBOL vmlinux 0x191e48ee write_cache_pages +EXPORT_SYMBOL vmlinux 0x192ba9b6 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x1946db67 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x19660a32 generic_readlink +EXPORT_SYMBOL vmlinux 0x196e8ed9 keyring_search +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 0x19acf440 snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x19adac74 elv_rb_del +EXPORT_SYMBOL vmlinux 0x19af43dd snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x19bc9fbf genl_unregister_family +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c13c75 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x19eb414a DWC_THREAD_RUN +EXPORT_SYMBOL vmlinux 0x19ebefdb of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x1a0577de eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x1a1884ba DWC_ATOI +EXPORT_SYMBOL vmlinux 0x1a1a6e74 nand_unlock +EXPORT_SYMBOL vmlinux 0x1a220061 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x1a238dd4 register_qdisc +EXPORT_SYMBOL vmlinux 0x1a27f390 inet_add_offload +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a70bcdc downgrade_write +EXPORT_SYMBOL vmlinux 0x1a825636 sk_alloc +EXPORT_SYMBOL vmlinux 0x1a8d51a6 dst_release +EXPORT_SYMBOL vmlinux 0x1a9336bc inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x1a9a1af8 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x1ab13d07 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ad581ef tty_mutex +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1aec51a8 locks_init_lock +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b207137 sock_rfree +EXPORT_SYMBOL vmlinux 0x1b235196 dev_mc_del +EXPORT_SYMBOL vmlinux 0x1b25d6c2 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x1b29a285 DWC_VSNPRINTF +EXPORT_SYMBOL vmlinux 0x1b39b286 set_cached_acl +EXPORT_SYMBOL vmlinux 0x1b4f128b abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8561bd dma_pool_create +EXPORT_SYMBOL vmlinux 0x1ba33742 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x1baabfd9 setattr_copy +EXPORT_SYMBOL vmlinux 0x1badd96b i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb6b629 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x1bbdc123 snd_device_free +EXPORT_SYMBOL vmlinux 0x1bd2e01b udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x1c035a67 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x1c0f4ebe rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x1c4b0882 consume_skb +EXPORT_SYMBOL vmlinux 0x1c5dcc86 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1c6637fd blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x1c9ea283 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x1cbeae24 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x1cd13782 param_get_bool +EXPORT_SYMBOL vmlinux 0x1cd8b501 vchiq_add_service +EXPORT_SYMBOL vmlinux 0x1cda950d dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x1cea63af tc6393xb_lcd_set_power +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 0x1d4434d5 pid_task +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d9043bc xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x1dadc65a DWC_WORKQ_WAIT_WORK_DONE +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd09854 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddc7ea4 seq_putc +EXPORT_SYMBOL vmlinux 0x1df43a2e xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x1df6daf9 __register_nls +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e1c2da5 netdev_change_features +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2854eb __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x1e2e0e9f tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x1e4f053d inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x1e5e4bd1 key_validate +EXPORT_SYMBOL vmlinux 0x1e5e7427 snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea6ed84 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x1eac9c6f release_firmware +EXPORT_SYMBOL vmlinux 0x1eccdccd simple_fill_super +EXPORT_SYMBOL vmlinux 0x1eda7064 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x1edf7153 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x1ee2edf3 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1f157a1e iget_failed +EXPORT_SYMBOL vmlinux 0x1f18fba1 of_get_next_child +EXPORT_SYMBOL vmlinux 0x1f331de3 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x1f356925 prepare_creds +EXPORT_SYMBOL vmlinux 0x1f3890f6 sock_create_kern +EXPORT_SYMBOL vmlinux 0x1f3fffc0 neigh_update +EXPORT_SYMBOL vmlinux 0x1f49d83a blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x1f5ae0d4 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f899895 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc1e791 security_path_symlink +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe71faf __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2007accc ilookup5 +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200ca628 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x200df7fd snd_ctl_find_numid +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 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204f6fa1 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20957fc7 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x20a5b4dd tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20de1cf6 inet6_protos +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x2118a9ab blk_rq_init +EXPORT_SYMBOL vmlinux 0x2158d3dc mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x21676e7d kernel_param_lock +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x2179b247 block_truncate_page +EXPORT_SYMBOL vmlinux 0x217e0c8d snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x21826d6f simple_release_fs +EXPORT_SYMBOL vmlinux 0x21ab386b proc_mkdir +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f02904 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x21f7eb8f claim_fiq +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222fa684 lg_global_lock +EXPORT_SYMBOL vmlinux 0x2232a8a5 mempool_free +EXPORT_SYMBOL vmlinux 0x22393b41 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x224eb558 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2277ae54 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x2289ed1c of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x22a7cb30 input_inject_event +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c55da2 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22f69839 block_write_end +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x230b6237 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231e6f5c __kfree_skb +EXPORT_SYMBOL vmlinux 0x232a6be8 ping_prot +EXPORT_SYMBOL vmlinux 0x236d6b33 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x238753f5 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x2394bc74 vchi_service_release +EXPORT_SYMBOL vmlinux 0x2395c7d1 generic_update_time +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a764cc dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23aec233 ppp_input +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c18a43 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23cbe264 d_invalidate +EXPORT_SYMBOL vmlinux 0x23d632fb __sb_end_write +EXPORT_SYMBOL vmlinux 0x23e1b862 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x23e5e060 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2403c0e4 sk_wait_data +EXPORT_SYMBOL vmlinux 0x24182dfb dquot_file_open +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24855629 devm_free_irq +EXPORT_SYMBOL vmlinux 0x249c296e generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24bd9bda blk_make_request +EXPORT_SYMBOL vmlinux 0x24bdd576 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x24e74714 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x24e7c71a dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x24ea8300 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25310d2c devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x25540332 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x255a26d4 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x2565471c build_skb +EXPORT_SYMBOL vmlinux 0x256bb78c dev_add_offload +EXPORT_SYMBOL vmlinux 0x256c03ae scsi_ioctl +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2572353a DWC_READ_REG32 +EXPORT_SYMBOL vmlinux 0x2576383b netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2589562f snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x2590176e block_invalidatepage +EXPORT_SYMBOL vmlinux 0x25a2b2a9 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x25ac915a generic_file_mmap +EXPORT_SYMBOL vmlinux 0x25d77d95 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x25dbf2dc fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x26329479 udp_seq_open +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2660692d scsi_dma_map +EXPORT_SYMBOL vmlinux 0x26762638 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x267f8b78 ns_capable +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 0x26fa0ead __nlmsg_put +EXPORT_SYMBOL vmlinux 0x270e87de iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x272e52fc md_register_thread +EXPORT_SYMBOL vmlinux 0x27309343 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x275a1a41 snd_pcm_notify +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x279e994f truncate_setsize +EXPORT_SYMBOL vmlinux 0x27a31b60 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x27b6c80b phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27ec0c93 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x280f075b nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2836bf8d jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x28401db7 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x2843c19d of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x2855b212 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x286bc56f backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x286ffb70 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x287e0cbe tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a5dc0f crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x28c4f658 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x2900755a mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x290a5f20 snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x292712d6 snd_timer_continue +EXPORT_SYMBOL vmlinux 0x292e4fb0 write_one_page +EXPORT_SYMBOL vmlinux 0x29310e1e filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295e6c5d sock_no_getname +EXPORT_SYMBOL vmlinux 0x29753bfc __sock_create +EXPORT_SYMBOL vmlinux 0x29b9b3bf free_page_put_link +EXPORT_SYMBOL vmlinux 0x29bb0f5a jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x29c9c0ab __find_get_block +EXPORT_SYMBOL vmlinux 0x29cc5ea7 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x29cd0d48 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x29e1b020 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a20a004 mmc_put_card +EXPORT_SYMBOL vmlinux 0x2a2367b1 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x2a25f199 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a41372b dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x2a4d06da devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x2a5cba5a __secpath_destroy +EXPORT_SYMBOL vmlinux 0x2a71eedc bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ac6193b __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad30b82 up_write +EXPORT_SYMBOL vmlinux 0x2ae3f684 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x2ae41616 blk_put_queue +EXPORT_SYMBOL vmlinux 0x2aff9451 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x2b0160cf genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b261477 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b4a514b da903x_query_status +EXPORT_SYMBOL vmlinux 0x2b4b3b5b tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x2b4d6a80 wake_up_process +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b57f346 arm_dma_ops +EXPORT_SYMBOL vmlinux 0x2b816792 cont_write_begin +EXPORT_SYMBOL vmlinux 0x2b84a69e unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x2b8b334d tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x2b94b0bf inet_ioctl +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 0x2bae46e3 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x2baf4d36 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2bdecbf1 secpath_dup +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2bea3a11 dst_destroy +EXPORT_SYMBOL vmlinux 0x2bfb4cba tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c21d376 deactivate_super +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2c0b38 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x2c2f2874 snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x2c422044 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x2c671c29 flow_cache_init +EXPORT_SYMBOL vmlinux 0x2c81eac1 nf_register_hook +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +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 0x2cac83a6 snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x2cbe3315 vc_cons +EXPORT_SYMBOL vmlinux 0x2cce66a3 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x2cec64a8 flush_old_exec +EXPORT_SYMBOL vmlinux 0x2cedbe5c blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d43e018 simple_write_begin +EXPORT_SYMBOL vmlinux 0x2d4ff977 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x2d58de22 redraw_screen +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2db60ed6 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2db91d7d alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e157e1b filemap_fault +EXPORT_SYMBOL vmlinux 0x2e1ad0e1 param_get_ushort +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e288efe tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x2e294a96 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e71458d page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x2e94f30f input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x2e98bd52 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x2eb84ceb nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecd441b fence_free +EXPORT_SYMBOL vmlinux 0x2ed9f623 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x2eeb9e2f seq_vprintf +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f1671d9 genphy_config_init +EXPORT_SYMBOL vmlinux 0x2f1de5eb of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x2f277080 __put_cred +EXPORT_SYMBOL vmlinux 0x2f292cbf __vfs_read +EXPORT_SYMBOL vmlinux 0x2f3757cd vlan_vid_del +EXPORT_SYMBOL vmlinux 0x2f3e2ebc serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f6bf9ae path_is_under +EXPORT_SYMBOL vmlinux 0x2f85339d ___pskb_trim +EXPORT_SYMBOL vmlinux 0x2f8bc33a blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x2f9c62c2 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe003f6 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe8c1a1 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x2ff98442 fs_bio_set +EXPORT_SYMBOL vmlinux 0x3001503d __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30361747 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x30362cfa input_close_device +EXPORT_SYMBOL vmlinux 0x3054454b shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x305cb761 inet6_offloads +EXPORT_SYMBOL vmlinux 0x3061d58e eth_header +EXPORT_SYMBOL vmlinux 0x3064ced3 clear_nlink +EXPORT_SYMBOL vmlinux 0x30683865 unregister_key_type +EXPORT_SYMBOL vmlinux 0x3069be7a follow_pfn +EXPORT_SYMBOL vmlinux 0x307bf81b phy_start +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30819b1b file_update_time +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309e8d1b of_device_unregister +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30adb805 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x30b99d38 register_key_type +EXPORT_SYMBOL vmlinux 0x30d57c21 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x30e4fd53 override_creds +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f604ef md_integrity_register +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x31127c77 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x3137ab03 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x313815c0 vfs_setpos +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314e6742 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x3157c29e fb_get_mode +EXPORT_SYMBOL vmlinux 0x31683780 kset_unregister +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31892222 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319ab426 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x31aae027 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31c87818 netdev_update_features +EXPORT_SYMBOL vmlinux 0x3201aaf9 param_ops_bool +EXPORT_SYMBOL vmlinux 0x3205fbeb sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x320e5014 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x321c7c49 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x323e9ad3 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x327a9bef xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32907b91 idr_remove +EXPORT_SYMBOL vmlinux 0x329bc393 bdi_register +EXPORT_SYMBOL vmlinux 0x32a44322 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x32f16281 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x32ff6e6e mutex_unlock +EXPORT_SYMBOL vmlinux 0x3316845e idr_get_next +EXPORT_SYMBOL vmlinux 0x3317ac58 vchiq_initialise +EXPORT_SYMBOL vmlinux 0x33183bfc generic_permission +EXPORT_SYMBOL vmlinux 0x3321c96d sg_miter_start +EXPORT_SYMBOL vmlinux 0x33266a2b dm_get_device +EXPORT_SYMBOL vmlinux 0x3329b57b kobject_add +EXPORT_SYMBOL vmlinux 0x332bdab7 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x332da3da ata_port_printk +EXPORT_SYMBOL vmlinux 0x3330a47d gen_pool_free +EXPORT_SYMBOL vmlinux 0x336413e8 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x33851b13 netdev_err +EXPORT_SYMBOL vmlinux 0x338bfe21 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x33934e1d save_mount_options +EXPORT_SYMBOL vmlinux 0x33bd443c mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d64a6f snd_timer_close +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e4b8f9 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x33efabfc dev_uc_init +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x3402c3bd blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x3403dbb1 acl_by_type +EXPORT_SYMBOL vmlinux 0x340b1bee ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3423afc4 snd_cards +EXPORT_SYMBOL vmlinux 0x34240d20 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x343e5c05 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x34434bb8 inet_shutdown +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x344e061c __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x34596875 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x345e132c dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347e51b9 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x349b7d08 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b5f014 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x34bcfdc8 DWC_SPINLOCK_ALLOC +EXPORT_SYMBOL vmlinux 0x34c85582 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x34cd75ae jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x34cfc6fa rtnl_unicast +EXPORT_SYMBOL vmlinux 0x34d6fc7d nf_getsockopt +EXPORT_SYMBOL vmlinux 0x34e5f42b of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x34e9f006 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34fc6230 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x35050d11 of_device_alloc +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3507c9ca snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0x35105aae tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x3513aa2a sock_setsockopt +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351b2a14 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x352accab dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x35472bbb d_alloc +EXPORT_SYMBOL vmlinux 0x354b2b02 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x354b3835 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x3563dc76 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x357234ba netlink_capable +EXPORT_SYMBOL vmlinux 0x35790c76 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x357bfb44 kobject_init +EXPORT_SYMBOL vmlinux 0x358829e4 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x359b7a79 md_write_start +EXPORT_SYMBOL vmlinux 0x359c1b55 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35d0b68e ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x35dd1800 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x36046d44 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360c19ed udp_ioctl +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x36658288 inet_listen +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x368dc1f6 param_set_int +EXPORT_SYMBOL vmlinux 0x36a15e91 input_grab_device +EXPORT_SYMBOL vmlinux 0x36b554c3 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36ef475f ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x36f068ec tcp_close +EXPORT_SYMBOL vmlinux 0x36fb46ad d_splice_alias +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x36fe5c77 vmap +EXPORT_SYMBOL vmlinux 0x37101c79 udp_set_csum +EXPORT_SYMBOL vmlinux 0x37197945 i2c_master_send +EXPORT_SYMBOL vmlinux 0x372ef1f0 seq_dentry +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x376b1c0a netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x378e431e user_path_create +EXPORT_SYMBOL vmlinux 0x3796268b forget_all_cached_acls +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 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37dc63ab fb_blank +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f70f4a __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x37ff141e blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x38195e8e ip6_frag_match +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381f9a15 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x383d96be netif_rx +EXPORT_SYMBOL vmlinux 0x385424fb lro_receive_skb +EXPORT_SYMBOL vmlinux 0x3858b6d2 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x387c9725 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x389ecf9e __bswapdi2 +EXPORT_SYMBOL vmlinux 0x38a013fc memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b384a7 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x38d715e2 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x38f9e527 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x3905afa7 inet_offloads +EXPORT_SYMBOL vmlinux 0x3915063b iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x3937ac6a devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393a4c21 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394e21bb scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39720e51 mmc_add_host +EXPORT_SYMBOL vmlinux 0x39730d06 atomic_io_modify +EXPORT_SYMBOL vmlinux 0x397b3052 generic_fillattr +EXPORT_SYMBOL vmlinux 0x39870582 from_kgid +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399f495c jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +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 0x3a475a2a bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x3a8788df __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x3a91959d i2c_clients_command +EXPORT_SYMBOL vmlinux 0x3a924495 noop_qdisc +EXPORT_SYMBOL vmlinux 0x3a93d961 tcf_register_action +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aab7668 soft_cursor +EXPORT_SYMBOL vmlinux 0x3abb26b0 ioremap_wc +EXPORT_SYMBOL vmlinux 0x3ac42110 key_alloc +EXPORT_SYMBOL vmlinux 0x3ad83b10 prepare_binprm +EXPORT_SYMBOL vmlinux 0x3ade5da1 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x3aec1faa kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x3b1496b2 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x3b1ed04e check_disk_change +EXPORT_SYMBOL vmlinux 0x3b306cd7 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x3b3b5497 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x3b4b339e try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x3b5aff82 km_policy_notify +EXPORT_SYMBOL vmlinux 0x3b629859 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3bb5888f mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3be74870 snd_timer_pause +EXPORT_SYMBOL vmlinux 0x3bf749e6 __free_pages +EXPORT_SYMBOL vmlinux 0x3c01f2ca skb_split +EXPORT_SYMBOL vmlinux 0x3c28f0ae invalidate_bdev +EXPORT_SYMBOL vmlinux 0x3c2f7266 netif_device_detach +EXPORT_SYMBOL vmlinux 0x3c326fda DWC_UTF8_TO_UTF16LE +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c4b04bf xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x3c5e5d40 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x3c69a020 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x3c74f1b4 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0x3c77b029 kill_fasync +EXPORT_SYMBOL vmlinux 0x3c7e34b1 blk_finish_request +EXPORT_SYMBOL vmlinux 0x3c7e4c2e __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c95ee38 nf_log_set +EXPORT_SYMBOL vmlinux 0x3ca7dbcc vchi_connect +EXPORT_SYMBOL vmlinux 0x3cc3d636 of_node_put +EXPORT_SYMBOL vmlinux 0x3cdc5d93 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfab074 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x3cfe741f skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x3cfeb8e7 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x3d187814 register_filesystem +EXPORT_SYMBOL vmlinux 0x3d1d1a24 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x3d30409d iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x3d36258d cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d479d70 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x3d47e6cb sync_blockdev +EXPORT_SYMBOL vmlinux 0x3d643507 dev_trans_start +EXPORT_SYMBOL vmlinux 0x3d89eeb8 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x3d9a1622 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x3dc240e8 padata_alloc +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcbb371 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x3de46b48 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e10f941 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x3e24ee28 bd_set_size +EXPORT_SYMBOL vmlinux 0x3e273e6e tty_name +EXPORT_SYMBOL vmlinux 0x3e837c1b phy_init_hw +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea2d31e sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x3ea639d3 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x3eb029b1 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3eb533cd vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x3ecbe223 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x3ecec2b8 no_llseek +EXPORT_SYMBOL vmlinux 0x3f0a94a5 input_reset_device +EXPORT_SYMBOL vmlinux 0x3f161184 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x3f197288 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f56b429 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x3f5a40bc __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x3f5b67d5 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f8451ee skb_copy +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fb87766 netif_skb_features +EXPORT_SYMBOL vmlinux 0x3fd6c634 set_binfmt +EXPORT_SYMBOL vmlinux 0x3fe28623 mtd_concat_create +EXPORT_SYMBOL vmlinux 0x3fe87dc2 security_path_rename +EXPORT_SYMBOL vmlinux 0x3fe91171 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x3ff7fe6c xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4046c72e tso_start +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x405d1e46 __netif_schedule +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407ffaf3 bioset_create +EXPORT_SYMBOL vmlinux 0x40865df8 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409d60bc sock_kmalloc +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a4882f input_set_abs_params +EXPORT_SYMBOL vmlinux 0x40a8793e ll_rw_block +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad3abc neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x40b8cd3e blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x40b92e51 input_open_device +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d2759f inet_addr_type +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dca9b7 elv_register_queue +EXPORT_SYMBOL vmlinux 0x40e03c66 mount_ns +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40fdcb58 nand_correct_data +EXPORT_SYMBOL vmlinux 0x4103a0b7 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x4108e438 padata_start +EXPORT_SYMBOL vmlinux 0x4129df5a done_path_create +EXPORT_SYMBOL vmlinux 0x41347c45 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x413a3fee mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415357b9 misc_deregister +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x4196df48 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x419c24cb mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x419d66ff vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x41ca57fe do_SAK +EXPORT_SYMBOL vmlinux 0x41d0bb57 is_bad_inode +EXPORT_SYMBOL vmlinux 0x41e742ee netlink_ack +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +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 0x42694bcc jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x426a16aa abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x4275e055 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x4289c40d jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x429a3e6d tty_port_close_start +EXPORT_SYMBOL vmlinux 0x429be6d3 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a5aaaf devm_ioremap +EXPORT_SYMBOL vmlinux 0x42acf97f xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x42bbd848 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x42eaeae5 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x42edf7cd blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x42f00489 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430b5167 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x430ea263 seq_release_private +EXPORT_SYMBOL vmlinux 0x4326716e tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x433266ea netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x4342ce26 block_commit_write +EXPORT_SYMBOL vmlinux 0x434e353e skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43548417 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x436f3a7b __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x43781437 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a4d64d of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x43af803a inet_del_offload +EXPORT_SYMBOL vmlinux 0x43c2bcdf xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x43cb34b2 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x43df1cd7 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43ff3d8e dev_disable_lro +EXPORT_SYMBOL vmlinux 0x43ffa81e md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x440b7097 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441f2916 arp_xmit +EXPORT_SYMBOL vmlinux 0x4423c9f1 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x44244060 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x4436d7ee page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4459fd0c bdput +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4488231f get_disk +EXPORT_SYMBOL vmlinux 0x448a5fac mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x449eb840 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b4fe67 __ps2_command +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 0x44f3c7ce kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x4504b5d8 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x450bfe53 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0x4517be9b fb_set_cmap +EXPORT_SYMBOL vmlinux 0x451b6e34 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x451f2191 seq_read +EXPORT_SYMBOL vmlinux 0x4539b431 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x455d8a56 inode_change_ok +EXPORT_SYMBOL vmlinux 0x45681ec9 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457c2b46 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x4591d5b1 tcp_connect +EXPORT_SYMBOL vmlinux 0x459985da reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45b0120f skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x45b67086 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c4144c netif_napi_add +EXPORT_SYMBOL vmlinux 0x45d6c395 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x45e38718 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x45e5c9f3 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x45f8306f seq_file_path +EXPORT_SYMBOL vmlinux 0x45f8e995 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x45fd2db1 scsi_device_get +EXPORT_SYMBOL vmlinux 0x460db5c0 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x4614ab0a fput +EXPORT_SYMBOL vmlinux 0x46164c9e input_allocate_device +EXPORT_SYMBOL vmlinux 0x4616f4ba DWC_CPU_TO_LE32 +EXPORT_SYMBOL vmlinux 0x46176eb5 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x46273b9b bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x463d1df7 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x464126b5 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x4663f23c jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x46645f11 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x4672439b PDE_DATA +EXPORT_SYMBOL vmlinux 0x46734cd9 param_ops_uint +EXPORT_SYMBOL vmlinux 0x4682beeb __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x468390ce copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x46a50659 sk_net_capable +EXPORT_SYMBOL vmlinux 0x46ba8eaf unlock_new_inode +EXPORT_SYMBOL vmlinux 0x46be181b mii_link_ok +EXPORT_SYMBOL vmlinux 0x46bfd761 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x46c45acf __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x46c4fc79 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x46d38e31 DWC_SNPRINTF +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46e8790b vfs_create +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47033789 d_path +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47760654 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x477f5590 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x47921abb peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47a26a8e xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x47bd019a posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x47c52221 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x47c95b41 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47f2c4f2 sock_no_connect +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x481a16db scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x48244456 vchi_service_close +EXPORT_SYMBOL vmlinux 0x4829389b dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x48295f5f qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x48362633 iterate_dir +EXPORT_SYMBOL vmlinux 0x483956e3 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x484d06db tty_unthrottle +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48625040 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48f3fa44 devm_release_resource +EXPORT_SYMBOL vmlinux 0x48fd6750 keyring_alloc +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4914cd41 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x4930fa87 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49608f4d inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x49649bb7 mmc_release_host +EXPORT_SYMBOL vmlinux 0x4965702f file_open_root +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49bb97bb ppp_register_channel +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a00df46 fb_set_var +EXPORT_SYMBOL vmlinux 0x4a0ae0c7 bdev_read_only +EXPORT_SYMBOL vmlinux 0x4a0b56bc tty_port_hangup +EXPORT_SYMBOL vmlinux 0x4a171a37 rtnl_notify +EXPORT_SYMBOL vmlinux 0x4a1952f6 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x4a1e7fc8 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a694be1 input_register_handle +EXPORT_SYMBOL vmlinux 0x4a726687 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acbaf2e ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b36666d security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x4b3eb6f1 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b8d2d33 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x4b998645 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x4ba8536f page_readlink +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bb92719 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd179bc snd_timer_start +EXPORT_SYMBOL vmlinux 0x4bd825a5 skb_pad +EXPORT_SYMBOL vmlinux 0x4bde9563 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bfb52e7 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x4bfd1b9d kill_bdev +EXPORT_SYMBOL vmlinux 0x4bfdf268 snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x4c159d78 dev_uc_add_excl +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 0x4c4ac51d xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x4c591bb0 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c611b96 touch_buffer +EXPORT_SYMBOL vmlinux 0x4c62cc24 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4cb4d619 kobject_set_name +EXPORT_SYMBOL vmlinux 0x4cba9265 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x4cbe07c4 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x4cca5dbc blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce7b757 freeze_bdev +EXPORT_SYMBOL vmlinux 0x4cfe16fe inode_add_bytes +EXPORT_SYMBOL vmlinux 0x4d050ab8 set_nlink +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d2623da vfs_rename +EXPORT_SYMBOL vmlinux 0x4d3ac3b6 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d74f327 phy_resume +EXPORT_SYMBOL vmlinux 0x4d83ed0d inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4da2c62c snd_info_register +EXPORT_SYMBOL vmlinux 0x4dab9ee8 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x4dbbab9f scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x4dd7a335 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de88497 empty_zero_page +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e34a889 try_to_release_page +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e356d47 down_write_trylock +EXPORT_SYMBOL vmlinux 0x4e3caa75 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x4e5f08b6 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x4e61fc30 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x4e61fde5 netdev_printk +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e9a9f81 vchi_bulk_queue_receive +EXPORT_SYMBOL vmlinux 0x4ec21e1c DWC_WAITQ_ABORT +EXPORT_SYMBOL vmlinux 0x4ecbfbc9 skb_seq_read +EXPORT_SYMBOL vmlinux 0x4eea307f snd_jack_report +EXPORT_SYMBOL vmlinux 0x4ef4c47f arp_tbl +EXPORT_SYMBOL vmlinux 0x4efa04c7 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x4efbf1fa from_kuid_munged +EXPORT_SYMBOL vmlinux 0x4f06f754 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x4f15b972 dwc_cc_remove +EXPORT_SYMBOL vmlinux 0x4f1ba487 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f22abdb default_llseek +EXPORT_SYMBOL vmlinux 0x4f2d45cd blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x4f375b97 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f487651 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x4f4f81de phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x4f534070 of_clk_get +EXPORT_SYMBOL vmlinux 0x4f5de3b0 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f7cf8e0 input_free_device +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4fc2077e __devm_release_region +EXPORT_SYMBOL vmlinux 0x4fe982a6 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x4fea8d80 dwc_cc_cdid +EXPORT_SYMBOL vmlinux 0x4ffbe95f __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x5008f2ec fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x501905b0 serio_open +EXPORT_SYMBOL vmlinux 0x501be316 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x5020d676 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x5034887d input_register_device +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x504b0187 get_user_pages +EXPORT_SYMBOL vmlinux 0x50535b8c sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x5062d679 snd_unregister_device +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5086ccd2 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x509435c9 migrate_page +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50a3315d mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x50a4cb78 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x50a62479 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x50a7cdc9 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x50aaace8 eth_header_parse +EXPORT_SYMBOL vmlinux 0x50b1e56b security_path_chown +EXPORT_SYMBOL vmlinux 0x50b268e1 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50b8dc52 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x50c9a979 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x50d09b9c scsi_target_resume +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50ee3239 submit_bh +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51288579 tty_write_room +EXPORT_SYMBOL vmlinux 0x513252e6 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x51381a73 tty_register_device +EXPORT_SYMBOL vmlinux 0x515d8499 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x515f024b phy_driver_register +EXPORT_SYMBOL vmlinux 0x51646c57 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x516fc450 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0x51787a37 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x518aa86b zpool_register_driver +EXPORT_SYMBOL vmlinux 0x519415c8 DWC_TASK_ALLOC +EXPORT_SYMBOL vmlinux 0x51a33682 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x51b829f0 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x51c3da5e dwc_remove_observer +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ed5a9d snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f1df25 send_sig_info +EXPORT_SYMBOL vmlinux 0x5201a3e5 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520d51f8 __mutex_init +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x522d9235 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52553458 eth_type_trans +EXPORT_SYMBOL vmlinux 0x526bf6d3 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x5283ec89 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d0c14 idr_init +EXPORT_SYMBOL vmlinux 0x529281cf xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x5299e0c7 amba_release_regions +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 0x52fc237b genphy_read_status +EXPORT_SYMBOL vmlinux 0x5300cae5 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53163084 registered_fb +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534740e9 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x534eb3a5 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x53685a3d swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x537bcd45 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x539b67b4 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x53a922b4 register_sound_midi +EXPORT_SYMBOL vmlinux 0x53aa6e01 devm_clk_get +EXPORT_SYMBOL vmlinux 0x53b544f9 ac97_bus_type +EXPORT_SYMBOL vmlinux 0x53c2f2e2 block_read_full_page +EXPORT_SYMBOL vmlinux 0x53f0ca86 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x54065520 param_set_ullong +EXPORT_SYMBOL vmlinux 0x5406f28d __getblk_slow +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x542c4e58 nand_lock +EXPORT_SYMBOL vmlinux 0x5430001a kdb_current_task +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5452782e udp_prot +EXPORT_SYMBOL vmlinux 0x5456d0b5 __DWC_DMA_FREE +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x54725fe2 vc_cma_size +EXPORT_SYMBOL vmlinux 0x54756b99 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x54a78655 mmc_erase +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c89b00 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x54e4dbf1 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f04aaa filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x54f23ac5 set_page_dirty +EXPORT_SYMBOL vmlinux 0x54f95375 inet_frag_find +EXPORT_SYMBOL vmlinux 0x5512d87c tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55304bf3 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x5540843d DWC_BE32_TO_CPU +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5554ff71 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x55584f99 tcp_child_process +EXPORT_SYMBOL vmlinux 0x55674606 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556def8d mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x55927676 genphy_update_link +EXPORT_SYMBOL vmlinux 0x55a94a8b of_phy_connect +EXPORT_SYMBOL vmlinux 0x55b4a4fa generic_getxattr +EXPORT_SYMBOL vmlinux 0x55b9ff8c open_check_o_direct +EXPORT_SYMBOL vmlinux 0x55be21dd tcp_poll +EXPORT_SYMBOL vmlinux 0x55c7fd13 generic_write_end +EXPORT_SYMBOL vmlinux 0x55c8c8ad mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x55d2c6f6 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55dbeb1f mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x55e3cc88 get_phy_device +EXPORT_SYMBOL vmlinux 0x562ed260 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x563ca7bb __bforget +EXPORT_SYMBOL vmlinux 0x564e7b53 __get_user_pages +EXPORT_SYMBOL vmlinux 0x56a82704 dwc_cc_clear +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56cdd1bd simple_transaction_get +EXPORT_SYMBOL vmlinux 0x56cdf091 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x56e9f185 seq_path +EXPORT_SYMBOL vmlinux 0x56f23bf3 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x5706a5e5 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x5713b5fb file_remove_privs +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572f0822 __invalidate_device +EXPORT_SYMBOL vmlinux 0x5731c64e set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x5762c04c __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x57672847 inet_frags_init +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577e0ab3 security_path_truncate +EXPORT_SYMBOL vmlinux 0x57ea7802 register_netdev +EXPORT_SYMBOL vmlinux 0x57fa03db fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x580c559f jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x58203471 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x5824116f vchi_service_create +EXPORT_SYMBOL vmlinux 0x58285895 neigh_for_each +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5850ea4f blk_start_queue +EXPORT_SYMBOL vmlinux 0x5866cf66 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x589208ed __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x5892d4e7 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58bfb1df sock_i_ino +EXPORT_SYMBOL vmlinux 0x58c062a9 sg_miter_next +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58dbf260 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58f66849 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x5916bbf9 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x591ebddc kill_pgrp +EXPORT_SYMBOL vmlinux 0x59312e98 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x5945a0ce bdi_init +EXPORT_SYMBOL vmlinux 0x59498e91 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594ceddb blk_execute_rq +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x596c8509 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x5987f562 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59933c75 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59ab91aa max8998_read_reg +EXPORT_SYMBOL vmlinux 0x59ad33a8 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x59be5f34 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x59c17a6e mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x59c308f5 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59ea36db bdevname +EXPORT_SYMBOL vmlinux 0x59efc9b2 block_write_full_page +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a19b176 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x5a2da804 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x5a341104 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x5a3bce6e eth_validate_addr +EXPORT_SYMBOL vmlinux 0x5a3e70b1 fget_raw +EXPORT_SYMBOL vmlinux 0x5aa1ebd5 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x5aa8d3e9 generic_file_open +EXPORT_SYMBOL vmlinux 0x5aaa4e21 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x5ab2e6d5 udplite_prot +EXPORT_SYMBOL vmlinux 0x5abbd848 dqget +EXPORT_SYMBOL vmlinux 0x5ad459f7 generic_read_dir +EXPORT_SYMBOL vmlinux 0x5addfa19 proc_symlink +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5aeb8120 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x5b04be5a disable_fiq +EXPORT_SYMBOL vmlinux 0x5b074005 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1cf428 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x5b22fc9d blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x5b2556c3 nf_log_packet +EXPORT_SYMBOL vmlinux 0x5b42c209 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x5b5c9fcb generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x5b637722 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x5b7c088e sockfd_lookup +EXPORT_SYMBOL vmlinux 0x5b7eb133 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x5b951138 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x5b9d1369 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x5baa0c41 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x5bd34f9b jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x5bd92cfd rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x5bf4a1eb sg_last +EXPORT_SYMBOL vmlinux 0x5bf5d2d3 __napi_schedule +EXPORT_SYMBOL vmlinux 0x5bfe00f8 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x5c037766 seq_printf +EXPORT_SYMBOL vmlinux 0x5c093cc6 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x5c206022 sk_capable +EXPORT_SYMBOL vmlinux 0x5c2dc64d qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x5c32646d dmam_pool_create +EXPORT_SYMBOL vmlinux 0x5c339e31 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x5c38f490 request_key_async +EXPORT_SYMBOL vmlinux 0x5c3e2ce2 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x5c43f51e tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x5c5408fd twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x5c79a125 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x5c905351 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5ca5c7d1 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x5ca94062 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x5cb7c200 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x5cc13a7a generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d4409ce lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d782b83 vfs_fsync +EXPORT_SYMBOL vmlinux 0x5d91f6cd nlmsg_notify +EXPORT_SYMBOL vmlinux 0x5d9ecb00 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x5dcaf635 path_put +EXPORT_SYMBOL vmlinux 0x5ddfc171 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x5debb57a nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x5dec270b tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x5df1c051 DWC_TIMER_ALLOC +EXPORT_SYMBOL vmlinux 0x5df6a404 mm_vc_mem_size +EXPORT_SYMBOL vmlinux 0x5e0fa0c0 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x5e1e991e dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x5e25fa82 thaw_bdev +EXPORT_SYMBOL vmlinux 0x5e484538 scsi_host_put +EXPORT_SYMBOL vmlinux 0x5e4e3066 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x5e6d4be6 snd_card_register +EXPORT_SYMBOL vmlinux 0x5e6f7052 devm_clk_put +EXPORT_SYMBOL vmlinux 0x5e75bb54 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed4bcc3 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x5ee03337 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x5ee7fb04 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x5eeba99d ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f14dfd5 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x5f1cfd18 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f5d94b0 filp_open +EXPORT_SYMBOL vmlinux 0x5f6476b7 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f960092 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x5f97fbf3 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x5fb69b9f phy_read_mmd_indirect +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 0x5ff23482 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x5ff754d4 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6023b623 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604e62f6 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60866fd8 start_tty +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609bce4a padata_stop +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a34c3f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x60c69f8f nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x60cedb86 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60ed547f devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x60f07575 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x61005462 DWC_VPRINTF +EXPORT_SYMBOL vmlinux 0x611ddf8d dev_set_mtu +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61423d2f tcf_hash_check +EXPORT_SYMBOL vmlinux 0x6154de07 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x6175e654 param_get_charp +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6184a2d1 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x61895bea ps2_begin_command +EXPORT_SYMBOL vmlinux 0x6190f57c register_console +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b77b34 import_iovec +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61be3afb fb_set_suspend +EXPORT_SYMBOL vmlinux 0x61c1b05c dst_discard_sk +EXPORT_SYMBOL vmlinux 0x61c7e891 qdisc_reset +EXPORT_SYMBOL vmlinux 0x61cf732a __dst_free +EXPORT_SYMBOL vmlinux 0x61f48e5d nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x61f6a8fd bio_clone_fast +EXPORT_SYMBOL vmlinux 0x6208f0bb remove_proc_entry +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x62168b00 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x621e1c6c phy_attach +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623b46e0 md_flush_request +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ab8 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a8fb90 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x62b16f75 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x62d76481 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x62f46e97 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x6325c3a3 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x632c5403 dev_change_flags +EXPORT_SYMBOL vmlinux 0x634a3f32 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x63549b44 kthread_bind +EXPORT_SYMBOL vmlinux 0x635df2a5 commit_creds +EXPORT_SYMBOL vmlinux 0x63733aca scsi_register_interface +EXPORT_SYMBOL vmlinux 0x638a0d7b tty_vhangup +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63be39bb netif_rx_ni +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d1fc97 DWC_LE16_TO_CPU +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641091b8 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641a6e3b snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x641d43f0 sget +EXPORT_SYMBOL vmlinux 0x6434dd68 key_put +EXPORT_SYMBOL vmlinux 0x64557967 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x64608dac dentry_unhash +EXPORT_SYMBOL vmlinux 0x646dfe9c scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x648b7ffd page_waitqueue +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64baf227 mm_vc_mem_phys_addr +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 0x6516a0ba dev_get_by_name +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x6530b2e7 mnt_drop_write_file +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 0x65569a1d blkdev_put +EXPORT_SYMBOL vmlinux 0x6567a7a1 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x656c5cae param_array_ops +EXPORT_SYMBOL vmlinux 0x6588114d i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x658b1789 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x65b02f5f sk_common_release +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e7ed3f kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x660654ae __serio_register_port +EXPORT_SYMBOL vmlinux 0x661a6cd0 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x661c58d0 snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x662ca657 d_find_alias +EXPORT_SYMBOL vmlinux 0x6635acaa dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x663dcd9b blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x6653e6e5 dev_deactivate +EXPORT_SYMBOL vmlinux 0x667971d7 do_splice_to +EXPORT_SYMBOL vmlinux 0x66a252ab blk_init_tags +EXPORT_SYMBOL vmlinux 0x66d11a88 skb_dequeue +EXPORT_SYMBOL vmlinux 0x66e9e507 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x66ea4f43 snd_timer_open +EXPORT_SYMBOL vmlinux 0x66f9b30f dwc_cc_match_cdid +EXPORT_SYMBOL vmlinux 0x66fe6e1f blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x671592b1 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x672528d6 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6725328f __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x67350bae __vfs_write +EXPORT_SYMBOL vmlinux 0x67382c1e blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x6739842c padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x675bd239 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x6766a93d dquot_resume +EXPORT_SYMBOL vmlinux 0x676a4589 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x676bfa79 dqput +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67af8fa9 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b83bdd __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x67c2c300 mdiobus_write +EXPORT_SYMBOL vmlinux 0x67e45b5c skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x681a0cff dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x68392cd9 tty_set_operations +EXPORT_SYMBOL vmlinux 0x683a10a4 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x683ccfec snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x68535137 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x685d39bd mount_single +EXPORT_SYMBOL vmlinux 0x686df339 vchi_initialise +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x689fb1c2 lock_fb_info +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68aaf140 tty_hangup +EXPORT_SYMBOL vmlinux 0x68abb700 kobject_put +EXPORT_SYMBOL vmlinux 0x68b16618 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c47deb devm_gpio_request +EXPORT_SYMBOL vmlinux 0x68ca24bd __module_get +EXPORT_SYMBOL vmlinux 0x68cf2c01 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x68dbb0c4 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x68e72068 of_dev_put +EXPORT_SYMBOL vmlinux 0x69018925 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x690a7ff8 register_md_personality +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x691c27c1 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x69543c1e input_set_keycode +EXPORT_SYMBOL vmlinux 0x695551a0 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x695af691 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x695b24b3 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x699232eb blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x699dcc22 sock_no_bind +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69ad3e7a mpage_writepages +EXPORT_SYMBOL vmlinux 0x69b08957 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x69c5f5cc blk_run_queue +EXPORT_SYMBOL vmlinux 0x69ceb92e brioctl_set +EXPORT_SYMBOL vmlinux 0x69fef238 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0632b9 km_report +EXPORT_SYMBOL vmlinux 0x6a13edea kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x6a25de7b unregister_cdrom +EXPORT_SYMBOL vmlinux 0x6a38b9b4 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x6a497bf8 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a947881 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x6ab58b9e d_lookup +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6ad1c589 loop_backing_file +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af3de16 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x6af65dfc d_obtain_root +EXPORT_SYMBOL vmlinux 0x6af7118d __neigh_create +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2be5f4 km_query +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b5d190d of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x6b78403f dput +EXPORT_SYMBOL vmlinux 0x6b8bb605 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x6bbc7641 elv_add_request +EXPORT_SYMBOL vmlinux 0x6bbd6134 lock_rename +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd3139f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bdd8384 __brelse +EXPORT_SYMBOL vmlinux 0x6bef70ec devm_request_resource +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c0e8e70 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c23f44e skb_tx_error +EXPORT_SYMBOL vmlinux 0x6c502a55 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c57a13a xfrm_input +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c6f40e4 __frontswap_load +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c80c153 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6ca9ac5d ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x6cbdbd20 get_gendisk +EXPORT_SYMBOL vmlinux 0x6cbeef32 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x6cda9fe4 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ceaa7d9 __inet_hash +EXPORT_SYMBOL vmlinux 0x6cefffe3 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x6cf6e337 put_cmsg +EXPORT_SYMBOL vmlinux 0x6d028800 __fib6_flush_trees +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 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2c00bb mmc_free_host +EXPORT_SYMBOL vmlinux 0x6d335bd4 path_nosuid +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d51fb26 __DWC_ALLOC_ATOMIC +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d830566 key_unlink +EXPORT_SYMBOL vmlinux 0x6d854977 ps2_init +EXPORT_SYMBOL vmlinux 0x6d984431 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x6da34100 ihold +EXPORT_SYMBOL vmlinux 0x6dd87c3b dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x6deaba10 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6dfe8512 uart_register_driver +EXPORT_SYMBOL vmlinux 0x6e036cd0 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x6e155e8e write_inode_now +EXPORT_SYMBOL vmlinux 0x6e23a95c param_set_charp +EXPORT_SYMBOL vmlinux 0x6e2b0362 __destroy_inode +EXPORT_SYMBOL vmlinux 0x6e352844 __scm_destroy +EXPORT_SYMBOL vmlinux 0x6e5251c7 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e698d1f phy_device_free +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7ca8fd scsi_print_result +EXPORT_SYMBOL vmlinux 0x6e7e9c95 nobh_write_end +EXPORT_SYMBOL vmlinux 0x6e88d230 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x6e8b6d0b netdev_features_change +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea09070 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x6eba7159 phy_stop +EXPORT_SYMBOL vmlinux 0x6ebd2df2 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6eebe1ba genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x6eef9396 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x6ef3e172 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6f00073a mapping_tagged +EXPORT_SYMBOL vmlinux 0x6f07a764 param_ops_long +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f3463b9 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x6f40787b of_node_get +EXPORT_SYMBOL vmlinux 0x6f6bde33 noop_fsync +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f92a419 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x6f9b8fc1 md_check_recovery +EXPORT_SYMBOL vmlinux 0x6fa60629 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x6faa31f4 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc183e3 register_cdrom +EXPORT_SYMBOL vmlinux 0x6fc7ada4 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fda3937 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x70061dd1 snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x7014f76b vfs_link +EXPORT_SYMBOL vmlinux 0x7033db9a snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x7069c769 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x7073353b inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708c210e uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x70a0fe24 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x70afb5fa generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x70b09e4e __f_setown +EXPORT_SYMBOL vmlinux 0x70b18d6b ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x70b33e0c twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x70edcfc7 mount_nodev +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70fac2ef dev_get_stats +EXPORT_SYMBOL vmlinux 0x711a7305 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x713579aa simple_rename +EXPORT_SYMBOL vmlinux 0x7138a959 mntput +EXPORT_SYMBOL vmlinux 0x714a5ff6 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a275f0 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71cecb3e netif_napi_del +EXPORT_SYMBOL vmlinux 0x71e32e38 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71fca4ab __quota_error +EXPORT_SYMBOL vmlinux 0x72169d40 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x72725efb vchi_service_set_option +EXPORT_SYMBOL vmlinux 0x72773e8a inet_frag_kill +EXPORT_SYMBOL vmlinux 0x727c9ff5 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x728746d7 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x72b059d7 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x72b46a8c kobject_get +EXPORT_SYMBOL vmlinux 0x72c64189 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72df80d2 add_disk +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ef13a5 do_splice_direct +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731b5d96 tty_lock +EXPORT_SYMBOL vmlinux 0x73226324 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73467708 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x735752b3 key_type_keyring +EXPORT_SYMBOL vmlinux 0x7373fa7f mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x7376cae2 skb_pull +EXPORT_SYMBOL vmlinux 0x7396fc7a DWC_WAITQ_ALLOC +EXPORT_SYMBOL vmlinux 0x73a1575b __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x73ae0f6e of_device_is_available +EXPORT_SYMBOL vmlinux 0x73be3770 vchi_service_use +EXPORT_SYMBOL vmlinux 0x73c498f5 ps2_drain +EXPORT_SYMBOL vmlinux 0x73d7f8d7 iunique +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73ed9e8b inc_nlink +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74230e33 sock_init_data +EXPORT_SYMBOL vmlinux 0x7428697e dquot_operations +EXPORT_SYMBOL vmlinux 0x742e1f6e remove_arg_zero +EXPORT_SYMBOL vmlinux 0x7468ee51 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x746a7422 phy_print_status +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 0x74a32086 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x74a6fb97 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ece673 dquot_destroy +EXPORT_SYMBOL vmlinux 0x74ed88b5 DWC_WORKQ_SCHEDULE +EXPORT_SYMBOL vmlinux 0x75014d14 blk_get_queue +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750c7c75 wireless_send_event +EXPORT_SYMBOL vmlinux 0x751fff7d snd_pcm_new +EXPORT_SYMBOL vmlinux 0x75492aed dm_put_device +EXPORT_SYMBOL vmlinux 0x7567d381 __get_fiq_regs +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75a0f737 get_io_context +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75ed1d48 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x76763202 ipv4_specific +EXPORT_SYMBOL vmlinux 0x767f13ad elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x76b228b1 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x76b41336 elv_dispatch_sort +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 0x76e81254 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x76f479fd mmc_can_reset +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770a4699 d_set_d_op +EXPORT_SYMBOL vmlinux 0x772e7747 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x773d22fd uart_get_divisor +EXPORT_SYMBOL vmlinux 0x776b49ae ata_print_version +EXPORT_SYMBOL vmlinux 0x777b8292 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x777f9429 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a1060b alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x77bac5ce generic_delete_inode +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c7aa29 tty_devnum +EXPORT_SYMBOL vmlinux 0x77fa1a63 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x7810a88b fence_signal_locked +EXPORT_SYMBOL vmlinux 0x78245228 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x785024df param_get_byte +EXPORT_SYMBOL vmlinux 0x78779c0b set_fiq_handler +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78821942 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x788fdce1 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78b9b4c3 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x78bfa26b add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x78d81674 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x78e71aba dquot_commit_info +EXPORT_SYMBOL vmlinux 0x78f3c371 tty_do_resize +EXPORT_SYMBOL vmlinux 0x78fd4e80 dwc_cc_name +EXPORT_SYMBOL vmlinux 0x791f6d92 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x792f403b blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x793b5753 i2c_transfer +EXPORT_SYMBOL vmlinux 0x793f0404 simple_link +EXPORT_SYMBOL vmlinux 0x79415ffb ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x79543ec4 may_umount +EXPORT_SYMBOL vmlinux 0x7955af12 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x796ed4eb finish_open +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797066d8 mii_check_media +EXPORT_SYMBOL vmlinux 0x7991b59e snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79ae7ee6 iget5_locked +EXPORT_SYMBOL vmlinux 0x79b9c861 put_disk +EXPORT_SYMBOL vmlinux 0x79c5a9f0 ioremap +EXPORT_SYMBOL vmlinux 0x79cde632 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x79d98410 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x79d9c62f flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x79f7cd7f unregister_console +EXPORT_SYMBOL vmlinux 0x7a0468b4 console_start +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a303999 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a5f1b98 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x7a74a372 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa645f2 sock_wake_async +EXPORT_SYMBOL vmlinux 0x7aaca522 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x7aaf2588 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acaa651 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aeb61d6 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x7aeccc73 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b09cbff notify_change +EXPORT_SYMBOL vmlinux 0x7b125b54 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b3e0cba skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b76c1ea mpage_writepage +EXPORT_SYMBOL vmlinux 0x7b98cc60 vm_insert_page +EXPORT_SYMBOL vmlinux 0x7b9c66f1 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x7ba83caf udp_add_offload +EXPORT_SYMBOL vmlinux 0x7c059dd0 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x7c11cc87 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c46b9f6 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x7c83b04d bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x7c949dd2 netlink_set_err +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca1fb9a neigh_table_clear +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cebfa09 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x7cf04f8d ppp_channel_index +EXPORT_SYMBOL vmlinux 0x7cf400e5 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d3b36f3 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x7d490934 mmc_start_req +EXPORT_SYMBOL vmlinux 0x7d51f46f i2c_release_client +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7b2016 of_root +EXPORT_SYMBOL vmlinux 0x7d8eb863 complete_request_key +EXPORT_SYMBOL vmlinux 0x7d956751 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x7d9ce4f8 dev_uc_add +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7dd209d2 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df25e22 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x7e05a983 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x7e230493 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x7e3c750a neigh_ifdown +EXPORT_SYMBOL vmlinux 0x7e4d36bd kern_unmount +EXPORT_SYMBOL vmlinux 0x7e50408c prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x7e554184 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x7e6fa3ef tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x7e7df966 dquot_initialize +EXPORT_SYMBOL vmlinux 0x7e8c98c1 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7eaa4bc4 generic_writepages +EXPORT_SYMBOL vmlinux 0x7eb1ba58 file_ns_capable +EXPORT_SYMBOL vmlinux 0x7ebcf663 dwc_notify +EXPORT_SYMBOL vmlinux 0x7edb6ecb dev_open +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 0x7f0c12cf bh_submit_read +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2d2e3b __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x7f3b2bff usbnet_manage_power +EXPORT_SYMBOL vmlinux 0x7f409e12 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x7f49b6a5 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x7f4f5596 ptp_find_pin +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f6dc213 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x7faa7bd9 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x7fd3416e devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe5411a dev_printk_emit +EXPORT_SYMBOL vmlinux 0x800065a7 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x800943ea remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x8021d9da scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x804aabdf idr_is_empty +EXPORT_SYMBOL vmlinux 0x806956b4 free_task +EXPORT_SYMBOL vmlinux 0x8091b851 should_remove_suid +EXPORT_SYMBOL vmlinux 0x80a77999 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x80acb4dc mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x80aec422 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x80c5171d dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d6ccc6 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x80d7c68a DWC_MUTEX_LOCK +EXPORT_SYMBOL vmlinux 0x80e59cca ip_ct_attach +EXPORT_SYMBOL vmlinux 0x80f45d4e netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x80f8725b dump_skip +EXPORT_SYMBOL vmlinux 0x81345a3a frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x813eb661 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81610fc3 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x818a927e param_get_ulong +EXPORT_SYMBOL vmlinux 0x818fe83d blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x819e42b6 mount_subtree +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81cc2339 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81de27e9 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x81e0f313 DWC_CPU_TO_LE16 +EXPORT_SYMBOL vmlinux 0x820296b0 up_read +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821bc341 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x821f7556 init_task +EXPORT_SYMBOL vmlinux 0x823ce4c0 neigh_xmit +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x8251f05c filp_close +EXPORT_SYMBOL vmlinux 0x826ebf74 tcp_v4_mtu_reduced +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 0x82b61488 stop_tty +EXPORT_SYMBOL vmlinux 0x82bffc86 bio_map_kern +EXPORT_SYMBOL vmlinux 0x82dc2813 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x82efe922 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x831396c3 fence_signal +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x8322131e vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x8333f5f7 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x833e5bd4 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x8356260a of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8375d79d ida_destroy +EXPORT_SYMBOL vmlinux 0x83776f5d update_devfreq +EXPORT_SYMBOL vmlinux 0x83850049 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b192ef vchi_disconnect +EXPORT_SYMBOL vmlinux 0x83c08b5a unregister_qdisc +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c8ff42 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x83e2114e __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x83f52f07 finish_no_open +EXPORT_SYMBOL vmlinux 0x83fa3f9f copy_from_iter +EXPORT_SYMBOL vmlinux 0x840095cf setup_new_exec +EXPORT_SYMBOL vmlinux 0x8437b738 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x8457399e rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x845c2003 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x846c5572 pps_event +EXPORT_SYMBOL vmlinux 0x847423ef eth_mac_addr +EXPORT_SYMBOL vmlinux 0x8489fb32 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x8490dbeb swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x84a20286 mdiobus_register +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84dda16a iput +EXPORT_SYMBOL vmlinux 0x84de4c2e sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x84e4fe73 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x851ea857 register_sound_special_device +EXPORT_SYMBOL vmlinux 0x852925e1 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x8533bc80 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x8540c097 neigh_table_init +EXPORT_SYMBOL vmlinux 0x854d6ddd padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x8566c85a generic_make_request +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856b9cad vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x856e143a cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x856f4333 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x85abb6b7 vfs_write +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e752c2 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8616ab38 invalidate_partition +EXPORT_SYMBOL vmlinux 0x861a684e mmc_register_driver +EXPORT_SYMBOL vmlinux 0x864267b1 blk_register_region +EXPORT_SYMBOL vmlinux 0x8644859d phy_connect_direct +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86865000 lookup_bdev +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8694196e blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x86a25f0f mmc_can_trim +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c25562 param_ops_byte +EXPORT_SYMBOL vmlinux 0x86d6bfd0 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x86efe099 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87003790 fence_init +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871e2c1a inode_get_bytes +EXPORT_SYMBOL vmlinux 0x8733b026 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x8746e3ed locks_free_lock +EXPORT_SYMBOL vmlinux 0x875bcfbe netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x87826c47 genphy_suspend +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878b3050 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x879278ec blk_requeue_request +EXPORT_SYMBOL vmlinux 0x87935111 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87afde0a iov_iter_init +EXPORT_SYMBOL vmlinux 0x87cba34b crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x87de78a0 dwc_cc_change +EXPORT_SYMBOL vmlinux 0x87e4adaf sound_class +EXPORT_SYMBOL vmlinux 0x87e92126 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x886bc76f mempool_resize +EXPORT_SYMBOL vmlinux 0x888c859f unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x88944e5f phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x889a9602 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x889d49d7 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x88a8ed21 replace_mount_options +EXPORT_SYMBOL vmlinux 0x88ad768c inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88bd82fa __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x88bfcb27 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x88f35647 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x88f6a304 __DWC_FREE +EXPORT_SYMBOL vmlinux 0x88fcdd5a blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x89236a8f serio_reconnect +EXPORT_SYMBOL vmlinux 0x892736b2 console_stop +EXPORT_SYMBOL vmlinux 0x8944940f genl_notify +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8957596d __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x8958404b vchiq_open_service +EXPORT_SYMBOL vmlinux 0x8985e991 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x899d5935 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x89c08e43 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x89c7f81e snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0x89c87dae mfd_add_devices +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89e29cd5 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1008d3 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x8a16b9f6 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a1ee4b2 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x8a478e79 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4a3a86 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x8a4f7e75 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5aa77b nf_log_trace +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80a780 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x8a8ea35b pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9c8871 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x8abc266d mii_check_link +EXPORT_SYMBOL vmlinux 0x8ac08cb4 read_dev_sector +EXPORT_SYMBOL vmlinux 0x8ac553a9 sk_free +EXPORT_SYMBOL vmlinux 0x8acb6a5f bdgrab +EXPORT_SYMBOL vmlinux 0x8ad2c02d nf_hook_slow +EXPORT_SYMBOL vmlinux 0x8ada3506 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x8b037d0d param_get_short +EXPORT_SYMBOL vmlinux 0x8b3b08c4 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x8b3e5227 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b490ecb mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x8b4d9aa2 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b9c0ef8 vfs_getattr +EXPORT_SYMBOL vmlinux 0x8ba1c6a0 make_kgid +EXPORT_SYMBOL vmlinux 0x8bc7d018 blk_complete_request +EXPORT_SYMBOL vmlinux 0x8bd819dd scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x8c0f5d87 file_path +EXPORT_SYMBOL vmlinux 0x8c391a70 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x8c3bc158 igrab +EXPORT_SYMBOL vmlinux 0x8c56b282 security_file_permission +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6c57bc d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x8cae4cb7 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8cffd606 dquot_disable +EXPORT_SYMBOL vmlinux 0x8d0d7ff1 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x8d134c39 idr_replace +EXPORT_SYMBOL vmlinux 0x8d23a41e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x8d32cfba sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x8d362e92 page_symlink +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 0x8d79153b __register_chrdev +EXPORT_SYMBOL vmlinux 0x8d84b5cf snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8d9d0d59 iterate_fd +EXPORT_SYMBOL vmlinux 0x8db20ea3 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x8db947b8 of_get_property +EXPORT_SYMBOL vmlinux 0x8dbff613 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x8dc70165 __sg_free_table +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8de7a507 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e04fc7a blk_end_request +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e67cf53 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8e9387a8 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x8e992e4e inet_sendmsg +EXPORT_SYMBOL vmlinux 0x8eac6b04 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x8ecabd74 phy_disconnect +EXPORT_SYMBOL vmlinux 0x8ef81f74 seq_write +EXPORT_SYMBOL vmlinux 0x8f406a00 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x8f475504 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x8f4eeedd mntget +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6e0ab8 of_device_register +EXPORT_SYMBOL vmlinux 0x8f7289bf __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x8f8f43e4 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x8fa99317 sock_no_accept +EXPORT_SYMBOL vmlinux 0x8fbdd345 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x8fcf1872 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fe08292 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x8ff2a3f1 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9021893d tcp_read_sock +EXPORT_SYMBOL vmlinux 0x90310b5f security_inode_init_security +EXPORT_SYMBOL vmlinux 0x903c683d pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x904ca41e skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x905bba18 vm_event_states +EXPORT_SYMBOL vmlinux 0x905beb70 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x9071b2d9 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x907a2bed devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x90865752 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x90912a97 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x90a6ea80 DWC_IN_BH +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90ea1a6d __lock_page +EXPORT_SYMBOL vmlinux 0x90f88dc0 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x91006903 module_layout +EXPORT_SYMBOL vmlinux 0x91124de1 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x91202150 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x91208d06 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914683b7 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x915c4b86 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x915f2c6e max8998_update_reg +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917c2cb4 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x917e5a64 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x917ec104 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x9186f86b clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x919bd862 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x91c626bf blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x91e303b4 vfs_mknod +EXPORT_SYMBOL vmlinux 0x91f362c1 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x9201a7c6 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x9223f320 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924ebc02 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x924f25e5 __DWC_DMA_ALLOC_ATOMIC +EXPORT_SYMBOL vmlinux 0x9256773d mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x926c5b3e ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x92921559 param_get_long +EXPORT_SYMBOL vmlinux 0x9299ba3e proto_unregister +EXPORT_SYMBOL vmlinux 0x929f94bd get_fs_type +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b5e1d5 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x92cc9dd1 d_genocide +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92e8f1f6 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x93059e82 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93120de7 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93262cf8 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x932b9ca1 vchiq_queue_bulk_transmit +EXPORT_SYMBOL vmlinux 0x93445060 clk_get +EXPORT_SYMBOL vmlinux 0x935b19ad ip_defrag +EXPORT_SYMBOL vmlinux 0x936a0b63 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937a616d misc_register +EXPORT_SYMBOL vmlinux 0x9395e97d security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x93a6a43f sock_release +EXPORT_SYMBOL vmlinux 0x93ac3c42 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b6dcc9 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x93d7a9bc sock_recvmsg +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 0x940c6876 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x9420a6b4 mount_pseudo +EXPORT_SYMBOL vmlinux 0x94535fd6 vchiq_bulk_transmit +EXPORT_SYMBOL vmlinux 0x945d3f06 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x946efbfa __wait_on_bit +EXPORT_SYMBOL vmlinux 0x94770bad fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94ad5267 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x94aff2fa tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x94b3074b param_ops_bint +EXPORT_SYMBOL vmlinux 0x94bb99b5 snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x94c8aca3 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x94c95cdb kfree_skb +EXPORT_SYMBOL vmlinux 0x94ca4b6c inode_init_owner +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x9506d236 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x9515b2a9 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x951abb48 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x9522311a __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x95235b5b tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x95363a74 blk_free_tags +EXPORT_SYMBOL vmlinux 0x953b941c mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x95860365 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x95985191 set_security_override +EXPORT_SYMBOL vmlinux 0x959a5392 give_up_console +EXPORT_SYMBOL vmlinux 0x95b346b1 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x95b3bc8d blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95e9e5f2 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x95f26edd inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x95f4105c user_path_at_empty +EXPORT_SYMBOL vmlinux 0x95f5df93 input_get_keycode +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x961eb198 poll_initwait +EXPORT_SYMBOL vmlinux 0x961eb519 dquot_transfer +EXPORT_SYMBOL vmlinux 0x9625c888 lease_modify +EXPORT_SYMBOL vmlinux 0x96573abd dquot_acquire +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96714a32 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x96757d70 DWC_SPINUNLOCK +EXPORT_SYMBOL vmlinux 0x9676ecc3 skb_push +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x968c8550 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x9691c184 poll_freewait +EXPORT_SYMBOL vmlinux 0x96bcbdef simple_empty +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dce98c resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x96fa27be __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x970ca38f of_match_node +EXPORT_SYMBOL vmlinux 0x971f07ea of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x974501cf vchi_msg_hold +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97687443 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x977a3b9d d_add_ci +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97aa6118 __inode_permission +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b6a5e5 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x97b8097a xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x97d335f6 register_gifconf +EXPORT_SYMBOL vmlinux 0x97ec26ae kset_register +EXPORT_SYMBOL vmlinux 0x97f7d5c2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x98118cf0 generic_show_options +EXPORT_SYMBOL vmlinux 0x9818b874 DWC_CPU_TO_BE16 +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98263449 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x9827b2bf dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9829a1d0 revalidate_disk +EXPORT_SYMBOL vmlinux 0x9829bf03 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x983bf186 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x9852e82f __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x98777929 posix_lock_file +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x9880b9e7 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x98c22323 netdev_notice +EXPORT_SYMBOL vmlinux 0x98c93af3 netdev_info +EXPORT_SYMBOL vmlinux 0x98d1430a udp_del_offload +EXPORT_SYMBOL vmlinux 0x98e16349 elv_rb_find +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x99028c70 vchi_msg_remove +EXPORT_SYMBOL vmlinux 0x990bf267 fasync_helper +EXPORT_SYMBOL vmlinux 0x992f526b key_invalidate +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 0x99661d9b mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x9968a84e unregister_nls +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x99818685 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x9993f4d5 vfs_statfs +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99987049 component_match_add +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x999fc968 __elv_add_request +EXPORT_SYMBOL vmlinux 0x99bb5fc5 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99cf8a82 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x99d216f6 snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x9a089655 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x9a143d8f __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x9a1c1748 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a2bc0a7 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x9a2c6b59 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x9a4eef3a padata_do_serial +EXPORT_SYMBOL vmlinux 0x9a623142 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a8f93e1 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x9ab96d4f tcp_conn_request +EXPORT_SYMBOL vmlinux 0x9ade80b5 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x9aea6033 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x9b026032 elv_rb_add +EXPORT_SYMBOL vmlinux 0x9b12775a scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x9b229421 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x9b33c909 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b7f12d4 snd_device_new +EXPORT_SYMBOL vmlinux 0x9b7ff2fd security_path_link +EXPORT_SYMBOL vmlinux 0x9b8c1b2a blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x9b94d6c9 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +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 0x9bc3c0b4 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x9bc6f6f4 bio_endio +EXPORT_SYMBOL vmlinux 0x9bc70db4 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bdf62e7 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c085116 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c14394c DWC_TASK_FREE +EXPORT_SYMBOL vmlinux 0x9c45f1d3 simple_unlink +EXPORT_SYMBOL vmlinux 0x9c54b7d5 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x9c5851af open_exec +EXPORT_SYMBOL vmlinux 0x9c59e5ad fd_install +EXPORT_SYMBOL vmlinux 0x9c972bb6 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x9c9a98aa DWC_MEMCPY +EXPORT_SYMBOL vmlinux 0x9c9ec2a0 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x9ca2c83d revert_creds +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cae4f8c km_state_expired +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9cc5113c iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x9cc662b5 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9cd60539 sg_free_table +EXPORT_SYMBOL vmlinux 0x9ceb5166 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x9d032749 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x9d0472d7 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d1c0539 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x9d2571a5 md_write_end +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3ae859 unlock_rename +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6a079d set_blocksize +EXPORT_SYMBOL vmlinux 0x9d7c4477 simple_statfs +EXPORT_SYMBOL vmlinux 0x9da530c8 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x9db0708c blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x9dcb2706 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x9dd0954d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x9df4004b input_unregister_handle +EXPORT_SYMBOL vmlinux 0x9dfc929f led_set_brightness +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e013de1 scsi_execute +EXPORT_SYMBOL vmlinux 0x9e09a908 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e22097a fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9e3682fd DWC_MDELAY +EXPORT_SYMBOL vmlinux 0x9e46146a simple_nosetlease +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e52a6be tcf_action_exec +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e620769 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e84be4d single_open +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9eb29378 kernel_bind +EXPORT_SYMBOL vmlinux 0x9eb79e12 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x9ebbaef1 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x9ec65a8b invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x9f21baf0 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x9f310f61 netdev_alert +EXPORT_SYMBOL vmlinux 0x9f425b54 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f527d41 proc_create_data +EXPORT_SYMBOL vmlinux 0x9f5cf53f snd_device_register +EXPORT_SYMBOL vmlinux 0x9f67cf4a neigh_connected_output +EXPORT_SYMBOL vmlinux 0x9f716817 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x9f82892d bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x9f8a4e63 irq_set_chip +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa62564 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x9fbc5e64 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x9fcad8ac __lock_buffer +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe10aae skb_append +EXPORT_SYMBOL vmlinux 0x9ff4b9ab snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffa9f53 param_ops_short +EXPORT_SYMBOL vmlinux 0xa006572b put_page +EXPORT_SYMBOL vmlinux 0xa00b7e58 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xa00bfdf4 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xa00eb15b ioremap_page +EXPORT_SYMBOL vmlinux 0xa02ae378 of_platform_device_create +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 0xa070ec4a iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xa07db9d9 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0805099 get_tz_trend +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa092f8c8 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b27ab2 ppp_input_error +EXPORT_SYMBOL vmlinux 0xa0c5654f xfrm_init_replay +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 0xa108605d __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa141809d usb_gadget_probe_driver +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14c5899 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa165aea3 vchi_msg_queuev +EXPORT_SYMBOL vmlinux 0xa16f0cc5 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xa179633c from_kprojid +EXPORT_SYMBOL vmlinux 0xa18d03d4 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0xa192813b idr_for_each +EXPORT_SYMBOL vmlinux 0xa198b983 dst_alloc +EXPORT_SYMBOL vmlinux 0xa1a32376 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xa1a80b6b neigh_event_ns +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1b96d24 release_pages +EXPORT_SYMBOL vmlinux 0xa1b9ee07 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c9cc7e dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0xa1d2dc46 neigh_destroy +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1ec2f87 set_bh_page +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa202efc0 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xa2036b76 audit_log_start +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa22598c5 napi_complete_done +EXPORT_SYMBOL vmlinux 0xa22e9df3 vchiq_add_connected_callback +EXPORT_SYMBOL vmlinux 0xa254b3aa vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xa264868b read_cache_pages +EXPORT_SYMBOL vmlinux 0xa2681d00 tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2fe6037 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xa311a9d0 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa3514b2a do_splice_from +EXPORT_SYMBOL vmlinux 0xa36b4eaa md_unregister_thread +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa398fcd2 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xa39a123a fence_add_callback +EXPORT_SYMBOL vmlinux 0xa3b41687 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xa3dc74a8 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xa3f7843c sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xa3fcadec twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xa3fe3e23 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xa401203b __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa42687da __get_page_tail +EXPORT_SYMBOL vmlinux 0xa42ae99d dev_uc_del +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4767558 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xa47f2df7 param_set_ushort +EXPORT_SYMBOL vmlinux 0xa4864d89 bdget_disk +EXPORT_SYMBOL vmlinux 0xa4899035 backlight_device_register +EXPORT_SYMBOL vmlinux 0xa48a4dbc unlock_page +EXPORT_SYMBOL vmlinux 0xa4a4275a ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xa4b2d948 napi_disable +EXPORT_SYMBOL vmlinux 0xa4b7d5e9 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xa4b89a88 get_super +EXPORT_SYMBOL vmlinux 0xa4bea7fb sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xa4e736b3 snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0xa4f08a8d netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xa4fc75d7 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xa5362677 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5564347 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xa567a3ab of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59c181a of_get_address +EXPORT_SYMBOL vmlinux 0xa5b6add8 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5cf5dfe mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xa5d16928 d_walk +EXPORT_SYMBOL vmlinux 0xa5d32ffe skb_clone +EXPORT_SYMBOL vmlinux 0xa5d6ff87 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xa5df6d47 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xa614b31c tcp_req_err +EXPORT_SYMBOL vmlinux 0xa619a1df do_map_probe +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa6210f81 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa64510cb dev_printk +EXPORT_SYMBOL vmlinux 0xa6538434 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xa6622497 fget +EXPORT_SYMBOL vmlinux 0xa67374f0 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68a3db7 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xa694f7c0 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xa69634ca dma_async_device_register +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6cf746e dquot_commit +EXPORT_SYMBOL vmlinux 0xa6e0494a tty_port_open +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7040fd1 f_setown +EXPORT_SYMBOL vmlinux 0xa705b1f7 sock_no_poll +EXPORT_SYMBOL vmlinux 0xa71c0f8e blk_fetch_request +EXPORT_SYMBOL vmlinux 0xa71e4e6c flush_signals +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7463154 dev_get_flags +EXPORT_SYMBOL vmlinux 0xa748ddf9 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xa75b8eb1 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xa7938af3 abort_creds +EXPORT_SYMBOL vmlinux 0xa7b52c45 DWC_MUTEX_UNLOCK +EXPORT_SYMBOL vmlinux 0xa7c456d6 inet_sendpage +EXPORT_SYMBOL vmlinux 0xa7fc3b32 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xa81f0f88 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84d6374 dev_activate +EXPORT_SYMBOL vmlinux 0xa84e5653 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa876064c dev_close +EXPORT_SYMBOL vmlinux 0xa88a484e param_ops_ullong +EXPORT_SYMBOL vmlinux 0xa893a97c posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xa897b514 init_buffer +EXPORT_SYMBOL vmlinux 0xa89c9324 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8a87fe4 param_get_ullong +EXPORT_SYMBOL vmlinux 0xa8dcc8cf of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xa8dd7f73 seq_escape +EXPORT_SYMBOL vmlinux 0xa8f5b053 of_dev_get +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90297a8 vchiq_connect +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9347a17 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xa93c63cd DWC_TIMER_CANCEL +EXPORT_SYMBOL vmlinux 0xa9406cf5 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xa949cc46 vchi_service_destroy +EXPORT_SYMBOL vmlinux 0xa95fd1db param_get_int +EXPORT_SYMBOL vmlinux 0xa973cf1f kill_anon_super +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9afdd48 fb_show_logo +EXPORT_SYMBOL vmlinux 0xa9b89e70 snd_pcm_lib_malloc_pages +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 0xa9e82be5 eth_header_cache +EXPORT_SYMBOL vmlinux 0xaa05882e devfreq_add_device +EXPORT_SYMBOL vmlinux 0xaa1865f9 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xaa5927f9 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6c2df7 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xaa6d2fa1 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa9a4b80 skb_ensure_writable +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 0xaae5ea47 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xaaeff623 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab0bca25 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0xab3d50a7 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xab40018f ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xab4cb0b4 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xab5661fd read_cache_page +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6ed652 blk_stop_queue +EXPORT_SYMBOL vmlinux 0xab77ccc3 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabb0745e mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xabbae3bf tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xabbecaca dev_driver_string +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 0xac0a84e4 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac170e97 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac23ab75 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xac34007b dev_mc_sync +EXPORT_SYMBOL vmlinux 0xac379f7a read_code +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac493800 down_write +EXPORT_SYMBOL vmlinux 0xac5b30ee __DWC_ALLOC +EXPORT_SYMBOL vmlinux 0xac75d1a9 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb66729 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd590df nf_log_unregister +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad14b582 DWC_MEMCMP +EXPORT_SYMBOL vmlinux 0xad21f8f3 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xad283b82 module_refcount +EXPORT_SYMBOL vmlinux 0xad2f0d83 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xad453dec sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xad519635 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xad523889 __sb_start_write +EXPORT_SYMBOL vmlinux 0xad675405 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xad7ab978 tso_build_data +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad975d43 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xada41352 of_find_property +EXPORT_SYMBOL vmlinux 0xadc3ef3d DWC_WRITE_REG32 +EXPORT_SYMBOL vmlinux 0xadd47e82 kobject_del +EXPORT_SYMBOL vmlinux 0xadd69545 inode_set_flags +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadfbd67f posix_test_lock +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xadfee997 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xae0390bb netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xae30d343 usbnet_link_change +EXPORT_SYMBOL vmlinux 0xae3733cf dev_mc_init +EXPORT_SYMBOL vmlinux 0xae3a2f9f dump_page +EXPORT_SYMBOL vmlinux 0xae3b426f sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xae44a1fc loop_register_transfer +EXPORT_SYMBOL vmlinux 0xae4c30f6 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xae5869fe invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xae6efbe8 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae762cf9 snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae8ffee0 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaeda1d59 user_revoke +EXPORT_SYMBOL vmlinux 0xaef7858c __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xaefea7f1 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xaf08a044 DWC_WAITQ_TRIGGER +EXPORT_SYMBOL vmlinux 0xaf10d009 vchi_get_peer_version +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3ffdba sk_filter +EXPORT_SYMBOL vmlinux 0xaf43e690 scsi_init_io +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf5137ae inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xaf65051e scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xaf6846c2 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xafaf6642 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xafbf3794 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xafc126d4 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xafca979d unregister_md_personality +EXPORT_SYMBOL vmlinux 0xafe97fec ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xb013008e get_thermal_instance +EXPORT_SYMBOL vmlinux 0xb023d391 DWC_MUTEX_ALLOC +EXPORT_SYMBOL vmlinux 0xb04989e8 module_put +EXPORT_SYMBOL vmlinux 0xb04c2ccd tcp_v4_syn_recv_sock +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 0xb0783f39 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xb0a047c8 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a2d26f xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xb0aa119f copy_to_iter +EXPORT_SYMBOL vmlinux 0xb0ae7348 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xb0ca0f25 key_link +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0fce79b xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1344208 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xb148b1ed zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb15ec186 DWC_THREAD_STOP +EXPORT_SYMBOL vmlinux 0xb178d2b0 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xb17f198c ip_check_defrag +EXPORT_SYMBOL vmlinux 0xb18350ba key_revoke +EXPORT_SYMBOL vmlinux 0xb1864784 tty_free_termios +EXPORT_SYMBOL vmlinux 0xb199c337 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xb19c50fd udp6_csum_init +EXPORT_SYMBOL vmlinux 0xb19d155d sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1b785bd scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xb1bcca5a neigh_lookup_nodev +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 0xb20223e7 tty_port_put +EXPORT_SYMBOL vmlinux 0xb2245727 flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0xb225ff65 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xb25015b9 inet_getname +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26d4d81 snd_seq_root +EXPORT_SYMBOL vmlinux 0xb26f5471 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xb2725510 filemap_flush +EXPORT_SYMBOL vmlinux 0xb2857a84 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xb29d1505 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xb2a112ef skb_trim +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d1e87a textsearch_destroy +EXPORT_SYMBOL vmlinux 0xb2d2d052 get_empty_filp +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb2e5f4f4 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xb2faf1d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0xb32d74f7 simple_rmdir +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb341eb07 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xb3550f35 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xb35e9251 register_sound_special +EXPORT_SYMBOL vmlinux 0xb362d4bb vchi_msg_dequeue +EXPORT_SYMBOL vmlinux 0xb36ea924 would_dump +EXPORT_SYMBOL vmlinux 0xb394e0aa scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xb3a11f52 param_set_ulong +EXPORT_SYMBOL vmlinux 0xb3b14778 cpu_tlb +EXPORT_SYMBOL vmlinux 0xb3c10d31 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d61b86 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xb3e97f3b sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb407c590 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xb410b957 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb444a52e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb4596343 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb49aa68d dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xb49c96c9 simple_setattr +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4c3a2b9 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xb5189af7 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb523484b tcp_parse_options +EXPORT_SYMBOL vmlinux 0xb52a022b dwc_cc_add +EXPORT_SYMBOL vmlinux 0xb5684e29 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a2cfc4 skb_checksum +EXPORT_SYMBOL vmlinux 0xb5a3e0fe dev_crit +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a7edb6 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d55ce1 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5f7dc22 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0xb6223faf i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xb6635415 ether_setup +EXPORT_SYMBOL vmlinux 0xb66df584 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xb66f5464 usb_gadget_unregister_driver +EXPORT_SYMBOL vmlinux 0xb67656ad scsi_register +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6945b4d ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xb6985afa ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6e4afa3 nand_scan +EXPORT_SYMBOL vmlinux 0xb6f3940a cdev_init +EXPORT_SYMBOL vmlinux 0xb70dba5a dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xb70e492f devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xb719a183 DWC_SPRINTF +EXPORT_SYMBOL vmlinux 0xb731184f framebuffer_release +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74b616b gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xb74be3fe __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xb74c56b6 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb784e6df set_anon_super +EXPORT_SYMBOL vmlinux 0xb7863489 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a1e815 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xb7b23f88 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7c13d45 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xb7c5a3f1 tty_throttle +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7c726c4 amba_request_regions +EXPORT_SYMBOL vmlinux 0xb7d9e774 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xb7e6ddda ip_options_compile +EXPORT_SYMBOL vmlinux 0xb7ed54b3 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xb7f18b8a dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81dfda0 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xb83e2c68 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0xb84112b6 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xb844c243 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xb84706af sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xb857b42f kfree_put_link +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8a458d4 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xb8a9b0b0 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xb8dafeb4 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xb8e4c6b3 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0xb8e55ea8 bio_init +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb90b1732 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xb93abd9c truncate_pagecache +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb9761629 ata_link_printk +EXPORT_SYMBOL vmlinux 0xb9971f42 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xb99f652c serio_rescan +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9b030c8 blk_get_request +EXPORT_SYMBOL vmlinux 0xb9b5ffc6 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xb9b9a31e mmc_request_done +EXPORT_SYMBOL vmlinux 0xb9c56217 get_super_thawed +EXPORT_SYMBOL vmlinux 0xb9dcd48d vc_resize +EXPORT_SYMBOL vmlinux 0xb9e7c2c3 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f18dd3 DWC_STRDUP +EXPORT_SYMBOL vmlinux 0xba0498b3 __break_lease +EXPORT_SYMBOL vmlinux 0xba07c566 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xba130600 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xba327c9b ps2_command +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ae097 enable_fiq +EXPORT_SYMBOL vmlinux 0xba4d9175 pps_register_source +EXPORT_SYMBOL vmlinux 0xba517174 request_key +EXPORT_SYMBOL vmlinux 0xba953749 fsync_bdev +EXPORT_SYMBOL vmlinux 0xba9b2cdf rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xbab4d031 amba_driver_register +EXPORT_SYMBOL vmlinux 0xbabf3dc0 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbaca67a1 vfs_unlink +EXPORT_SYMBOL vmlinux 0xbaef9208 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb0abb85 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xbb1e328f end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xbb25c848 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6c1be1 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb85642e inet6_getname +EXPORT_SYMBOL vmlinux 0xbb86d828 dev_warn +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbc1f392 blk_peek_request +EXPORT_SYMBOL vmlinux 0xbbde21bd dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xbbf9b0b0 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xbc0cc2e3 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc605eb3 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xbc77d023 DWC_MUTEX_TRYLOCK +EXPORT_SYMBOL vmlinux 0xbc8312f7 snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0xbc98a582 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xbca6e6b0 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xbcc01fa1 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd15722 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xbce080b2 contig_page_data +EXPORT_SYMBOL vmlinux 0xbd17c6de gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xbd51d616 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xbd88af42 phy_suspend +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbdec4d08 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbe0266b7 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xbe097e1e uart_resume_port +EXPORT_SYMBOL vmlinux 0xbe0bb3ee __bread_gfp +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe207604 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xbe238bb2 kill_litter_super +EXPORT_SYMBOL vmlinux 0xbe3947a0 of_iomap +EXPORT_SYMBOL vmlinux 0xbe3fa254 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xbe548b3d abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbea536f6 dup_iter +EXPORT_SYMBOL vmlinux 0xbeda249b sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbeefc005 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xbef11e6f gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefc072b snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0xbefd98f9 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xbf18cf3b __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xbf21928a md_reload_sb +EXPORT_SYMBOL vmlinux 0xbf392a96 amba_device_register +EXPORT_SYMBOL vmlinux 0xbf4639f3 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xbf6dbe24 blk_start_request +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf80d34b follow_down_one +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf939921 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa89617 dev_addr_del +EXPORT_SYMBOL vmlinux 0xbfae7866 key_task_permission +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc02bfbe9 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc02c5505 elevator_change +EXPORT_SYMBOL vmlinux 0xc0455160 cpu_user +EXPORT_SYMBOL vmlinux 0xc0509f12 generic_ro_fops +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 0xc07d1e20 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08f08d0 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0b09470 dev_alert +EXPORT_SYMBOL vmlinux 0xc0cbd7b4 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xc0d1af7e DWC_MEMSET +EXPORT_SYMBOL vmlinux 0xc1136a98 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc11ee162 scsi_add_device +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc144800f skb_queue_head +EXPORT_SYMBOL vmlinux 0xc1593779 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xc179c8fd nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xc1909508 cdev_del +EXPORT_SYMBOL vmlinux 0xc199e825 snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0xc1b125cb dev_remove_pack +EXPORT_SYMBOL vmlinux 0xc1cefcd5 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f713ef posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xc1fada5f xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xc2081a83 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xc21321f9 of_translate_address +EXPORT_SYMBOL vmlinux 0xc217fda7 dquot_alloc +EXPORT_SYMBOL vmlinux 0xc233f979 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xc246db84 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xc24a06cb single_release +EXPORT_SYMBOL vmlinux 0xc24e4033 dev_err +EXPORT_SYMBOL vmlinux 0xc2740e57 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xc2852993 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xc28aa2dc abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xc2955cf3 dev_mc_add +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f7f06d __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xc2f99efd iget_locked +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fc95f4 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xc30ead34 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc3675ba3 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xc3747538 cdrom_release +EXPORT_SYMBOL vmlinux 0xc38d0f5b dwc_cc_restore_from_data +EXPORT_SYMBOL vmlinux 0xc39378c0 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xc396cf17 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xc3a40461 __page_symlink +EXPORT_SYMBOL vmlinux 0xc3a493a1 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d3f67d bio_copy_data +EXPORT_SYMBOL vmlinux 0xc3db8759 netdev_warn +EXPORT_SYMBOL vmlinux 0xc3f6b338 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xc41c3a35 textsearch_register +EXPORT_SYMBOL vmlinux 0xc448333c tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xc45a808d alloc_disk +EXPORT_SYMBOL vmlinux 0xc46a7f63 DWC_STRNCMP +EXPORT_SYMBOL vmlinux 0xc46d9b72 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xc476a753 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xc477af70 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xc4835505 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc4942a1a inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49a25d3 thaw_super +EXPORT_SYMBOL vmlinux 0xc4a28fd7 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xc4cea612 dwc_free_notification_manager +EXPORT_SYMBOL vmlinux 0xc5546a4d nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xc57e6a9c con_is_bound +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a2e360 input_set_capability +EXPORT_SYMBOL vmlinux 0xc5ae7263 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xc5cef729 find_vma +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6043977 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xc615cb3b max8998_write_reg +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63a304c skb_unlink +EXPORT_SYMBOL vmlinux 0xc6490fa1 fb_class +EXPORT_SYMBOL vmlinux 0xc64c9bc9 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xc66224ba scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xc66fa6a6 ida_remove +EXPORT_SYMBOL vmlinux 0xc686be71 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xc68ea455 of_phy_attach +EXPORT_SYMBOL vmlinux 0xc69a41ea current_fs_time +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6de77b4 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xc6f1d71e qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72313b4 security_path_chmod +EXPORT_SYMBOL vmlinux 0xc725c078 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xc7398c8b __DWC_DMA_ALLOC +EXPORT_SYMBOL vmlinux 0xc750087b of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7816a43 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc78acb66 bcm_dmaman_probe +EXPORT_SYMBOL vmlinux 0xc78f43aa dm_put_table_device +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc797c18c inode_permission +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79d4528 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ab4086 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc7acbeb4 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xc7af7f3b scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc7b45f23 find_get_entry +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7d4d4bc inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7ee71a8 dquot_drop +EXPORT_SYMBOL vmlinux 0xc7fed791 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xc801829b skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xc8110405 __kernel_write +EXPORT_SYMBOL vmlinux 0xc814f20f mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xc81b80bb clear_inode +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc827d401 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xc82d62db arp_send +EXPORT_SYMBOL vmlinux 0xc831e15f km_is_alive +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83c2991 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xc83d587b iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8503c7c netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xc8530acf tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc877da5f dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89993f2 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8af02db remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xc8b507b7 vchiq_shutdown +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d46c6e neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xc8f0c108 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc946cc25 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc966d438 snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0xc98827a4 dquot_release +EXPORT_SYMBOL vmlinux 0xc988bff2 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xc994b1b9 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9d0e293 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xc9d87046 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0xc9e4f857 snd_timer_new +EXPORT_SYMBOL vmlinux 0xc9eacf37 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xca01ca40 dev_add_pack +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca130956 mm_vc_mem_base +EXPORT_SYMBOL vmlinux 0xca27fa8c mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xca4499fb request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xca49b452 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xca4bbe19 dwc_unregister_notifier +EXPORT_SYMBOL vmlinux 0xca5d6209 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xca753291 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xca856684 DWC_MODIFY_REG32 +EXPORT_SYMBOL vmlinux 0xca8637d0 DWC_WORKQ_ALLOC +EXPORT_SYMBOL vmlinux 0xca8ae537 backlight_force_update +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcac38682 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xcac723ec swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xcaed1030 sock_from_file +EXPORT_SYMBOL vmlinux 0xcaf21030 submit_bio +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf718b0 pps_unregister_source +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb374183 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xcb3ae766 skb_make_writable +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb6aafab blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xcb72c462 security_path_unlink +EXPORT_SYMBOL vmlinux 0xcba84e38 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xcbae0bd1 scmd_printk +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd88140 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xcbe3c060 down_read +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 0xcbf98de5 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xcc1ced39 set_wb_congested +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2a68ca textsearch_unregister +EXPORT_SYMBOL vmlinux 0xcc431707 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc677e1c dquot_free_inode +EXPORT_SYMBOL vmlinux 0xccc1992f kern_path +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd77b73 snd_jack_new +EXPORT_SYMBOL vmlinux 0xcce326c3 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd022326 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +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 0xcd3b0978 km_new_mapping +EXPORT_SYMBOL vmlinux 0xcd46bea6 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xcd536aee path_get +EXPORT_SYMBOL vmlinux 0xcd58b615 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd65bfea dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xcd79287e xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd95f7f2 request_firmware +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc49e19 lockref_get +EXPORT_SYMBOL vmlinux 0xcdcf7d3f __DWC_ERROR +EXPORT_SYMBOL vmlinux 0xcdee9684 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xcdf92ee0 security_path_mknod +EXPORT_SYMBOL vmlinux 0xce0257dc mpage_readpages +EXPORT_SYMBOL vmlinux 0xce195f86 pipe_unlock +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce365222 __scm_send +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce3cb677 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xce4ca9ad dma_common_mmap +EXPORT_SYMBOL vmlinux 0xce545e87 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce72021f kernel_write +EXPORT_SYMBOL vmlinux 0xce832f28 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xcea18df2 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcebf75d3 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xced9187d vfs_read +EXPORT_SYMBOL vmlinux 0xcedbe7e2 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf02782f tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xcf11d690 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xcf1e9b6a blk_end_request_all +EXPORT_SYMBOL vmlinux 0xcf246a82 DWC_MSLEEP +EXPORT_SYMBOL vmlinux 0xcf27e530 DWC_STRCPY +EXPORT_SYMBOL vmlinux 0xcf2e07ca kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xcf312223 __blk_end_request +EXPORT_SYMBOL vmlinux 0xcf34c744 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xcf46a933 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xcf7d646d register_quota_format +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcf919f16 vfs_llseek +EXPORT_SYMBOL vmlinux 0xcf954c5f serio_interrupt +EXPORT_SYMBOL vmlinux 0xcf957f2e skb_insert +EXPORT_SYMBOL vmlinux 0xcf9ee225 softnet_data +EXPORT_SYMBOL vmlinux 0xcfa51cdd blk_put_request +EXPORT_SYMBOL vmlinux 0xcfb33d97 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xcfbfd7ad mutex_trylock +EXPORT_SYMBOL vmlinux 0xcfc39f2e __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xcffbbf6d d_rehash +EXPORT_SYMBOL vmlinux 0xd0225da6 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xd034105f lockref_put_return +EXPORT_SYMBOL vmlinux 0xd05eeadf fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xd06d1568 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xd06d4ef5 vchiq_queue_bulk_receive +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0742b4d input_unregister_device +EXPORT_SYMBOL vmlinux 0xd07ec6d1 try_module_get +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0af47e4 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xd0afb665 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xd0bcf81d __frontswap_test +EXPORT_SYMBOL vmlinux 0xd0bf2ed1 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f6499f simple_lookup +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd100acbd _raw_write_lock +EXPORT_SYMBOL vmlinux 0xd101461e may_umount_tree +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd11663a6 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xd1182fb0 tcp_check_req +EXPORT_SYMBOL vmlinux 0xd11be8f0 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xd1303905 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xd13b4d69 vchi_msg_queue +EXPORT_SYMBOL vmlinux 0xd1598f78 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xd159abcc dev_load +EXPORT_SYMBOL vmlinux 0xd15c56f3 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1828be6 blk_init_queue +EXPORT_SYMBOL vmlinux 0xd18d2403 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1b2d6a3 DWC_PRINTF +EXPORT_SYMBOL vmlinux 0xd1bba126 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xd1c52bc3 send_sig +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1df8133 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xd1e33084 dma_find_channel +EXPORT_SYMBOL vmlinux 0xd1e79cae fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xd1f5ac90 snd_timer_stop +EXPORT_SYMBOL vmlinux 0xd20e219f fbcon_set_bitops +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 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd278f1d9 phy_detach +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd281301e i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xd2856a51 follow_down +EXPORT_SYMBOL vmlinux 0xd28983cd input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xd28b46b3 snd_card_new +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2c5a71f cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xd2d1ef30 param_set_byte +EXPORT_SYMBOL vmlinux 0xd2d35e3a blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2de86de DWC_MEMMOVE +EXPORT_SYMBOL vmlinux 0xd2efe92f mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd33b3507 tcp_prot +EXPORT_SYMBOL vmlinux 0xd34212db blk_delay_queue +EXPORT_SYMBOL vmlinux 0xd367cf01 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xd37445d8 mpage_readpage +EXPORT_SYMBOL vmlinux 0xd39af813 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xd39cc68e qdisc_list_del +EXPORT_SYMBOL vmlinux 0xd3bc530e out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xd3cd1bc3 mount_bdev +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3ebb44f blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd41c983c snd_card_set_id +EXPORT_SYMBOL vmlinux 0xd42eb00d sock_wfree +EXPORT_SYMBOL vmlinux 0xd4443a2c tty_port_close +EXPORT_SYMBOL vmlinux 0xd45d5a56 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xd4650692 netpoll_setup +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd46caadc scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xd476da86 account_page_redirty +EXPORT_SYMBOL vmlinux 0xd4876618 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xd48a83c5 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xd4b43d33 touch_atime +EXPORT_SYMBOL vmlinux 0xd4d952e5 end_page_writeback +EXPORT_SYMBOL vmlinux 0xd4fcc64b sock_efree +EXPORT_SYMBOL vmlinux 0xd4ffb4be __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xd4ffe65a uart_suspend_port +EXPORT_SYMBOL vmlinux 0xd5152710 sg_next +EXPORT_SYMBOL vmlinux 0xd5293814 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xd5407ab1 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xd544d179 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xd54581e5 sync_inode +EXPORT_SYMBOL vmlinux 0xd54995ef page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5b45ea3 usbnet_device_suggests_idle +EXPORT_SYMBOL vmlinux 0xd5e71cd6 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xd5ec9911 dget_parent +EXPORT_SYMBOL vmlinux 0xd5f2b192 keyring_clear +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5fb0c1e of_get_next_parent +EXPORT_SYMBOL vmlinux 0xd60f1a36 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd633413d param_ops_int +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64f34c6 bmap +EXPORT_SYMBOL vmlinux 0xd65094d4 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xd65943a4 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xd6601e23 mutex_lock +EXPORT_SYMBOL vmlinux 0xd668e15b __alloc_skb +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6891921 DWC_WORKQ_SCHEDULE_DELAYED +EXPORT_SYMBOL vmlinux 0xd6a0de33 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xd6b3890e get_cached_acl +EXPORT_SYMBOL vmlinux 0xd6c42eb7 of_get_parent +EXPORT_SYMBOL vmlinux 0xd6cf04aa bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xd6e31ae3 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f0855a of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xd6fb897f xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd7039810 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xd732345d passthru_features_check +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd750cb5b tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xd7536571 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd769d113 ps2_end_command +EXPORT_SYMBOL vmlinux 0xd774b717 make_kprojid +EXPORT_SYMBOL vmlinux 0xd78025ae gen_pool_create +EXPORT_SYMBOL vmlinux 0xd7830c44 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd79a0f66 kernel_accept +EXPORT_SYMBOL vmlinux 0xd7bf4268 DWC_WAITQ_FREE +EXPORT_SYMBOL vmlinux 0xd7c5c6ef neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xd7d669b7 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xd7dc476b gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xd7e06ddd dquot_get_state +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd8100d59 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xd842e4eb skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xd85a6f10 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd8616065 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xd88638e6 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xd899c067 simple_follow_link +EXPORT_SYMBOL vmlinux 0xd8a2d025 snd_ctl_remove +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ad9eeb md_cluster_mod +EXPORT_SYMBOL vmlinux 0xd8b1c605 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xd8d18fbe ptp_clock_index +EXPORT_SYMBOL vmlinux 0xd8dbe3b1 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e2e43f sock_register +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ec45f8 dev_notice +EXPORT_SYMBOL vmlinux 0xd8fbcd76 kthread_stop +EXPORT_SYMBOL vmlinux 0xd91f5d2d put_filp +EXPORT_SYMBOL vmlinux 0xd92ba75b freeze_super +EXPORT_SYMBOL vmlinux 0xd96770bb freezing_slow_path +EXPORT_SYMBOL vmlinux 0xd96f23c4 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd981609d vm_map_ram +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9890da1 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xd98c2952 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xd9a9637d clone_cred +EXPORT_SYMBOL vmlinux 0xd9b73fb4 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xd9c0e70f inode_init_once +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xda1372d0 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xda1e4a48 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xda1fcded dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xda229eef sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda5cdf45 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda876309 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xda891807 set_disk_ro +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8f1975 mem_map +EXPORT_SYMBOL vmlinux 0xda9298be sock_edemux +EXPORT_SYMBOL vmlinux 0xda9331e4 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xda93fbed xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdab18718 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdaceb155 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdb0ff639 generic_write_checks +EXPORT_SYMBOL vmlinux 0xdb176818 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xdb2cc40b tty_kref_put +EXPORT_SYMBOL vmlinux 0xdb3c349a inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xdb3eac11 noop_llseek +EXPORT_SYMBOL vmlinux 0xdb594546 param_ops_ushort +EXPORT_SYMBOL vmlinux 0xdb5adcad fifo_set_limit +EXPORT_SYMBOL vmlinux 0xdb608a9a skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6d8b9c scsi_unregister +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb881ee0 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xdb8a3d37 netdev_emerg +EXPORT_SYMBOL vmlinux 0xdb9f0490 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xdbb9eb39 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xdbce4396 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xdbcff291 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xdbd69bcd inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xdbd9904e d_instantiate +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc10e13e vfs_iter_write +EXPORT_SYMBOL vmlinux 0xdc157b93 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xdc234137 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5b1c9c jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xdc5fd57d xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xdc612bf2 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xdc8c823a ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xdc9a204a get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xdca3b953 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdccbb86b cdrom_open +EXPORT_SYMBOL vmlinux 0xdccd4126 __pagevec_release +EXPORT_SYMBOL vmlinux 0xdce03cd5 inet_bind +EXPORT_SYMBOL vmlinux 0xdced9f36 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xdcf02e2a cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1df83b fb_find_mode +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 0xdd3c6852 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xdd40a0c3 param_get_uint +EXPORT_SYMBOL vmlinux 0xdd4fb338 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xdd58a7a6 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xdd66c13c snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0xdd9e1443 proc_remove +EXPORT_SYMBOL vmlinux 0xddbcc8ba dma_supported +EXPORT_SYMBOL vmlinux 0xddc5f4bc rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xddc9632d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xddd680c0 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xdddb58df simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xdde007ae eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xdded474a seq_release +EXPORT_SYMBOL vmlinux 0xddff6c62 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xde00e17b i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xde0f7615 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xde555c07 put_io_context +EXPORT_SYMBOL vmlinux 0xde648bbd param_ops_string +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdeaf903a cad_pid +EXPORT_SYMBOL vmlinux 0xdeb93a25 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xdec6ee7f proc_set_size +EXPORT_SYMBOL vmlinux 0xdf15132b km_state_notify +EXPORT_SYMBOL vmlinux 0xdf298388 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf36aaed DWC_TASK_SCHEDULE +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3d80b2 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xdf48eedd kmem_cache_create +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5e9a20 make_kuid +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf77b7d8 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xdf7a644a find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xdf84a619 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xdf8be3f9 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xdf9013bc sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9c72ad phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcc450c xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xdfcca82f mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xdfd73a3d vfs_symlink +EXPORT_SYMBOL vmlinux 0xdfeb38be dev_emerg +EXPORT_SYMBOL vmlinux 0xdfecaa3c swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xe00c04d2 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xe0205858 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xe024975d scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06a3c5a of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07adcda rwsem_wake +EXPORT_SYMBOL vmlinux 0xe07b4adf tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xe0810ef3 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08d3eb6 have_submounts +EXPORT_SYMBOL vmlinux 0xe09b0f43 security_mmap_file +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b1b08d snd_timer_notify +EXPORT_SYMBOL vmlinux 0xe0b2ca21 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xe0b51353 DWC_WORKQ_FREE +EXPORT_SYMBOL vmlinux 0xe0b9e094 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xe0c169b3 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xe0d733b2 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xe0fd07c2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1204dfe d_delete +EXPORT_SYMBOL vmlinux 0xe12490f6 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe1506dfa generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xe164e8e7 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe1da84e0 phy_device_create +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20e5879 phy_find_first +EXPORT_SYMBOL vmlinux 0xe20eab19 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xe221f379 input_event +EXPORT_SYMBOL vmlinux 0xe231b50c tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24b69b3 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2781b7e bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xe2923ac6 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xe292fb9f gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a01578 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xe2b773a1 dev_addr_init +EXPORT_SYMBOL vmlinux 0xe2c4ab51 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe2d092aa of_match_device +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e7471e snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2e8d54a DWC_SPINLOCK_FREE +EXPORT_SYMBOL vmlinux 0xe2eb95c8 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xe2f200bd mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3382524 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xe33dc7dd generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xe341154d d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xe345d4c9 bio_reset +EXPORT_SYMBOL vmlinux 0xe376b791 DWC_SPINUNLOCK_IRQRESTORE +EXPORT_SYMBOL vmlinux 0xe3a79460 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xe3a89bcf sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xe3b7b04e register_framebuffer +EXPORT_SYMBOL vmlinux 0xe3bca4ca dwc_alloc_notification_manager +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3f1f121 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xe412b837 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xe41d5415 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xe42b85da vlan_vid_add +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe446eafb dev_set_group +EXPORT_SYMBOL vmlinux 0xe46f0227 page_put_link +EXPORT_SYMBOL vmlinux 0xe47cb71b register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xe47f2989 input_flush_device +EXPORT_SYMBOL vmlinux 0xe4926048 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xe494ca6e dcache_readdir +EXPORT_SYMBOL vmlinux 0xe496f659 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xe49d9040 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xe4a1aeb0 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xe4ade670 inet_release +EXPORT_SYMBOL vmlinux 0xe4af7743 nand_bch_init +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4c8e48e dquot_enable +EXPORT_SYMBOL vmlinux 0xe4d1406a phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xe4d353e1 fb_pan_display +EXPORT_SYMBOL vmlinux 0xe4dc7cac security_inode_permission +EXPORT_SYMBOL vmlinux 0xe4f73018 skb_put +EXPORT_SYMBOL vmlinux 0xe4fad8df of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xe4fb130f elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xe5040834 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xe505477d nand_scan_ident +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5501618 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xe56166a9 generic_setxattr +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57006de __ip_select_ident +EXPORT_SYMBOL vmlinux 0xe571efc3 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe582f13f get_mem_type +EXPORT_SYMBOL vmlinux 0xe5845431 kernel_listen +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59166dc sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe5a73a44 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xe5ab12b7 simple_write_end +EXPORT_SYMBOL vmlinux 0xe5b5d651 vchi_bulk_queue_transmit +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ca8779 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe63e5100 md_update_sb +EXPORT_SYMBOL vmlinux 0xe6443235 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe6786686 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0xe68a722b blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xe68f21e5 generic_removexattr +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69cf7c4 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xe6a687e6 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xe6cec777 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6efe5de irq_to_desc +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7075b97 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe71e8f2f scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xe7205015 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xe72cb1ef i2c_del_driver +EXPORT_SYMBOL vmlinux 0xe76b11e8 elevator_alloc +EXPORT_SYMBOL vmlinux 0xe76dcd5e disk_stack_limits +EXPORT_SYMBOL vmlinux 0xe789bc71 empty_aops +EXPORT_SYMBOL vmlinux 0xe7944bbc poll_schedule_timeout +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 0xe7b67a9f snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xe7bfcd76 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe7ce806a sk_stream_error +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d8b9a6 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xe7e49361 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xe7e93c83 seq_puts +EXPORT_SYMBOL vmlinux 0xe8051c3b abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xe81fe602 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe825e871 vm_mmap +EXPORT_SYMBOL vmlinux 0xe85151c8 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xe852a02b blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xe86c0d65 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xe86fd641 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xe8773710 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a23e49 tcf_em_register +EXPORT_SYMBOL vmlinux 0xe8a73aaf out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xe8b83490 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8cb2bd6 tc_classify +EXPORT_SYMBOL vmlinux 0xe8e452eb jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xe8e56650 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xe8f60298 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91ee9bf put_tty_driver +EXPORT_SYMBOL vmlinux 0xe93b937b __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe940401b __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe97d5d84 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xe9902189 netdev_crit +EXPORT_SYMBOL vmlinux 0xe9915587 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xe992ad16 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xe997c7e0 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xe9a7fdc4 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xe9be808d lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xe9ccfcd3 ioremap_cache +EXPORT_SYMBOL vmlinux 0xe9d100de i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea1061c5 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1bd913 force_sig +EXPORT_SYMBOL vmlinux 0xea264045 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xea2c807c of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xea3e6d57 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xea52dc81 dwc_cc_ck +EXPORT_SYMBOL vmlinux 0xea580c3d skb_copy_bits +EXPORT_SYMBOL vmlinux 0xea5fe9c5 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7d0275 mdiobus_free +EXPORT_SYMBOL vmlinux 0xea8ca566 DWC_WAITQ_WAIT_TIMEOUT +EXPORT_SYMBOL vmlinux 0xea8de9e3 scsi_print_command +EXPORT_SYMBOL vmlinux 0xea8fb4f9 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xea904799 param_set_invbool +EXPORT_SYMBOL vmlinux 0xeaa67537 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xeacb2372 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xead41172 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xeaf932d1 vfs_readv +EXPORT_SYMBOL vmlinux 0xeb035df5 proc_set_user +EXPORT_SYMBOL vmlinux 0xeb03841b scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb1261df gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xeb31396d blk_recount_segments +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3987a1 register_sound_mixer +EXPORT_SYMBOL vmlinux 0xeb3c362a dentry_open +EXPORT_SYMBOL vmlinux 0xeb3ea153 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb7cccfc blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xeb9bc618 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xebb8510c dwc_cc_if_free +EXPORT_SYMBOL vmlinux 0xebcb9a0b netdev_state_change +EXPORT_SYMBOL vmlinux 0xebccabdd find_lock_entry +EXPORT_SYMBOL vmlinux 0xebda4045 kill_block_super +EXPORT_SYMBOL vmlinux 0xebe36e53 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xebe38c60 kill_pid +EXPORT_SYMBOL vmlinux 0xebf385f8 ip6_xmit +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec0aee6a unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1daa82 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xec41ba3e cdrom_check_events +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec525304 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xec716d25 sk_dst_check +EXPORT_SYMBOL vmlinux 0xec752793 input_register_handler +EXPORT_SYMBOL vmlinux 0xec765867 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xec962541 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xec998b82 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecd9af75 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xece7316c __DWC_WARN +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xed0f5246 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xed103346 vfs_writef +EXPORT_SYMBOL vmlinux 0xed11c2ef mark_page_accessed +EXPORT_SYMBOL vmlinux 0xed2576c0 DWC_TIMER_SCHEDULE +EXPORT_SYMBOL vmlinux 0xed4e457e map_destroy +EXPORT_SYMBOL vmlinux 0xed50c767 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6cbec9 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xed73a96c dev_get_by_index +EXPORT_SYMBOL vmlinux 0xed84543d eth_gro_receive +EXPORT_SYMBOL vmlinux 0xed9ae79f __genl_register_family +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb41241 nobh_writepage +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 0xedd9e223 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xee108f30 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xee134434 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xee206ff3 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xee23b912 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee605969 i2c_use_client +EXPORT_SYMBOL vmlinux 0xee68df61 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +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 0xeeb113fe dcache_dir_close +EXPORT_SYMBOL vmlinux 0xeeb212c3 seq_open_private +EXPORT_SYMBOL vmlinux 0xeeb287fb mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xeeba52f1 dm_io +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeedbc35a flow_cache_fini +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef21f7b6 udp_poll +EXPORT_SYMBOL vmlinux 0xef2c4419 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xef2c4fdd rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xef2fdc4f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xef60d288 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xef7f2cf8 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xef813311 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL vmlinux 0xef980304 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xefbb1b43 tso_count_descs +EXPORT_SYMBOL vmlinux 0xefc61684 nf_reinject +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdcbb06 generic_setlease +EXPORT_SYMBOL vmlinux 0xefdd2345 sg_init_one +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf021baa4 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xf034d409 arp_create +EXPORT_SYMBOL vmlinux 0xf0518f73 tty_register_driver +EXPORT_SYMBOL vmlinux 0xf057a5b2 I_BDEV +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06af2db vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xf0717600 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xf07ce838 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xf081ba5e vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf096cd46 lro_flush_all +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0b48397 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xf0de8700 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xf0e214a4 seq_pad +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f0ea0e bdget +EXPORT_SYMBOL vmlinux 0xf0f71484 snd_register_device +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10f1fb1 vfs_writev +EXPORT_SYMBOL vmlinux 0xf1173868 unload_nls +EXPORT_SYMBOL vmlinux 0xf122986f kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf157955d rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xf193aaaf scsi_device_put +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1a414f6 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xf1aee8cb netif_device_attach +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e35384 dump_emit +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf1edf4aa snd_card_file_add +EXPORT_SYMBOL vmlinux 0xf1f1aad4 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xf1fbb0ee serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xf1fe49b0 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xf200e5b7 cdev_alloc +EXPORT_SYMBOL vmlinux 0xf2094397 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21c43e9 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xf227e770 vchi_service_open +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf251a012 address_space_init_once +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 0xf2af18af datagram_poll +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2e63846 genphy_resume +EXPORT_SYMBOL vmlinux 0xf2eac7fe __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xf2fd19c2 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32babd3 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf3376bd4 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf351c7d6 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3948f43 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3c364ab ilookup +EXPORT_SYMBOL vmlinux 0xf3c93ad1 nf_log_unset +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3ebb086 del_gendisk +EXPORT_SYMBOL vmlinux 0xf4080e55 follow_up +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf415e20e do_truncate +EXPORT_SYMBOL vmlinux 0xf4244d21 bcm_dmaman_remove +EXPORT_SYMBOL vmlinux 0xf4451a32 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xf45fe1f2 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xf46f57bb dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47dc2a6 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xf49dab89 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xf4aa9355 pipe_lock +EXPORT_SYMBOL vmlinux 0xf4b107b6 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xf4b76838 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c665f6 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xf4d354da blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xf4edac50 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f71fc3 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xf532cc26 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf57f2561 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xf5851beb inode_init_always +EXPORT_SYMBOL vmlinux 0xf5ba6aeb __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5dd341b snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5fea73a request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xf629c694 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf63aa7ef twl6040_power +EXPORT_SYMBOL vmlinux 0xf64cac9e tcp_seq_open +EXPORT_SYMBOL vmlinux 0xf6523a20 sock_create +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf6aa3537 kernel_connect +EXPORT_SYMBOL vmlinux 0xf6b426ef tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6ea762c cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf74addaa blkdev_get +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf77c9ca0 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf7895b46 input_release_device +EXPORT_SYMBOL vmlinux 0xf78b72f7 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xf79bc1fe jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xf79e8a72 set_create_files_as +EXPORT_SYMBOL vmlinux 0xf7a05a94 tty_port_init +EXPORT_SYMBOL vmlinux 0xf7aaeddc ida_init +EXPORT_SYMBOL vmlinux 0xf7c36e25 DWC_THREAD_SHOULD_STOP +EXPORT_SYMBOL vmlinux 0xf7d0184e __breadahead +EXPORT_SYMBOL vmlinux 0xf7d45055 drop_super +EXPORT_SYMBOL vmlinux 0xf7d47335 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xf7de5b92 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xf7fe484a security_inode_readlink +EXPORT_SYMBOL vmlinux 0xf80b46f5 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81a5b6c simple_dir_operations +EXPORT_SYMBOL vmlinux 0xf8217404 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf838e9f7 DWC_SPINLOCK_IRQSAVE +EXPORT_SYMBOL vmlinux 0xf83c185d security_path_rmdir +EXPORT_SYMBOL vmlinux 0xf84db58e bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xf88c3301 sg_init_table +EXPORT_SYMBOL vmlinux 0xf89ade62 sock_i_uid +EXPORT_SYMBOL vmlinux 0xf89ccf2d __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xf89efb79 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xf8d7e601 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xf8eb72ee lookup_one_len +EXPORT_SYMBOL vmlinux 0xf907676f icmpv6_send +EXPORT_SYMBOL vmlinux 0xf92fc703 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93500fd inet_put_port +EXPORT_SYMBOL vmlinux 0xf93929a2 bio_add_page +EXPORT_SYMBOL vmlinux 0xf950e283 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xf95cdf2d mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0xf95e4823 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xf976956b kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ad76ba udp_disconnect +EXPORT_SYMBOL vmlinux 0xf9ae5173 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xf9bd5d71 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xf9c00aa9 DWC_ATOUI +EXPORT_SYMBOL vmlinux 0xf9d88abc dump_align +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xfa053ebc blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xfa07619a simple_map_init +EXPORT_SYMBOL vmlinux 0xfa2fcae9 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xfa38ee0b gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xfa512d69 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa919937 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xfa96015e task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xfa99eccf init_net +EXPORT_SYMBOL vmlinux 0xfaba6aad blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac7dadf blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaeea652 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xfb19829b __block_write_begin +EXPORT_SYMBOL vmlinux 0xfb313495 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xfb45052d kern_path_create +EXPORT_SYMBOL vmlinux 0xfb46ec9c alloc_file +EXPORT_SYMBOL vmlinux 0xfb4ddaac phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xfb699f11 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb766d01 iterate_mounts +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaeea3 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbdfd4a9 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xfbe346a2 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0xfbe635a3 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0888f0 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xfc20f3c9 DWC_WAITQ_WAIT +EXPORT_SYMBOL vmlinux 0xfc280498 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xfc29de16 sock_common_getsockopt +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 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc7e0c15 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xfc82d286 free_netdev +EXPORT_SYMBOL vmlinux 0xfc884c41 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL vmlinux 0xfca17c4c sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc57891 simple_dname +EXPORT_SYMBOL vmlinux 0xfcddd6cc set_device_ro +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd055171 d_move +EXPORT_SYMBOL vmlinux 0xfd1aef46 audit_log +EXPORT_SYMBOL vmlinux 0xfd2d52a7 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd33be05 elevator_exit +EXPORT_SYMBOL vmlinux 0xfd4c9c45 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xfd4cb2a9 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xfd50453b scsi_host_get +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd599143 free_buffer_head +EXPORT_SYMBOL vmlinux 0xfd5b1ad7 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xfd8c5afc release_fiq +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfdbcb1c0 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xfdc44459 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe25e66b skb_find_text +EXPORT_SYMBOL vmlinux 0xfe2a5edc input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xfe33c6c3 sg_nents +EXPORT_SYMBOL vmlinux 0xfe48fa38 param_set_long +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe69bc62 vchiq_bulk_receive +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe92f406 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xfe967e4d nf_log_register +EXPORT_SYMBOL vmlinux 0xfea305be skb_queue_purge +EXPORT_SYMBOL vmlinux 0xfeac4ce4 dev_addr_add +EXPORT_SYMBOL vmlinux 0xfeb3a8c2 md_check_no_bitmap +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 0xfee3795b __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xfef67048 md_done_sync +EXPORT_SYMBOL vmlinux 0xff064fee gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xff0b4e0b sk_ns_capable +EXPORT_SYMBOL vmlinux 0xff0e672d bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xff126973 update_region +EXPORT_SYMBOL vmlinux 0xff17c766 param_set_bint +EXPORT_SYMBOL vmlinux 0xff1a193a get_task_io_context +EXPORT_SYMBOL vmlinux 0xff1a1c43 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xff1b1ed9 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff25b008 snd_card_free +EXPORT_SYMBOL vmlinux 0xff34d42b bio_split +EXPORT_SYMBOL vmlinux 0xff3edfb6 seq_open +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff5cbbc8 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xff5dde66 load_nls_default +EXPORT_SYMBOL vmlinux 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL vmlinux 0xff635dd6 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6a930c DWC_TIMER_FREE +EXPORT_SYMBOL vmlinux 0xff7baafa udp_proc_register +EXPORT_SYMBOL vmlinux 0xff8cbb1f idr_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffc17102 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xffcf9356 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdd8b27 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xffee9811 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xfff11a09 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xfff9324a pagecache_write_end +EXPORT_SYMBOL vmlinux 0xfffd3971 dmam_free_coherent +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x8a7bf597 sha1_update_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x94a9ecc3 sha1_finup_arm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x198d2a33 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x3b407a55 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x5a860d94 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x679de256 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x886e2a6c __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x8ec7267a ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbcfeec52 ablk_init_common +EXPORT_SYMBOL_GPL crypto/af_alg 0x09dd7b92 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x1a752577 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x20232919 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x3d925439 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xbfcc0486 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xc955f449 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xd22f20fc af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xe2f3395c af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xe6e86f1d af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xf5036be3 af_alg_register_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 0x90d76756 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xc797112b async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8ee15080 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xa7540160 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x4f6600f8 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x5688df86 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6d6be610 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7da3b808 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb81b2bf6 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe12c0f27 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x156c94b7 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x634a3385 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x27ee48d3 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x350df82c cast5_setkey +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 0x8120166c 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 0x0b8f7941 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x3f60e9f0 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x450e1107 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x45f06a5a cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x58646856 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xa9a15861 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb1349801 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc21f04c4 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe70adc84 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe80ba2d0 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x8ef86e2a 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 0x61c02207 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2780f3b2 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2bac8d14 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x47ce7fce shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6483aaa3 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7ceff637 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8034e9ae mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xafe3ca6d shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xed507d0b 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 0x9e2a9542 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x81021b8e twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x7c90f5e5 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x50f3ebc2 __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 0x00f5e62b bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0de33d61 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x17d79449 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x198d3491 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1c122864 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x24d44d7c bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x405b13d1 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4d46458b bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6925ef8d bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x70a52be8 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x72d1d0fa bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x77a5ae45 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7e91a30a bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x825f4d27 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x90b0cbb5 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaa1cedda bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc9955e95 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe2ebd401 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe9468541 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf996b58a bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x85b5a4da btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x9d13372e btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xb28b7e3a btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xcbbbf2e4 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xdb2e80d4 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xf498426b btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x01f701aa btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf2ece7b8 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3910c0b8 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3dd960c5 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x466e07df btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4f317847 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4fa78529 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7a7e1925 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x91a5e6b1 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9e660134 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbb5f24a0 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbfec4e22 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf4ceaaf3 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x2f4d28e3 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 0x6a84e64b dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x73c09aef dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xb7c0148a dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc17a79ff dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe9b4d45c dw_dma_probe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2715a1c8 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2f209960 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x31797fd6 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x367d2c31 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x593642be edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x68b7de8b edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8f63c2ec edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa36d4b10 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xca27fdc9 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcb94cab6 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf5b5524 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd98ee045 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xeab4a6a8 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf86481f6 edac_device_alloc_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 0x03757bf1 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x233db0ae drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x23f19ca6 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x27f5c349 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2882d85b of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2d120268 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3c8fda9c drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5b504467 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x72d42bbf drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x79fafacf drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x80f99d78 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8107f8a0 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x88a34118 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x98a3adf1 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa7155e4c drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd377b672 drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd4868e7d drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf897ccbd drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf9cee357 drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x68cb456f drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x742b637b 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 0xb5fb642f drm_fbdev_cma_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xcc337fd5 drm_fbdev_cma_restore_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xec4a5261 drm_fb_cma_create +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 0x96950c0c roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x26b4374d roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x82258f22 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x92a5e5e4 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb7eb6bb8 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcf632556 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf1e86348 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 0x2279ccac hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2fcc99e7 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31b31ad4 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x52f5447f hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x693d6fbd hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6dcdf5e9 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7c08816b hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x90b604a5 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x92ebecaa hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x988ec400 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9e6aec62 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa03c0114 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa107db13 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb7f9c88d hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd8cbb5c5 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdc03ba81 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdfaefc6d hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe4f804b8 hsi_release_port +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 0x0d87247f pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x16563836 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x307355bd pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3475944d pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3ee2282f pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x70fac0fc pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8c978536 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9120026e pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x946fe643 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x99d3894b pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbe87404d pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbe8f7c6d pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe8c7a0bf pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfd14b7c8 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfd69d721 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x09a1cddc i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2b88b061 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 0x62892062 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x63717ffc i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7352a2e0 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x74e89cbb i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x77c09fb9 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcddf3af3 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd05912f4 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x0655daf3 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xd86df633 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x1591b67c i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x9aab15cf i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x27426219 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2c5704bf ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x34afad7b ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x38c0850a ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x43585a0a ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6c4f7669 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6fd63baf ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x773f1454 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc61c78fe 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 0x00065ea8 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2fc2a8b4 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5e011691 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x821638ce adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x860e67b2 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x91e1d55f adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc60c54dc adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcdb1b5e5 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd323b714 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf3b7ab46 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfbcd0d4d adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xff50aab6 adis_write_reg +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 0x16fe6f1f iio_buffer_get +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 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 0x33a58a00 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x48a944e5 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x48c0b029 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4c01dc28 devm_iio_device_alloc +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 0x5d9a0c51 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x742e5355 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x749dc515 devm_iio_device_register +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 0x94534549 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xba331ad8 devm_iio_device_free +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 0xcff3dae8 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd7358fcd iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdda460c0 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdec5bab8 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf0091420 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf0b8a68b iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf14c296e iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf46bd1aa iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf7ae1523 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf829e43b iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfe62a7d6 iio_update_demux +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 0x0ac0e631 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5b42b16b cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xc4020c91 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 0x9c415284 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc63c4fb9 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0de3e9ce wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2b933a20 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x36973a39 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3f6980c4 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4d0fa502 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4fec3d4e wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4ff67f0a wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x50b1b858 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x81a5a59c wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x81c89d92 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9477784e wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfb064929 wm97xx_unregister_mach_ops +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 0x13ab9377 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45bb4a01 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4869d15c gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6cb3b1eb gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6fe3a6eb gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x82834dbf gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9309e892 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb540d393 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb92368cf gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc15784c5 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc5363ebc gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd0c2cc9e gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4b7b55d gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd53944c8 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdcc09059 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe151cbeb gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe1f40402 gigaset_freedriver +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 0x04e6f7a6 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dc7a79 dm_cell_release_no_holder +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 0x41b60ea9 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4e6fa4ca 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 0x6c79b507 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6ef7b622 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x80a6bc96 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa657c57e 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 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfeac8bf4 dm_cell_visit_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 0x49f71016 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 0x01beeb36 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3727d07a dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3c00b40f dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9190ad39 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7d83c41 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb29e7b96 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe394efad dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x3657814f dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xbc80b67b 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 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 0x41b88ec0 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x46888597 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x68c9fa8b dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x76b4dbda 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 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 0xc717292e dm_region_hash_create +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 0xe9bc33d2 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 0x42d1207a dm_btree_lookup_next +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 0x4fa7f6b8 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/siano/smsmdtv 0x0fb3a89a sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x13658b88 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x330ace2a sms_board_event +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 0x47549e97 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x67dd1ca1 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6cbf43a9 sms_board_setup +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 0x7ebb92bd smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x94017030 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa4aa3922 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa6e385bc smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xae025e60 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb082efd6 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb1dd6b49 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb729a03d smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc6d3f771 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe16bde63 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf94c2e47 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x59770786 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xca98402c 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 0x23511409 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x2a5ebdf5 xvip_clr_or_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 0x6db00a67 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xa2c6dc34 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xacd59a12 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xae1962ae xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd5b6c92d xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x1f99051a 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 0xce4df296 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xdfc03a40 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x122a1ff9 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1f3396ea ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x26883a31 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2c235d1e rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3242e76a rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4c1e9051 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x53ce3d0b ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x592cbb7b rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6040244a ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7f578522 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x94b2721f rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x94d734cb rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x97b9ca2a ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9e432da8 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb03b8089 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7dfd6af rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc255a9c0 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeea7982c rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf312768e rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xb2e1cc08 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x087789da microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xb64e33d1 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xe7422cc0 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xe12b7723 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xeba47f5f tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x3394c851 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x9ef25ec8 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x5b0038fa tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x5a63b744 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xa6a794e6 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x5c3245c5 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xe3e0e714 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xdbe90c1f simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x11e04591 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1222b1a4 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1c0b1f72 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x216fd5b6 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x239817c5 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2d1003e7 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3d23ccd4 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x47aeab01 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5076319d cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5509d404 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x607bff6c cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x71e325c3 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x720bf80a is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7a38fcc5 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8678f5d1 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x954665fa cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa144745b cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb57db451 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbbdf517c cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf50936c8 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x56ac6b59 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x75e6a632 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x00751f73 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x319772e0 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x372f187f em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3bc7a450 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x407d0a1e em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x53b9378b em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7006fc51 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x740bb51e em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x76964926 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x76c6e040 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8c0a1627 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8e3e80d6 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x941a40d1 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb25caf5c em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xba4bedac em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd0621f6d em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe9e2bed3 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xec107629 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5ff7abd2 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x67d27a2d tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xccedccab tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xff16b253 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 0x1e7c378d v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x599d0f07 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x784faca7 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 0xa18580a6 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xbbbda732 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xea7f0d7a 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 0x1d372d5f v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x9be16214 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x06700db2 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x06c89647 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x259dce16 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x274a0c0a v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3a450bd8 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3aadc922 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5ed708c4 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x69a04adc v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6e361a1e v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x73be6177 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x77ec1aab v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x79192152 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7abd667e v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7b1f540f v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8aff12f0 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x92df4eb3 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9b9b1076 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb417f6cf v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb683b18c v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbf33e166 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc1d9d0ac v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc9e0cef9 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcd4e1dee v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcde32e54 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe28911be v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf5796bf5 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xff157687 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x250da70e videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5e02039c videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f006f30 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x77d221e1 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x920a43b4 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x93f1393d videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9d01e1a9 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xaa2d11fa videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb70f74d8 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb9e9740a videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbcc2f623 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcd574a2a videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd387d82d videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe0d2a360 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe0f7c5b5 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe4cc4c73 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe8bae982 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xebeb9c70 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec26f9d7 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xed454948 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf11d210f videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf1511781 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf534bb9f videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xff0854a7 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x56077a03 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x65858227 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x8586d19b videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x00922cf1 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0f85f843 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x13a378a9 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a421a3d vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1c5d8a54 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x231ef5f2 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x254353b7 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x33c02708 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3604f097 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3d4838ed vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4c962046 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4d78f99b vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5cd93145 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6f31f676 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x82d42acd vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c310767 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x99221cc7 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9a6aa4a0 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9b3c6bdb vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9bb4ad31 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9c390ec8 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9e90434c vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa171230b vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa6f940d0 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb122b6da vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb69bcae4 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbe5c5c09 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc6a4190e vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcb604769 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xce3b69fe vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xceeec9f0 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdd5244dd vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdd8d3cb9 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe0223482 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe10ebe78 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe8bc694d vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xec7d05f0 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf14046b0 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1d14b4b vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xa534495e vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xdd698287 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 0x63eeeb18 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x6ace1651 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 0x6c56b1ac vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x74ff774e vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xa370e814 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xd718bd2f vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x65dbd549 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x04f87360 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1beb8292 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1e48a82c v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x23f634a8 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27521cb2 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x288f6dd8 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3bf126d4 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c6dd6a8 v4l2_device_register +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 0x5b0a00b7 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x660dbc42 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x726ae59f v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x752b409f v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x778a22dc v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7941f8be v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ea28592 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9b10c103 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa25922a7 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa556a88a v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbdb785ea v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcf653660 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xee85472b v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf421b182 v4l2_event_queue_fh +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 0xfe8d8fc1 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x0071481a pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x79393bf2 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xa22471ab pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x4704fa44 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x63bc48a4 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8c84431b da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x9d243429 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xfba42738 da9150_bulk_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 0x8ec3c1ed lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xed8c0734 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xf1be8f13 lm3533_update +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 0x1e7ee595 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x5291e459 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xf54efe49 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 0x0fc6274a pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x17f88b1b pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x40b84d46 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x420f53ae pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4a5639b8 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4daa1fdd pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4fbaf804 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4ff2f4e5 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5717449f pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8402aeee pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc3a06092 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x4b48bfb7 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x8685f4de pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0c06dfd1 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x21e6b54f pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x67e9abe5 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa3145998 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa6dacd0f 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/rpisense-core 0x3b9cfcb1 rpisense_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/rpisense-core 0x431aee5c rpisense_get_dev +EXPORT_SYMBOL_GPL drivers/mfd/rpisense-core 0xb65d3220 rpisense_block_write +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0d7b1f60 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2209a44a rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x252fdb84 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x26b79d58 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2df583eb rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x55578d3c rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6ca5a07b rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7ba98773 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x84d3bb35 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8fc80772 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf5c6a6eb rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfd869418 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfe5ebcc0 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x08bc7754 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0b140b13 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x175f9bee si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2309041b si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2e9b0bdb si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3ab27cda si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b1f4cd8 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x458ef9d8 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x45b5865b si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4c14451e si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x51a9cc4f si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x530924cf si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55e7a93b si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6eb22aea si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84879f87 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8487e0b7 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x856c0746 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9071cd05 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x93881b8d si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9e3202c0 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa7337869 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xac1e0e9d si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbce1e39d si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbfd5bc48 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc9c84440 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcdf5bb40 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xce0b5069 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd2e7dc9e si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd8bbc98e si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdb89b9ab si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe1a2310e si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe7a40d2b si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe991aeb8 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf03f4079 si476x_core_cmd_am_rsq_status +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 0x2e665b78 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x4697ca78 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb6205c7f am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xdf6c9377 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x85882315 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9db42568 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xb1a1cf61 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xf0a8bdc1 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x2ecd6e19 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x3d1e59ef tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x445e3121 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xad7980ec tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x5e94c88f 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 0x230a687a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3aaff25b enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x41605d3a enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x53cc7df3 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7902543e enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9bd77b71 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9f26564c enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xafff18b1 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x39430223 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5cf4fac9 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x611e82c7 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9c1fe71a lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9cda264f lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xaa6f4081 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbe58f1ad lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe994fba5 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 0x1aa0cb2c dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x54f37d6e dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xa2fee40f dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x0fade529 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x3084c0c1 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xcd9ae557 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x33cbe90e cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x4d99a2de cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xbe606d58 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xbed734b2 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x17fa5497 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x50c2141d cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x87b6e158 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x11d46698 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x1cb892f0 brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x26c5e07a brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x56ff2222 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xa3a9fb8b onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x89a520d8 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0105f620 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0b7f19c9 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x20384deb ubi_leb_map +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 0x5b103180 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6d76d97d ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x757916c9 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8878ae5b ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8917df99 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x93f25a85 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9e03d650 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb28676eb ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbe93372a ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd4264365 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdf27bcd3 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x164d4716 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2169fe4f alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x413916e1 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb8effdb2 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd44f3470 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe483a8a1 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x03bd3dca close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3b0924c9 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x56302e51 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x595f1fb4 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x66d6b1f1 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7667388d can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8026e2e4 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8d661bde register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x96d04c56 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x99402251 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb866bb67 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcb20fcc1 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcdae9c91 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcddefdb7 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd3dda668 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xecf32acd alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf18070cc alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfb0e6c40 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x0b9da859 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x99970715 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe313e994 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe98da121 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x26a44978 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3c016502 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb89ee032 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfdf5061b alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x0c5bf4f6 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x64a9e380 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x3e2258bc stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xb9928b03 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xca163e29 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xee162eec stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x1521f215 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x8489770a stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xe47a237f stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x70b1fcb5 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x76c399b5 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc921f51f macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xdbe5fbef macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xb5da87ed macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x4d893220 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3f24f9ef usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x45d2a3e6 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x9be0fe81 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xfc597c36 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2a91a18e cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3092704a cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4c30582f cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x73242469 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8ca3a571 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9d0ef3f3 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xacf64cbd cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc385a3ea cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xcad870bf cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x011d3544 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x63d02c23 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x95369667 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb959e8a6 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc9aeb301 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xea4161ef generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x15fe68eb vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x7ece5025 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xbf67ed35 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xee581187 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x102c5c1d i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1a5275d6 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x331c1bb9 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5c1d4519 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x855a8caa i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x85c89c61 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x87466068 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9d7fb878 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb0541069 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbdf98272 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc3911751 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcda6e82e i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd15d7cb7 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdd27977d i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xebe5ec3b i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xeebf5ec0 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xa5c039fb cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xcbb184ba cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xdef874db cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xe85dc9a2 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0a6eb353 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x17fd4ee2 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x194f352e __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x30ee852b lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3de9de2d lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5323c3be lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6b2f3d99 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7bb296e3 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x82f312a3 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x83987b19 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xaa14fa48 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xabddf6ae lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbf14fdb3 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc437dee4 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xce3689d0 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdf3a8843 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 0x29078bd6 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7342ee01 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x73a6e01a lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xadb89297 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbf1daf95 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 0xe60eec95 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xeaa523ea __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf0abcf9b lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0d8a9d04 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1932dc44 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1a30a092 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x42bcb2f4 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x503dc6c7 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x54389f02 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5e8f3f61 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x64459cbd mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7ae238a6 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x837a1b5b mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa5ee470c mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc14f5f30 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc6c72daa mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd5da6ece mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf3535271 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf47b124d mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf6b25d7d mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3a1c2906 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x661bafa5 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7f6fc28d p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x83494cc5 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa0416165 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xcd14bc37 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd5b829b7 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe04c6512 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xee7cc40e p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x10b72fe7 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x9a7f44fb rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xc7eaea8b rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xedea8b46 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00f234e0 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x05e88b99 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x125e9d2a rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x13c19f4b rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x17bf6596 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24a382cc rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x28d85cd3 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x28e1df19 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x29df7096 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2d627d49 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a122799 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3dcb23ec rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3eac1f40 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x45a52d1f rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4744777d rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4d892d6d rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4e5ba4fa rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4f6a90c9 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5ca06fc0 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5dd1f663 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5deb6219 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f61f020 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x77b1a6e1 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8ad47d11 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x91a1212b rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x964461ef rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x99a89d47 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9c078bf8 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb0098e32 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xba88b293 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbefb0e6e rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd3d9a713 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd565d049 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe3f9afd2 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xefc746ee rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf15ad795 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf7790005 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf8497f3a rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x035e599b rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05c042da rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x07111004 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x120edd54 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x12bbc2e5 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1a6e67ca rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1cf129b7 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ef7c079 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x208b3e34 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2308e3b5 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x283a910c rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3bf7936b rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d924e4a rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e9374fc rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x423243b5 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x465ce8b1 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49200672 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4c28aff2 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4c593054 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e000cf5 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x528737d2 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60ec8765 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x61418fd3 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x61c2a27d rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6244b625 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67d46f0b rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x72768d3e rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x73f724eb rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79b1f5ed rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7da102e5 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x828690f6 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x960cd3f6 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9c402e09 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9ff177d3 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xabcbfa00 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xadbd2bd7 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaed10090 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb06bd34d rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb305f57a rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc403f607 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd2b5afdd rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd31243bb rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe6fdfe29 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe9492b4e rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xef1b3b2e rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfec9757e rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1ca32743 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3c9c3f19 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3dae8acd rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x576a0ba9 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8ce4cba4 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa68b13fc rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xad1c39ad rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb1cfe5d0 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb2f16559 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb6144bca rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdb500a04 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xde2f6d08 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe1f6e8db rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf0f0c9fb rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf57d5e7c rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf58c95ec rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x309bb0c0 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xacdc6f19 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xafa8ea45 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01a83e4f wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0b0009a5 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0ca2c171 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e9b3256 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x127eca9e wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x17cc63b2 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2085a036 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2a939c46 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3218a6f0 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x36a37f8a wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x484ae08d wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4baf0dbf wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x548718f1 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5a6fb543 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5c0b439c wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x60ee6585 wlcore_disable_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 0x7755889e wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7d04e151 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x814ff8a3 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x86579bb7 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8718febc wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x87690db1 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9f909f90 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa8a2473f wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa2d2455 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xacb8ab63 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb1355329 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb8078c1b wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xba0d1f7f wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcb63091a wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce8f5b0e wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd27283a2 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd452da42 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd75b9bde wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd773c623 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdccd8540 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd894fed wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0bec7f9 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe2b79d3c wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea10efc5 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xedf533c1 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xefe72334 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfdf278b6 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x2f3fa4d8 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x52573cf2 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xc1e2b53f nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe25c1fa0 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x157510e6 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x24caaab4 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x53db0b23 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x583e703e st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa49a793a st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa9c377aa st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbcdb8f7d st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xdcb830dc st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x53851ec8 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x949f8890 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe4f0714f pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x27ac1de4 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4a84e914 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x704174b8 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xafbebfa9 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc186c6fe mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1198b4f9 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x47133898 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x80482022 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb3157434 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe4428062 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfb07da16 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xff47c0ee wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x409d6c13 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 0x5f940164 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x626f4d21 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x6a2167bd scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x754b883e scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa18a51d2 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa24f1f4f scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x06226a75 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1db511ef fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x24fa1549 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x275e29ce fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3cfb112b fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3f125440 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4ec6d168 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x56d7fc02 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7230a7c0 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7c036b3f fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe053261d fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe366e116 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe5e0a619 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xea125b1e fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xef47fdc3 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf380c1ae fcoe_validate_vport_create +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 0x0162629c iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0ba61ff0 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0cefa161 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0fa65b6e iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x121edc86 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1dcf589a iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f389478 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2d13c339 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x39b67c70 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42eeb209 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ba9a208 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ff86222 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x52723a01 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x53f01ba3 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d0c6211 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6365ef43 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6b4b978d iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x753a040f iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x79e55cf0 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c28e548 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7ff414fb iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9cc44d77 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8982792 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac8aad32 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacf6eee1 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafb93601 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1f4275d iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb3eede51 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7bddc2e iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7eff806 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbdb68378 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbeef9901 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf913feb iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0939f5b iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc85f4683 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5c638c8 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd900707a iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdb94d5d5 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdecfc2f1 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe0e30cdd iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6e565d5 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff710b9a iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x01c4de17 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x197be52d iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x28fde44d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x33cda11d iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3c1062f1 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3e2f5595 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x42a25237 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4e422946 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5b42816c iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x61de36ca iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6a919f18 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6bcc3d4a iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc7bbec76 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd3c7641e iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe5cacf9d iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xefcb8576 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xff957d76 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x07be66c5 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0d005247 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0f18bc02 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1ad85476 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2686dc41 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x36327c78 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3e484cc6 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5e46d467 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5f7887cc sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64fc20b4 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6a5c2e6e sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x887e695f sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8a6eed15 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x92bb8238 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x94c03aaa sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9b0e3e90 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xad1aae54 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xad98c966 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcd035684 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcd271b3d sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd34561d4 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd37b38ae sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdffbf55b sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfe08feb5 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x036dc490 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0a933787 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ada2a0f iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x107836fd iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18f9d112 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x300adef3 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x30f19893 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x31e7cf5f iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34c9bd3c iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3d530575 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x42aab04f iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x444399e0 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5761ce80 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x60cca6ff iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x62b0056c iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6954522f iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x722c3657 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79886220 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8932bbe9 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a4991c4 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9024b3cc iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9617a61d iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9710067e iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9abc1cd1 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa25a137d iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa4ccbb83 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaf49ad40 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 0xc7aaa1b1 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcbe8765e iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd27ba161 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd56071e2 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd761ddf2 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd8b442d6 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdd24934e iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe2a8f422 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe6161655 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe78fe2cd iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc926e6a iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfde04f19 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfe034232 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x15bdeb51 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1e2611b5 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x30413661 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x72aecd67 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x8dae97b4 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 0x2524d191 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5406192c srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x589d34cb srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xaba29ee6 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc47eabb0 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd2e9b94f srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x128cf009 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x62c4dce3 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x861eb58a ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd857fc92 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x27e19517 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x32e6b7b1 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9bfab896 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc0faa589 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf02931e0 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x33e291fc dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa9a7caf3 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xbc9e3c97 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xecd56dd8 dw_spi_suspend_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 0x0377cbb8 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b997f1a comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x11061d28 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x11c0f3a2 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x29b06198 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2ec7e0b3 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x34b08242 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3940ef1d comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x42d54bbe comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4f4e6bdc comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x540ed6f3 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x54c95edd comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x59142bde comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5aef7512 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5fee0b8f comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6ef4bd33 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7910fea3 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x83977802 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8a27c1b0 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8c923092 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0d3e29f comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa1668044 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa67f4c1e comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb04847f5 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb4d0f103 comedi_auto_unconfig +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 0xc381d3ff comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc3bc334b comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xce931f52 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcebd5a9a comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd143b2e5 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd45e8a11 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd53d0547 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdc1276e6 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe098f2e9 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe170ea1c comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeda9c179 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x5276af68 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x8839c09f comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xae88ed73 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xbb630117 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd838254f comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf6be3bc4 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xa5d558c8 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xe0c6a2d7 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x566c2dd2 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x00836401 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x23829add comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x260ea6d5 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2d85fec3 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x33c066bb comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3fd410c4 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x41d78b0c comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x589f6ae6 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6868a65a comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7eef3e01 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9abc9a61 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbec1f3ec comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xce862307 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x61d4ef6c subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xcd1a52d9 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xfc15e592 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x27eee45e das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x39a40419 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x5654203e labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x725aa792 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8c84415f ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb7f709bd ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb8e9cd63 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbc7ee7df ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc945e010 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd00db7c0 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf112e1e6 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x08d990c3 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0ac87288 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0c11ec75 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x582c0568 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8e425558 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa1a58035 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb88fa319 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x2b04e31b adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a581be1 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x41069af8 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4940fff lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6bfee4d lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa5ce737 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x04db7867 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x13cb148a spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x28a1a0f2 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 0x68a90c9a 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 0x8e700326 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x924fa954 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa4a1e3f6 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb2978dbc speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb3bb41b1 spk_serial_synth_probe +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 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe8d84537 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfae1c1f2 spk_var_show +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x5616800c uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x88547eb0 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xbd70d786 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x290118ea usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x4fd53553 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x091bb6f8 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x224f717d ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x4a1c3842 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x97514ca5 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xaa7a3e9e ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf1dcb4f4 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x2f029d79 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xc93e4efd ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x06d8d41e ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x07d98442 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0b362411 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x41d04d1e usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5411c9e8 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x63c90a01 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa052ccfd usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe7750b52 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf909c774 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 0xc1785a69 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x60f7a3aa usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2bdcc3de usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3015aebe usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x31759ade usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x38b71dad usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x491cb9df usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4cfafb75 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7551b34d usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x76fd1dcd usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7a2c8f32 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x83f89819 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x851fe018 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9818a650 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9cb31b4b usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9fee69cb usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa9c4e965 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xac0a564b usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb555de76 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb65f92a0 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3996562 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf72d0c75 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfc71d177 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0399c95a usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x44728033 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x60d53711 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6b64fbfb usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x97bc17bf usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xaaa2ec93 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb4445971 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 0xda7472b8 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdb646cf7 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xedda8e6a usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf8483fee dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xfc3f46a7 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2736fb26 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x33629cec __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x37f8a0db wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7fd4aad1 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xad051018 rpipe_clear_feature_stalled +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 0xd671827d wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xeaf6b2db wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x004463e2 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x03f8bd3c wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0790ccbd wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x459314fc wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4b261937 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x58abdd44 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5c215583 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6d49e4a3 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8c68396b wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x93e33b18 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa218ae76 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc3e58a53 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xca6cf2ce wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe92fc20a wusbhc_rh_start_port_reset +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 0x108c6b83 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x7167ec63 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xf9faa8b9 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04ddc030 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x119052cb uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x139c51cd uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2030a111 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x20ac64b2 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x245454f8 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x330bae94 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x37446aa2 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c0685a1 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3d321fec uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3e235cef uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4b6644ab uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x52240fb1 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x544f6d08 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e5af5f1 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x64a6ea1e uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x672728d0 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6bf48fce uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x71293ebb uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x766eb3df uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa0d9f882 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa104b9a6 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa72aa000 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb3c7826a uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb4616220 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbcd1a87b uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcadb00f7 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xccb1909f uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd0448208 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd6bd9a3a uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe154390d uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe70faa3f uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe7f5d773 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe892194e uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe9532bd7 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe982686a uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf4c14be7 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0ae91ae7 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x136eec7f ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x47b471c4 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa423bc2a ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbe7c42ee ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdd4348cd ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xea7a6f13 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2e38a17f auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4191910d auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4a615817 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x590ea272 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x78a619ef auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x7985f09b auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb844ae02 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xba5c4e54 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd7110343 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe12360c0 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x1507fbf1 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xc37fcbb3 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 0x59331bcc dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa9d3b8d4 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xbcacdc34 dlm_posix_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 0x028a3a8e nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1f056cb0 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2d2a5aa8 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x957370f1 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa4eb801e nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xeb7f8086 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf6c653f6 lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0464c80a nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x059a32f3 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05a49d85 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05f5d24a nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x063c5889 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06531f03 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x076d22f3 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0921111d nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09ef49b4 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b9c68b5 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10a9a5e6 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1498324a nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x192a024d nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1954318e nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19fddac7 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d4f162d nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2021e7c5 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22467d8f nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2360f6d8 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x291928de nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cade299 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e0bfbf1 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f0e87e8 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f5fa201 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3171bec4 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x319d9d91 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x346e3791 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34da773b nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36929d0c nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39c407be nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c01e67b nfs_zap_acl_cache +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 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40755cbb nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40f9d64f nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41255df0 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43b86776 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4446e4da nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4736a65e nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ab556ec nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c9ef14e nfs_fs_type +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 0x53156a1b nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5443ff01 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x560348b5 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x590606bc nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61954ddc nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62cdb3de nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x634ffb9b nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63df0641 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65449785 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65dd3023 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x664a4fcb nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66b9f316 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66e60806 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x693fc6b3 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b58e415 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d1d7495 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fbe77af nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71449652 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7247b70f nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7270e006 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x740e8876 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7429c299 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7740f8c6 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7809a329 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x793ad88a nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ab3da17 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bb7b259 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x802ff4f2 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87350adb nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8be533d8 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8de860f5 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e26f766 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90877c9f nfs4_fs_type +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 0x921aa9ca get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93e95899 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96960577 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a6bef16 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c493d2e nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9dbb9023 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f673baf nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fa7306b nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1546d8d nfs_alloc_inode +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 0xac00418f nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac6f277d nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad5b87d7 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafcdb148 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2887e48 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb52c92ed nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5375367 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb86c5e19 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8958b1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8b58333 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb91ca000 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba10c8b1 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba7a6e6d nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba9a257c nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbab94ef6 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe2dd0b1 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1ab9850 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1f5c5be nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc307daf2 nfs_free_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 0xc8f9f1ca nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcaa37d78 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb6122b1 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xccce7778 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd02e109a nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd400517c nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd493877e nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6c6cf93 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8171034 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd990da10 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xddf001d3 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde71030d nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde861a85 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1877c08 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1c640ab nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6c14aad nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8ce676a nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeec870ed nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3c4ca9c alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3c9ddd4 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4305c12 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6b0e476 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf996731b nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfad7306e nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfaec156f register_nfs_version +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 0x84f1695d nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0037e81f pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x02c71be0 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x115d1950 nfs4_put_deviceid_node +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 0x1787190b nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20991b31 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23dc30ef nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x26a33fd3 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2cd2e3a1 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3634e32f pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4663f339 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ea8e108 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5855f4b3 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x58b7a1c5 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5945dd1d nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5d0e6d30 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60aa9890 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x62916bf0 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68997274 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x86fbdfee pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e81c6b5 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9730f5d2 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x98643b77 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99d87538 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9bc174fe nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e0d357f pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f6b6f16 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa32ef1af nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa3334070 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa573d1a7 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa5d1f727 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xac32ba77 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0d7fb23 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb496f750 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4e2633e pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5a96581 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6bcbe2d nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6f4eac4 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc0a3baa0 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc185a20a nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc94b9a3e pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb16ec33 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf841815 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd52ff73a pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd54de463 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbc5ea25 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde1dd9be pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde2d4d6c pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe2462bd2 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe665cbfd nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe92492fe nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef2765af nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf0ee7f4a nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4f5bf84 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf63fa66f pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf97f7e8b pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb071b6f pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe5d7c47 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x64210bc5 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xe68200c4 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x2e6047f2 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xd939a72c 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 0x423a8e51 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4573a214 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5714fd7e 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 0x6d656fa6 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x738bee20 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x844ce05c o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x85795702 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 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 0x0aebafcc dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3a6bc389 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4bff5093 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x535a0b30 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6c5a6703 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8758e0a2 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 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 0x49329b7f torture_shuffle_task_register +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 0x58ea14ca _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 0x805c8a28 _torture_stop_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 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 0xbef3b31e lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xc0aa87c7 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x0c86e8cf garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x20acc6b2 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x4b22575b garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x7e10e3fa garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xab550ab7 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xfa0f84d4 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x0a993543 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x23fbde4c mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x4e2272af mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x9b7a6bac mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xabc57682 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xeb42a7c5 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0xa10b2f32 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xdfe6861c stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x98096347 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xd8b16e8a 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 0xb883b694 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x26c16c1d bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x272ff60e l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x58472f6f l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x59e3247c l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x78315723 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7a140011 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x94013fb6 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf5add4f5 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x39118a44 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3cf6fcef br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x55170451 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x83a83efc nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9ce89728 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc4aedbc6 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe4e54a8b br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf5ae502d br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x837b912d nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xfb09c074 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x06106447 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x080d0144 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x081dfc6c dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x087809a0 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x08e70fc7 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0d7d9bfa dccp_rcv_established +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 0x2856dd33 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3ac2e51b dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4491e1a2 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x472015a2 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4d244c6f dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x548253da dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5a7754b7 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5f321ccd dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x626e0508 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x67758817 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x67bfdb86 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x67ef61dc dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fe704c1 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x935c9818 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa5f7adfe dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xae71f339 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb059117c dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0596156 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb5526df8 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb83c0d2b dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc6e95856 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeb93b5e6 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xebb13008 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xef6220be dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf653964b dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf7da1cd3 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x029ee38d dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x05127d16 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x58730723 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x832ff9b7 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb81d344d dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xed41e7b2 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x5e938e8f ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x663f6498 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x9536552e ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xcdf6f785 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x125baea5 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x56717950 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x898c69c0 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x451111d2 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x543aca95 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xbc1a8eb4 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xccb1a02c gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xf6db338e gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0a60a67f inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x34d91f7e inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4e8fd29a inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa4f53ee3 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd7884df7 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe858ec3b inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0ad7cf2e ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1316ca42 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x144b1fc5 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x17ce302e ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3cb96f5e ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5abfbd1a ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x62f84b8c ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x656520d2 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7d9c0070 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x90397477 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x99cec2b5 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd12799ec ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdb1342f3 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe2b2f7a1 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xe72da43e arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x799c31bb 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 0x4e0a6744 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x5419733b nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x6811243d nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x7446f718 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe07b472c nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x383770a5 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 0x2afb6c52 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x460587a8 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x60ca01ef nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf27175ba nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf83983b4 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x8eb6a618 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0f4fcc71 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x2ae7d899 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x37e23360 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x51f1dced tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe74539f3 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x40eaf61a udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x72fe90ed udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xe3c4cc92 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0c531fc1 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x26105b04 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x67185253 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x91458cc0 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xde880558 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xe958805c udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xf3956f55 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xd7055363 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 0x5456faac nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x59b5e823 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x70acb1a9 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x71ac32f3 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xde9fb445 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 0x8029cead nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x04e799e1 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4c845b87 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x846aab48 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xae31397f nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xc8cf4c19 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x57f9c0ce nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3a8f49a0 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4e4a67e0 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7288a6f4 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x72aa1661 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x73b3b07d l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x75fe571e l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x870b0279 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x917a0b6d l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9f22dcaa l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc140d62e l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc5a26bd0 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc96194ad l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd2bf6420 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe13d391e l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf6b3b818 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfbbcb1c9 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x64433394 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0880ff53 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x22ac1946 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x44b90c8d ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x57d41b85 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x69412863 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8c3d9367 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ce06dc0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8e0fa26e ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x91b3ec77 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa167bfd2 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb06de635 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb4efd362 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd3cb6b0a ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd4e6c3db wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xda40d280 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe0220ab5 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 0x0b29bd96 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x23578253 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2c85e11c ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x47a7d318 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x65657fe2 ip_set_get_extensions +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 0x8f049767 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9d2ec026 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb8227bdc ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc081391e ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc9f0eb3b 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 0xcf4cbd03 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd42e15e6 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe5d5fe01 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf56fa916 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf9fecb8d ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfa3a39fd ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x03d08d8d ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0f7a558c ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa31547f8 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc0308cfd register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0281f1ac nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x035c1899 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04da07bf nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07cfd8c0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x095bc12c nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d9ac0c9 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e19a141 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1013e5c9 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x167779ae nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a8eabe9 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d28730b nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1efc764d nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f0e92b8 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2036f1ab nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2b686db3 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d38f03a nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31b419b1 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3404356d nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34ed52af nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a3a5d87 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e37fe61 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40eb8d90 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x43e84ffd nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4964b695 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b0e559d nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b26d9a7 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4cafc97a nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54092871 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5dc6d9a7 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5dd46767 nf_conntrack_register_notifier +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 0x697540ff nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6b9a4968 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d885468 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6db5c7f3 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e097bbc nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fced2b2 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x715b3156 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x763ba5b6 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7849195b nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x788dbcec nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b741c53 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e55acd1 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8096547a nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83f5c8fc nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84650935 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87584f45 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89b7876b nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d04dab3 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f1887b4 nf_conntrack_l4proto_tcp6 +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 0x92966f86 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f2fe47f nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2516965 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa59e7d10 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7de4177 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabddde47 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbca234c3 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd2ee536 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbdfa4299 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf1efceb nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0336090 nf_conntrack_helper_try_module_get +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 0xc39b9a03 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3a2e2f9 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6875b54 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdaef40f6 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbe5a3df nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdfeb05ff nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeaacc990 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xead0c9b5 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb000588 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xecd9d00a nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef3fdbdb nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1323c17 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf3b6af9b nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5dae004 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6cc41e0 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc0d5c7f nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfd83d0f3 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x98ff701d nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xc36606f6 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x014b3ab8 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x13d1e3a5 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x292da659 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2ec0c332 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x40146249 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x49055138 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6566c06c set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x72c1c417 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa7b4722a get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdbc9bf61 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe52ea76d nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xc403fcf6 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0b842234 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x84762b5e nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9e5dc144 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xdd2a29fb nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x0f94689d nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x6471d58a nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x10510862 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x14e69c6e ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x22d68b41 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x37abe429 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x89390eb6 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa0119d2a ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xaf271a1d nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x32a8c1b1 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x54277057 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x021fb2ce nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x03d9cb0a nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xadeb6798 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xc42c9630 nf_log_dump_tcp_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 0x27634cb3 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x65c72954 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x712af247 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8a5b31d3 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9192b45c nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb7d8c7fc nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbebab582 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc26fd754 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe614a748 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x20795694 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xb71a9509 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 0x80daa984 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 0x93bff8af synproxy_parse_options +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 0x1521d817 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x18e19384 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2706967b nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2866be73 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x38ef9efc nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x48cf0d97 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5fcb4ca6 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6a237837 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8161be9c nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x87dce05c nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa7f6822f nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc90c12ff nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd2ce3daf nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd70a1eab nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe04b84c9 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xec7eb93c nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfb5039c2 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x133689ad nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2db5c784 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x55f27a8f nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x58d7e9cb nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5d84a95b nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6df34fd2 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdf6b857f nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x0fe91bc6 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x59e55cb7 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x55153094 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x33b41bf0 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x748b3109 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xfd2256a0 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x0f2f380c nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x17a8ccdb nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x2c55f2d3 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x45f4fbf1 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa9718809 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc4df332a nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x5b1e80e1 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x83a60a8f nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xd7e383cb nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x5824b3fd 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/nft_reject 0xfbb02e62 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3d079d9b xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7014dbd2 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x70eb1aea xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bc4d189 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7df71004 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8cb8f385 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8fcb4455 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x96808039 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa5112f58 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb133f593 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd521a63c xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf7f4a58c xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf8763c47 xt_register_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 0x0bf88864 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x62dbaa66 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xacbb529f nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x2bdc2a46 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x40363893 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x731831f2 nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0413ff8a ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x07475f96 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3d0e6f0f ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x47b33d17 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x869f9c92 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xaa013b09 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc7340bdd 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 0x02aded32 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x05691a92 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x13841b73 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x1f62a74e rds_connect_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 0x39c227f3 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x3d4f1376 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x55540548 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x5c72cd15 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x6f5a5ea3 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x8d5fa988 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xb000b5b6 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xb162d3ca rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb2925922 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc3e0dbb8 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xc642cc2c rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xd8383375 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xd8ec98fb rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xda7da813 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xdb50d3bd rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xe3b1b143 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xedf70b66 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xf11282fe rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf41cfd16 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xfe8e2a38 rds_message_addref +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x1dabc8c6 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe5f22d6a 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 0x03b9194f gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x0be0c731 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 0xf5f98f35 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0069afb2 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x026a00dd rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x029d9e55 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x047b2776 rpcauth_init_credcache +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 0x06649382 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07f63719 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0927bc2c xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09426d8d rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c9b3c78 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d8be466 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e88a3a5 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x100353d3 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1072d882 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13a4615a xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x151b2343 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1596ea0d rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16ee9984 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18047583 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cdbee74 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d1b028d xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d5c26c2 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e36345b rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ea3ab17 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1eb64785 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f6e30cb read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f864e69 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20919843 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21ce8052 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23a15c6d svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23cf11b4 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x244062df rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x257374a9 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2965914f sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29a89ad2 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cb02e3d xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d1f4d43 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d548a33 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dd874d3 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e21963e svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e9a83a1 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8755a9 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30dbcfb7 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31525676 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3243a870 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32de3d9b svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33a8c0ce rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x342ac997 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34c7c547 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x353bc770 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3712ebba rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x377256c6 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x386f4a56 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b8bdca3 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be97fa1 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c4d13f8 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40fb2cdd rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x410be13b rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4243c91d rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43f92507 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44110a19 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x469505d9 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48158913 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4b5329 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4daa71b7 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e498eaa xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f054fe4 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5077f494 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51dda139 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x521472dc rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x564d3b72 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56954176 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x572bac1d xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58821a78 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5932c642 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59ac0372 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a13e212 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a40a902 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5afc6fd5 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5898be rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c152a50 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cfdf8b3 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f78fe71 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6203227b cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x650d834b xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65a16242 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68861a9e rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68b2a159 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ae02dba rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c635884 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dd9c7c6 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fc018c0 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x707f05f5 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7192a829 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x754ef732 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x765a410f sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76a238f3 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ca6ebf rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79513ca4 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cb07148 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cb421b8 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e9eb762 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7efd33a0 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f07c924 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f543068 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f8f4b9d xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84da324b rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86740a7d xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x868ad102 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89a5f1d9 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89c13cac rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ab54b47 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e261cdb rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9045c88d gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9236a29a rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96ee751b rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a5724d5 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a7d3e5d rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a7ecabb rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aa98185 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9daccc14 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dcfd4be xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa080b8fc auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0a2ed8b rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa348c51a svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa74fa114 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa970653b bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e2d45b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab3fcff3 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacbc1ca9 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad6e7248 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae4c3b6e rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf2fed77 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0731638 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb337b5c8 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5405c6a rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb721ba21 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8addf9b rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdff4bf2 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe4cd5f6 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfff6901 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0d76023 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1300859 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc244fecb cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2d30a33 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6aeacc3 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc730f226 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc74aeeb0 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8a7dc92 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca4a0413 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca6fcbd5 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb11de93 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb34b822 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbd274b8 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc1aaeb9 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce5d21da sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcec2785a rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf33a6f3 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf56e73f cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd017ad9d rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd05d96e7 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd24ac7c7 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4130d80 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd514e876 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd78b8306 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9f98ac0 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddc7eb30 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdffa8148 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe04f70f0 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3177ae9 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe48dde65 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5e43b13 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe60749ab rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7be2a5c xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebc2f1c5 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedde1b4e svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedf52fe1 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee0eaa43 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeefb1e02 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef3de2e2 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefaea227 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0045040 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf104b9c3 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf153aa11 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3f5580d svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf42b8d94 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4d0a19c xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa151418 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa8040b5 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfab2d9c6 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc877ee2 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd6444ea write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfedcfb93 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff48a44f svc_authenticate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x06c9377d vsock_remove_bound +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 0x34ddf101 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x39027ece vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x60187e54 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 0x79745e88 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xaece6a73 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb51b08ad vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc863f82d vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd031dc24 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd4d1f012 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe4f279ce __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf7e25e6a vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xff3c4951 vsock_remove_connected +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1d74b585 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x36f22f17 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3920ed5f wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3f28c039 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x42ff6aee wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4aa1e38a wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x55207110 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x94eb6f97 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb7174445 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcfaf8641 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd80094b7 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xea3a806f wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xef9d7400 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7936d160 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd330ba97 cfg80211_vendor_cmd_reply +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 0x47301508 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb4cfe475 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xca8d0566 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd7aabb2f ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x31b2fce2 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x65d8d5f8 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x4b6e78ef 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 0xba6deb73 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x47465cdf cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x5ef5f773 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0ce2fccc cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x32f44c8c cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x5f55dc01 cs42xx8_probe +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 0x524dbfd1 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x9b1d39fd es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x07238bac pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4945feb0 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb418d439 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xe4317828 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x09982c5f sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1e6a33d1 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3305536e sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6911930e sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x791b93ee sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x521d8dc9 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x64d2a2e5 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xca7aea17 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x02d17382 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xd0e2bf8c tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x0da0be95 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x43cafa4f wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x5524bc77 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x7db27499 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x863b4f45 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x9ba4667e wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x3fd2498d wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x750b700c fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x931bd85c fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0fc122e3 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1cb11516 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2eecce35 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x30e22159 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x430236c7 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4d1ede3f line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4f58abf9 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x57828a4d line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7e141882 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x85c892b5 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8829a037 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 0xa232ad6c line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xaa7a29fd line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc85a7425 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xeb068f2b line6_probe +EXPORT_SYMBOL_GPL vmlinux 0x00627251 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x007e07dd mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x00900a75 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x0094099c gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x009f5de8 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x00aa4d45 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x00ad917a __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x00bbf911 hid_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00c84328 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00cc327f gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x00e08122 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00eee07e of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x01002bfa usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x010e185b ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x01160696 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x01443a21 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x01809704 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x018895d5 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x01ada6ec regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f34c5d usbnet_get_link +EXPORT_SYMBOL_GPL vmlinux 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0209478d rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x0210e931 hid_debug_event +EXPORT_SYMBOL_GPL vmlinux 0x0214d322 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x02364ff3 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0247100b of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x024f8af5 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x025f73fb regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x02885547 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x02a072fd devres_add +EXPORT_SYMBOL_GPL vmlinux 0x02c47ee0 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x02db3cfa bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x02ff433d sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x03147494 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0320e5db of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032375b0 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03465cc6 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x03532418 mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x037e88e0 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x038f5937 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03dcdfe0 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0402b493 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x0403da41 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0425c65e i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x0433f732 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x043e8b55 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x044b082c ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0492b102 snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04aa2f1b snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x04b9993a sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0x04ba23d5 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x04bfee60 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x04f624a6 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x05010319 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x0504a6d3 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x051c1003 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x0520a636 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x0538430d mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x05396784 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x05495392 hid_debug +EXPORT_SYMBOL_GPL vmlinux 0x054cb642 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05542702 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x0556382e ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x057cac40 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058c21b5 mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x058f6207 snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0x05b03db1 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x05b9825b snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x05bccd04 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0639bf1a crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x063ec3b2 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0641a571 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x0648e3f2 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x064e3ae2 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x0665c859 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x06824c52 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x06892ec3 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x06937dd5 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x069bd13e fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x06b18309 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x06ba22e9 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x06c2a463 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06e7b65b tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x06fd7c63 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x0701d13c rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x07417c42 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07684a40 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x07685014 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x076c378d replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x07abba77 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b3c30c devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x07b44bf5 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b7a3ad of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x07c414a1 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x07c75a0f mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x07efd1ad of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x0812c6a3 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081c24ac mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x0840c798 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x084769e3 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x086e6742 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x0872b3a2 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x08741414 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL vmlinux 0x08b3fdae of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x08c252ca blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x08ef95e3 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x091973cf lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0926c9e3 snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x0939cd03 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x093d7c18 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094867dd trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0958637c list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x09592b2c ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x096921a6 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x0978bd8a blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x099f9820 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x09c3c538 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a1911e1 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x0a62d23b component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x0a71be8e gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0a7e3833 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x0aa627ef wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0ab0ad1f cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x0ab7b3a7 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x0abdfb8b tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x0aca03a2 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0ada099f bcm_dma_start +EXPORT_SYMBOL_GPL vmlinux 0x0adecbb2 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0ae69fb8 sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x0aec6d00 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b0363d7 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0a6d5e devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x0b2230d1 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x0b2c6838 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b5fae2c inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x0b7f0b92 device_show_int +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 0x0b9e8bc4 usb_stor_CB_reset +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bbfe2b3 power_supply_powers +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 0x0c2f60f4 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x0c598954 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x0c60a39c snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x0c958d57 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x0cb3a857 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc61ba7 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x0ccbd65f fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x0ccf2e92 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x0cdb5ee7 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x0ce0170c snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x0ce2a424 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x0cf98f1e regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d25d78c genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x0d3a6ad3 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x0d421032 usb_create_hcd +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 0x0d58d902 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x0d6df683 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x0d7c97ec snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d7faedf snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x0d9f7449 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ded4a63 hid_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x0deecba3 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x0df5cacf ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x0e3b7e52 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0e472549 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x0e59c7ca device_add +EXPORT_SYMBOL_GPL vmlinux 0x0e7ade6a task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0ea377db unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0ea6761a usbnet_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0x0eb0b35e event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x0ee5e252 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0eff20c6 hid_dump_input +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f38d615 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x0f3be684 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x0f4c9444 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x0f4f585a regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0faf21c4 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x0fba1027 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x0fbf0615 ipv6_stub +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 0x0fecab24 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x0feeb556 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x10025884 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101b05e8 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x10344d05 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x103b4fbd ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x106422bc rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x1073f2d6 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x10aeb2bf class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x10b5d37f ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x10bdadc1 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x10c00130 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL vmlinux 0x10c4b454 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x10f83b2c tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x11025677 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1118b8a4 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x112e9866 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x11430b0a usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x11480427 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x115c6eed inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x11611ba6 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117494d1 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x11765da9 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x1192c7f8 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x11aa468b inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x11b49b32 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x11b7b73b inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x11ba58e9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x11c03dd1 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x11d1dd16 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11ddb230 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x11de1be8 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x11e62e07 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x11e74421 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x11f0c90f ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1200a9a5 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1227896c pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x12318e31 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x124e41ec usb_stor_resume +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125d89cb usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1275393e scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x128559fa dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12ceb0a9 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x12d04a53 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x12dea77a sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x12f0aa05 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x130162b3 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x13158ab4 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132f674d crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x135124d7 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1373a10c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x137b2614 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x1381586d gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x1399a050 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x139e06d8 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x13acd54a spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x13b49f01 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13bf7c01 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x13cee3ff __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x13ff66ff crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x140af3a3 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x144ddf15 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x1455ff2c class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x145a891b get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x14766de5 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x14866b62 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x148847d7 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x14a41649 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x14caca23 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x14e4d571 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x150c9fba of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x15184161 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1521dd95 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x152314b2 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x153d8ed2 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x15511f0c pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x1554991a vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x1558fd17 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158fc81f inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x15baa652 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x161b55a7 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x1648a70c devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166d377a cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x168aae99 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x16907eac usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x16bb970a dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x16c67ce9 snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0x16d28152 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x16e1d452 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x16e82334 component_add +EXPORT_SYMBOL_GPL vmlinux 0x16e99373 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x171b24e7 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x17283a60 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0x172a4b6a ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x173c2d25 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17cc988b class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x17edf91c dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x180e8843 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x1815eeab sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x1833d113 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x18404692 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x1863a6f5 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x186580b1 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1870672c regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1891880e scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x18df652e vc_sm_int_handle +EXPORT_SYMBOL_GPL vmlinux 0x1919eb47 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x192441c6 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x19318fe8 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x19381e4f regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1962a494 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x1987e329 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1999ef69 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a441b3 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x19ae6274 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c15418 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x19caf843 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x19cb700f pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x19cdc3cb device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x1a056a10 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x1a08a835 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a28cd8e ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x1a34ac67 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x1a403aad wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1a45c32e device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x1a63fec5 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x1a6a5210 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x1a76408b snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x1a8717e9 vc_sm_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a988fc7 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x1a9b010a snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x1ab1f2d1 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x1ac3af1e pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae2468e i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1b2749e4 snd_soc_dapm_get_pin_status +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 0x1b54a94a fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1b6c2d05 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x1b744c94 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x1b84f332 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b976f17 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +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 0x1bd03b28 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x1bd5ca1a sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x1becf945 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x1c1b3233 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x1c227854 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x1c297494 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1c298df2 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1c2ef16e tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x1c42892b bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x1c45acbf unregister_kretprobes +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 0x1c7badff set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c985377 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1cacad42 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x1d2bd08c crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x1d438823 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d488337 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x1d4cfa43 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d4d08e0 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1d4e7023 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d746657 snd_soc_dapm_force_enable_pin_unlocked +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 0x1df5bcbe wakeup_source_create +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 0x1e2e799e snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0x1e599bda ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e70496f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e90f414 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x1eb51262 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebc0b97 sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0x1efe2aac regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa4b760 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x1fa7a53a thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1fcaf754 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1ff6c8b8 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1ff9be36 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x20308e76 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x204f3e9e tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x2054e8bc md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x2065909f kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x206aedd0 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x206fbf37 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2070d8f7 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x2077ae82 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20c676a0 hidinput_find_field +EXPORT_SYMBOL_GPL vmlinux 0x20f3630b sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x21385b6e ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x216b9ecb da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x2179d800 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x2187ff86 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21bd29e6 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x21c966eb fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x21ec8b0a mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x21febf58 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x221e6e2d register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x22298aae of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x223acf9b ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x223f7a9e regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x2248a283 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x224ad65b perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x226e3702 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x22858a8d request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x228f342f disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x22919aa9 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22974c9f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x229e3483 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x22a92c5d fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x22b8e59a hid_alloc_report_buf +EXPORT_SYMBOL_GPL vmlinux 0x22c7d7bb anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2304da79 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x2327a7c5 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x233aebb0 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL vmlinux 0x233eefc3 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x235ea717 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x236affea bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2371f956 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x239fc597 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x23b7b70d of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x23c868e1 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x23ca69a8 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x23e57f84 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x23fdc8dd ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24355686 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2448c649 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x2464e98d crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2473490b blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x2474b871 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2485b70e extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b320c2 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x24b4731f usbnet_tx_timeout +EXPORT_SYMBOL_GPL vmlinux 0x24c996ee mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f9ccc0 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x2545ad74 hid_report_raw_event +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2560a5e2 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x2569b6b1 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25a5de2d split_page +EXPORT_SYMBOL_GPL vmlinux 0x25e6872f pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x25fbc981 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x260751dd sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b3a351 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c82e76 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26ca320d task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x26e02ba4 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x26e4981a irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x271c96a9 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x272b3e0a usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2752bf9d mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x277501fa devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x277835d7 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27897349 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x278dc1cd apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x27b87ffa sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x27bc21a4 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x27c8c3ce fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x27dac253 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x27e5eefc fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2815f495 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x281d5bdf snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x284e9ffb __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x286e94cd pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x2877f3d6 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x2890eae8 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x28bde47d rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x28be444c gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x28ef0a7f ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x29019c18 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x290e18cf ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x29493c3d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x294cbea5 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x2953430c module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x295e62a8 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x295ec84a wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x296339f3 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x29692928 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x29700e9e posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x297f3d98 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x297f880e device_register +EXPORT_SYMBOL_GPL vmlinux 0x2980a0bc snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x29820434 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x299046c9 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x29b5b022 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0x29b63df0 hid_dump_device +EXPORT_SYMBOL_GPL vmlinux 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x29fc102a crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a7444c9 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x2aaa321b crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2aabf3b9 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2aae43f7 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x2ad066b1 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2ae34b4b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2ae63dd2 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x2afa3413 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x2b240b18 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x2b2aa3b4 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x2b4b9706 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2b66a3b7 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bca0104 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x2bf5eb6f ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0x2c0794ab devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c460093 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x2c4dfcda flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x2c50ddf1 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c70eeaf hid_destroy_device +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 0x2cada928 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x2cb9645e perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x2cb99039 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x2cbd50fa regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2cc78e72 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x2cca9aa4 ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x2ce257a3 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cecb407 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x2cf9470d __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x2d11b848 usb_stor_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2d196427 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d31f985 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0x2d3f36ab sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5bc5d3 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x2d8a9057 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x2da12c28 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x2dad9b05 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x2db9745a da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2dcb4a0e scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2dd382e6 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x2de10dfa input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x2de55102 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x2e0cd877 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x2e20cc03 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e498465 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x2e61b9ef platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x2e6270aa otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x2e742b00 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x2e7b9469 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x2e7e970d led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x2e88f22f tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x2e890e2e pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x2e8c66ab aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e9e7e30 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x2eabb81b do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ecc5936 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x2ed0f665 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x2ed7b565 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2efcd63e console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f499343 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x2f5593ff rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x2f593f00 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x2f8e0a35 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2f944c74 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x2f9820b2 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x2f9a7b8e skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x2fad5139 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x2fc0d8ef rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x2fc7b541 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdc3957 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x2fe18388 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2ff8db44 snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0x2fffd960 usbnet_write_cmd +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x302add0c regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3043113a alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x304436c0 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x3055a540 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x30628693 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x3068e5d4 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x307c5423 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x308c79c3 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30df483a driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x30fe43f6 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3145924f snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x315b44bc usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x31b88589 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31cb20df snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x31d7dddc serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x32002100 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x3211d7e0 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x32290419 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x3242bbe2 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x32534b37 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x3258a0fd blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32a85a69 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32c3a63f __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32cc2048 hid_check_keys_pressed +EXPORT_SYMBOL_GPL vmlinux 0x32d061aa sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x32db8bad of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x32dc33ac regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x32e7b028 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x3303726c __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x330576a9 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x3305d7e8 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x331d798c mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x33286df7 dma_buf_unmap_attachment +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 0x337af6c7 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x338900c7 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x33b94473 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x33e2e501 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x33ef2595 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x33f53f63 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x3401c64b tpm2_shutdown +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 0x3443c91c ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3481d3d7 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x34a1b7eb regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x34a45968 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x34a48b22 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x34a9b966 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x34abad15 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x34ae7d47 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0x34c19ac0 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x34c437c0 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x34fa550f dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x35068c70 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352cab85 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x353f2326 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x3559b354 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x355b7567 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x355c75fc hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x35717aa9 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x3571c381 find_module +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a3d9da dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x35b61e4f regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x35bce606 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x35bf5529 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x35bf6884 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x35d15c7d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35e2b38e sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x35ec8061 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x36052d64 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3617b22c sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x361f0897 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x36401eeb bcm_dma_chan_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3645a861 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x3683afee __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3691c54c snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0f6e4 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x36a31f99 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x36aaab69 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x36b1487e dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c74016 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36eae7c9 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x36f4b283 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x36f8d487 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x36f902e6 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3700bb40 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x3714767e devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x371f2d18 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37408ff0 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x37419899 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3778152f subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x37886af1 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x37d21a96 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x3820afb4 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x382aef34 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x384b2c15 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x386b6a44 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x38776b31 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x389c836f bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38bfc691 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x38c5eee5 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x38cdd12f devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x38d1b269 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38d30ee9 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x38d550f7 rpi_firmware_property_list +EXPORT_SYMBOL_GPL vmlinux 0x38da5062 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38e996d8 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x38fd8e42 hidraw_connect +EXPORT_SYMBOL_GPL vmlinux 0x3909eea5 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0x3915ad61 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x3968b32b gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x39763ca0 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x3977a857 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0x397e32ce ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x398fd8a9 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x399f3b26 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x39ae6c28 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x39af2997 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39ca4d7e tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a136799 tcp_twsk_destructor +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 0x3a522758 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3a53566e reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a83667d spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x3a87bfc4 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa0d704 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x3aa71eea usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3ab324b0 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x3ab9c049 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ae49d1c crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3b02395b input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x3b085e81 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b0ccf00 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b226de1 pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x3b40a227 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3bb2233a snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0x3bb44390 usbnet_get_msglevel +EXPORT_SYMBOL_GPL vmlinux 0x3bb99e88 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x3bbd8f82 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x3bcb3ed1 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x3be52784 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x3c0d89fc mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x3c32cbe6 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x3c3d20f4 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0x3c4a5811 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3c9abbc2 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cae9ce9 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x3cc514eb skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd17633 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x3d0ec501 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d757648 unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x3d8ae09b ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x3d9541a9 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x3daeb780 cpuidle_unregister +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 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de785b2 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df2aab0 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x3e3485dc __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e410620 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3e4bf2e6 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e6a6358 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7c95c4 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x3e8912c1 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x3e95f581 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3eb627f6 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3eb758c0 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x3ed72fb6 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f3a191a set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x3f40f2ba __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x3f82e4c9 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x3f9ba2a7 snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0x3fb386e3 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fcf8bc3 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x3fe12cbd __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x3fe2eb6f need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x3fe8e5c7 hid_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0x4005c476 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x40149d14 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x402a7bd9 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x40309d4a device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4044dbe3 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404fc859 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x4052d3f5 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4053a63e snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0x4056d9e8 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40740331 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x40abfa54 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c24ae4 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d6f3c7 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x40f06283 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f142e0 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x414172f5 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x4145ad0c usb_stor_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x4165e562 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x416870c0 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x416e2ef2 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x4177d905 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418dc42b fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x41c893f7 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x41ce52a3 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x41fb9363 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x421f7a14 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x4227ba59 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x4268cdb9 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42883e69 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x42897c09 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x42998f8b relay_open +EXPORT_SYMBOL_GPL vmlinux 0x42a032c5 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x42a17b5d sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0x42b4fc10 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x42fbd036 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x430989ee mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x4338b240 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x433ce6f4 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4340998d devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x43445cc4 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4354105e fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x4388f456 i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43d29758 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x43d3be80 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x440c6965 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44586050 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x446e8857 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4483c231 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449ceb48 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x44b8cd92 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44d20ae4 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x44e73e17 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x44e7fe2f skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x44f22e3d component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x44f50816 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x44fc0624 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x4516918f ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x451caa9f snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x4520c7f3 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45836801 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x4587aaf7 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d004a7 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x45d625f1 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x45eeff6c scsi_bus_type +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 0x46110453 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x4615a586 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46557bd7 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x465afc79 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46734569 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x4674a6ad md_allow_write +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 0x46ab2477 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x46ac7306 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x46aed462 snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0x46b130fe inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x46bca474 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x46f656a1 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x46fe58a9 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x4702b887 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x470cb922 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x4713fb30 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477c8fb8 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47960b6a arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x479ccdc7 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x479d446c tpm_get_timeouts +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 0x47ec7e82 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x47eec842 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x48046dd9 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x48403b79 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4841b715 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x488063a4 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x48992cb5 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x48b4ef2d devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x48cb66d4 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x48d69364 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL vmlinux 0x4925d916 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x493b0e81 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x49474e8e usb_stor_host_template_init +EXPORT_SYMBOL_GPL vmlinux 0x494a3812 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL vmlinux 0x494ccdd6 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x49514f9b regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x49517afb hid_validate_values +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 0x49aad156 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x49cbe5df tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49fa3a70 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x4a3f3a58 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x4a5ea4f5 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x4a63e640 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x4a63f3b2 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4a698ff4 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x4a6cdfdf raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x4aabe709 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4abe9090 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0x4adb8262 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4b6d234a __hid_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4b8459d1 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x4b95ca44 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4ba41dbf crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x4bdd7cb0 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4bec7f2b register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x4bf8b4ef skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x4c0640d1 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x4c1e741c get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x4c2f434f cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x4c4173dc device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c5294be debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c6799c3 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4c7591b0 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x4c991536 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x4cd180ab scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x4ce19a68 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x4cee2ec8 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x4cf66cbe devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d044ec7 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4d0aadd9 hid_set_field +EXPORT_SYMBOL_GPL vmlinux 0x4d564bfa devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x4d60d23b usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x4d81acc4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4d8da90e usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x4da54b05 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x4da99762 hid_dump_report +EXPORT_SYMBOL_GPL vmlinux 0x4db9c350 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x4dbbedce regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x4dc83a77 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x4dd41683 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e14fea9 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x4e186f0d regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4e1c7c03 mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e5534cf snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0x4ed36958 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef6bc50 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f33d30d fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x4f52fdc4 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f88596e regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x4f88d80d regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fa7236b regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x4fb72a7a mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4fbb3e29 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x4fc63117 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fdefe40 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x504e99ae ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x506b9258 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x5072934e of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x507779e7 crypto_unregister_algs +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 0x5096e78b kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x5097620e register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x50b439e5 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f9aeda pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x512903ef snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x5148a238 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x515e101f mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x51839da9 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x51b56571 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x51c2ca9b snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x51c9c626 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x51eb4113 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x521c549d snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +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 0x5277e751 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x527b0bfa snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x52a1d5a7 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52cfd470 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x52faaab0 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x52fbb140 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x5302ebbf usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x53064b52 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x5323abc2 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x532543f6 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x532caea3 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x53428f33 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535d0812 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536e0aaa devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x538ef50b task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x539eddd5 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x53b28cb1 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x53b57166 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x53de9b48 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x5404d5fd rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x5412f01c usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x541433c2 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x542fbd38 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x54311a54 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x5445edc0 dm_disk +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 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a73a24 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x54bc47f1 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54d7fef9 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x54e60b47 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x54f0fa88 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x551852d4 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x552f7cfb sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5544be49 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x556aa6b8 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55783301 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55c7df14 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f04c21 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x55f8ea3d md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x55fd677c led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5605df1a show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x5605e2d8 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x56101580 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56299d31 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x562e932f ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56557a0d vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x565607db sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5675e096 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x569a5fd4 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x56b36399 snd_soc_register_codec +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 0x56db6b49 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x56e192c0 platform_get_irq_byname +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 0x56ed6eb5 input_class +EXPORT_SYMBOL_GPL vmlinux 0x56f7af83 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5707556e snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x574d3a6b rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5767cba2 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x576fe27a irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x57934207 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x57969495 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b7583d of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57e7e10f sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x58063ede srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x580ecb57 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x58273a53 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x5841c446 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b8fced usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL vmlinux 0x58b9ffc6 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x58cb8eb8 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x58d4fee5 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x58e1e248 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x58ff9e41 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x59084baf __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x590aed66 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x591b57c6 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5923f883 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x592f9bb3 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x593600e9 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x59380bdd mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x593f58f4 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x596b203a usbnet_get_drvinfo +EXPORT_SYMBOL_GPL vmlinux 0x596f3d44 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x599d0cb6 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x59a724c3 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x59dc339d ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59ea79b9 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ff9ba0 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x5a044db0 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x5a2309d8 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x5a42da7a usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x5a48f5db inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5aa6ad06 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5abbf4f7 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0x5adf0083 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x5adfe8f3 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x5ae88778 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x5af732c6 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x5af8ecfa snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0x5b0ef8bd pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x5b11289a snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +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 0x5b78cd0e regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x5b932f33 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5b9a4baf bsg_setup_queue +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 0x5c0fd3b4 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x5c1c8b3b dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x5c4ea824 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5aee79 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0x5c6b08fb snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0x5c70c6f0 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x5c718121 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5c780636 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc3c7ed snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5ce1bc13 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x5cf228d4 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x5cf60a1c ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5cfd2ca3 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d153a7a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x5d253faf rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5d4322e3 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x5d4c0adb __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x5d7c13f9 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x5da027cb usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dcc5ef5 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x5df7579e regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x5e12a053 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5e17c606 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x5e2006a4 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e3c3ad9 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5c6474 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x5e6bb9d8 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x5e76f8a5 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5e7aa1c5 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x5e99ee90 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x5eae1d69 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x5eda6263 user_update +EXPORT_SYMBOL_GPL vmlinux 0x5f1932b1 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x5f1d7d4c xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x5f541280 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x5f85c217 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x5f8b6c06 hidraw_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x5fcab64e of_css +EXPORT_SYMBOL_GPL vmlinux 0x5fd6b951 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x600bfef9 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x601ab55c vc_sm_alloc +EXPORT_SYMBOL_GPL vmlinux 0x602c5896 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60641edd usb_stor_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x607f18e2 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x60983470 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60d9c227 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x60e14fda usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x61179f10 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x6127c017 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x613d3dc5 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x614482e3 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x61464a78 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x618b9829 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x6192a407 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x619f958b security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x61b635e9 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x61b9588e pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x61c7f1b9 sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0x61cacbcb sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x61dd3dfe dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x61f8673a snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x620687eb sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x6207a9da sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x620d2e13 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x621fe132 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6259c730 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x62757093 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x62af12b1 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x62b99589 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x62dd938a hidinput_calc_abs_res +EXPORT_SYMBOL_GPL vmlinux 0x63032589 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x631474e1 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63175674 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x63724828 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63770d3d get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x637c02fb serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x6395130f vc_mem_get_current_size +EXPORT_SYMBOL_GPL vmlinux 0x6398cde2 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x63bf3ac9 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63d1efce regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x63f1fe73 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x63facb95 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x6400edde fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x640f7a61 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64145570 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x6469957f ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x6469a996 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x6472e52e wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x647732ea of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x6483c9d9 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x64b199be sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x64b3b7f2 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x64cebe76 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x64ffffed snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0x650951ce of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x65152bb6 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x652e0973 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x6536c987 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL vmlinux 0x65409b9b regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x6566c4d4 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x65850c7a snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c5a829 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e53d3d fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65eb157a pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x65ffe139 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x66003ecf put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6646fe8c serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x666508ad fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x6670c99a __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66a04006 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL vmlinux 0x66afe828 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66cc5b92 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x66cdd753 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6708471d ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x6728bda8 usb_enable_lpm +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 0x6784d258 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67afc284 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x67c02f67 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x67db4c17 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x6829ced1 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68519638 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x689a8a17 snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x689dc636 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x68bbf07c ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x68c37968 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x68c79937 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6927b3b4 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x692b6d0d skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x6934cea1 ata_dummy_port_info +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 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69810281 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69d88dcc gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x69e23385 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x69fa1227 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x69fdde73 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x6a15dc34 usbnet_resume_rx +EXPORT_SYMBOL_GPL vmlinux 0x6a275267 dev_pm_opp_disable +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 0x6a66f2d7 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x6a942cf6 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x6b00bc36 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x6b09f4ac regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x6b2777f5 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b4050ca usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6b426316 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b7c4e14 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ba259c6 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x6bc683c6 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x6be05d52 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x6bed34d8 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c27b259 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c2e4547 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x6c37236f relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c9b835f perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x6c9be7cc blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +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 0x6cd376ef pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x6cd45233 component_del +EXPORT_SYMBOL_GPL vmlinux 0x6cd6e8a7 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x6d2cf2ce transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3644bc dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x6d3eb839 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x6d424356 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x6d442bae mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6d89f86f vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x6d8ecf32 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x6daf2ee1 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6db79ebe tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x6db9de35 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x6dd86883 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e2cf598 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6e32911c crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e528a66 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x6e54e54f irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6e860daf inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8eef1f get_device +EXPORT_SYMBOL_GPL vmlinux 0x6eae26f9 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x6eb49631 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x6ed522fe debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6edc6602 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x6f0b112a adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2f0d5c crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6f3104e2 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6f512599 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6f72ad09 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x6f7914c5 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x6f7d43b5 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x6f9150d8 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x6fa6947a ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x6fa9179d usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x6fbaa5b6 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fd08832 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x6fd3807e dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x6fd9166f dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffe7add __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7012c549 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x7016cdca device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x7044c62c fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x7055d558 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x70660467 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7095823c da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x70a71d98 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x70b14ec2 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e83058 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x70f1d560 usb_register_driver +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 0x7112c4a3 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x7113a043 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x713fc852 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x714f3fad __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7179b9f8 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x718e6156 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71d3fb5b dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71ecf535 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x71f61856 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x720781c5 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x72386c53 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x724e75fb snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x7263617d __blkg_prfill_u64 +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 0x729b3489 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x729ce6c3 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0x72a550e1 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x72b46d5c usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x72cac91b thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x72d7d5a9 uart_handle_dcd_change +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 0x733c0564 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x733ef1f8 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7360dcbb arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x7360e33d vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x736abd29 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x736abfc7 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x737cd505 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7387c97c usbnet_resume +EXPORT_SYMBOL_GPL vmlinux 0x7395f805 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a5a65b rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x73a678a2 pwm_config +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 0x73e838fc gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x73ee7510 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x74059191 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x741c9f02 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x746237b1 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x747dfd66 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749a3061 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x749a35fa crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74ef0d4f sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x75080110 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75284ddc regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x75519def ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x757b49e4 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x757dd212 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x7598d7c3 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x75b4960a ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75ce7e85 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x75d78610 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x75fe11cd thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x760bdbfb inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x761a21bf snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x7622ae3b __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x76591d2c user_read +EXPORT_SYMBOL_GPL vmlinux 0x767c8161 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76925d24 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x76a7e313 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x76bd3278 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x76c6745c anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76de77c4 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x76ecebd5 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x76f5e080 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x76f694db dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x771b2785 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x77290ddf rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774061be snd_soc_dpcm_can_be_params +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 0x7765fbf1 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x77b557d0 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x77f85b07 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x781de709 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x78446296 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x784fb4d2 disk_map_sector_rcu +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 0x78d5005b blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x78e8f1d0 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x78f2258b ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x78fb8119 usbnet_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7913741d __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x7926b3fe ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x792ceb78 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79492bdd device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794d3be6 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7988a1a4 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7991096c platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x79b24198 usbnet_get_settings +EXPORT_SYMBOL_GPL vmlinux 0x79dc6016 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a1f6d21 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x7a26df16 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a2eccd9 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a66efe3 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x7a8b79c1 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa8c19d system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x7ab2f1c3 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x7ab36272 hid_register_report +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7abc5c98 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x7b0eaf63 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1b57d1 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b40a751 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x7b712486 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x7b9fa4b9 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7ba7639d inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x7bb1398d modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x7be27c40 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c38005b skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x7c4b46e2 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x7c559ef8 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7c678f82 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c6db791 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x7c73370f ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x7c91fb5a tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9cca56 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x7ccc4d3e snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce23235 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d361be0 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5a880b pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x7d678224 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x7d8e69e4 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x7d9b0f80 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db0d3ee ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x7dbc1dbe wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de05484 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x7df67a48 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x7e128f0f usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x7e1a7cbc dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x7e4d4f22 max_gen_clk_remove +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 0x7e784558 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7e9d2231 usb_stor_probe1 +EXPORT_SYMBOL_GPL vmlinux 0x7eaa242f platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x7ead4fe4 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7f1ed844 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x7f226311 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f2aea04 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7f6917ed of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x7f694fba snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x7fbb5711 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x7fcef3a0 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x7fff25d7 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x80074f3f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x801019cf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x802143f3 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x802f068f register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x80495918 hidraw_report_event +EXPORT_SYMBOL_GPL vmlinux 0x80648aca snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x807213ec wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x8085e4b9 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80aa0ddd usb_stor_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80eeefa2 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x80f199a2 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x80fa77d1 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x81099ab2 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8122ac00 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x81808c8c devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x8184daad of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x81bc288b ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x81dfefd1 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0x81ef1fb2 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8232e597 dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0x826770e3 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x826e1f89 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x8275c964 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x828d6db6 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82abc62b dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x82b285fa srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x82b383fa sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x82c1b325 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x82c8453d wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dd6e42 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x82f94e2b posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x833279cf sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8349e71d device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x834fdb6b crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x8354b04d usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x83750d3b devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x83813081 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x8387b864 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83ae10d8 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x83c86c69 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x83cd0c3e dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x83f00e0a pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x83f73cec ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0x83ffc35d tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x840d2d33 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x84142a24 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x844b0a37 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x8451fcdb gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8463b5f9 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x8468980b tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x848bd0fb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x84a4c602 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x84bd24bb ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x84bdc280 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x84c192cc nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x84c385eb shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x84d24f00 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x84d5c580 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x84ffbf7e __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x851b4f49 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x85215b12 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85269c6b crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x853b2277 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x854549a7 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x85562bc0 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x855a50f1 i2c_generic_scl_recovery +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 0x85c881f9 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x85e7dd4e unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x862658eb ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x86389c82 bcm_dma_chan_free +EXPORT_SYMBOL_GPL vmlinux 0x86566062 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x865682e7 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8688ffa6 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x86993626 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87056051 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x8717c756 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87762e3a shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x879f404d usbnet_defer_kevent +EXPORT_SYMBOL_GPL vmlinux 0x87c6a318 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x87cb5c69 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x87d3e9b2 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x87d78950 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x87d7e735 find_pid_ns +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 0x884467f6 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x88482033 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x88493e2e cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x884cc4b4 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x8872e4b5 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x88921930 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x88923054 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x88a85831 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x88a9b430 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b2ce8c sdhci_pltfm_register +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 0x88c988a4 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0x88cbe7b7 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x88d835e1 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x88de4f8d transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x893cd3b5 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x896afe4e snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x897803c2 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x898b734b proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x898d6728 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x89946fc4 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x89a3ef4b tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x89a54791 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89cd170a blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x89dbeb5c nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x8a2bebbe subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x8a4079db scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a83c2a0 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x8a8b4224 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x8a8e01c0 put_device +EXPORT_SYMBOL_GPL vmlinux 0x8a9ef419 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x8aaf6030 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8adff8b2 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x8ae33f73 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8afc4278 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b366506 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8b56530f inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x8b719c92 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x8b7358f1 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b7e0cc5 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x8b833068 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x8ba832c3 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bcae22d __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x8bde0395 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8be29802 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8beb7cc9 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x8bf8eaec ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x8bfd8e9e gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c3926d7 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8c43a8c0 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x8c5fd700 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c65ce6a regulator_disable_deferred +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 0x8cc12f9d crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8ce16e1e max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x8ceee644 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d133d16 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x8d4d17a9 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x8d932c12 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x8dc0bdb5 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8dd7c282 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8df7c56b use_mm +EXPORT_SYMBOL_GPL vmlinux 0x8e17a3d6 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x8e1871a1 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2fbd1b pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8e940c6e tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x8eca2575 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x8ef44489 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x8ef55650 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x8ef8c2ac sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f445276 musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f764a6e dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x8f959875 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x8fbde28e max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x9001ed11 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x901da199 key_type_logon +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 0x907f76d5 usbnet_status_stop +EXPORT_SYMBOL_GPL vmlinux 0x908a3c48 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x908b2c89 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90c17b46 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x90c9f383 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x90da2e27 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x90e3db85 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x90e8979a pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x90f5173c crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x90feee36 usb_stor_probe2 +EXPORT_SYMBOL_GPL vmlinux 0x91284a3a max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x9170706b device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x91718090 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x91871d9b ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91c8c6fc tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x91dda801 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x91df9e4c platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x91e1ce60 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x91fabf5e usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x920e1eb4 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x9213bb6c ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0x92191909 hidinput_count_leds +EXPORT_SYMBOL_GPL vmlinux 0x92417eef hid_field_extract +EXPORT_SYMBOL_GPL vmlinux 0x924c191d exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9260bb7a netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x9264ed8a regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x928e4cf5 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x929541d5 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92cb4fb4 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d9ee2d dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e8a270 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x92ec7567 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x93032220 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9332d931 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x93346069 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x9350b5a7 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x935c1337 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x936835cb cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x939a3229 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x93a0d67a dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x93a2c1d5 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x93c19cf5 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x93d31108 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x93d4d2ab i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x93e163b0 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x93f9785f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x942cbb9c pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x94624d90 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x948c742c ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x94968eae snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b3c34c scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x94b5fe97 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x94bf31d7 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x94cc98c3 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x94d2e7b1 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x94d591b6 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x94e3ceb2 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950a9a3a skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x951347e6 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952d5f6c snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x953b6126 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x953c8674 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9542cf01 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x955af1eb synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95629be9 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x958743fd sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95ae017a extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x95b2db5f regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x95b90624 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95df0899 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962c44da __put_net +EXPORT_SYMBOL_GPL vmlinux 0x96343127 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965e8190 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x96655e1d bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x96919667 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0x969f792b debugfs_create_devm_seqfile +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 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x975dcac6 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x9780fabc wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x97c149ca crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x97c3f426 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x980e5f65 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x981ebf96 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x982a346e of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9850c84d wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9858f6d5 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987de9d7 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x988e961d ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x98bf5f77 regulator_map_voltage_iterate +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 0x991ce439 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992ca9c4 vc_sm_map +EXPORT_SYMBOL_GPL vmlinux 0x99324def crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x9938e752 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x993ec48b regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x99465f75 snd_soc_lookup_platform +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 0x995fe693 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x997f34c7 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x997f5de4 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998a4c31 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x99909e0c of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99ce6afa hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x99f3d3ca scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1e8bd8 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x9a4e83d3 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x9a5d806a register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x9a60b0ed put_pid +EXPORT_SYMBOL_GPL vmlinux 0x9a6a8902 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ae500dc tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af8021c usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x9b0a9de7 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x9b0c748e sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0x9b1cb4e6 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x9b614d1a crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x9b643c6e __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x9b6f6d09 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9bb82a21 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x9bbd7567 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf058ab pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c1a022f crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9c239557 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c598b69 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0x9c6c02e7 usbnet_open +EXPORT_SYMBOL_GPL vmlinux 0x9c71fb9e hidinput_connect +EXPORT_SYMBOL_GPL vmlinux 0x9c91f7e5 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x9ca224d0 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x9cb1f612 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc6b6e2 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x9ce2a38c __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d14ad1e pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x9d788526 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d83eb8a tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x9d8ffe9a bcm_dma_abort +EXPORT_SYMBOL_GPL vmlinux 0x9d9a6b00 usbnet_probe +EXPORT_SYMBOL_GPL vmlinux 0x9d9e9c32 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9d9f9aed __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dc45939 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9dc7c751 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x9df37411 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e0823c3 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x9e364b98 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9e3d5b73 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e615bdc regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x9e6df14b snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f3b50cb mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x9f68b17e platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9f69e40b dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0x9f884a29 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x9f9de7b9 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x9fafd590 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x9fb42507 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x9fccfbc4 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe367a6 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa00efea7 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xa013a9cf init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa03f1218 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xa0414baa sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xa04b6c82 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa04e9ba4 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xa064ae8d blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xa0694982 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0dba3b4 hid_open_report +EXPORT_SYMBOL_GPL vmlinux 0xa0e1e0e7 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xa0ebe09e pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa131aa82 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xa13729b5 sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0xa143b7fa crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa164985e thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xa1676b5e usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xa178a048 mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0xa1807347 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1af4a72 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xa1b4a875 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7a3e dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xa1ff4281 ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xa2081965 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xa20b6188 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xa221c8e3 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xa250a33e simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xa25fa179 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xa2653427 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2bcec01 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa2be4740 usb_stor_pre_reset +EXPORT_SYMBOL_GPL vmlinux 0xa2d72f20 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xa2e43870 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa2e544e0 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa31b0605 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xa3725df7 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa372b62a __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa398aef5 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa3a631d0 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e02805 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f6bd5d tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xa4288ebd arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xa43a5fb5 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa44d731a input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa46a5a54 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xa473f89c snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4960efd __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa4d5002a sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa4ddda5a scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xa4f98b5a wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xa515cd34 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xa526cc15 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa52f806e platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xa533221c da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xa54495c3 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa565d288 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xa59d9a20 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xa59da0ac snd_soc_new_ac97_codec +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 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6395285 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xa6396f9f ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa651120d inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xa65b9458 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xa68d5e9c rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa68defc5 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa693b588 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xa69832d3 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xa6ab60c4 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bf284a syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa6c04773 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xa6c2eb39 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xa6d296a0 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f6f168 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xa6f9720f sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa7113007 vc_sm_free +EXPORT_SYMBOL_GPL vmlinux 0xa71c60f4 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa722298a sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xa7313e2a snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0xa731c508 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa77dea44 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa796493c clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xa7a95de7 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xa7aabe5b register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xa7b27fe7 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7bccae1 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa7d8ea75 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xa7da7f35 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa807c4ad blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8771471 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xa890d3f0 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa898f496 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xa89ba880 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xa89d72c4 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bbee3c ref_module +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8e781f8 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xa8eb07c7 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xa902245d dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xa928f0bc regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa92ade14 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa95134a3 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa96bd807 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xa97b1854 usb_stor_CB_transport +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa992c0c4 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xa992d947 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aea127 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xa9bb1324 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xa9c0d1ec blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e59bf7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xaa10a745 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3a24fe transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xaa4eceb2 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xaa5723cb devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xaa58def0 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xaa642def __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa6b48b0 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xaa895c4e ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xaa9ef4a0 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab12d04 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xaab24ecd snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xaae2afaf mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xaaf589b7 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xab0f7eee disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xab12c146 spi_get_device_id +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 0xab38bbf9 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xab46aee9 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab5b012a dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7847db devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab85d49f snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xab993967 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabb03287 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xabbea8cd key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabf4391c find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xac12b966 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac5a5a2c usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL vmlinux 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL vmlinux 0xac81f012 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xac88c60b md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xaca2b12a regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xacbbc089 register_wide_hw_breakpoint +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 0xace7fae6 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0xad065951 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xad0a7ba0 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xad1ee0f2 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xad527205 device_del +EXPORT_SYMBOL_GPL vmlinux 0xad64bfb3 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xad8e784a trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xad94dc41 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xada82727 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xadb84705 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0xadbc80ae shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd51bf1 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xade4f359 rpi_firmware_get +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1c1b09 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xae23e1ec regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xae263423 ata_sff_dev_classify +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 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae98aeca ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaea0aa79 hid_dump_field +EXPORT_SYMBOL_GPL vmlinux 0xaea39188 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xaed4a372 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xaed5b322 device_create +EXPORT_SYMBOL_GPL vmlinux 0xaee62298 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xaeef589f hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaf246d0d ata_std_postreset +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 0xaf42906d usbnet_set_settings +EXPORT_SYMBOL_GPL vmlinux 0xaf458188 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xaf458d9e usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xaf56b14e regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaf933c63 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xafc2b250 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xafcb5d3a input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xafcc3f52 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xafd5ce66 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xafebddfa usbnet_change_mtu +EXPORT_SYMBOL_GPL vmlinux 0xafedfc3d phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xafffec15 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xb0128a78 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb029f6a7 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb03c1134 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb0444e6d blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb07dcc29 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xb0b335a8 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xb0b68311 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0b8e950 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xb0cd364f handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xb0dc0c1e ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0effb05 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xb0fda4c6 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb11f886c blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb15bcbc9 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xb164bc9a vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xb16a46fd pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +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 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c6ced5 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22b253c of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0xb24b5c84 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb26b9156 usbnet_set_msglevel +EXPORT_SYMBOL_GPL vmlinux 0xb2921f1d usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb2d3460e locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xb2de281b anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ecaa94 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb3095474 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xb30a423c wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xb314fcf2 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xb342a390 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL vmlinux 0xb34596d8 snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xb352d7dd of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xb35e1c92 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb37cf555 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb38c27be ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xb39af6ab sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb412ae43 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xb4496c23 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xb4515cb6 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xb49eded6 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xb4b86195 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eb3742 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb4eb6d56 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xb4ec1214 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xb50e166d pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb54ad46c crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb572b67f of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xb576c3a6 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59d0b76 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5cba789 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5df0c70 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xb5dfd358 usbnet_get_endpoints +EXPORT_SYMBOL_GPL vmlinux 0xb5e0bb73 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xb5e256a6 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xb5e4ae41 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5fad889 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb650ceee wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xb66f8d65 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6ab8870 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b87550 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL vmlinux 0xb6c7af9d platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb6c81ca2 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xb6dcfe19 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xb6e15281 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6ed1f73 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb6f881b8 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb70332d1 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xb71a2ee3 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xb7254394 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb765b138 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xb7673785 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xb774ca57 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xb7761b2b ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xb789bc41 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xb7cc3f64 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xb7ee50ee wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb81e8bec ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xb8320891 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb8386263 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xb83ebf57 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xb845c55d usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL vmlinux 0xb84c6352 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0xb85b72d9 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0xb8683c00 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xb86931ba ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xb86a58a6 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xb890f2ba regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8f75d61 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb948f5b6 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb94e79c9 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xb973fb41 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xb98f3cea usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb9a3b264 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9fa7cf4 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba479ead thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xba4e2301 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xba5245e1 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xba59df63 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba8bd777 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac34a43 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xbad83df7 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xbaea4813 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xbaf40cf0 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xbafb9269 devm_regulator_get_exclusive +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 0xbb367e12 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0xbb416faf led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbb50b8f9 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xbb7a88f1 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb97617c of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbf34a2c ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xbc083896 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xbc131451 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xbc2f4b42 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xbc5d6e36 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xbc627aaf ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xbc84c245 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb21e6d usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbcb341a0 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbcc1e2b1 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdb8e38 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd45f113 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xbd46f77c fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xbd4f8f15 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xbd58a9fe crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd659a9b skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xbd7729ae devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xbd79b484 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xbdcffb25 ahci_port_resume +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 0xbddf8208 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0xbde66c9b crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1ec36e bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xbe2b5b7a mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xbe472d55 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xbe5fabb8 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7fe03c scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xbe920f81 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +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 0xbef74aeb dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf165d39 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xbf1c7d6c hid_ignore +EXPORT_SYMBOL_GPL vmlinux 0xbf264c06 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xbf26ffd2 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0xbf6dd907 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xbf738444 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xbf75f535 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xbf857d2b inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xbfbc6097 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xbfbcddf8 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfc9fd4f rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xbfce10ac dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0xbfd16fe5 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfee6ff4 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xbffa56f9 md_run +EXPORT_SYMBOL_GPL vmlinux 0xc0149444 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xc016bddf pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xc01af224 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0xc0282ffd dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc04ad9c5 dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc059617c phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc0599cb6 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xc07b2ed2 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xc081a119 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc08391ff usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc0850e87 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a2a683 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b6c5a4 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d9b97d snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc15e0693 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xc1653da0 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xc16d02bf regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17b2995 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc18b330d fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xc19c4e6d serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xc1a90a9c uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xc1bced6a cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc2167b0a regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23b18bc rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xc24b3020 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc25bcdb0 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xc2610073 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xc271a564 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xc27d2457 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc28111d9 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc2822771 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc2a4a5f2 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xc2d52719 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2ee1271 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xc313d5ff debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xc3196107 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xc31b324c cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xc3201414 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc32be37e hid_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc337b835 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc340031b of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xc340b84b scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc36fcabf devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3b37657 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xc3b405e8 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xc3b753a3 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3e25f18 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xc3ed187f devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc403b718 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xc403ee72 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc4267cde blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42bf991 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xc44d3aed mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45c4e3d gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xc46b761f regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4733aa4 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xc47e9b78 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a127a5 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xc4a74b7c snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0xc4d62230 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xc4d6254b relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xc4dc3939 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xc4def06e devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xc4e37f71 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc54cf397 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xc5575ae5 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc562b305 hid_input_report +EXPORT_SYMBOL_GPL vmlinux 0xc5631c15 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5873fee wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xc5c342a8 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xc5cd2144 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc5d312b8 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xc5f7bd09 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xc5f7d0ab bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xc60ea9a6 da903x_update +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 0xc6623bdf blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xc6810e93 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xc6852f1b fill_inquiry_response +EXPORT_SYMBOL_GPL vmlinux 0xc68b9172 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xc68bfa21 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc697c254 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6d50924 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc702f969 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xc70b0deb serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xc71224b8 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xc725da8e blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xc7276096 sdio_register_driver +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 0xc74783f1 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0xc74e5069 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xc74e9d50 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xc75777e8 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xc7780cc6 blkcg_root +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 0xc7e77bb4 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xc81f07f0 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc8282c22 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc82a2ad2 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xc83112b0 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xc84b410b snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xc86866ed devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc87a723c gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8810dee trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xc885ec1b snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xc894fba8 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xc897bfb6 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc8a77ed6 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b61751 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xc8c98c3b skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e07a8b power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xc8f05e84 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xc8f3cb52 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc8f5e594 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9026e77 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9204def irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xc95403ce inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc96056bf wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xc9701a89 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xc979d96d wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9823842 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xc9a693ed snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0xc9b2646d sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xc9c19239 vc_sm_lock +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca01add1 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xca11845e add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xca1985cd bcm_dma_wait_idle +EXPORT_SYMBOL_GPL vmlinux 0xca1e1237 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0xca2146fd __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xca2ade71 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xca4e5167 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xca5a8722 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca7de04f ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad6db7c del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xcad92a81 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xcadd9e65 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xcaf42a37 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xcb1087ae usbnet_stop +EXPORT_SYMBOL_GPL vmlinux 0xcb10cbd2 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xcb1a07be ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xcb25b6bf devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xcb2beefa locks_alloc_lock +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 0xcb84c20a dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xcb976fb3 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xcbc58690 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xcbd80915 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xcbe31402 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc1248ad devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xcc1b562a uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xcc369323 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xcc6b7ec4 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xcc84cf39 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc86e41b usbnet_read_cmd +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce642a7 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xccfdc582 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xcd2bb4f0 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xcd3c9c77 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xcd475155 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xcd593a76 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xcd611f79 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xcd66a6cb disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xcd901b2f devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd94e9a3 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc3cf14 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xcdc743a0 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdf06e97 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xce07bec1 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0xce13027a usbnet_status_start +EXPORT_SYMBOL_GPL vmlinux 0xce1e9175 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xce22b646 hidinput_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xce2d870f ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xce435c48 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xce44d84d regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce81f1ed netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xce846b87 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xce8c7043 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xce905de5 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xcebfe524 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xcec1c83f page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xced08f33 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef60319 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xcefad486 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0xcf1ee8dc regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xcf28160b securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf372371 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xcf4249fa kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf642ac0 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xcf9c325c ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcfb156ae pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfe81bfa snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xd00325c5 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xd008b66c crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xd01e64ff ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xd037558c bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd05f3d24 driver_remove_file +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 0xd09799b5 snd_pcm_stop_xrun +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 0xd0b44f44 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0fab276 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0xd1118c93 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd1255161 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd151fa20 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd172a4d5 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xd1793427 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd18af8df regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xd194398f regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f6f6f7 usbnet_pause_rx +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 0xd211e998 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21eceac splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xd226906c ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xd2716db6 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27d8b4f ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b1b3b3 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xd2b73cc0 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xd2ba49a2 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xd2beae9f reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xd2de7533 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd2e34d01 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2ef2abf crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xd2f5143e ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xd30d6dd9 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd315c5bd snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0xd31be76c ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0xd3287766 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd372701e mmput +EXPORT_SYMBOL_GPL vmlinux 0xd384cc9a pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd38cf2e1 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd3d0f068 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xd3e6e4e3 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xd3ec7f48 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xd3f3f0c5 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd3f804c1 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xd40311f0 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40d9c77 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd414bcce of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4448d5a phy_create +EXPORT_SYMBOL_GPL vmlinux 0xd446eade sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4685a70 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xd477382f sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xd4866bad ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xd4974b20 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xd4b0c8ec phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d23bc0 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd4ddd6c0 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xd4fee5c8 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xd542b931 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xd5542de9 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xd55dab4f usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL vmlinux 0xd56336e7 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd57f0d09 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd5a01cba mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xd5a7dfc1 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5e7348d devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xd5ea5962 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xd5f09706 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xd605dee9 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd60a9e25 ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd655bae8 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xd6687246 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xd67089fc device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xd6708d99 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd682a9d1 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xd685330a mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6f47179 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70b149f ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xd71dd6b2 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd75b0d32 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xd767fcc3 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd771c4af spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xd7795160 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78d4074 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xd7a56966 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e84b52 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xd819ee6f crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82ce10a of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0xd872a6ef snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd896f886 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xd8d653e0 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xd8d808ae raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xd8e468fa extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd8f86558 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xd91b6519 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xd91bf096 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xd924f86f sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xd9268d5e led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd95ff758 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xd9643004 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xd96aca2d crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9825d2b ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0xd9912301 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xd99bf6be pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f833bb transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xda2cd874 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xda5676c3 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xda5a662c bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xda8d2612 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xda9666bc param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xdab44680 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xdab90c8b gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xdad6b810 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdae9253b dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb05008b blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb137ff7 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xdb64ed7e blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb945146 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdbd7da66 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xdbd83c1e rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xdbe7188c bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xdbf13c17 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfe9253 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdc0d8709 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc14e252 hidinput_get_led_field +EXPORT_SYMBOL_GPL vmlinux 0xdc16c66c regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xdc16cc99 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xdc28cff8 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xdc3fd8af ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc4e5f0f mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xdc66dae5 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdc7b2ab7 snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9c68c3 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0xdc9ce1fa powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca1064e cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdca2e83a i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xdcaa03cb usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xdcb1816b snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0xdcb1ff0e ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xdcce64a4 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xdcd0097b tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xdcda2d56 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdcfab7ff sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd199cce br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xdd2686b4 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd30ec57 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xdd38c09a find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd39644f add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xdd7f0881 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0xdd83ece1 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xdda4ffe2 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xddbb2d23 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde0642b9 regulator_bulk_unregister_supply_alias +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 0xde427971 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xde5579dd noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xde55dcbc snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0xde5948d3 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xde5be9e3 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xde64b90c gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xdebda6a4 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdec8a040 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xded69e0f blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xdf0576fc hid_resolv_usage +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf295be4 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xdf314395 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xdf4b6ed4 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xdf688a16 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xdf7127ac ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xdf751264 __hid_request +EXPORT_SYMBOL_GPL vmlinux 0xdf7b84dc crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xdf9bfee7 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xdfa7120e devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xdfb69a58 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xdfc23258 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xe0079b97 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe009380c i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xe01a9264 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe038e81d cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xe0563279 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xe05c6c8e ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xe0611942 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0xe0622366 tty_buffer_space_avail +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 0xe0b25fa3 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xe0b4c107 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe0cef797 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0e9e997 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe1052cff ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xe116afc8 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xe1188bcb __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe12dd12a driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xe14cccc8 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe169cef5 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1891cf7 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xe18961c9 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe1c06ba3 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe206be76 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe22f711b hidinput_report_event +EXPORT_SYMBOL_GPL vmlinux 0xe271727c bcm_sg_suitable_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe28e71b3 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe29c2ff7 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xe2b8ae94 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xe2bd45f6 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe2c122d4 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xe2c2c67b ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xe2d1911d gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30a5fbe relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xe31d98f0 hid_parse_report +EXPORT_SYMBOL_GPL vmlinux 0xe32ebdbe ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0xe331626a devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xe3353084 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0xe3395d26 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xe3543479 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xe3772b81 snd_soc_unregister_platform +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 0xe3c1d3c8 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43df7a1 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe44a682b da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xe44d32ca rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe45382a2 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe45955f2 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe47feabf amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xe492ee1a __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe4940f59 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a62088 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0xe4af4050 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xe4d4dae4 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xe4ec31cd power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xe4f1b511 ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0xe5114d4e xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xe5509051 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xe565059e usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xe5750dbf snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xe58369f5 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5b5d0b2 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe5e3105d transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe5eb6d87 snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0xe5f25a8f usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xe5f65362 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe60c2646 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xe613b0b0 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xe64df10e skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe665e6c7 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe66b5945 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe66ba13b device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xe68ee9c2 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xe69e213f pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xe69ff067 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xe6b2222a perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe6b5a3ab gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ea9df3 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe714ef72 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xe73155a8 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe733493c wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xe738d655 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xe7465786 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe747fc72 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL vmlinux 0xe74fa6b2 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76bac15 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe76cd73e ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xe773d6b9 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xe7789771 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe7822b34 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe795d189 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xe7980866 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe79ff87a call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xe7b04c1e bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xe7b9792d inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xe7bc265f gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xe7c0dec5 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7e20233 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xe7e84246 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xe7ee6913 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe7f85176 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8074836 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8254ac4 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xe84804aa lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe85e27fe dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87c17a5 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xe89b1fff sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xe8afb211 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xe8d35915 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xe8d36ef6 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xe91d971f mtd_write +EXPORT_SYMBOL_GPL vmlinux 0xe92b086c sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe95d2117 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xe9745ca8 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xe97a48a8 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe97c88e4 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xe97f4e92 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe9827d1a mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xe9b7c368 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9e88d76 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xea0997c2 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea26356a crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xea33d98f snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea3b2183 hid_output_report +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 0xea522e30 device_move +EXPORT_SYMBOL_GPL vmlinux 0xea653596 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xea684adc regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xea8638e3 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xea98d737 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xea9d4168 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xeb0cb1e9 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0xeb26b4c3 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xeb5ddbd7 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xeb63a813 usbnet_skb_return +EXPORT_SYMBOL_GPL vmlinux 0xeb6f2aca __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb74972d ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeba6c356 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xebb7e578 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xebcbd144 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xebd33648 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xebdae399 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebefc418 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1d00ac thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec39e493 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xec41327c fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xec5239b8 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xec595367 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xec6f2016 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xec87b9b9 snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0xeca69ff5 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xecadf5b8 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xecb5c976 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xecc5ad2f alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xecd158ae __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xecd5227d shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xece5153e inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xecfffe17 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xed08b99f dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xed283eee crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xed2890a5 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xed40c547 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xed8194a0 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xed8bca03 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xeda63db3 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0xedb16706 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xedb8651d dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xedc32e6c ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xedc55cae xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xedd481ec blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xedf8301b __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xedf940ae regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xee058e39 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xee37fb85 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xee6298f1 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xeea2269d evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xeeac358b mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0xeed828fb rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef229818 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xef26029b usb_stor_post_reset +EXPORT_SYMBOL_GPL vmlinux 0xef351f89 of_address_to_resource +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 0xef698282 dma_buf_kmap_atomic +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 0xefa3c9fb regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xefaaeb99 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xefca246e snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xf00c5d79 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xf013193e pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf017f41f snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0xf020999d device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04054a7 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf04d6fe5 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf0600810 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xf06138ee xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf074f6ad inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xf0855b83 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xf08ae9e8 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf096c242 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xf0978ccf ata_std_prereset +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 0xf0ff5621 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xf112d634 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xf1285662 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf133dbb9 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18d6ebc fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xf196be40 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xf19c3b2d devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d597a0 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf1f16c9e unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xf1fa2244 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xf201ee9f blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf24927ae usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xf24ba0f1 soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xf27617c2 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf279a6c8 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf28f0043 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xf291a2c6 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xf2d88ddb unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xf2ded3d5 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xf2e94711 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xf2ed48f0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f1dd33 usb_altnum_to_altsetting +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 0xf313e3de mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xf31998a7 snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32d486a regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xf345a78b nand_release +EXPORT_SYMBOL_GPL vmlinux 0xf361ce4d wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf36d3685 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf383ffa4 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf39009e3 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xf3a4637d deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3ccd9cd usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL vmlinux 0xf3d6bbd8 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xf3e4d1f3 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf40af14f cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf4277091 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf42ff638 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xf4379898 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xf4504ea5 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf4689354 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a08a4e snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xf4b2d3f4 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xf4c45f37 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xf4e97b1a rpi_firmware_property +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf514b76c cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55acade regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf59ef43f ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xf59fb97a __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bce4ea __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xf5e2c628 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf5ec0ed8 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0xf5fde108 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xf6212ef4 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xf625dde1 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xf63375a9 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xf63dfa4c raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xf63fca66 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xf651d469 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xf65700ab led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xf689b2a1 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf68dd8ac mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xf69328e7 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xf6a7bfb4 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf734e4bb regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xf74de530 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0xf768e7ed dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf770bd37 hiddev_hid_event +EXPORT_SYMBOL_GPL vmlinux 0xf77b7c7c ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf79cb8ed component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xf7a98630 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf7c54b06 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xf7cd590f crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xf7f1c58f usb_stor_reset_resume +EXPORT_SYMBOL_GPL vmlinux 0xf8259490 mpc8xxx_spi_tx_buf_u32 +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 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf89389f5 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xf8aac0fa swiotlb_tbl_sync_single +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 0xf916b41c edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9341431 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xf9531584 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf96bce06 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xf98f738c snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf999cc9a tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a22c0f usbnet_nway_reset +EXPORT_SYMBOL_GPL vmlinux 0xf9ad5823 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xf9b42077 usbnet_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xf9bbd7fe arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xf9c11f47 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d0f759 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfa0d68e7 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa1d71b8 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa2a5f29 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xfa413a01 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfa6705b5 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xfa71eab8 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xfa74039a __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xfa987bb2 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xfaa8ed4a fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xfaaaab13 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xfaaf61ab led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xfaba4a25 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xfad0a12a snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0xfad53063 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xfad54944 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xfaec46a4 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xfaffd9f7 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xfb010006 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xfb1617a5 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0xfb1f465e mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb58ddd5 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xfb65dc37 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xfb68c7d5 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb69e7cf usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb77f693 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xfba4cb24 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc8a085 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbf2062f extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1f57c7 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xfc2dd83a ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfc528643 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xfc774c06 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xfc95943a enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xfcb9eaf4 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xfcbc7871 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd0aa0a1 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xfd18acb1 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xfd26d20b ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xfd55b7f5 mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfdb56dc2 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xfdbf8f75 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xfdd4b467 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xfde1a33e klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfdfb3663 hid_connect +EXPORT_SYMBOL_GPL vmlinux 0xfdff630d cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xfe009c06 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xfe1192cb irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xfe3cbb47 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe49bf6d led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xfe690721 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xfe7d3cd1 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xfe940a2a transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff1b775e serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff3d200f bus_register_notifier +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 0xff89eab6 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffea2abf clockevents_unbind_device --- linux-raspi2-4.2.0.orig/debian.raspi2/abi/4.2.0-1028.36/armhf/raspi2.compiler +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1028.36/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-1028.36/armhf/raspi2.modules +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1028.36/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-1028.36/fwinfo +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1028.36/fwinfo @@ -0,0 +1,317 @@ +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: 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,4228 @@ +linux-raspi2 (4.2.0-1029.37) wily; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1573242 + + [ Ubuntu: 4.2.0-36.41 ] + + * SAUCE: Input: synaptics - handle spurious release of trackstick + buttons, again + - LP: #1553811 + * Revert "SAUCE: arm64, numa, dt: adding dt based numa support using dt + node property arm, associativity" + - LP: #1558828 + * Revert "SAUCE: Documentation: arm64/arm: dt bindings for numa." + - LP: #1558828 + * Revert "SAUCE: arm64, numa: adding numa support for arm64 platforms." + - LP: #1558828 + * Revert "[Config] Enable NUMA on ARM64" + - LP: #1558828 + * SAUCE: (noup): Drivers: hv: vmbus: Fix a bug in + hv_need_to_signal_on_read() + - LP: #1556264 + * [debian] BugLink: close LP: bugs only for Launchpad urls + * [Config] updateconfigs after v4.2.8-ckt7 + * Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin" + - LP: #1561677 + * tipc: fix connection abort during subscription cancel + - LP: #1561677 + * tipc: fix nullptr crash during subscription cancel + - LP: #1561677 + * s390/mm: four page table levels vs. fork + - LP: #1561677 + * Input: aiptek - fix crash on detecting device without endpoints + - LP: #1561677 + * wext: fix message delay/ordering + - LP: #1561677 + * cfg80211/wext: fix message ordering + - LP: #1561677 + * mac80211: fix use of uninitialised values in RX aggregation + - LP: #1561677 + * mac80211: minstrel: Change expected throughput unit back to Kbps + - LP: #1561677 + * libata: fix HDIO_GET_32BIT ioctl + - LP: #1561677 + * iwlwifi: mvm: inc pending frames counter also when txing non-sta + - LP: #1561677 + * [media] adv7604: fix tx 5v detect regression + - LP: #1561677 + * ahci: add new Intel device IDs + - LP: #1561677 + * ahci: Order SATA device IDs for codename Lewisburg + - LP: #1561677 + * Adding Intel Lewisburg device IDs for SATA + - LP: #1561677 + * ASoC: samsung: Use IRQ safe spin lock calls + - LP: #1561677 + * mac80211: minstrel_ht: set default tx aggregation timeout to 0 + - LP: #1561677 + * usb: chipidea: otg: change workqueue ci_otg as freezable + - LP: #1561677 + * jffs2: Fix page lock / f->sem deadlock + - LP: #1561677 + * Fix directory hardlinks from deleted directories + - LP: #1561677 + * iommu/amd: Fix boot warning when device 00:00.0 is not iommu covered + - LP: #1561677 + * iommu/amd: Apply workaround for ATS write permission check + - LP: #1561677 + * libata: Align ata_device's id on a cacheline + - LP: #1561677 + * can: gs_usb: fixed disconnect bug by removing erroneous use of kfree() + - LP: #1561677 + * fbcon: set a default value to blink interval + - LP: #1561677 + * KVM: x86: fix root cause for missed hardware breakpoints + - LP: #1561677 + * arm64: vmemmap: use virtual projection of linear region + - LP: #1561677 + * vfio: fix ioctl error handling + - LP: #1561677 + * ALSA: ctl: Fix ioctls for X32 ABI + - LP: #1561677 + * ALSA: pcm: Fix ioctls for X32 ABI + - LP: #1561677 + * ALSA: rawmidi: Fix ioctls X32 ABI + - LP: #1561677 + * ALSA: timer: Fix broken compat timer user status ioctl + - LP: #1561677 + * ALSA: timer: Fix ioctls for X32 ABI + - LP: #1561677 + * cifs: fix out-of-bounds access in lease parsing + - LP: #1561677 + * CIFS: Fix SMB2+ interim response processing for read requests + - LP: #1561677 + * Fix cifs_uniqueid_to_ino_t() function for s390x + - LP: #1561677 + * arm/arm64: KVM: Fix ioctl error handling + - LP: #1561677 + * MIPS: kvm: Fix ioctl error handling. + - LP: #1561677 + * ALSA: hdspm: Fix wrong boolean ctl value accesses + - LP: #1561677 + * ALSA: hdspm: Fix zero-division + - LP: #1561677 + * ALSA: hdsp: Fix wrong boolean ctl value accesses + - LP: #1561677 + * use ->d_seq to get coherency between ->d_inode and ->d_flags + - LP: #1561677 + * USB: qcserial: add Dell Wireless 5809e Gobi 4G HSPA+ (rev3) + - LP: #1561677 + * USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder + - LP: #1561677 + * ASoC: dapm: Fix ctl value accesses in a wrong type + - LP: #1561677 + * ASoC: wm8958: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * ASoC: wm8994: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * ASoC: wm_adsp: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * USB: serial: option: add support for Telit LE922 PID 0x1045 + - LP: #1561677 + * USB: serial: option: add support for Quectel UC20 + - LP: #1561677 + * ALSA: usb-audio: Add a quirk for Plantronics DA45 + - LP: #1561677 + * mac80211: check PN correctly for GCMP-encrypted fragmented MPDUs + - LP: #1561677 + * mac80211: Fix Public Action frame RX in AP mode + - LP: #1561677 + * i2c: brcmstb: allocate correct amount of memory for regmap + - LP: #1561677 + * ALSA: seq: oss: Don't drain at closing a client + - LP: #1561677 + * parisc: Fix ptrace syscall number and return value modification + - LP: #1561677 + * drm/ast: Fix incorrect register check for DRAM width + - LP: #1561677 + * USB: qcserial: add Sierra Wireless EM74xx device ID + - LP: #1561677 + * drm/amdgpu/pm: update current crtc info after setting the powerstate + - LP: #1561677 + * drm/radeon/pm: update current crtc info after setting the powerstate + - LP: #1561677 + * drm/amdgpu: return from atombios_dp_get_dpcd only when error + - LP: #1561677 + * PM / sleep / x86: Fix crash on graph trace through x86 suspend + - LP: #1561677 + * ALSA: hda - Fix mic issues on Acer Aspire E1-472 + - LP: #1561677 + * ovl: fix working on distributed fs as lower layer + - LP: #1561677 + * ovl: fix getcwd() failure after unsuccessful rmdir + - LP: #1561677 + * ovl: ignore lower entries when checking purity of non-directory entries + - LP: #1561677 + * MIPS: traps: Fix SIGFPE information leak from `do_ov' and + `do_trap_or_bp' + - LP: #1561677 + * ubi: Fix out of bounds write in volume update code + - LP: #1561677 + * target: Drop incorrect ABORT_TASK put for completed commands + - LP: #1561677 + * ARM: OMAP2+: hwmod: Introduce ti,no-idle dt property + - LP: #1561677 + * ARM: dts: dra7: do not gate cpsw clock due to errata i877 + - LP: #1561677 + * PCI: Allow a NULL "parent" pointer in pci_bus_assign_domain_nr() + - LP: #1561677 + * KVM: PPC: Book3S HV: Sanitize special-purpose register values on guest + exit + - LP: #1561677 + * ncpfs: fix a braino in OOM handling in ncp_fill_cache() + - LP: #1561677 + * jffs2: reduce the breakage on recovery from halfway failed rename() + - LP: #1561677 + * KVM: VMX: disable PEBS before a guest entry + - LP: #1561677 + * arm64: account for sparsemem section alignment when choosing vmemmap + offset + - LP: #1561677 + * tracing: Fix check for cpu online when event is disabled + - LP: #1561677 + * KVM: MMU: fix ept=0/pte.u=1/pte.w=0/CR0.WP=0/CR4.SMEP=1/EFER.NX=0 combo + - LP: #1561677 + * dmaengine: at_xdmac: fix residue computation + - LP: #1561677 + * MIPS: Fix build error when SMP is used without GIC + - LP: #1561677 + * IB/core: Use GRH when the path hop-limit > 0 + - LP: #1561677 + * dmaengine: pxa_dma: fix cyclic transfers + - LP: #1561677 + * MIPS: smp.c: Fix uninitialised temp_foreign_map + - LP: #1561677 + * tcp: fix tcpi_segs_in after connection establishment + - LP: #1561677 + * be2net: Don't leak iomapped memory on removal. + - LP: #1561677 + * tcp: convert cached rtt from usec to jiffies when feeding initial rto + - LP: #1561677 + * ext4: iterate over buffer heads correctly in move_extent_per_page() + - LP: #1561677 + * ppp: release rtnl mutex when interface creation fails + - LP: #1561677 + * net/mlx4_core: Allow resetting VF admin mac to zero + - LP: #1561677 + * ipv6: re-enable fragment header matching in ipv6_find_hdr + - LP: #1561677 + * net/mlx5e: Remove wrong poll CQ optimization + - LP: #1561677 + * cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind + - LP: #1561677 + * net: qca_spi: Don't clear IFF_BROADCAST + - LP: #1561677 + * net: moxa: fix an error code + - LP: #1561677 + * mld, igmp: Fix reserved tailroom calculation + - LP: #1561677 + * Linux 4.2.8-ckt6 + - LP: #1561677 + * (upstream) net/mlx5e: Avoid NULL pointer access in case of + configuration failure + - LP: #1528466 + * PCI: Disable IO/MEM decoding for devices with non-compliant BARs + - LP: #1559929 + * x86/PCI: Mark Broadwell-EP Home Agent & PCU as having non-compliant + BARs + - LP: #1559929 + * fuse: do not use iocb after it may have been freed + - LP: #1505948 + * fuse: Add reference counting for fuse_io_priv + - LP: #1505948 + * intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled + - LP: #1559918 + * crypto: skcipher - Add crypto_skcipher_has_setkey + - LP: #1556562 + * crypto: algif_skcipher - Add key check exception for cipher_null + - LP: #1556562 + * crypto: algif_skcipher - Do not assume that req is unchanged + - LP: #1556562 + * crypto: algif_skcipher - Do not dereference ctx without socket lock + - LP: #1556562 + * proc: revert /proc//maps [stack:TID] annotation + - LP: #1547231 + * ACPI / processor: Request native thermal interrupt handling via _OSC + - LP: #1559923 + * gpiolib: do not allow to insert an empty gpiochip + - LP: #1566544 + * gpio: add a data pointer to gpio_chip + - LP: #1566544 + * gpio: rcar: Add Runtime PM handling for interrupts + - LP: #1566544 + * ipv4: Don't do expensive useless work during inetdev destroy. + - LP: #1566544 + * Input: powermate - fix oops with malicious USB descriptors + - LP: #1566544 + * USB: iowarrior: fix oops with malicious USB descriptors + - LP: #1566544 + * ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk() + - LP: #1566544 + * ALSA: usb-audio: Add sanity checks for endpoint accesses + - LP: #1566544 + * include/linux/poison.h: fix LIST_POISON{1,2} offset + - LP: #1566544 + * Input: ati_remote2 - fix crashes on detecting device with invalid + descriptor + - LP: #1566544 + * USB: cdc-acm: more sanity checking + - LP: #1566544 + * drm/i915: Workaround CHV pipe C cursor fail + - LP: #1566544 + * EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr() + - LP: #1566544 + * crypto: ccp - Add hash state import and export support + - LP: #1566544 + * clk: rockchip: add pclk_cpu to the list of rk3188 critical clocks + - LP: #1566544 + * clk: rockchip: Add pclk_peri to critical clocks on RK3066/RK3188 + - LP: #1566544 + * clk: rockchip: add hclk_cpubus to the list of rk3188 critical clocks + - LP: #1566544 + * tty: Fix GPF in flush_to_ldisc(), part 2 + - LP: #1566544 + * media: v4l2-compat-ioctl32: fix missing length copy in + put_v4l2_buffer32 + - LP: #1566544 + * pwc: Add USB id for Philips Spc880nc webcam + - LP: #1566544 + * crypto: ccp - Limit the amount of information exported + - LP: #1566544 + * crypto: ccp - Don't assume export/import areas are aligned + - LP: #1566544 + * 8250: use callbacks to access UART_DLL/UART_DLM + - LP: #1566544 + * net: irda: Fix use-after-free in irtty_open() + - LP: #1566544 + * mei: bus: check if the device is enabled before data transfer + - LP: #1566544 + * staging: comedi: ni_tiocmd: change mistaken use of start_src for + start_arg + - LP: #1566544 + * tools/hv: Use include/uapi with __EXPORTED_HEADERS__ + - LP: #1566544 + * tpm: fix the rollback in tpm_chip_register() + - LP: #1566544 + * tpm: fix the cleanup of struct tpm_chip + - LP: #1566544 + * ARM: dts: armada-375: use armada-370-sata for SATA + - LP: #1566544 + * usb: retry reset if a device times out + - LP: #1566544 + * HID: fix hid_ignore_special_drivers module parameter + - LP: #1566544 + * scripts/coccinelle: modernize & + - LP: #1566544 + * adv7511: TX_EDID_PRESENT is still 1 after a disconnect + - LP: #1566544 + * saa7134: Fix bytesperline not being set correctly for planar formats + - LP: #1566544 + * tpm_crb: tpm2_shutdown() must be called before tpm_chip_unregister() + - LP: #1566544 + * perf tools: Dont stop PMU parsing on alias parse error + - LP: #1566544 + * Bluetooth: btusb: Add new AR3012 ID 13d3:3395 + - LP: #1542564, #1566544 + * Bluetooth: Add new AR3012 ID 0489:e095 + - LP: #1542944, #1566544 + * aacraid: Fix RRQ overload + - LP: #1566544 + * aacraid: Fix memory leak in aac_fib_map_free + - LP: #1566544 + * aic7xxx: Fix queue depth handling + - LP: #1566544 + * mtd: onenand: fix deadlock in onenand_block_markbad + - LP: #1566544 + * md/raid5: Compare apples to apples (or sectors to sectors) + - LP: #1566544 + * RAID5: check_reshape() shouldn't call mddev_suspend + - LP: #1566544 + * RAID5: revert e9e4c377e2f563 to fix a livelock + - LP: #1566544 + * crypto: ccp - memset request context to zero during import + - LP: #1566544 + * Bluetooth: btusb: Add a new AR3012 ID 04ca:3014 + - LP: #1546694, #1566544 + * mmc: sdhci: fix data timeout (part 1) + - LP: #1566544 + * mmc: sdhci: fix data timeout (part 2) + - LP: #1566544 + * perf tools: Fix python extension build + - LP: #1566544 + * IB/srpt: Simplify srpt_handle_tsk_mgmt() + - LP: #1566544 + * bttv: Width must be a multiple of 16 when capturing planar formats + - LP: #1566544 + * watchdog: rc32434_wdt: fix ioctl error handling + - LP: #1566544 + * nfsd4: fix bad bounds checking + - LP: #1566544 + * xfs: fix two memory leaks in xfs_attr_list.c error paths + - LP: #1566544 + * quota: Fix possible GPF due to uninitialised pointers + - LP: #1566544 + * mtip32xx: Fix broken service thread handling + - LP: #1566544 + * mtip32xx: Remove unwanted code from taskfile error handler + - LP: #1566544 + * mtip32xx: Print exact time when an internal command is interrupted + - LP: #1566544 + * mtip32xx: Avoid issuing standby immediate cmd during FTL rebuild + - LP: #1566544 + * mtip32xx: Fix for rmmod crash when drive is in FTL rebuild + - LP: #1566544 + * mtip32xx: Handle safe removal during IO + - LP: #1566544 + * mtip32xx: Handle FTL rebuild failure state during device initialization + - LP: #1566544 + * of: alloc anywhere from memblock if range not specified + - LP: #1566544 + * usb: hub: fix a typo in hub_port_init() leading to wrong logic + - LP: #1566544 + * KVM: i8254: change PIT discard tick policy + - LP: #1566544 + * sched/cputime: Fix steal time accounting vs. CPU hotplug + - LP: #1566544 + * libnvdimm: Fix security issue with DSM IOCTL. + - LP: #1566544 + * rt2x00: add new rt2800usb device Buffalo WLI-UC-G450 + - LP: #1566544 + * pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing + - LP: #1566544 + * perf/core: Fix perf_sched_count derailment + - LP: #1566544 + * perf/x86/intel: Use PAGE_SIZE for PEBS buffer size on Core2 + - LP: #1566544 + * perf/x86/intel: Fix PEBS warning by only restoring active PMU in pmi + - LP: #1566544 + * sched/cputime: Fix steal_account_process_tick() to always return + jiffies + - LP: #1566544 + * bcache: fix race of writeback thread starting before complete + initialization + - LP: #1566544 + * bcache: cleaned up error handling around register_cache() + - LP: #1566544 + * bcache: fix cache_set_flush() NULL pointer dereference on OOM + - LP: #1566544 + * be2iscsi: set the boot_kset pointer to NULL in case of failure + - LP: #1566544 + * md/raid5: preserve STRIPE_PREREAD_ACTIVE in break_stripe_batch_list + - LP: #1566544 + * drm/radeon: Don't drop DP 2.7 Ghz link setup on some cards. + - LP: #1566544 + * sg: fix dxferp in from_to case + - LP: #1566544 + * jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount + path + - LP: #1566544 + * ALSA: hda - Apply reboot D3 fix for CX20724 codec, too + - LP: #1566544 + * EDAC/sb_edac: Fix computation of channel address + - LP: #1566544 + * Bluetooth: btusb: Add a new AR3012 ID 13d3:3472 + - LP: #1552925, #1566544 + * ALSA: pcm: Avoid "BUG:" string for warnings again + - LP: #1566544 + * dm snapshot: disallow the COW and origin devices from being identical + - LP: #1566544 + * dm thin metadata: don't issue prefetches if a transaction abort has + failed + - LP: #1566544 + * dm cache: make sure every metadata function checks fail_io + - LP: #1566544 + * iser-target: Fix identification of login rx descriptor type + - LP: #1566544 + * iser-target: Add new state ISER_CONN_BOUND to isert_conn + - LP: #1566544 + * iser-target: Separate flows for np listeners and connections cma events + - LP: #1566544 + * ALSA: hda - fix the mic mute button and led problem for a Lenovo AIO + - LP: #1555912, #1566544 + * xtensa: ISS: don't hang if stdin EOF is reached + - LP: #1566544 + * xtensa: fix preemption in {clear,copy}_user_highpage + - LP: #1566544 + * xtensa: clear all DBREAKC registers on start + - LP: #1566544 + * Bluetooth: Fix potential buffer overflow with Add Advertising + - LP: #1566544 + * ARC: [BE] readl()/writel() to work in Big Endian CPU configuration + - LP: #1566544 + * bus: imx-weim: Take the 'status' property value into account + - LP: #1566544 + * ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41. + - LP: #1566544 + * s390/pci: enforce fmb page boundary rule + - LP: #1566544 + * drm/radeon: rework fbdev handling on chips with no connectors + - LP: #1566544 + * md: multipath: don't hardcopy bio in .make_request path + - LP: #1566544 + * net: mvneta: enable change MAC address when interface is up + - LP: #1566544 + * dm: fix rq_end_stats() NULL pointer in dm_requeue_original_request() + - LP: #1566544 + * HID: i2c-hid: fix OOB write in i2c_hid_set_or_send_report() + - LP: #1566544 + * ALSA: hda - Fix unconditional GPIO toggle via automute + - LP: #1566544 + * mmc: mmc_spi: Add Card Detect comments and fix CD GPIO case + - LP: #1566544 + * nfsd: fix deadlock secinfo+readdir compound + - LP: #1566544 + * vfs: show_vfsstat: do not ignore errors from show_devname method + - LP: #1566544 + * x86/iopl: Fix iopl capability check on Xen PV + - LP: #1566544 + * crypto: marvell/cesa - forward devm_ioremap_resource() error code + - LP: #1566544 + * mmc: sdhci: Fix override of timeout clk wrt max_busy_timeout + - LP: #1566544 + * drm/amdgpu: include the right version of gmc header files for iceland + - LP: #1566544 + * Input: ims-pcu - sanity check against missing interfaces + - LP: #1566544 + * watchdog: don't run proc_watchdog_update if new value is same as old + - LP: #1566544 + * mm: memcontrol: reclaim when shrinking memory.high below usage + - LP: #1566544 + * mm: memcontrol: reclaim and OOM kill when shrinking memory.max below + usage + - LP: #1566544 + * x86/apic: Fix suspicious RCU usage in + smp_trace_call_function_interrupt() + - LP: #1566544 + * USB: usb_driver_claim_interface: add sanity checking + - LP: #1566544 + * USB: uas: Reduce can_queue to MAX_CMNDS + - LP: #1566544 + * tracing: Have preempt(irqs)off trace preempt disabled functions + - LP: #1566544 + * tracing: Fix crash from reading trace_pipe with sendfile + - LP: #1566544 + * splice: handle zero nr_pages in splice_to_pipe() + - LP: #1566544 + * ALSA: usb-audio: add Microsoft HD-5001 to quirks + - LP: #1566544 + * writeback, cgroup: fix premature wb_put() in + locked_inode_to_wb_and_lock_list() + - LP: #1566544 + * fs-writeback: unplug before cond_resched in writeback_sb_inodes + - LP: #1566544 + * writeback, cgroup: fix use of the wrong bdi_writeback which mismatches + the inode + - LP: #1566544 + * bitops: Do not default to __clear_bit() for __clear_bit_unlock() + - LP: #1566544 + * target: Fix target_release_cmd_kref shutdown comp leak + - LP: #1566544 + * KVM: VMX: avoid guest hang on invalid invept instruction + - LP: #1566544 + * KVM: fix spin_lock_init order on x86 + - LP: #1566544 + * tracing: Fix trace_printk() to print when not using bprintk() + - LP: #1566544 + * fs/coredump: prevent fsuid=0 dumps into user-controlled directories + - LP: #1566544 + * rapidio/rionet: fix deadlock on SMP + - LP: #1566544 + * staging: comedi: ni_mio_common: fix the ni_write[blw]() functions + - LP: #1566544 + * staging: android: ion_test: fix check of + platform_device_register_simple() error code + - LP: #1566544 + * ideapad-laptop: Add ideapad Y700 (15) to the no_hw_rfkill DMI list + - LP: #1566544 + * MAINTAINERS: Update mailing list and web page for hwmon subsystem + - LP: #1566544 + * ocfs2/dlm: fix race between convert and recovery + - LP: #1566544 + * ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list + - LP: #1566544 + * mm/page_alloc: prevent merging between isolated and other pageblocks + - LP: #1566544 + * mac80211: avoid excessive stack usage in sta_info + - LP: #1566544 + * clk: xgene: Add missing parenthesis when clearing divider value + - LP: #1566544 + * clk: qcom: msm8960: Fix ce3_src register offset + - LP: #1566544 + * xen kconfig: don't "select INPUT_XEN_KBDDEV_FRONTEND" + - LP: #1566544 + * ppp: take reference on channels netns + - LP: #1566544 + * mdio-sun4i: oops in error handling in probe + - LP: #1566544 + * clk: rockchip: free memory in error cases when registering clock + branches + - LP: #1566544 + * ARC: bitops: Remove non relevant comments + - LP: #1566544 + * mac80211: fix txq queue related crashes + - LP: #1566544 + * net: Fix use after free in the recvmmsg exit path + - LP: #1566544 + * ath9k: fix misleading indentation + - LP: #1566544 + * sctp: fix the transports round robin issue when init is retransmitted + - LP: #1566544 + * ethernet: micrel: fix some error codes + - LP: #1566544 + * megaraid_sas: add missing curly braces in ioctl handler + - LP: #1566544 + * clk-divider: make sure read-only dividers do not write to their + register + - LP: #1566544 + * misc/bmp085: Enable building as a module + - LP: #1566544 + * HID: logitech: fix Dual Action gamepad support + - LP: #1566544 + * net/mlx5: Make command timeout way shorter + - LP: #1566544 + * ASoC: ssm4567: Reset device before regcache_sync() + - LP: #1566544 + * fbdev: da8xx-fb: fix videomodes of lcd panels + - LP: #1566544 + * clk: qcom: msm8960: fix ce3_core clk enable register + - LP: #1566544 + * ipvs: correct initial offset of Call-ID header search in SIP + persistence engine + - LP: #1566544 + * drm/i915: Cleanup phys status page too + - LP: #1566544 + * ata: ahci_xgene: dereferencing uninitialized pointer in probe + - LP: #1566544 + * ath9k: fix buffer overrun for ar9287 + - LP: #1566544 + * perf tools: handle spaces in file names obtained from /proc/pid/maps + - LP: #1566544 + * rtc: ds1685: passing bogus values to irq_restore + - LP: #1566544 + * ARM: davinci: make I2C support optional + - LP: #1566544 + * drm/amdkfd: uninitialized variable in + dbgdev_wave_control_set_registers() + - LP: #1566544 + * mtd: map: fix .set_vpp() documentation + - LP: #1566544 + * ARM: OMAP3: Add cpuidle parameters table for omap3430 + - LP: #1566544 + * efi: Expose non-blocking set_variable() wrapper to efivars + - LP: #1566544 + * rtc: vr41xx: Wire up alarm_irq_enable + - LP: #1566544 + * sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a + race + - LP: #1566544 + * ipv4: fix broadcast packets reception + - LP: #1566544 + * lpfc: fix misleading indentation + - LP: #1566544 + * sched/preempt, sh: kmap_coherent relies on disabled preemption + - LP: #1566544 + * ipip: Properly mark ipip GRO packets as encapsulated. + - LP: #1566544 + * spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs + - LP: #1566544 + * ASoC: s3c24xx: use const snd_soc_component_driver pointer + - LP: #1566544 + * mlx4: add missing braces in verify_qp_parameters + - LP: #1566544 + * clk: meson: Fix meson_clk_register_clks() signature type mismatch + - LP: #1566544 + * coda: fix error path in case of missing pdata on non-DT platform + - LP: #1566544 + * kbuild/mkspec: fix grub2 installkernel issue + - LP: #1566544 + * bpf: avoid copying junk bytes in bpf_get_current_comm() + - LP: #1566544 + * mac80211: fix unnecessary frame drops in mesh fwding + - LP: #1566544 + * mtd: brcmnand: Fix v7.1 register offsets + - LP: #1566544 + * mac80211: fix ibss scan parameters + - LP: #1566544 + * at803x: fix reset handling + - LP: #1566544 + * rtc: hym8563: fix invalid year calculation + - LP: #1566544 + * perf pmu: Fix misleadingly indented assignment (whitespace) + - LP: #1566544 + * paride: make 'verbose' parameter an 'int' again + - LP: #1566544 + * regulator: s5m8767: fix get_register() error handling + - LP: #1566544 + * ppp: ensure file->private_data can't be overridden + - LP: #1566544 + * clk: versatile: sp810: support reentrance + - LP: #1566544 + * net: add description for len argument of dev_get_phys_port_name + - LP: #1566544 + * net: bcmgenet: fix dma api length mismatch + - LP: #1566544 + * ARM: prima2: always enable reset controller + - LP: #1566544 + * drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors + - LP: #1566544 + * perf stat: Document --detailed option + - LP: #1566544 + * v4l: vsp1: Set the SRU CTRL0 register when starting the stream + - LP: #1566544 + * ipvs: drop first packet to redirect conntrack + - LP: #1566544 + * rtc: max77686: Properly handle regmap_irq_get_virq() error code + - LP: #1566544 + * x86/iopl/64: Properly context-switch IOPL on Xen PV + - LP: #1566544 + * Linux 4.2.8-ckt7 + - LP: #1566544 + * PKCS#7: pkcs7_validate_trust(): initialize the _trusted output argument + - LP: #1571027 + * ALSA: hda - Asus N750JV external subwoofer fixup + - LP: #1571027 + * ALSA: hda - Fix white noise on Asus N750JV headphone + - LP: #1571027 + * ALSA: hda - Apply fix for white noise on Asus N550JV, too + - LP: #1571027 + * drm/radeon: add a dpm quirk for sapphire Dual-X R7 370 2G D5 + - LP: #1571027 + * fs: add file_dentry() + - LP: #1571027 + * nfs: use file_dentry() + - LP: #1571027 + * hwmon: (max1111) Return -ENODEV from max1111_read_channel if not + instantiated + - LP: #1571027 + * drm/radeon: add another R7 370 quirk + - LP: #1571027 + * drm/radeon: add a dpm quirk for all R7 370 parts + - LP: #1571027 + * powerpc/mm: Fixup preempt underflow with huge pages + - LP: #1571027 + * pinctrl: pistachio: fix mfio84-89 function description and pinmux. + - LP: #1571027 + * pinctrl: sunxi: Fix A33 external interrupts not working + - LP: #1571027 + * usb: renesas_usbhs: avoid NULL pointer derefernce in + usbhsf_pkt_handler() + - LP: #1571027 + * usb: renesas_usbhs: disable TX IRQ before starting TX DMAC transfer + - LP: #1571027 + * btrfs: fix crash/invalid memory access on fsync when using overlayfs + - LP: #1571027 + * ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk() + - LP: #1571027 + * ALSA: usb-audio: Fix double-free in error paths after + snd_usb_add_audio_stream() call + - LP: #1571027 + * USB: mct_u232: add sanity checking in probe + - LP: #1571027 + - CVE-2016-3136 + * USB: cypress_m8: add endpoint sanity check + - LP: #1571027 + - CVE-2016-3137 + * USB: digi_acceleport: do sanity checking for the number of ports + - LP: #1571027 + * [media] au0828: fix au0828_v4l2_close() dev_state race condition + - LP: #1571027 + * [media] au0828: Fix dev_state handling + - LP: #1571027 + * sd: Fix excessive capacity printing on devices with blocks bigger than + 512 bytes + - LP: #1571027 + * drm/dp: move hw_mutex up the call stack + - LP: #1571027 + * drm/udl: Use unlocked gem unreferencing + - LP: #1571027 + * ext4: add lockdep annotations for i_data_sem + - LP: #1571027 + * ALSA: hda - fix front mic problem for a HP desktop + - LP: #1564712, #1571027 + * KVM: x86: Inject pending interrupt even if pending nmi exist + - LP: #1571027 + * ALSA: timer: Use mod_timer() for rearming the system timer + - LP: #1571027 + * mm: fix invalid node in alloc_migrate_target() + - LP: #1571027 + * iio: st_magn: always define ST_MAGN_TRIGGER_SET_STATE + - LP: #1571027 + * ext4: ignore quota mount options if the quota feature is enabled + - LP: #1571027 + * xen/events: Mask a moving irq + - LP: #1571027 + * usb: renesas_usbhs: fix to avoid using a disabled ep in + usbhsg_queue_done() + - LP: #1571027 + * mac80211: properly deal with station hashtable insert errors + - LP: #1571027 + * compiler-gcc: disable -ftracer for __noclone functions + - LP: #1571027 + * rbd: use GFP_NOIO consistently for request allocations + - LP: #1571027 + * Btrfs: fix file/data loss caused by fsync after rename and new inode + - LP: #1571027 + * USB: serial: ftdi_sio: Add support for ICP DAS I-756xU devices + - LP: #1571027 + * USB: serial: cp210x: Adding GE Healthcare Device ID + - LP: #1571027 + * USB: option: add "D-Link DWM-221 B1" device id + - LP: #1571027 + * virtio: virtio 1.0 cs04 spec compliance for reset + - LP: #1571027 + * libnvdimm: fix smart data retrieval + - LP: #1571027 + * gpio: pca953x: Use correct u16 value for register word write + - LP: #1571027 + * parisc: Avoid function pointers for kernel exception routines + - LP: #1571027 + * parisc: Fix kernel crash with reversed copy_from_user() + - LP: #1571027 + * parisc: Unbreak handling exceptions from kernel modules + - LP: #1571027 + * net: macb: replace macb_writel() call by queue_writel() to update queue + ISR + - LP: #1571027 + * net: bcmgenet: fix dev->stats.tx_bytes accounting + - LP: #1571027 + * net: bcmgenet: fix skb_len in bcmgenet_xmit_single() + - LP: #1571027 + * ipv6: udp: fix UDP_MIB_IGNOREDMULTI updates + - LP: #1571027 + * pinctrl: nomadik: fix pull debug print inversion + - LP: #1571027 + * ip6_tunnel: set rtnl_link_ops before calling register_netdevice + - LP: #1571027 + * KVM: x86: move steal time initialization to vcpu entry time + - LP: #1571027 + * lib/ucs2_string: Add ucs2 -> utf8 helper functions + - LP: #1571027 + * efi: Use ucs2_as_utf8 in efivarfs instead of open coding a bad version + - LP: #1571027 + * efi: Do variable name validation tests in utf8 + - LP: #1571027 + * efi: Make our variable validation list include the guid + - LP: #1571027 + * efi: Make efivarfs entries immutable by default + - LP: #1571027 + * efi: Add pstore variables to the deletion whitelist + - LP: #1571027 + * lib/ucs2_string: Correct ucs2 -> utf8 conversion + - LP: #1571027 + * ipr: Fix out-of-bounds null overwrite + - LP: #1571027 + * ipr: Fix regression when loading firmware + - LP: #1571027 + * perf/x86/intel: Fix PEBS data source interpretation on Nehalem/Westmere + - LP: #1571027 + * ALSA: hda - Add new GPU codec ID 0x10de0082 to snd-hda + - LP: #1571027 + * mwifiex: fix corner case association failure + - LP: #1571027 + * net: phy: at803x: Request 'reset' GPIO only for AT8030 PHY + - LP: #1571027 + * Linux 4.2.8-ckt8 + - LP: #1571027 + + -- Kamal Mostafa Thu, 21 Apr 2016 14:01:37 -0700 + +linux-raspi2 (4.2.0-1028.36) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1557882 + + [ Ubuntu: 4.2.0-35.40 ] + + * Revert "workqueue: make sure delayed work run in local cpu" + - LP: #1556269 + * Revert "ALSA: hda - Fix noise on Gigabyte Z170X mobo" + - LP: #1556269 + * KVM: VMX: Fix host initiated access to guest MSR_TSC_AUX + - LP: #1552592 + * locking/qspinlock: Move __ARCH_SPIN_LOCK_UNLOCKED to qspinlock_types.h + - LP: #1545330 + * [media] usbvision fix overflow of interfaces array + - LP: #1556269 + * [media] usbvision: fix crash on detecting device with invalid + configuration + - LP: #1556269 + * ASN.1: Fix non-match detection failure on data overrun + - LP: #1556269 + * iw_cxgb3: Fix incorrectly returning error on success + - LP: #1556269 + * EVM: Use crypto_memneq() for digest comparisons + - LP: #1556269 + * vmstat: explicitly schedule per-cpu work on the CPU we need it to run + on + - LP: #1556269 + * x86/entry/compat: Add missing CLAC to entry_INT80_32 + - LP: #1556269 + * iio-light: Use a signed return type for ltr501_match_samp_freq() + - LP: #1556269 + * iio: add IIO_TRIGGER dependency to STK8BA50 + - LP: #1556269 + * iio: add HAS_IOMEM dependency to VF610_ADC + - LP: #1556269 + * iio: dac: mcp4725: set iio name property in sysfs + - LP: #1556269 + * iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG + - LP: #1556269 + * iio: light: acpi-als: Report data as processed + - LP: #1556269 + * iio:adc:ti_am335x_adc Fix buffered mode by identifying as software + buffer. + - LP: #1556269 + * ASoC: rt5645: fix the shift bit of IN1 boost + - LP: #1556269 + * ARCv2: STAR 9000950267: Handle return from intr to Delay Slot #2 + - LP: #1556269 + * cgroup: make sure a parent css isn't offlined before its children + - LP: #1556269 + * ARM: OMAP2+: Fix wait_dll_lock_timed for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix l2dis_3630 for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix save_secure_ram_context for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix l2_inv_api_params for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix ppa_zero_params and ppa_por_params for rodata + - LP: #1556269 + * rtlwifi: rtl8821ae: Fix 5G failure when EEPROM is incorrectly encoded + - LP: #1556269 + * PCI/AER: Flush workqueue on device remove to avoid use-after-free + - LP: #1556269 + * ARM: dts: Fix wl12xx missing clocks that cause hangs + - LP: #1556269 + * libata: disable forced PORTS_IMPL for >= AHCI 1.3 + - LP: #1556269 + * mac80211: Requeue work after scan complete for all VIF types. + - LP: #1556269 + * rfkill: fix rfkill_fop_read wait_event usage + - LP: #1556269 + * ARM: dts: at91: sama5d4: fix instance id of DBGU + - LP: #1556269 + * ARM: dts: at91: sama5d4ek: add phy address and IRQ for macb0 + - LP: #1556269 + * ARM: dts: at91: sama5d4 xplained: fix phy0 IRQ type + - LP: #1556269 + * crypto: shash - Fix has_key setting + - LP: #1556269 + * Input: vmmouse - fix absolute device registration + - LP: #1556269 + * spi: atmel: fix gpio chip-select in case of non-DT platform + - LP: #1556269 + * drm/i915/dp: fall back to 18 bpp when sink capability is unknown + - LP: #1556269 + * ALSA: usb-audio: Fix OPPO HA-1 vendor ID + - LP: #1556269 + * ALSA: usb-audio: Add native DSD support for PS Audio NuWave DAC + - LP: #1556269 + * ALSA: usb-audio: Add quirk for Microsoft LifeCam HD-6000 + - LP: #1556269 + * target: Fix WRITE_SAME/DISCARD conversion to linux 512b sectors + - LP: #1556269 + * crypto: algif_hash - wait for crypto_ahash_init() to complete + - LP: #1556269 + * iio: inkern: fix a NULL dereference on error + - LP: #1556269 + * iio: pressure: mpl115: fix temperature offset sign + - LP: #1556269 + * intel_scu_ipcutil: underflow in scu_reg_access() + - LP: #1556269 + * ALSA: seq: Fix race at closing in virmidi driver + - LP: #1556269 + * ALSA: rawmidi: Remove kernel WARNING for NULL user-space buffer check + - LP: #1556269 + * ALSA: pcm: Fix potential deadlock in OSS emulation + - LP: #1556269 + * ALSA: seq: Fix yet another races among ALSA timer accesses + - LP: #1556269 + * ALSA: timer: Code cleanup + - LP: #1556269 + * ALSA: timer: Fix link corruption due to double start or stop + - LP: #1556269 + * libata: fix sff host state machine locking while polling + - LP: #1556269 + * MIPS: Fix buffer overflow in syscall_get_arguments() + - LP: #1556269 + * cputime: Prevent 32bit overflow in time[val|spec]_to_cputime() + - LP: #1556269 + * drm: add helper to check for wc memory support + - LP: #1556269 + * drm/radeon: mask out WC from BO on unsupported arches + - LP: #1556269 + * drm/amdgpu: mask out WC from BO on unsupported arches + - LP: #1556269 + * ASoC: dpcm: fix the BE state on hw_free + - LP: #1556269 + * drm/amdgpu: move gmc7 support out of CIK dependency + - LP: #1556269 + * drm/amdgpu: iceland use CI based MC IP + - LP: #1556269 + * drm/amdgpu: The VI specific EXE bit should only apply to GMC v8.0 above + - LP: #1556269 + * drm/amdgpu: pull topaz gmc bits into gmc_v7 + - LP: #1556269 + * drm/amdgpu: drop topaz support from gmc8 module + - LP: #1556269 + * modules: fix modparam async_probe request + - LP: #1556269 + * module: wrapper for symbol name. + - LP: #1556269 + * ALSA: hda - Add fixup for Mac Mini 7,1 model + - LP: #1556269 + * ALSA: rawmidi: Make snd_rawmidi_transmit() race-free + - LP: #1556269 + * ALSA: rawmidi: Fix race at copying & updating the position + - LP: #1556269 + * ALSA: seq: Fix lockdep warnings due to double mutex locks + - LP: #1556269 + * drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration + - LP: #1556269 + * radix-tree: fix race in gang lookup + - LP: #1556269 + * drivers/hwspinlock: fix race between radix tree insertion and lookup + - LP: #1556269 + * btrfs: fix clone / extent-same deadlocks + - LP: #1556269 + * Btrfs: fix invalid page accesses in extent_same (dedup) ioctl + - LP: #1556269 + * Btrfs: fix page reading in extent_same ioctl leading to csum errors + - LP: #1556269 + * usb: xhci: handle both SSIC ports in PME stuck quirk + - LP: #1556269 + * usb: xhci: add a quirk bit for ssic port unused + - LP: #1556269 + * usb: xhci: set SSIC port unused only if xhci_suspend succeeds + - LP: #1556269 + * usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Broxton-M platforms + - LP: #1556269 + * xhci: Fix list corruption in urb dequeue at host removal + - LP: #1556269 + * target: Invoke release_cmd() callback without holding a spinlock + - LP: #1556269 + * target: Fix LUN_RESET active I/O handling for ACK_KREF + - LP: #1556269 + * target: Fix LUN_RESET active TMR descriptor handling + - LP: #1556269 + * target: Fix TAS handling for multi-session se_node_acls + - LP: #1556269 + * [media] tda1004x: only update the frontend properties if locked + - LP: #1556269 + * ALSA: timer: Fix leftover link at closing + - LP: #1556269 + * [media] saa7134-alsa: Only frees registered sound cards + - LP: #1556269 + * ARM: nomadik: fix up SD/MMC DT settings + - LP: #1556269 + * Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl + - LP: #1556269 + * scsi_dh_rdac: always retry MODE SELECT on command lock violation + - LP: #1556269 + * SCSI: Add Marvell Console to VPD blacklist + - LP: #1556269 + * drm: fix missing reference counting decrease + - LP: #1556269 + * drm: Add drm_fixp_from_fraction and drm_fixp2int_ceil + - LP: #1556269 + * drm/dp/mst: Calculate MST PBN with 31.32 fixed point + - LP: #1556269 + * drm/dp/mst: Reverse order of MST enable and clearing VC payload table. + - LP: #1556269 + * drm/dp/mst: deallocate payload on port destruction + - LP: #1556269 + * ALSA: hda - Fix static checker warning in patch_hdmi.c + - LP: #1556269 + * target: Fix remote-port TMR ABORT + se_cmd fabric stop + - LP: #1556269 + * dump_stack: avoid potential deadlocks + - LP: #1556269 + * mm, vmstat: fix wrong WQ sleep when memory reclaim doesn't make any + progress + - LP: #1556269 + * ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery + cleanup + - LP: #1556269 + * mm: replace vma_lock_anon_vma with anon_vma_lock_read/write + - LP: #1556269 + * radix-tree: fix oops after radix_tree_iter_retry + - LP: #1556269 + * crypto: user - lock crypto_alg_list on alg dump + - LP: #1556269 + * crypto: algif_skcipher - Do not set MAY_BACKLOG on the async path + - LP: #1556269 + * crypto: atmel-sha - fix atmel_sha_remove() + - LP: #1556269 + * crypto: marvell/cesa - fix test in mv_cesa_dev_dma_init() + - LP: #1556269 + * target: Fix race with SCF_SEND_DELAYED_TAS handling + - LP: #1556269 + * qla2xxx: Fix stale pointer access. + - LP: #1556269 + * serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) + - LP: #1556269 + * tty: Add support for PCIe WCH382 2S multi-IO card + - LP: #1556269 + * pty: fix possible use after free of tty->driver_data + - LP: #1556269 + * pty: make sure super_block is still valid in final /dev/tty close + - LP: #1556269 + * ALSA: hda - Fix speaker output from VAIO AiO machines + - LP: #1556269 + * klist: fix starting point removed bug in klist iterators + - LP: #1556269 + * ALSA: dummy: Implement timer backend switching more safely + - LP: #1556269 + * drm/i915/dsi: defend gpio table against out of bounds access + - LP: #1556269 + * drm/i915/dsi: don't pass arbitrary data to sideband + - LP: #1556269 + * powerpc: Fix dedotify for binutils >= 2.26 + - LP: #1556269 + * ALSA: timer: Fix wrong instance passed to slave callbacks + - LP: #1556269 + * ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz() + - LP: #1556269 + * xen/scsiback: correct frontend counting + - LP: #1556269 + * nfs: fix nfs_size_to_loff_t + - LP: #1556269 + * ALSA: timer: Fix race between stop and interrupt + - LP: #1556269 + * ALSA: hda - Fix bad dereference of jack object + - LP: #1556269 + * ALSA: timer: Fix race at concurrent reads + - LP: #1556269 + * phy: core: fix wrong err handle for phy_power_on + - LP: #1556269 + * phy: twl4030-usb: Relase usb phy on unload + - LP: #1556269 + * phy: twl4030-usb: Fix unbalanced pm_runtime_enable on module reload + - LP: #1556269 + * drm/i915/skl: Don't skip mst encoders in skl_ddi_pll_select() + - LP: #1556269 + * drm/i915: fix error path in intel_setup_gmbus() + - LP: #1556269 + * ahci: Intel DNV device IDs SATA + - LP: #1556269 + * workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup + - LP: #1556269 + * drm/amdgpu: fix s4 resume + - LP: #1556269 + * drm/amdgpu: remove unnecessary forward declaration + - LP: #1556269 + * drm/radeon: hold reference to fences in radeon_sa_bo_new + - LP: #1556269 + * drm/amdgpu: fix issue with overlapping userptrs + - LP: #1556269 + * cifs: fix erroneous return value + - LP: #1556269 + * s390/dasd: prevent incorrect length error under z/VM after PAV changes + - LP: #1556269 + * s390/dasd: fix refcount for PAV reassignment + - LP: #1556269 + * ARM: 8519/1: ICST: try other dividends than 1 + - LP: #1556269 + * btrfs: properly set the termination value of ctx->pos in readdir + - LP: #1556269 + * irqchip/gic-v3-its: Fix double ICC_EOIR write for LPI in EOImode==1 + - LP: #1556269 + * scsi: fix soft lockup in scsi_remove_target() on module removal + - LP: #1556269 + * ext4: fix potential integer overflow + - LP: #1556269 + * ext4: don't read blocks from disk after extents being swapped + - LP: #1556269 + * bio: return EINTR if copying to user space got interrupted + - LP: #1556269 + * iwlwifi: mvm: don't allow sched scans without matches to be started + - LP: #1556269 + * powerpc/eeh: Fix stale cached primary bus + - LP: #1556269 + * xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY + - LP: #1556269 + * xen/pciback: Save the number of MSI-X entries to be copied later. + - LP: #1556269 + * xen/pcifront: Fix mysterious crashes when NUMA locality information was + extracted. + - LP: #1556269 + * ALSA: seq: Fix leak of pool buffer at concurrent writes + - LP: #1556269 + * ALSA: hda - Cancel probe work instead of flush at remove + - LP: #1556269 + * dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer + - LP: #1556269 + * tracepoints: Do not trace when cpu is offline + - LP: #1556269 + * tracing: Fix freak link error caused by branch tracer + - LP: #1556269 + * ALSA: seq: Fix double port list deletion + - LP: #1556269 + * drm/amdgpu: use post-decrement in error handling + - LP: #1556269 + * drm/radeon: use post-decrement in error handling + - LP: #1556269 + * drm/qxl: use kmalloc_array to alloc reloc_info in + qxl_process_single_command + - LP: #1556269 + * drm: Fix treatment of drm_vblank_offdelay in drm_vblank_on() (v2) + - LP: #1556269 + * x86/uaccess/64: Make the __copy_user_nocache() assembly code more + readable + - LP: #1556269 + * x86/uaccess/64: Handle the caching of 4-byte nocache copies properly in + __copy_user_nocache() + - LP: #1556269 + * usb: dwc3: Fix assignment of EP transfer resources + - LP: #1556269 + * powerpc/ioda: Set "read" permission when "write" is set + - LP: #1556269 + * NFSv4: Fix a dentry leak on alias use + - LP: #1556269 + * x86/mm: Fix vmalloc_fault() to handle large pages properly + - LP: #1556269 + * ALSA: pcm: Fix rwsem deadlock for non-atomic PCM stream + - LP: #1556269 + * USB: option: add support for SIM7100E + - LP: #1556269 + * USB: cp210x: add IDs for GE B650V3 and B850V3 boards + - LP: #1556269 + * USB: option: add "4G LTE usb-modem U901" + - LP: #1556269 + * mm: fix regression in remap_file_pages() emulation + - LP: #1556269 + * ipc: convert invalid scenarios to use WARN_ON + - LP: #1556269 + * ipc/shm: handle removed segments gracefully in shm_mmap() + - LP: #1556269 + * hwmon: (ads1015) Handle negative conversion values correctly + - LP: #1556269 + * ext4: fix bh->b_state corruption + - LP: #1556269 + * ext4: fix crashes in dioread_nolock mode + - LP: #1556269 + * nfit: fix multi-interface dimm handling, acpi6.1 compatibility + - LP: #1556269 + * hwmon: (gpio-fan) Remove un-necessary speed_index lookup for thermal + hook + - LP: #1556269 + * kernel/resource.c: fix muxed resource handling in __request_region() + - LP: #1556269 + * drivers: android: correct the size of struct binder_uintptr_t for + BC_DEAD_BINDER_DONE + - LP: #1556269 + * can: ems_usb: Fix possible tx overflow + - LP: #1556269 + * dm: fix dm_rq_target_io leak on faults with .request_fn DM w/ blk-mq + paths + - LP: #1556269 + * s390/compat: correct restore of high gprs on signal return + - LP: #1556269 + * drm/amdgpu/pm: adjust display configuration after powerstate + - LP: #1556269 + * ARM: OMAP2+: Fix onenand initialization to avoid filesystem corruption + - LP: #1556269 + * sunrpc/cache: fix off-by-one in qword_get() + - LP: #1556269 + * KVM: arm/arm64: vgic: Ensure bitmaps are long enough + - LP: #1556269 + * ARCv2: SMP: Emulate IPI to self using software triggered interrupt + - LP: #1556269 + * KVM: x86: fix missed hardware breakpoints + - LP: #1556269 + * KVM: async_pf: do not warn on page allocation failures + - LP: #1556269 + * tracing: Fix showing function event in available_events + - LP: #1556269 + * libceph: don't bail early from try_read() when skipping a message + - LP: #1556269 + * libceph: use the right footer size when skipping a message + - LP: #1556269 + * ALSA: hda - Fixing background noise on Dell Inspiron 3162 + - LP: #1549620, #1556269 + * KVM: x86: MMU: fix ubsan index-out-of-range warning + - LP: #1556269 + * ALSA: hda/realtek - Support Dell headset mode for ALC225 + - LP: #1556269 + * ALSA: hda - Fixup speaker pass-through control for nid 0x14 on ALC225 + - LP: #1549660, #1556269 + * ALSA: hda - Fix headset support and noise on HP EliteBook 755 G2 + - LP: #1556269 + * ALSA: hda - Loop interrupt handling until really cleared + - LP: #1556269 + * x86/mpx: Fix off-by-one comparison with nr_registers + - LP: #1556269 + * mm: thp: fix SMP race condition between THP page fault and + MADV_DONTNEED + - LP: #1556269 + * ocfs2: unlock inode if deleting inode from orphan fails + - LP: #1556269 + * hpfs: don't truncate the file when delete fails + - LP: #1556269 + * do_last(): don't let a bogus return value from ->open() et.al. to + confuse us + - LP: #1556269 + * namei: ->d_inode of a pinned dentry is stable only for positives + - LP: #1556269 + * should_follow_link(): validate ->d_seq after having decided to follow + - LP: #1556269 + * do_last(): ELOOP failure exit should be done after leaving RCU mode + - LP: #1556269 + * af_iucv: Validate socket address length in iucv_sock_bind() + - LP: #1556269 + * net: dp83640: Fix tx timestamp overflow handling. + - LP: #1556269 + * tcp: fix NULL deref in tcp_v4_send_ack() + - LP: #1556269 + * af_unix: fix struct pid memory leak + - LP: #1556269 + * pptp: fix illegal memory access caused by multiple bind()s + - LP: #1556269 + * sctp: allow setting SCTP_SACK_IMMEDIATELY by the application + - LP: #1556269 + * switchdev: Require RTNL mutex to be held when sending FDB notifications + - LP: #1556269 + * tcp: beware of alignments in tcp_get_info() + - LP: #1556269 + * ipv6: enforce flowi6_oif usage in ip6_dst_lookup_tail() + - LP: #1556269 + * ipv6/udp: use sticky pktinfo egress ifindex on connect() + - LP: #1556269 + * net/ipv6: add sysctl option accept_ra_min_hop_limit + - LP: #1556269 + * ipv6: addrconf: Fix recursive spin lock call + - LP: #1556269 + * ipv6: fix a lockdep splat + - LP: #1556269 + * unix: correctly track in-flight fds in sending process user_struct + - LP: #1556269 + * net:Add sysctl_max_skb_frags + - LP: #1556269 + * tg3: Fix for tg3 transmit queue 0 timed out when too many gso_segs + - LP: #1556269 + * sctp: translate network order to host order when users get a hmacid + - LP: #1556269 + * flow_dissector: Fix unaligned access in __skb_flow_dissector when used + by eth_get_headlen + - LP: #1556269 + * net: Copy inner L3 and L4 headers as unaligned on GRE TEB + - LP: #1556269 + * bpf: fix branch offset adjustment on backjumps after patching ctx + expansion + - LP: #1556269 + * bonding: Fix ARP monitor validation + - LP: #1556269 + * ipv4: fix memory leaks in ip_cmsg_send() callers + - LP: #1556269 + * af_unix: Guard against other == sk in unix_dgram_sendmsg + - LP: #1556269 + * qmi_wwan: add "4G LTE usb-modem U901" + - LP: #1556269 + * net/mlx4_en: Count HW buffer overrun only once + - LP: #1556269 + * net/mlx4_en: Choose time-stamping shift value according to HW frequency + - LP: #1556269 + * net/mlx4_en: Avoid changing dev->features directly in run-time + - LP: #1556269 + * l2tp: Fix error creating L2TP tunnels + - LP: #1556269 + * pppoe: fix reference counting in PPPoE proxy + - LP: #1556269 + * route: check and remove route cache when we get route + - LP: #1556269 + * rtnl: RTM_GETNETCONF: fix wrong return value + - LP: #1556269 + * unix_diag: fix incorrect sign extension in unix_lookup_by_ino + - LP: #1556269 + * sctp: Fix port hash table size computation + - LP: #1556269 + * net/mlx4_core: Do not BUG_ON during reset when PCI is offline + - LP: #1556269 + * s390/perf_event: fix address range for asynchronous stack + - LP: #1556269 + * batman-adv: Avoid endless loop in bat-on-bat netdevice check + - LP: #1556269 + * af_unix: Don't set err in unix_stream_read_generic unless there was an + error + - LP: #1556269 + * netlink: not trim skb for mmaped socket when dump + - LP: #1556269 + * Input: xpad - remove unused function + - LP: #1556269 + * ARM: dts: kirkwood: use unique machine name for ds112 + - LP: #1556269 + * s390/stacktrace: fix address ranges for asynchronous and panic stack + - LP: #1556269 + * MAINTAINERS: Remove stale entry for BCM33xx chips + - LP: #1556269 + * [media] exynos4-is: fix a format string bug + - LP: #1556269 + * net/mlx4_core: Fix potential corruption in counters database + - LP: #1556269 + * net: phy: bcm7xxx: Fix shadow mode 2 disabling + - LP: #1556269 + * writeback: initialize inode members that track writeback history + - LP: #1556269 + * bonding: don't use stale speed and duplex information + - LP: #1556269 + * net: phy: bcm7xxx: Fix bcm7xxx_config_init() check + - LP: #1556269 + * s390/oprofile: fix address range for asynchronous stack + - LP: #1556269 + * net: phy: Fix phy_mac_interrupt() + - LP: #1556269 + * net: phy: Avoid polling PHY with PHY_IGNORE_INTERRUPTS + - LP: #1556269 + * net: phy: bcm7xxx: Fix 40nm EPHY features + - LP: #1556269 + * netfilter: nfnetlink: correctly validate length of batch messages + - LP: #1556269 + * pipe: limit the per-user amount of pages allocated in pipes + - LP: #1556269 + * Linux 4.2.8-ckt5 + - LP: #1556269 + * x86/mm: Fix slow_virt_to_phys() for X86_PAE again + - LP: #1549601 + * Drivers: hv: vss: run only on supported host versions + - LP: #1496927 + * ovl: copy new uid/gid into overlayfs runtime inode + - LP: #1555997 + * sched/numa: Fix use-after-free bug in the task_numa_compare + - LP: #1527643 + + -- Brad Figg Wed, 16 Mar 2016 11:46:29 -0700 + +linux-raspi2 (4.2.0-1027.35) wily; urgency=low + + [ Brad Figg ] + + * rebased on Ubuntu-4.2.0-34.39 + + -- Brad Figg Tue, 08 Mar 2016 11:32:12 -0800 + +linux-raspi2 (4.2.0-1026.34) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1550761 + * rebased on Ubuntu-4.2.0-32.37 + + [ Kamal Mostafa ] + + * Merged back Ubuntu-4.2.0-31.36 + + -- Brad Figg Mon, 29 Feb 2016 08:27:22 -0800 + +linux-raspi2 (4.2.0-1025.32) wily; urgency=low + + [ Luis Henriques ] + + * rebased on Ubuntu-4.2.0-30.35 + + [ Ubuntu: 4.2.0-30.35 ] + + * SAUCE: cred: Add clone_cred() interface + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Use mounter's credentials instead of selectively + raising caps + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Skip permission checking for trusted.overlayfs.* + xattrs + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Be more careful about copying up sxid files + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Propogate nosuid from lower and upper mounts + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + + -- Luis Henriques Fri, 19 Feb 2016 12:12:51 +0000 + +linux-raspi2 (4.2.0-1024.31) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1543518 + * rebased on Ubuntu-4.2.0-29.34 + + [ Ubuntu: 4.2.0-29.34 ] + + * Release Tracking Bug + - LP: #1543167 + * Revert "SAUCE: apparmor: fix sleep from invalid context" + - LP: #1542049 + * Revert "af_unix: Revert 'lock_interruptible' in stream receive code" + - LP: #1540731 + + -- Luis Henriques Tue, 09 Feb 2016 11:00:40 +0000 + +linux-raspi2 (4.2.0-1023.30) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1540861 + + [ Tim Gardner ] + + * Dropped ('pinctrl-bcm2835: bcm2835_gpio_direction_output must set the value') as + it conflicted with upstream stable ('pinctrl: bcm2835: Fix initial value for direction_output') + and provided the same functionality. + * Added upsream cherry-pick ad82362b2defd4adad87d8538617b2f51a4bf9c3 ('mm: add dma_pool_zalloc() call to DMA API') + in order to compensate for a missing stable patch. + * Revert "dmaengine: bcm2835-dma: Convert to use DMA pool" + This patch conflicts with the Raspberry Pi 2 BSP patches that implement DMA. It professes to + fix a memleak, but does so while also converting to a completely new DMA API (which completely breaks + the BSP implementation for DMA). + * Rebased against Ubuntu-4.2.0-28.33 + + [ Ubuntu: 4.2.0-28.33 ] + + * Release Tracking Bug + - LP: #1540634 + * CONFIG: CONFIG_DEBUG_UART_BCM63XX is not set + * SAUCE: ubuntu: aufs: tiny, extract a new func xino_fwrite_wkq() + - LP: #1533043 + * SAUCE: ubuntu: aufs: for 4.3, XINO handles EINTR from the dying process + - LP: #1533043 + * SAUCE: (no-up): apparmor: fix for failed mediation of socket that is + being shutdown + - LP: #1446906 + * SAUCE: apparmor: fix sleep from invalid context + - LP: #1539349 + * [Config] Add pvpanic to virtual flavour + - LP: #1537923 + * Revert "ACPI / LPSS: allow to use specific PM domain during ->probe()" + - LP: #1540532 + * tools: Add a "make all" rule + - LP: #1536370 + * vf610_adc: Fix internal temperature calculation + - LP: #1536370 + * iio: lpc32xx_adc: fix warnings caused by enabling unprepared clock + - LP: #1536370 + * iio:ad5064: Make sure ad5064_i2c_write() returns 0 on success + - LP: #1536370 + * iio: ad5064: Fix ad5629/ad5669 shift + - LP: #1536370 + * iio:ad7793: Fix ad7785 product ID + - LP: #1536370 + * iio: adc: vf610_adc: Fix division by zero error + - LP: #1536370 + * mmc: mmc: Improve reliability of mmc_select_hs200() + - LP: #1536370 + * mmc: mmc: Fix HS setting in mmc_select_hs400() + - LP: #1536370 + * mmc: mmc: Move mmc_switch_status() + - LP: #1536370 + * mmc: mmc: Improve reliability of mmc_select_hs400() + - LP: #1536370 + * crypto: qat - don't use userspace pointer + - LP: #1536370 + * iio: si7020: Swap data byte order + - LP: #1536370 + * iio: adc: xilinx: Fix VREFN scale + - LP: #1536370 + * ipmi: Start the timer and thread on internal msgs + - LP: #1536370 + * drm/i915: quirk backlight present on Macbook 4, 1 + - LP: #1536370 + * drm/i915: get runtime PM reference around GEM set_caching IOCTL + - LP: #1536370 + * drm/radeon: Disable uncacheable CPU mappings of GTT with RV6xx + - LP: #1536370 + * drm/radeon: unconditionally set sysfs_initialized + - LP: #1536370 + * drm/amdgpu: Fix default page access routing + - LP: #1536370 + * USB: qcserial: Fix support for HP lt4112 LTE/HSPA+ Gobi 4G Modem + - LP: #1536370 + * ext2, ext4: warn when mounting with dax enabled + - LP: #1536370 + * arm64: mm: use correct mapping granularity under DEBUG_RODATA + - LP: #1536370 + * drm/i915: Don't clobber the addfb2 ioctl params + - LP: #1536370 + * arm64: kernel: pause/unpause function graph tracer in cpu_suspend() + - LP: #1536370 + * usb: chipidea: debug: disable usb irq while role switch + - LP: #1536370 + * xhci: Fix a race in usb2 LPM resume, blocking U3 for usb2 devices + - LP: #1536370 + * fat: fix fake_offset handling on error path + - LP: #1536370 + * kernel/signal.c: unexport sigsuspend() + - LP: #1536370 + * parisc: Drop unused MADV_xxxK_PAGES flags from asm/mman.h + - LP: #1536370 + * mmc: remove bondage between REQ_META and reliable write + - LP: #1536370 + * stmmac: avoid ipq806x constant overflow warning + - LP: #1536370 + * perf symbols: Fix dso lookup by long name and missing buildids + - LP: #1536370 + * net/mlx4_core: Avoid returning success in case of an error flow + - LP: #1536370 + * mtd: nand: fix shutdown/reboot for multi-chip systems + - LP: #1536370 + * FS-Cache: Add missing initialization of ret in cachefiles_write_page() + - LP: #1536370 + * ipvlan: fix leak in ipvlan_rcv_frame + - LP: #1536370 + * ipvlan: fix use after free of skb + - LP: #1536370 + * macvlan: fix leak in macvlan_handle_frame + - LP: #1536370 + * ALSA: hda - Fix noise on Dell Latitude E6440 + - LP: #1536370 + * dm thin: restore requested 'error_if_no_space' setting on OODS to WRITE + transition + - LP: #1536370 + * ALSA: hda - Add fixup for Acer Aspire One Cloudbook 14 + - LP: #1536370 + * dm crypt: fix a possible hang due to race condition on exit + - LP: #1536370 + * mac: validate mac_partition is within sector + - LP: #1536370 + * ALSA: hda - Apply HP headphone fixups more generically + - LP: #1536370 + * blk-mq: fix calling unplug callbacks with preempt disabled + - LP: #1536370 + * ARM: imx: add platform irq type setting in gpc + - LP: #1536370 + * watchdog: omap_wdt: fix null pointer dereference + - LP: #1536370 + * ARC: dw2 unwind: Remove falllback linear search thru FDE entries + - LP: #1536370 + * dm thin: fix regression in advertised discard limits + - LP: #1536370 + * fix sysvfs symlinks + - LP: #1536370 + * vfs: Make sendfile(2) killable even better + - LP: #1536370 + * vfs: Avoid softlockups with sendfile(2) + - LP: #1536370 + * nfs4: limit callback decoding to received bytes + - LP: #1536370 + * ALSA: hda - Fix headphone noise after Dell XPS 13 resume back from S3 + - LP: #1519168, #1536370 + * ARM: dts: vfxxx: Fix dspi[01] spi-num-chipselects. + - LP: #1536370 + * ARM/arm64: KVM: test properly for a PTE's uncachedness + - LP: #1536370 + * arm64: KVM: Fix AArch32 to AArch64 register mapping + - LP: #1536370 + * drm/radeon: make rv770_set_sw_state failures non-fatal + - LP: #1536370 + * PCI: Prevent out of bounds access in numa_node override + - LP: #1536370 + * ALSA: hda - Fix noise on Gigabyte Z170X mobo + - LP: #1536370 + * ARM: dove: Fix legacy get_irqnr_and_base + - LP: #1536370 + * ARM: orion5x: Fix legacy get_irqnr_and_base + - LP: #1536370 + * drm/radeon: make some dpm errors debug only + - LP: #1536370 + * NFSv4.1/pNFS: Don't request a minimal read layout beyond the end of + file + - LP: #1536370 + * nfs4: resend LAYOUTGET when there is a race that changes the seqid + - LP: #1536370 + * xen/gntdev: Grant maps should not be subject to NUMA balancing + - LP: #1536370 + * iscsi-target: Fix rx_login_comp hang after login failure + - LP: #1536370 + * target: Fix race for SCF_COMPARE_AND_WRITE_POST checking + - LP: #1536370 + * target: fix COMPARE_AND_WRITE non zero SGL offset data corruption + - LP: #1536370 + * thermal: fix thermal_zone_bind_cooling_device prototype + - LP: #1536370 + * ARM: 8454/1: OF implies OF_FLATTREE + - LP: #1536370 + * ARM: dts: Kirkwood: Fix QNAP TS219 power-off + - LP: #1536370 + * ASoC: rsnd: fixup SCU_SYS_INT_EN1 address + - LP: #1536370 + * Bluetooth: Fix l2cap_chan leak in SMP + - LP: #1536370 + * crypto: nx - Fix timing leak in GCM and CCM decryption + - LP: #1536370 + * crypto: talitos - Fix timing leak in ESP ICV verification + - LP: #1536370 + * ASoC: wm8962: correct addresses for HPF_C_0/1 + - LP: #1536370 + * rtlwifi: rtl8821ae: Fix lockups on boot + - LP: #1536370 + * mac80211: mesh: fix call_rcu() usage + - LP: #1536370 + * advansys: fix big-endian builds + - LP: #1536370 + * mac80211: ensure we don't update tx power on a non-running sdata + - LP: #1536370 + * drm/i915: Mark uneven memory banks on gen4 desktop as unknown swizzling + - LP: #1536370 + * ring-buffer: Update read stamp with first real commit on page + - LP: #1536370 + * drm/i915: Don't override output type for DDI HDMI + - LP: #1536370 + * block: Always check queue limits for cloned requests + - LP: #1536370 + * direct-io: Fix negative return from dio read beyond eof + - LP: #1536370 + * drm/amdgpu: fix userptr flags check + - LP: #1536370 + * virtio-gpu: use no-merge for fill-modes + - LP: #1536370 + * Fix a memory leak in scsi_host_dev_release() + - LP: #1536370 + * wan/x25: Fix use-after-free in x25_asy_open_tty() + - LP: #1536370 + * mac80211: do not actively scan DFS channels + - LP: #1536370 + * PM / Domains: Fix bad of_node_put() in failure paths of + genpd_dev_pm_attach() + - LP: #1536370 + * drm: Fix an unwanted master inheritance v2 + - LP: #1536370 + * sched/core: Clear the root_domain cpumasks in init_rootdomain() + - LP: #1536370 + * ARM/arm64: KVM: correct PTE uncachedness check + - LP: #1536370 + * drm/amdgpu: partially revert "drm/amdgpu: fix + VM_CONTEXT*_PAGE_TABLE_END_ADDR" v2 + - LP: #1536370 + * x86/mpx: Fix instruction decoder condition + - LP: #1536370 + * x86/signal: Fix restart_syscall number for x32 tasks + - LP: #1536370 + * Don't reset ->total_link_count on nested calls of vfs_path_lookup() + - LP: #1536370 + * net: mvneta: fix bit assignment in MVNETA_RXQ_CONFIG_REG + - LP: #1536370 + * net: mvneta: fix bit assignment for RX packet irq enable + - LP: #1536370 + * net: mvneta: add configuration for MBUS windows access protection + - LP: #1536370 + * iwlwifi: mvm: don't overwrite the key indices in D3 entry + - LP: #1536370 + * mac80211: fix off-channel mgmt-tx uninitialized variable usage + - LP: #1536370 + * drm/rockchip: unset pgoff when mmap'ing gems + - LP: #1536370 + * remoteproc: avoid stack overflow in debugfs file + - LP: #1536370 + * sched/rt: Hide the push_irq_work_func() declaration + - LP: #1536370 + * drm: imx: convert to drm_crtc_send_vblank_event() + - LP: #1536370 + * sched/wait: Fix signal handling in bit wait helpers + - LP: #1536370 + * ACPI / property: fix compile error for + acpi_node_get_property_reference() when CONFIG_ACPI=n + - LP: #1536370 + * ipv4: igmp: Allow removing groups from a removed interface + - LP: #1536370 + * isdn: Partially revert debug format string usage clean up + - LP: #1536370 + * sched/core: Remove false-positive warning from wake_up_process() + - LP: #1536370 + * gpio: omap: drop omap1 mpuio specific irq_mask/unmask callbacks + - LP: #1536370 + * SUNRPC: Fix callback channel + - LP: #1536370 + * cuse: fix memory leak + - LP: #1536370 + * fuse: break infinite loop in fuse_fill_write_pages() + - LP: #1536370 + * usb: gadget: pxa27x: fix suspend callback + - LP: #1536370 + * iio: fix some warning messages + - LP: #1536370 + * iio: adc: spmi-vadc: add missing of_node_put + - LP: #1536370 + * USB: cp210x: Remove CP2110 ID from compatibility list + - LP: #1536370 + * USB: cdc_acm: Ignore Infineon Flash Loader utility + - LP: #1536370 + * USB: serial: Another Infineon flash loader USB ID + - LP: #1536370 + * ext4: Fix handling of extended tv_sec + - LP: #1536370 + * jbd2: Fix unreclaimed pages after truncate in data=journal mode + - LP: #1536370 + * drm/ttm: Fixed a read/write lock imbalance + - LP: #1536370 + * ext4: fix an endianness bug in ext4_encrypted_zeroout() + - LP: #1536370 + * ext4: fix an endianness bug in ext4_encrypted_follow_link() + - LP: #1536370 + * AHCI: Fix softreset failed issue of Port Multiplier + - LP: #1536370 + * sata_sil: disable trim + - LP: #1536370 + * usb-storage: Fix scsi-sd failure "Invalid field in cdb" for USB adapter + JMicron + - LP: #1536370 + * staging: lustre: echo_copy.._lsm() dereferences userland pointers + directly + - LP: #1536370 + * irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB + - LP: #1536370 + * usb: core : hub: Fix BOS 'NULL pointer' kernel panic + - LP: #1536370 + * USB: whci-hcd: add check for dma mapping error + - LP: #1536370 + * usb: Use the USB_SS_MULT() macro to decode burst multiplier for log + message + - LP: #1536370 + * dm btree: fix leak of bufio-backed block in btree_split_sibling error + path + - LP: #1536370 + * dm thin metadata: fix bug in dm_thin_remove_range() + - LP: #1536370 + * perf: Fix PERF_EVENT_IOC_PERIOD deadlock + - LP: #1536370 + * xhci: Fix memory leak in xhci_pme_acpi_rtd3_enable() + - LP: #1536370 + * usb: xhci: fix config fail of FS hub behind a HS hub with MTT + - LP: #1536370 + * jbd2: fix null committed data return in undo_access + - LP: #1536370 + * block: detach bdev inode from its wb in __blkdev_put() + - LP: #1536370 + * ALSA: rme96: Fix unexpected volume reset after rate changes + - LP: #1536370 + * ALSA: hda - Add inverted dmic for Packard Bell DOTS + - LP: #1523232, #1536370 + * vhost: relax log address alignment + - LP: #1536370 + * virtio: fix memory leak of virtio ida cache layers + - LP: #1536370 + * IB/srp: Fix a memory leak + - LP: #1536370 + * IB/srp: Fix possible send queue overflow + - LP: #1536370 + * powerpc/opal-irqchip: Fix double endian conversion + - LP: #1536370 + * powerpc/opal-irqchip: Fix deadlock introduced by "Fix double endian + conversion" + - LP: #1536370 + * cxl: Set endianess of kernel contexts + - LP: #1536370 + * ALSA: hda - Fixing speaker noise on the two latest thinkpad models + - LP: #1523517, #1536370 + * of/fdt: Add mutex protection for calls to __unflatten_device_tree() + - LP: #1536370 + * 9p: ->evict_inode() should kick out ->i_data, not ->i_mapping + - LP: #1536370 + * fix the regression from "direct-io: Fix negative return from dio read + beyond eof" + - LP: #1536370 + * radeon/cik: Fix GFX IB test on Big-Endian + - LP: #1536370 + * radeon: Fix VCE ring test for Big-Endian systems + - LP: #1536370 + * radeon: Fix VCE IB test on Big-Endian systems + - LP: #1536370 + * ALSA: hda - Fix noise problems on Thinkpad T440s + - LP: #1536370 + * ALSA: hda/ca0132 - quirk for Alienware 17 2015 + - LP: #1536370 + * dm thin metadata: fix bug when taking a metadata snapshot + - LP: #1536370 + * dm space map metadata: fix ref counting bug when bootstrapping a new + space map + - LP: #1536370 + * ipmi: move timer init to before irq is setup + - LP: #1536370 + * dm btree: fix bufio buffer leaks in dm_btree_del() error path + - LP: #1536370 + * vgaarb: fix signal handling in vga_get() + - LP: #1536370 + * ARM: dts: vf610: use reset values for L2 cache latencies + - LP: #1536370 + * xhci: fix usb2 resume timing and races. + - LP: #1536370 + * USB: add quirk for devices with broken LPM + - LP: #1536370 + * parisc iommu: fix panic due to trying to allocate too large region + - LP: #1536370 + * mm: hugetlb: fix hugepage memory leak caused by wrong reserve count + - LP: #1536370 + * mm, vmstat: allow WQ concurrency to discover memory reclaim doesn't + make any progress + - LP: #1536370 + * mm: hugetlb: call huge_pte_alloc() only if ptep is null + - LP: #1536370 + * drivers/base/memory.c: prohibit offlining of memory blocks with missing + sections + - LP: #1536370 + * ocfs2: fix SGID not inherited issue + - LP: #1536370 + * sh64: fix __NR_fgetxattr + - LP: #1536370 + * sched/wait: Fix the signal handling fix + - LP: #1536370 + * sata/mvebu: use #ifdef around suspend/resume code + - LP: #1536370 + * usb: musb: USB_TI_CPPI41_DMA requires dmaengine support + - LP: #1536370 + * i2c: rk3x: populate correct variable for sda_falling_time + - LP: #1536370 + * i2c: mv64xxx: The n clockdiv factor is 0 based on sunxi SoCs + - LP: #1536370 + * xen/events/fifo: Consume unprocessed events when a CPU dies + - LP: #1536370 + * ARM: 8465/1: mm: keep reserved ASIDs in sync with mm after multiple + rollovers + - LP: #1536370 + * net: mvpp2: fix missing DMA region unmap in egress processing + - LP: #1536370 + * net: mvpp2: fix buffers' DMA handling on RX path + - LP: #1536370 + * net: mvpp2: fix refilling BM pools in RX path + - LP: #1536370 + * dmaengine: at_xdmac: fix macro typo + - LP: #1536370 + * video: fbdev: fsl: Fix kernel crash when diu_ops is not implemented + - LP: #1536370 + * crypto: skcipher - Copy iv from desc even for 0-len walks + - LP: #1536370 + * ASoC: es8328: Fix deemphasis values + - LP: #1536370 + * KVM: PPC: Book3S HV: Prohibit setting illegal transaction state in MSR + - LP: #1536370 + * dmaengine: at_xdmac: fix at_xdmac_prep_dma_memcpy() + - LP: #1536370 + * rfkill: copy the name into the rfkill struct + - LP: #1536370 + * ses: Fix problems with simple enclosures + - LP: #1536370 + * ASoC: davinci-mcasp: Fix XDATA check in mcasp_start_tx + - LP: #1536370 + * ses: fix additional element traversal bug + - LP: #1536370 + * powercap / RAPL: fix BIOS lock check + - LP: #1536370 + * ARCv2: intc: Fix random perf irq disabling in SMP setup + - LP: #1536370 + * i2c: designware: reverts "i2c: designware: Add support for AMD I2C + controller" + - LP: #1536370 + * i2c: designware: fix IO timeout issue for AMD controller + - LP: #1536370 + * ASoC: wm8974: set cache type for regmap + - LP: #1536370 + * n_tty: Fix poll() after buffer-limited eof push read + - LP: #1536370 + * tty: Fix GPF in flush_to_ldisc() + - LP: #1536370 + * ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest + DragonFly + - LP: #1536370 + * ALSA: usb-audio: Add sample rate inquiry quirk for AudioQuest DragonFly + - LP: #1536370 + * drm: Don't overwrite UNVERFIED mode status to OK + - LP: #1536370 + * ARM: dts: imx6: Fix Ethernet PHY mode on Ventana boards + - LP: #1536370 + * ARM: 8471/1: need to save/restore arm register(r11) when it is + corrupted + - LP: #1536370 + * ALSA: hda - Fix headphone mic input on a few Dell ALC293 machines + - LP: #1526330, #1536370 + * ALSA: hda - Apply click noise workaround for Thinkpads generically + - LP: #1536370 + * ALSA: hda - Set codec to D3 at reboot/shutdown on Thinkpads + - LP: #1536370 + * ALSA: hda - Add a fixup for Thinkpad X1 Carbon 2nd + - LP: #1536370 + * spi: fix parent-device reference leak + - LP: #1536370 + * scripts: recordmcount: break hardlinks + - LP: #1536370 + * dma-debug: Fix dma_debug_entry offset calculation + - LP: #1536370 + * ftrace/scripts: Have recordmcount copy the object file + - LP: #1536370 + * mtd: ubi: fixup error correction in do_sync_erase() + - LP: #1536370 + * mtd: ubi: don't leak e if schedule_erase() fails + - LP: #1536370 + * ARC: dw2 unwind: Reinstante unwinding out of modules + - LP: #1536370 + * ARC: dw2 unwind: Ignore CIE version !=1 gracefully instead of bailing + - LP: #1536370 + * powerpc/powernv: pr_warn_once on unsupported OPAL_MSG type + - LP: #1536370 + * drm/nouveau/bios/fan: hardcode the fan mode to linear + - LP: #1536370 + * md/raid10: fix data corruption and crash during resync + - LP: #1536370 + * ALSA: hda - Set SKL+ hda controller power at freeze() and thaw() + - LP: #1536370 + * s390/dis: Fix handling of format specifiers + - LP: #1536370 + * [media] Revert "[media] ivtv: avoid going past input/audio array" + - LP: #1536370 + * [media] airspy: increase USB control message buffer size + - LP: #1536370 + * USB: ipaq.c: fix a timeout loop + - LP: #1536370 + * USB: fix invalid memory access in hub_activate() + - LP: #1536370 + * i2c: rcar: disable runtime PM correctly in slave mode + - LP: #1536370 + * md: remove check for MD_RECOVERY_NEEDED in action_store. + - LP: #1536370 + * parisc: Fix syscall restarts + - LP: #1536370 + * ALSA: hda/realtek - Fix silent headphone output on MacPro 4,1 (v2) + - LP: #1536370 + * MIPS: uaccess: Fix strlen_user with EVA + - LP: #1536370 + * drm/i915: Break busywaiting for requests on pending signals + - LP: #1536370 + * drm/i915: Limit the busy wait on requests to 5us not 10ms! + - LP: #1536370 + * drm/i915: Only spin whilst waiting on the current request + - LP: #1536370 + * MIPS: CPS: drop .set mips64r2 directives + - LP: #1536370 + * KVM: MTRR: fix fixed MTRR segment look up + - LP: #1536370 + * KVM: MTRR: observe maxphyaddr from guest CPUID, not host + - LP: #1536370 + * KVM: MTRR: treat memory as writeback if MTRR is disabled in guest CPUID + - LP: #1536370 + * arm: fix handling of F_OFD_... in oabi_fcntl64() + - LP: #1536370 + * ocfs2: fix BUG when calculate new backup super + - LP: #1536370 + * mm/memory_hotplug.c: check for missing sections in + test_pages_in_a_zone() + - LP: #1536370 + * ipv6/addrlabel: fix ip6addrlbl_get() + - LP: #1536370 + * xfrm: add rcu protection to sk->sk_policy[] + - LP: #1536370 + * amd-xgbe: fix a couple timeout loops + - LP: #1536370 + * phy: sun9i-usb: add USB dependency + - LP: #1536370 + * sctp: convert sack_needed and sack_generation to bits + - LP: #1536370 + * sctp: start t5 timer only when peer rwnd is 0 and local state is + SHUTDOWN_PENDING + - LP: #1536370 + * serial: 8250_uniphier: fix dl_read and dl_write functions + - LP: #1536370 + * net: fix warnings in 'make htmldocs' by moving macro definition out of + field declaration + - LP: #1536370 + * netfilter: nfnetlink_queue: Unregister pernet subsys in case of init + failure + - LP: #1536370 + * addrconf: always initialize sysctl table data + - LP: #1536370 + * ser_gigaset: fix deallocation of platform device structure + - LP: #1536370 + * pinctrl: bcm2835: Fix initial value for direction_output + - LP: #1536370 + * mISDN: fix a loop count + - LP: #1536370 + * sh_eth: fix TX buffer byte-swapping + - LP: #1536370 + * qlcnic: fix a timeout loop + - LP: #1536370 + * dmaengine: bcm2835-dma: Convert to use DMA pool + - LP: #1536370 + * net: phy: mdio-mux: Check return value of mdiobus_alloc() + - LP: #1536370 + * include/linux/mmdebug.h: should include linux/bug.h + - LP: #1536370 + * genirq: Prevent chip buslock deadlock + - LP: #1536370 + * x86/mce: Ensure offline CPUs don't participate in rendezvous process + - LP: #1536370 + * x86/paravirt: Prevent rtc_cmos platform device init on PV guests + - LP: #1536370 + * ASoC: arizona: Fix bclk for sample rates that are multiple of 4kHz + - LP: #1536370 + * ALSA: hda - Add mic mute hotkey quirk for Lenovo ThinkCentre AIO + - LP: #1536370 + * ALSA: hda - Add keycode map for alc input device + - LP: #1536370 + * ftrace/scripts: Fix incorrect use of sprintf in recordmcount + - LP: #1536370 + * tracing: Fix setting of start_index in find_next() + - LP: #1536370 + * tile: provide CONFIG_PAGE_SIZE_64KB etc for tilepro + - LP: #1536370 + * ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption + - LP: #1536370 + * ARM: versatile: fix MMC/SD interrupt assignment + - LP: #1536370 + * async_tx: use GFP_NOWAIT rather than GFP_IO + - LP: #1536370 + * dts: vt8500: Add SDHC node to DTS file for WM8650 + - LP: #1536370 + * ftrace/module: Call clean up function when module init fails early + - LP: #1536370 + * vmstat: allocate vmstat_wq before it is used + - LP: #1536370 + * firmware: dmi_scan: Fix UUID endianness for SMBIOS >= 2.6 + - LP: #1536370 + * kvm: x86: only channel 0 of the i8254 is linked to the HPET + - LP: #1536370 + * ASoC: Use nested lock for snd_soc_dapm_mutex_lock + - LP: #1536370 + * net: sched: fix missing free per cpu on qstats + - LP: #1536370 + * net: filter: make JITs zero A for SKF_AD_ALU_XOR_X + - LP: #1536370 + * sched/core: Reset task's lockless wake-queues on fork() + - LP: #1536370 + * net: possible use after free in dst_release + - LP: #1536370 + * Linux 4.2.8-ckt2 + - LP: #1536370 + * drivers/base/memory.c: fix kernel warning during memory hotplug on + ppc64 + - LP: #1463654 + * xfrm: dst_entries_init() per-net dst_ops + - LP: #1486670 + * powerpc/pseries: Limit EPOW reset event warnings + - LP: #1539102 + * drm/nouveau/nv46: Change mc subdev oclass from nv44 to nv4c + - LP: #1540532 + * ovl: allow zero size xattr + - LP: #1540532 + * ovl: use a minimal buffer in ovl_copy_xattr + - LP: #1540532 + * [media] vb2: fix a regression in poll() behavior for output,streams + - LP: #1540532 + * [media] gspca: ov534/topro: prevent a division by 0 + - LP: #1540532 + * [media] media: dvb-core: Don't force CAN_INVERSION_AUTO in oneshot mode + - LP: #1540532 + * [media] si2157: return -EINVAL if firmware blob is too big + - LP: #1540532 + * tools lib traceevent: Fix output of %llu for 64 bit values read on 32 + bit machines + - LP: #1540532 + * cxl: use correct operator when writing pcie config space values + - LP: #1540532 + * KVM: x86: expose MSR_TSC_AUX to userspace + - LP: #1540532 + * KVM: x86: correctly print #AC in traces + - LP: #1540532 + * drm/amdgpu: call hpd_irq_event on resume + - LP: #1540532 + * drm/radeon: call hpd_irq_event on resume + - LP: #1540532 + * xhci: refuse loading if nousb is used + - LP: #1540532 + * ARM: mvebu: remove duplicated regulator definition in Armada 388 GP + - LP: #1540532 + * arm64: Clear out any singlestep state on a ptrace detach operation + - LP: #1540532 + * time: Avoid signed overflow in timekeeping_get_ns() + - LP: #1540532 + * ovl: root: copy attr + - LP: #1540532 + * Bluetooth: Add support of Toshiba Broadcom based devices + - LP: #1522949, #1540532 + * ext4 crypto: exit cleanly if ext4_derive_key_aes() fails + - LP: #1540532 + * ext4 crypto: add missing locking for keyring_key access + - LP: #1540532 + * rtlwifi: fix memory leak for USB device + - LP: #1540532 + * wlcore/wl12xx: spi: fix oops on firmware load + - LP: #1540532 + * ovl: setattr: check permissions before copy-up + - LP: #1540532 + * ovl: check dentry positiveness in ovl_cleanup_whiteouts() + - LP: #1540532 + * EDAC, mc_sysfs: Fix freeing bus' name + - LP: #1540532 + * EDAC: Robustify workqueues destruction + - LP: #1540532 + * arm64: mm: ensure that the zero page is visible to the page table + walker + - LP: #1540532 + * powerpc: Make value-returning atomics fully ordered + - LP: #1540532 + * powerpc: Make {cmp}xchg* and their atomic_ versions fully ordered + - LP: #1540532 + * dm space map metadata: remove unused variable in brb_pop() + - LP: #1540532 + * Drivers: hv: vmbus: Fix a Host signaling bug + - LP: #1540532 + * tools: hv: vss: fix the write()'s argument: error -> vss_msg + - LP: #1540532 + * clk: exynos: use irqsave version of spin_lock to avoid deadlock with + irqs + - LP: #1540532 + * iommu/io-pgtable-arm: Ensure we free the final level on teardown + - LP: #1540532 + * dm thin: fix race condition when destroying thin pool workqueue + - LP: #1540532 + * drm/radeon: Fix "slow" audio over DP on DCE8+ + - LP: #1540532 + * futex: Drop refcount if requeue_pi() acquired the rtmutex + - LP: #1540532 + * arm64: mdscr_el1: avoid exposing DCC to userspace + - LP: #1540532 + * arm64: kernel: enforce pmuserenr_el0 initialization and restore + - LP: #1540532 + * coresight: checking for NULL string in coresight_name_match() + - LP: #1540532 + * drm/radeon: Fix off-by-one errors in radeon_vm_bo_set_addr + - LP: #1540532 + * drm/amdgpu: Fix off-by-one errors in amdgpu_vm_bo_map + - LP: #1540532 + * drm/radeon: clean up fujitsu quirks + - LP: #1540532 + * mmc: mmc: Fix incorrect use of driver strength switching HS200 and + HS400 + - LP: #1540532 + * mmc: sdhci-pci: Do not default to 33 Ohm driver strength for Intel SPT + - LP: #1540532 + * mmc: sdio: Fix invalid vdd in voltage switch power cycle + - LP: #1540532 + * mmc: sdhci: Fix DMA descriptor with zero data length + - LP: #1540532 + * mmc: sdhci: Fix sdhci_runtime_pm_bus_on/off() + - LP: #1540532 + * regulator: axp20x: Fix GPIO LDO enable value for AXP22x + - LP: #1540532 + * udf: limit the maximum number of indirect extents in a row + - LP: #1540532 + * [media] rc: sunxi-cir: Initialize the spinlock properly + - LP: #1540532 + * nfs: Fix race in __update_open_stateid() + - LP: #1540532 + * USB: cp210x: add ID for ELV Marble Sound Board 1 + - LP: #1540532 + * Thermal: initialize thermal zone device correctly + - LP: #1540532 + * Thermal: handle thermal zone device properly during system sleep + - LP: #1540532 + * Thermal: do thermal zone update after a cooling device registered + - LP: #1540532 + * posix-clock: Fix return code on the poll method's error path + - LP: #1540532 + * rtlwifi: rtl8723be: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8723ae: Fix initialization of module parameters + - LP: #1540532 + * rtlwifi: rtl8821ae: Fix errors in parameter initialization + - LP: #1540532 + * rtlwifi: rtl8188ee: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8192de: Fix incorrect module parameter descriptions + - LP: #1540532 + * rtlwifi: rtl8192se: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8192ce: Fix handling of module parameters + - LP: #1540532 + * rtlwifi: rtl8192cu: Add missing parameter setup + - LP: #1540532 + * NFS: Fix attribute cache revalidation + - LP: #1540532 + * rtlwifi: rtl_pci: Fix kernel panic + - LP: #1540532 + * bcache: fix a livelock when we cause a huge number of cache misses + - LP: #1540532 + * bcache: Add a cond_resched() call to gc + - LP: #1540532 + * bcache: clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing + device + - LP: #1540532 + * bcache: fix a leak in bch_cached_dev_run() + - LP: #1540532 + * bcache: unregister reboot notifier if bcache fails to unregister device + - LP: #1540532 + * bcache: allows use of register in udev to avoid "device_busy" error. + - LP: #1540532 + * bcache: Change refill_dirty() to always scan entire disk if necessary + - LP: #1540532 + * wlcore/wl12xx: spi: fix NULL pointer dereference (Oops) + - LP: #1540532 + * Input: i8042 - add Fujitsu Lifebook U745 to the nomux list + - LP: #1540532 + * libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct + - LP: #1540532 + * x86/xen: don't reset vcpu_info on a cancelled suspend + - LP: #1540532 + * udf: Prevent buffer overrun with multi-byte characters + - LP: #1540532 + * udf: Check output buffer length when converting name to CS0 + - LP: #1540532 + * drm/dp/mst: process broadcast messages correctly + - LP: #1540532 + * drm/dp/mst: always send reply for UP request + - LP: #1540532 + * drm/dp/mst: fix in MSTB RAD initialization + - LP: #1540532 + * drm/dp/mst: fix in RAD element access + - LP: #1540532 + * PCI: Fix minimum allocation address overwrite + - LP: #1540532 + * PCI: host: Mark PCIe/PCI (MSI) IRQ cascade handlers as IRQF_NO_THREAD + - LP: #1540532 + * btrfs: handle invalid num_stripes in sys_array + - LP: #1540532 + * iwlwifi: update and fix 7265 series PCI IDs + - LP: #1540532 + * iwlwifi: pcie: properly configure the debug buffer size for 8000 + - LP: #1540532 + * locks: fix unlock when fcntl_setlk races with a close + - LP: #1540532 + * scsi: add Synology to 1024 sector blacklist + - LP: #1540532 + * ASoC: compress: Fix compress device direction check + - LP: #1540532 + * dm snapshot: fix hung bios when copy error occurs + - LP: #1540532 + * uml: fix hostfs mknod() + - LP: #1540532 + * uml: flush stdout before forking + - LP: #1540532 + * drm/nouveau/kms: take mode_config mutex in connector hotplug path + - LP: #1540532 + * ALSA: usb: Add native DSD support for Oppo HA-1 + - LP: #1540532 + * ALSA: hda - Fixup inverted internal mic for Lenovo E50-80 + - LP: #1529624, #1540532 + * x86/mm: Add barriers and document switch_mm()-vs-flush synchronization + - LP: #1540532 + * x86/boot: Double BOOT_HEAP_SIZE to 64KB + - LP: #1540532 + * s390: fix normalization bug in exception table sorting + - LP: #1540532 + * xfs: inode recovery readahead can race with inode buffer creation + - LP: #1540532 + * xfs: handle dquot buffer readahead in log recovery correctly + - LP: #1540532 + * clocksource/drivers/vt8500: Increase the minimum delta + - LP: #1540532 + * Input: elantech - mark protocols v2 and v3 as semi-mt + - LP: #1540532 + * x86/reboot/quirks: Add iMac10,1 to pci_reboot_dmi_table[] + - LP: #1540532 + * ALSA: seq: Fix missing NULL check at remove_events ioctl + - LP: #1540532 + * ALSA: seq: Fix race at timer setup and close + - LP: #1540532 + * virtio_balloon: fix race by fill and leak + - LP: #1540532 + * virtio_balloon: fix race between migration and ballooning + - LP: #1540532 + * ALSA: hda - Fix white noise on Dell Latitude E5550 + - LP: #1540532 + * parisc: Fix __ARCH_SI_PREAMBLE_SIZE + - LP: #1540532 + * scripts/recordmcount.pl: support data in text section on powerpc + - LP: #1540532 + * powerpc/module: Handle R_PPC64_ENTRY relocations + - LP: #1540532 + * ALSA: hda - fix the headset mic detection problem for a Dell laptop + - LP: #1533461, #1540532 + * ALSA: usb-audio: Fix mixer ctl regression of Native Instrument devices + - LP: #1540532 + * drm/i915: Restore inhibiting the load of the default context + - LP: #1540532 + * drm/i915: intel_hpd_init(): Fix suspend/resume reprobing + - LP: #1540532 + * x86/mm: Improve switch_mm() barrier comments + - LP: #1540532 + * ALSA: timer: Fix double unlink of active_list + - LP: #1540532 + * dmaengine: dw: fix cyclic transfer setup + - LP: #1540532 + * dmaengine: dw: fix cyclic transfer callbacks + - LP: #1540532 + * mmc: mmci: fix an ages old detection error + - LP: #1540532 + * ALSA: timer: Fix race among timer ioctls + - LP: #1540532 + * sparc64: fix incorrect sign extension in sys_sparc64_personality + - LP: #1540532 + * cifs: Ratelimit kernel log messages + - LP: #1540532 + * cifs: fix race between call_async() and reconnect() + - LP: #1540532 + * cifs_dbg() outputs an uninitialized buffer in cifs_readdir() + - LP: #1540532 + * m32r: fix m32104ut_defconfig build fail + - LP: #1540532 + * dma-debug: switch check from _text to _stext + - LP: #1540532 + * scripts/bloat-o-meter: fix python3 syntax error + - LP: #1540532 + * ocfs2/dlm: ignore cleaning the migration mle that is inuse + - LP: #1540532 + * ALSA: hda - Add fixup for Dell Latitidue E6540 + - LP: #1540532 + * ALSA: timer: Harden slave timer list handling + - LP: #1540532 + * zram/zcomp: use GFP_NOIO to allocate streams + - LP: #1540532 + * zram: try vmalloc() after kmalloc() + - LP: #1540532 + * ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba + Portege R700 + - LP: #1540532 + * ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba + Satellite R830 + - LP: #1540532 + * mm: soft-offline: check return value in second __get_any_page() call + - LP: #1540532 + * zram: don't call idr_remove() from zram_remove() + - LP: #1540532 + * memcg: only free spare array when readers are done + - LP: #1540532 + * panic: release stale console lock to always get the logbuf printed out + - LP: #1540532 + * kernel/panic.c: turn off locks debug before releasing console lock + - LP: #1540532 + * printk: do cond_resched() between lines while outputting to consoles + - LP: #1540532 + * ALSA: hda - Fix bass pin fixup for ASUS N550JX + - LP: #1540532 + * crypto: algif_skcipher - Require setkey before accept(2) + - LP: #1540532 + * crypto: af_alg - Disallow bind/setkey/... after accept(2) + - LP: #1540532 + * crypto: af_alg - Fix socket double-free when accept fails + - LP: #1540532 + * crypto: af_alg - Add nokey compatibility path + - LP: #1540532 + * crypto: algif_skcipher - Add nokey compatibility path + - LP: #1540532 + * crypto: hash - Add crypto_ahash_has_setkey + - LP: #1540532 + * crypto: algif_hash - Require setkey before accept(2) + - LP: #1540532 + * crypto: af_alg - Allow af_af_alg_release_parent to be called on nokey + path + - LP: #1540532 + * crypto: algif_hash - Remove custom release parent function + - LP: #1540532 + * crypto: algif_skcipher - Remove custom release parent function + - LP: #1540532 + * crypto: af_alg - Forbid bind(2) when nokey child sockets are present + - LP: #1540532 + * lib: sw842: select crc32 + - LP: #1540532 + * crypto: algif_hash - Fix race condition in hash_check_key + - LP: #1540532 + * crypto: algif_skcipher - Fix race condition in skcipher_check_key + - LP: #1540532 + * ALSA: hrtimer: Fix stall by hrtimer_cancel() + - LP: #1540532 + * dmaengine: at_xdmac: fix resume for cyclic transfers + - LP: #1540532 + * ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode + - LP: #1540532 + * ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode + - LP: #1540532 + * ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0 + - LP: #1540532 + * ARM: debug-ll: fix BCM63xx entry for multiplatform + - LP: #1540532 + * xfs: log mount failures don't wait for buffers to be released + - LP: #1540532 + * crypto: algif_skcipher - Load TX SG list after waiting + - LP: #1540532 + * crypto: crc32c - Fix crc32c soft dependency + - LP: #1540532 + * IB/qib: fix mcast detach when qp not attached + - LP: #1540532 + * IB/qib: Support creating qps with GFP_NOIO flag + - LP: #1540532 + * IB/mlx5: Expose correct maximum number of CQE capacity + - LP: #1540532 + * IB/cm: Fix a recently introduced deadlock + - LP: #1540532 + * ideapad-laptop: Add Lenovo ideapad Y700-17ISK to no_hw_rfkill dmi list + - LP: #1540532 + * Btrfs: fix deadlock running delayed iputs at transaction commit time + - LP: #1540532 + * iscsi-target: Fix potential dead-lock during node acl delete + - LP: #1540532 + * crypto: algif_skcipher - sendmsg SG marking is off by one + - LP: #1540532 + * ALSA: hda - Flush the pending probe work at remove + - LP: #1540532 + * zsmalloc: fix migrate_zspage-zs_free race condition + - LP: #1540532 + * prctl: take mmap sem for writing to protect against others + - LP: #1540532 + * ALSA: timer: Handle disconnection more safely + - LP: #1540532 + * libceph: fix ceph_msg_revoke() + - LP: #1540532 + * MIPS: Loongson-3: Fix SMP_ASK_C0COUNT IPI handler + - LP: #1540532 + * MIPS: hpet: Choose a safe value for the ETIME check + - LP: #1540532 + * ocfs2: NFS hangs in __ocfs2_cluster_lock due to race with + ocfs2_unblock_lock + - LP: #1540532 + * pNFS/flexfiles: Fix an XDR encoding bug in layoutreturn + - LP: #1540532 + * make sure that freeing shmem fast symlinks is RCU-delayed + - LP: #1540532 + * MAINTAINERS: return arch/sh to maintained state, with new maintainers + - LP: #1540532 + * MIPS: Fix some missing CONFIG_CPU_MIPSR6 #ifdefs + - LP: #1540532 + * ideapad-laptop: Add Lenovo Yoga 700 to no_hw_rfkill dmi list + - LP: #1540532 + * drm/i915: On fb alloc failure, unref gem object where it gets refed + - LP: #1540532 + * [media] rc: allow rc modules to be loaded if rc-main is not a module + - LP: #1540532 + * [media] lirc_imon: do not leave imon_probe() with mutex held + - LP: #1540532 + * SCSI: initio: remove duplicate module device table + - LP: #1540532 + * clk: xgene: Fix divider with non-zero shift value + - LP: #1540532 + * clk: st: avoid uninitialized variable use + - LP: #1540532 + * MAINTAINERS: gpio-brcmstb: Remove stray '>' + - LP: #1540532 + * ASoC: Intel: pass correct parameter in sst_alloc_stream_mrfld() + - LP: #1540532 + * PCI/MSI: Initialize MSI capability for all architectures + - LP: #1540532 + * ath9k_htc: check for underflow in ath9k_htc_rx_msg() + - LP: #1540532 + * ASoC: tegra_alc5632: check return value + - LP: #1540532 + * mtd: nand: fix ONFI parameter page layout + - LP: #1540532 + * mac80211: fix mgmt-tx abort cookie and leak + - LP: #1540532 + * mtd: nand: denali: add missing nand_release() call in denali_remove() + - LP: #1540532 + * Drivers: hv: util: catch allocation errors + - LP: #1540532 + * Drivers: hv: utils: use memdup_user in hvt_op_write + - LP: #1540532 + * tpm_tis: Use devm_free_irq not free_irq + - LP: #1540532 + * ALSA: fm801: explicitly free IRQ line + - LP: #1540532 + * ARM: imx: select SRC for i.MX7 + - LP: #1540532 + * ALSA: fm801: propagate TUNER_ONLY bit when autodetected + - LP: #1540532 + * ALSA: fm801: detect FM-only card earlier + - LP: #1540532 + * pinctrl: bcm2835: Fix memory leak in error path + - LP: #1540532 + * mmc: sdhci: restore behavior when setting VDD via external regulator + - LP: #1540532 + * x86/LDT: Print the real LDT base address + - LP: #1540532 + * sysrq: Fix warning in sysrq generated crash. + - LP: #1540532 + * kconfig: return 'false' instead of 'no' in bool function + - LP: #1540532 + * perf/x86: Fix filter_events() bug with event mappings + - LP: #1540532 + * perf/x86: fix PEBS issues on Intel Atom/Core2 + - LP: #1540532 + * power: test_power: correctly handle empty writes + - LP: #1540532 + * firmware: actually return NULL on failed request_firmware_nowait() + - LP: #1540532 + * target: Fix a memory leak in target_dev_lba_map_store() + - LP: #1540532 + * phy: micrel: Fix finding PHY properties in MAC node for KSZ9031. + - LP: #1540532 + * m68k/atari, m68k/sun3: Fix SCSI platform device registration when + driver is modular + - LP: #1540532 + * um: Fix build error and kconfig for i386 + - LP: #1540532 + * net: sctp: prevent writes to cookie_hmac_alg from accessing invalid + memory + - LP: #1540532 + * ipv6: tcp: add rcu locking in tcp_v6_send_synack() + - LP: #1540532 + * bonding: Prevent IPv6 link local address on enslaved devices + - LP: #1540532 + * kbuild: Demote 'sign-compare' warning to W=2 + - LP: #1540532 + * mmc: sd: limit SD card power limit according to cards capabilities + - LP: #1540532 + * net: tcp_memcontrol: properly detect ancestor socket pressure + - LP: #1540532 + * vmstat: make vmstat_updater deferrable again and shut down on idle + - LP: #1540532 + * include/linux/memblock.h: fix ordering of 'flags' argument in comments + - LP: #1540532 + * Btrfs: clean up an error code in btrfs_init_space_info() + - LP: #1540532 + * btrfs: initialize the seq counter in struct btrfs_device + - LP: #1540532 + * bridge: fix lockdep addr_list_lock false positive splat + - LP: #1540532 + * batman-adv: Avoid recursive call_rcu for batadv_bla_claim + - LP: #1540532 + * batman-adv: Avoid recursive call_rcu for batadv_nc_node + - LP: #1540532 + * batman-adv: Drop immediate batadv_orig_ifinfo free function + - LP: #1540532 + * batman-adv: Drop immediate batadv_neigh_node free function + - LP: #1540532 + * batman-adv: Drop immediate neigh_ifinfo free function + - LP: #1540532 + * batman-adv: Drop immediate orig_node free function + - LP: #1540532 + * printk: help pr_debug and pr_devel to optimize out arguments + - LP: #1540532 + * ARM: dts: armadillo800eva Correct extal1 frequency to 24 MHz + - LP: #1540532 + * team: Replace rcu_read_lock with a mutex in team_vlan_rx_kill_vid + - LP: #1540532 + * mmc: debugfs: correct wrong voltage value + - LP: #1540532 + * IB/mlx4: Initialize hop_limit when creating address handle + - LP: #1540532 + * net/mlx4: Remove unused macro + - LP: #1540532 + * NFSv4: Don't perform cached access checks before we've OPENed the file + - LP: #1540532 + * NFS: Ensure we revalidate attributes before using execute_ok() + - LP: #1540532 + * veth: don’t modify ip_summed; doing so treats packets with bad + checksums as good. + - LP: #1540532 + * net: cdc_ncm: avoid changing RX/TX buffers on MTU changes + - LP: #1540532 + * sctp: sctp should release assoc when sctp_make_abort_user return NULL + in sctp_close + - LP: #1540532 + * connector: bump skb->users before callback invocation + - LP: #1540532 + * af_unix: Fix splice-bind deadlock + - LP: #1540532 + * unix: properly account for FDs passed over unix sockets + - LP: #1540532 + * bridge: Only call /sbin/bridge-stp for the initial network namespace + - LP: #1540532 + * tcp_yeah: don't set ssthresh below 2 + - LP: #1540532 + * sched,cls_flower: set key address type when present + - LP: #1540532 + * udp: disallow UFO for sockets with SO_NO_CHECK option + - LP: #1540532 + * net: preserve IP control block during GSO segmentation + - LP: #1540532 + * phonet: properly unshare skbs in phonet_rcv() + - LP: #1540532 + * net: bpf: reject invalid shifts + - LP: #1540532 + * batman-adv: Drop immediate batadv_hard_iface free function + - LP: #1540532 + * vxlan: fix test which detect duplicate vxlan iface + - LP: #1540532 + * ipv6: update skb->csum when CE mark is propagated + - LP: #1540532 + * Linux 4.2.8-ckt3 + - LP: #1540532 + + -- Luis Henriques Thu, 04 Feb 2016 18:55:33 +0000 + +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-1029 +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-1029/debian.README.gz for details + +Package: linux-raspi2-tools-4.2.0-1029 +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-1029 + 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-1029 on + . + You probabaly want to install the linux-tools- meta package. + + +Package: linux-image-4.2.0-1029-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-1029-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-1029-raspi2 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-raspi2-headers-4.2.0-1029, ${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-1029/debian.README.gz for details. + +Package: linux-image-4.2.0-1029-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-1029-raspi2 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-raspi2-tools-4.2.0-1029 +Description: Linux kernel version specific tools for version 4.2.0-1029 + 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-1029 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,4228 @@ +linux-raspi2 (4.2.0-1029.37) wily; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1573242 + + [ Ubuntu: 4.2.0-36.41 ] + + * SAUCE: Input: synaptics - handle spurious release of trackstick + buttons, again + - LP: #1553811 + * Revert "SAUCE: arm64, numa, dt: adding dt based numa support using dt + node property arm, associativity" + - LP: #1558828 + * Revert "SAUCE: Documentation: arm64/arm: dt bindings for numa." + - LP: #1558828 + * Revert "SAUCE: arm64, numa: adding numa support for arm64 platforms." + - LP: #1558828 + * Revert "[Config] Enable NUMA on ARM64" + - LP: #1558828 + * SAUCE: (noup): Drivers: hv: vmbus: Fix a bug in + hv_need_to_signal_on_read() + - LP: #1556264 + * [debian] BugLink: close LP: bugs only for Launchpad urls + * [Config] updateconfigs after v4.2.8-ckt7 + * Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin" + - LP: #1561677 + * tipc: fix connection abort during subscription cancel + - LP: #1561677 + * tipc: fix nullptr crash during subscription cancel + - LP: #1561677 + * s390/mm: four page table levels vs. fork + - LP: #1561677 + * Input: aiptek - fix crash on detecting device without endpoints + - LP: #1561677 + * wext: fix message delay/ordering + - LP: #1561677 + * cfg80211/wext: fix message ordering + - LP: #1561677 + * mac80211: fix use of uninitialised values in RX aggregation + - LP: #1561677 + * mac80211: minstrel: Change expected throughput unit back to Kbps + - LP: #1561677 + * libata: fix HDIO_GET_32BIT ioctl + - LP: #1561677 + * iwlwifi: mvm: inc pending frames counter also when txing non-sta + - LP: #1561677 + * [media] adv7604: fix tx 5v detect regression + - LP: #1561677 + * ahci: add new Intel device IDs + - LP: #1561677 + * ahci: Order SATA device IDs for codename Lewisburg + - LP: #1561677 + * Adding Intel Lewisburg device IDs for SATA + - LP: #1561677 + * ASoC: samsung: Use IRQ safe spin lock calls + - LP: #1561677 + * mac80211: minstrel_ht: set default tx aggregation timeout to 0 + - LP: #1561677 + * usb: chipidea: otg: change workqueue ci_otg as freezable + - LP: #1561677 + * jffs2: Fix page lock / f->sem deadlock + - LP: #1561677 + * Fix directory hardlinks from deleted directories + - LP: #1561677 + * iommu/amd: Fix boot warning when device 00:00.0 is not iommu covered + - LP: #1561677 + * iommu/amd: Apply workaround for ATS write permission check + - LP: #1561677 + * libata: Align ata_device's id on a cacheline + - LP: #1561677 + * can: gs_usb: fixed disconnect bug by removing erroneous use of kfree() + - LP: #1561677 + * fbcon: set a default value to blink interval + - LP: #1561677 + * KVM: x86: fix root cause for missed hardware breakpoints + - LP: #1561677 + * arm64: vmemmap: use virtual projection of linear region + - LP: #1561677 + * vfio: fix ioctl error handling + - LP: #1561677 + * ALSA: ctl: Fix ioctls for X32 ABI + - LP: #1561677 + * ALSA: pcm: Fix ioctls for X32 ABI + - LP: #1561677 + * ALSA: rawmidi: Fix ioctls X32 ABI + - LP: #1561677 + * ALSA: timer: Fix broken compat timer user status ioctl + - LP: #1561677 + * ALSA: timer: Fix ioctls for X32 ABI + - LP: #1561677 + * cifs: fix out-of-bounds access in lease parsing + - LP: #1561677 + * CIFS: Fix SMB2+ interim response processing for read requests + - LP: #1561677 + * Fix cifs_uniqueid_to_ino_t() function for s390x + - LP: #1561677 + * arm/arm64: KVM: Fix ioctl error handling + - LP: #1561677 + * MIPS: kvm: Fix ioctl error handling. + - LP: #1561677 + * ALSA: hdspm: Fix wrong boolean ctl value accesses + - LP: #1561677 + * ALSA: hdspm: Fix zero-division + - LP: #1561677 + * ALSA: hdsp: Fix wrong boolean ctl value accesses + - LP: #1561677 + * use ->d_seq to get coherency between ->d_inode and ->d_flags + - LP: #1561677 + * USB: qcserial: add Dell Wireless 5809e Gobi 4G HSPA+ (rev3) + - LP: #1561677 + * USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder + - LP: #1561677 + * ASoC: dapm: Fix ctl value accesses in a wrong type + - LP: #1561677 + * ASoC: wm8958: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * ASoC: wm8994: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * ASoC: wm_adsp: Fix enum ctl accesses in a wrong type + - LP: #1561677 + * USB: serial: option: add support for Telit LE922 PID 0x1045 + - LP: #1561677 + * USB: serial: option: add support for Quectel UC20 + - LP: #1561677 + * ALSA: usb-audio: Add a quirk for Plantronics DA45 + - LP: #1561677 + * mac80211: check PN correctly for GCMP-encrypted fragmented MPDUs + - LP: #1561677 + * mac80211: Fix Public Action frame RX in AP mode + - LP: #1561677 + * i2c: brcmstb: allocate correct amount of memory for regmap + - LP: #1561677 + * ALSA: seq: oss: Don't drain at closing a client + - LP: #1561677 + * parisc: Fix ptrace syscall number and return value modification + - LP: #1561677 + * drm/ast: Fix incorrect register check for DRAM width + - LP: #1561677 + * USB: qcserial: add Sierra Wireless EM74xx device ID + - LP: #1561677 + * drm/amdgpu/pm: update current crtc info after setting the powerstate + - LP: #1561677 + * drm/radeon/pm: update current crtc info after setting the powerstate + - LP: #1561677 + * drm/amdgpu: return from atombios_dp_get_dpcd only when error + - LP: #1561677 + * PM / sleep / x86: Fix crash on graph trace through x86 suspend + - LP: #1561677 + * ALSA: hda - Fix mic issues on Acer Aspire E1-472 + - LP: #1561677 + * ovl: fix working on distributed fs as lower layer + - LP: #1561677 + * ovl: fix getcwd() failure after unsuccessful rmdir + - LP: #1561677 + * ovl: ignore lower entries when checking purity of non-directory entries + - LP: #1561677 + * MIPS: traps: Fix SIGFPE information leak from `do_ov' and + `do_trap_or_bp' + - LP: #1561677 + * ubi: Fix out of bounds write in volume update code + - LP: #1561677 + * target: Drop incorrect ABORT_TASK put for completed commands + - LP: #1561677 + * ARM: OMAP2+: hwmod: Introduce ti,no-idle dt property + - LP: #1561677 + * ARM: dts: dra7: do not gate cpsw clock due to errata i877 + - LP: #1561677 + * PCI: Allow a NULL "parent" pointer in pci_bus_assign_domain_nr() + - LP: #1561677 + * KVM: PPC: Book3S HV: Sanitize special-purpose register values on guest + exit + - LP: #1561677 + * ncpfs: fix a braino in OOM handling in ncp_fill_cache() + - LP: #1561677 + * jffs2: reduce the breakage on recovery from halfway failed rename() + - LP: #1561677 + * KVM: VMX: disable PEBS before a guest entry + - LP: #1561677 + * arm64: account for sparsemem section alignment when choosing vmemmap + offset + - LP: #1561677 + * tracing: Fix check for cpu online when event is disabled + - LP: #1561677 + * KVM: MMU: fix ept=0/pte.u=1/pte.w=0/CR0.WP=0/CR4.SMEP=1/EFER.NX=0 combo + - LP: #1561677 + * dmaengine: at_xdmac: fix residue computation + - LP: #1561677 + * MIPS: Fix build error when SMP is used without GIC + - LP: #1561677 + * IB/core: Use GRH when the path hop-limit > 0 + - LP: #1561677 + * dmaengine: pxa_dma: fix cyclic transfers + - LP: #1561677 + * MIPS: smp.c: Fix uninitialised temp_foreign_map + - LP: #1561677 + * tcp: fix tcpi_segs_in after connection establishment + - LP: #1561677 + * be2net: Don't leak iomapped memory on removal. + - LP: #1561677 + * tcp: convert cached rtt from usec to jiffies when feeding initial rto + - LP: #1561677 + * ext4: iterate over buffer heads correctly in move_extent_per_page() + - LP: #1561677 + * ppp: release rtnl mutex when interface creation fails + - LP: #1561677 + * net/mlx4_core: Allow resetting VF admin mac to zero + - LP: #1561677 + * ipv6: re-enable fragment header matching in ipv6_find_hdr + - LP: #1561677 + * net/mlx5e: Remove wrong poll CQ optimization + - LP: #1561677 + * cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind + - LP: #1561677 + * net: qca_spi: Don't clear IFF_BROADCAST + - LP: #1561677 + * net: moxa: fix an error code + - LP: #1561677 + * mld, igmp: Fix reserved tailroom calculation + - LP: #1561677 + * Linux 4.2.8-ckt6 + - LP: #1561677 + * (upstream) net/mlx5e: Avoid NULL pointer access in case of + configuration failure + - LP: #1528466 + * PCI: Disable IO/MEM decoding for devices with non-compliant BARs + - LP: #1559929 + * x86/PCI: Mark Broadwell-EP Home Agent & PCU as having non-compliant + BARs + - LP: #1559929 + * fuse: do not use iocb after it may have been freed + - LP: #1505948 + * fuse: Add reference counting for fuse_io_priv + - LP: #1505948 + * intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled + - LP: #1559918 + * crypto: skcipher - Add crypto_skcipher_has_setkey + - LP: #1556562 + * crypto: algif_skcipher - Add key check exception for cipher_null + - LP: #1556562 + * crypto: algif_skcipher - Do not assume that req is unchanged + - LP: #1556562 + * crypto: algif_skcipher - Do not dereference ctx without socket lock + - LP: #1556562 + * proc: revert /proc//maps [stack:TID] annotation + - LP: #1547231 + * ACPI / processor: Request native thermal interrupt handling via _OSC + - LP: #1559923 + * gpiolib: do not allow to insert an empty gpiochip + - LP: #1566544 + * gpio: add a data pointer to gpio_chip + - LP: #1566544 + * gpio: rcar: Add Runtime PM handling for interrupts + - LP: #1566544 + * ipv4: Don't do expensive useless work during inetdev destroy. + - LP: #1566544 + * Input: powermate - fix oops with malicious USB descriptors + - LP: #1566544 + * USB: iowarrior: fix oops with malicious USB descriptors + - LP: #1566544 + * ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk() + - LP: #1566544 + * ALSA: usb-audio: Add sanity checks for endpoint accesses + - LP: #1566544 + * include/linux/poison.h: fix LIST_POISON{1,2} offset + - LP: #1566544 + * Input: ati_remote2 - fix crashes on detecting device with invalid + descriptor + - LP: #1566544 + * USB: cdc-acm: more sanity checking + - LP: #1566544 + * drm/i915: Workaround CHV pipe C cursor fail + - LP: #1566544 + * EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr() + - LP: #1566544 + * crypto: ccp - Add hash state import and export support + - LP: #1566544 + * clk: rockchip: add pclk_cpu to the list of rk3188 critical clocks + - LP: #1566544 + * clk: rockchip: Add pclk_peri to critical clocks on RK3066/RK3188 + - LP: #1566544 + * clk: rockchip: add hclk_cpubus to the list of rk3188 critical clocks + - LP: #1566544 + * tty: Fix GPF in flush_to_ldisc(), part 2 + - LP: #1566544 + * media: v4l2-compat-ioctl32: fix missing length copy in + put_v4l2_buffer32 + - LP: #1566544 + * pwc: Add USB id for Philips Spc880nc webcam + - LP: #1566544 + * crypto: ccp - Limit the amount of information exported + - LP: #1566544 + * crypto: ccp - Don't assume export/import areas are aligned + - LP: #1566544 + * 8250: use callbacks to access UART_DLL/UART_DLM + - LP: #1566544 + * net: irda: Fix use-after-free in irtty_open() + - LP: #1566544 + * mei: bus: check if the device is enabled before data transfer + - LP: #1566544 + * staging: comedi: ni_tiocmd: change mistaken use of start_src for + start_arg + - LP: #1566544 + * tools/hv: Use include/uapi with __EXPORTED_HEADERS__ + - LP: #1566544 + * tpm: fix the rollback in tpm_chip_register() + - LP: #1566544 + * tpm: fix the cleanup of struct tpm_chip + - LP: #1566544 + * ARM: dts: armada-375: use armada-370-sata for SATA + - LP: #1566544 + * usb: retry reset if a device times out + - LP: #1566544 + * HID: fix hid_ignore_special_drivers module parameter + - LP: #1566544 + * scripts/coccinelle: modernize & + - LP: #1566544 + * adv7511: TX_EDID_PRESENT is still 1 after a disconnect + - LP: #1566544 + * saa7134: Fix bytesperline not being set correctly for planar formats + - LP: #1566544 + * tpm_crb: tpm2_shutdown() must be called before tpm_chip_unregister() + - LP: #1566544 + * perf tools: Dont stop PMU parsing on alias parse error + - LP: #1566544 + * Bluetooth: btusb: Add new AR3012 ID 13d3:3395 + - LP: #1542564, #1566544 + * Bluetooth: Add new AR3012 ID 0489:e095 + - LP: #1542944, #1566544 + * aacraid: Fix RRQ overload + - LP: #1566544 + * aacraid: Fix memory leak in aac_fib_map_free + - LP: #1566544 + * aic7xxx: Fix queue depth handling + - LP: #1566544 + * mtd: onenand: fix deadlock in onenand_block_markbad + - LP: #1566544 + * md/raid5: Compare apples to apples (or sectors to sectors) + - LP: #1566544 + * RAID5: check_reshape() shouldn't call mddev_suspend + - LP: #1566544 + * RAID5: revert e9e4c377e2f563 to fix a livelock + - LP: #1566544 + * crypto: ccp - memset request context to zero during import + - LP: #1566544 + * Bluetooth: btusb: Add a new AR3012 ID 04ca:3014 + - LP: #1546694, #1566544 + * mmc: sdhci: fix data timeout (part 1) + - LP: #1566544 + * mmc: sdhci: fix data timeout (part 2) + - LP: #1566544 + * perf tools: Fix python extension build + - LP: #1566544 + * IB/srpt: Simplify srpt_handle_tsk_mgmt() + - LP: #1566544 + * bttv: Width must be a multiple of 16 when capturing planar formats + - LP: #1566544 + * watchdog: rc32434_wdt: fix ioctl error handling + - LP: #1566544 + * nfsd4: fix bad bounds checking + - LP: #1566544 + * xfs: fix two memory leaks in xfs_attr_list.c error paths + - LP: #1566544 + * quota: Fix possible GPF due to uninitialised pointers + - LP: #1566544 + * mtip32xx: Fix broken service thread handling + - LP: #1566544 + * mtip32xx: Remove unwanted code from taskfile error handler + - LP: #1566544 + * mtip32xx: Print exact time when an internal command is interrupted + - LP: #1566544 + * mtip32xx: Avoid issuing standby immediate cmd during FTL rebuild + - LP: #1566544 + * mtip32xx: Fix for rmmod crash when drive is in FTL rebuild + - LP: #1566544 + * mtip32xx: Handle safe removal during IO + - LP: #1566544 + * mtip32xx: Handle FTL rebuild failure state during device initialization + - LP: #1566544 + * of: alloc anywhere from memblock if range not specified + - LP: #1566544 + * usb: hub: fix a typo in hub_port_init() leading to wrong logic + - LP: #1566544 + * KVM: i8254: change PIT discard tick policy + - LP: #1566544 + * sched/cputime: Fix steal time accounting vs. CPU hotplug + - LP: #1566544 + * libnvdimm: Fix security issue with DSM IOCTL. + - LP: #1566544 + * rt2x00: add new rt2800usb device Buffalo WLI-UC-G450 + - LP: #1566544 + * pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing + - LP: #1566544 + * perf/core: Fix perf_sched_count derailment + - LP: #1566544 + * perf/x86/intel: Use PAGE_SIZE for PEBS buffer size on Core2 + - LP: #1566544 + * perf/x86/intel: Fix PEBS warning by only restoring active PMU in pmi + - LP: #1566544 + * sched/cputime: Fix steal_account_process_tick() to always return + jiffies + - LP: #1566544 + * bcache: fix race of writeback thread starting before complete + initialization + - LP: #1566544 + * bcache: cleaned up error handling around register_cache() + - LP: #1566544 + * bcache: fix cache_set_flush() NULL pointer dereference on OOM + - LP: #1566544 + * be2iscsi: set the boot_kset pointer to NULL in case of failure + - LP: #1566544 + * md/raid5: preserve STRIPE_PREREAD_ACTIVE in break_stripe_batch_list + - LP: #1566544 + * drm/radeon: Don't drop DP 2.7 Ghz link setup on some cards. + - LP: #1566544 + * sg: fix dxferp in from_to case + - LP: #1566544 + * jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount + path + - LP: #1566544 + * ALSA: hda - Apply reboot D3 fix for CX20724 codec, too + - LP: #1566544 + * EDAC/sb_edac: Fix computation of channel address + - LP: #1566544 + * Bluetooth: btusb: Add a new AR3012 ID 13d3:3472 + - LP: #1552925, #1566544 + * ALSA: pcm: Avoid "BUG:" string for warnings again + - LP: #1566544 + * dm snapshot: disallow the COW and origin devices from being identical + - LP: #1566544 + * dm thin metadata: don't issue prefetches if a transaction abort has + failed + - LP: #1566544 + * dm cache: make sure every metadata function checks fail_io + - LP: #1566544 + * iser-target: Fix identification of login rx descriptor type + - LP: #1566544 + * iser-target: Add new state ISER_CONN_BOUND to isert_conn + - LP: #1566544 + * iser-target: Separate flows for np listeners and connections cma events + - LP: #1566544 + * ALSA: hda - fix the mic mute button and led problem for a Lenovo AIO + - LP: #1555912, #1566544 + * xtensa: ISS: don't hang if stdin EOF is reached + - LP: #1566544 + * xtensa: fix preemption in {clear,copy}_user_highpage + - LP: #1566544 + * xtensa: clear all DBREAKC registers on start + - LP: #1566544 + * Bluetooth: Fix potential buffer overflow with Add Advertising + - LP: #1566544 + * ARC: [BE] readl()/writel() to work in Big Endian CPU configuration + - LP: #1566544 + * bus: imx-weim: Take the 'status' property value into account + - LP: #1566544 + * ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41. + - LP: #1566544 + * s390/pci: enforce fmb page boundary rule + - LP: #1566544 + * drm/radeon: rework fbdev handling on chips with no connectors + - LP: #1566544 + * md: multipath: don't hardcopy bio in .make_request path + - LP: #1566544 + * net: mvneta: enable change MAC address when interface is up + - LP: #1566544 + * dm: fix rq_end_stats() NULL pointer in dm_requeue_original_request() + - LP: #1566544 + * HID: i2c-hid: fix OOB write in i2c_hid_set_or_send_report() + - LP: #1566544 + * ALSA: hda - Fix unconditional GPIO toggle via automute + - LP: #1566544 + * mmc: mmc_spi: Add Card Detect comments and fix CD GPIO case + - LP: #1566544 + * nfsd: fix deadlock secinfo+readdir compound + - LP: #1566544 + * vfs: show_vfsstat: do not ignore errors from show_devname method + - LP: #1566544 + * x86/iopl: Fix iopl capability check on Xen PV + - LP: #1566544 + * crypto: marvell/cesa - forward devm_ioremap_resource() error code + - LP: #1566544 + * mmc: sdhci: Fix override of timeout clk wrt max_busy_timeout + - LP: #1566544 + * drm/amdgpu: include the right version of gmc header files for iceland + - LP: #1566544 + * Input: ims-pcu - sanity check against missing interfaces + - LP: #1566544 + * watchdog: don't run proc_watchdog_update if new value is same as old + - LP: #1566544 + * mm: memcontrol: reclaim when shrinking memory.high below usage + - LP: #1566544 + * mm: memcontrol: reclaim and OOM kill when shrinking memory.max below + usage + - LP: #1566544 + * x86/apic: Fix suspicious RCU usage in + smp_trace_call_function_interrupt() + - LP: #1566544 + * USB: usb_driver_claim_interface: add sanity checking + - LP: #1566544 + * USB: uas: Reduce can_queue to MAX_CMNDS + - LP: #1566544 + * tracing: Have preempt(irqs)off trace preempt disabled functions + - LP: #1566544 + * tracing: Fix crash from reading trace_pipe with sendfile + - LP: #1566544 + * splice: handle zero nr_pages in splice_to_pipe() + - LP: #1566544 + * ALSA: usb-audio: add Microsoft HD-5001 to quirks + - LP: #1566544 + * writeback, cgroup: fix premature wb_put() in + locked_inode_to_wb_and_lock_list() + - LP: #1566544 + * fs-writeback: unplug before cond_resched in writeback_sb_inodes + - LP: #1566544 + * writeback, cgroup: fix use of the wrong bdi_writeback which mismatches + the inode + - LP: #1566544 + * bitops: Do not default to __clear_bit() for __clear_bit_unlock() + - LP: #1566544 + * target: Fix target_release_cmd_kref shutdown comp leak + - LP: #1566544 + * KVM: VMX: avoid guest hang on invalid invept instruction + - LP: #1566544 + * KVM: fix spin_lock_init order on x86 + - LP: #1566544 + * tracing: Fix trace_printk() to print when not using bprintk() + - LP: #1566544 + * fs/coredump: prevent fsuid=0 dumps into user-controlled directories + - LP: #1566544 + * rapidio/rionet: fix deadlock on SMP + - LP: #1566544 + * staging: comedi: ni_mio_common: fix the ni_write[blw]() functions + - LP: #1566544 + * staging: android: ion_test: fix check of + platform_device_register_simple() error code + - LP: #1566544 + * ideapad-laptop: Add ideapad Y700 (15) to the no_hw_rfkill DMI list + - LP: #1566544 + * MAINTAINERS: Update mailing list and web page for hwmon subsystem + - LP: #1566544 + * ocfs2/dlm: fix race between convert and recovery + - LP: #1566544 + * ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list + - LP: #1566544 + * mm/page_alloc: prevent merging between isolated and other pageblocks + - LP: #1566544 + * mac80211: avoid excessive stack usage in sta_info + - LP: #1566544 + * clk: xgene: Add missing parenthesis when clearing divider value + - LP: #1566544 + * clk: qcom: msm8960: Fix ce3_src register offset + - LP: #1566544 + * xen kconfig: don't "select INPUT_XEN_KBDDEV_FRONTEND" + - LP: #1566544 + * ppp: take reference on channels netns + - LP: #1566544 + * mdio-sun4i: oops in error handling in probe + - LP: #1566544 + * clk: rockchip: free memory in error cases when registering clock + branches + - LP: #1566544 + * ARC: bitops: Remove non relevant comments + - LP: #1566544 + * mac80211: fix txq queue related crashes + - LP: #1566544 + * net: Fix use after free in the recvmmsg exit path + - LP: #1566544 + * ath9k: fix misleading indentation + - LP: #1566544 + * sctp: fix the transports round robin issue when init is retransmitted + - LP: #1566544 + * ethernet: micrel: fix some error codes + - LP: #1566544 + * megaraid_sas: add missing curly braces in ioctl handler + - LP: #1566544 + * clk-divider: make sure read-only dividers do not write to their + register + - LP: #1566544 + * misc/bmp085: Enable building as a module + - LP: #1566544 + * HID: logitech: fix Dual Action gamepad support + - LP: #1566544 + * net/mlx5: Make command timeout way shorter + - LP: #1566544 + * ASoC: ssm4567: Reset device before regcache_sync() + - LP: #1566544 + * fbdev: da8xx-fb: fix videomodes of lcd panels + - LP: #1566544 + * clk: qcom: msm8960: fix ce3_core clk enable register + - LP: #1566544 + * ipvs: correct initial offset of Call-ID header search in SIP + persistence engine + - LP: #1566544 + * drm/i915: Cleanup phys status page too + - LP: #1566544 + * ata: ahci_xgene: dereferencing uninitialized pointer in probe + - LP: #1566544 + * ath9k: fix buffer overrun for ar9287 + - LP: #1566544 + * perf tools: handle spaces in file names obtained from /proc/pid/maps + - LP: #1566544 + * rtc: ds1685: passing bogus values to irq_restore + - LP: #1566544 + * ARM: davinci: make I2C support optional + - LP: #1566544 + * drm/amdkfd: uninitialized variable in + dbgdev_wave_control_set_registers() + - LP: #1566544 + * mtd: map: fix .set_vpp() documentation + - LP: #1566544 + * ARM: OMAP3: Add cpuidle parameters table for omap3430 + - LP: #1566544 + * efi: Expose non-blocking set_variable() wrapper to efivars + - LP: #1566544 + * rtc: vr41xx: Wire up alarm_irq_enable + - LP: #1566544 + * sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a + race + - LP: #1566544 + * ipv4: fix broadcast packets reception + - LP: #1566544 + * lpfc: fix misleading indentation + - LP: #1566544 + * sched/preempt, sh: kmap_coherent relies on disabled preemption + - LP: #1566544 + * ipip: Properly mark ipip GRO packets as encapsulated. + - LP: #1566544 + * spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs + - LP: #1566544 + * ASoC: s3c24xx: use const snd_soc_component_driver pointer + - LP: #1566544 + * mlx4: add missing braces in verify_qp_parameters + - LP: #1566544 + * clk: meson: Fix meson_clk_register_clks() signature type mismatch + - LP: #1566544 + * coda: fix error path in case of missing pdata on non-DT platform + - LP: #1566544 + * kbuild/mkspec: fix grub2 installkernel issue + - LP: #1566544 + * bpf: avoid copying junk bytes in bpf_get_current_comm() + - LP: #1566544 + * mac80211: fix unnecessary frame drops in mesh fwding + - LP: #1566544 + * mtd: brcmnand: Fix v7.1 register offsets + - LP: #1566544 + * mac80211: fix ibss scan parameters + - LP: #1566544 + * at803x: fix reset handling + - LP: #1566544 + * rtc: hym8563: fix invalid year calculation + - LP: #1566544 + * perf pmu: Fix misleadingly indented assignment (whitespace) + - LP: #1566544 + * paride: make 'verbose' parameter an 'int' again + - LP: #1566544 + * regulator: s5m8767: fix get_register() error handling + - LP: #1566544 + * ppp: ensure file->private_data can't be overridden + - LP: #1566544 + * clk: versatile: sp810: support reentrance + - LP: #1566544 + * net: add description for len argument of dev_get_phys_port_name + - LP: #1566544 + * net: bcmgenet: fix dma api length mismatch + - LP: #1566544 + * ARM: prima2: always enable reset controller + - LP: #1566544 + * drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors + - LP: #1566544 + * perf stat: Document --detailed option + - LP: #1566544 + * v4l: vsp1: Set the SRU CTRL0 register when starting the stream + - LP: #1566544 + * ipvs: drop first packet to redirect conntrack + - LP: #1566544 + * rtc: max77686: Properly handle regmap_irq_get_virq() error code + - LP: #1566544 + * x86/iopl/64: Properly context-switch IOPL on Xen PV + - LP: #1566544 + * Linux 4.2.8-ckt7 + - LP: #1566544 + * PKCS#7: pkcs7_validate_trust(): initialize the _trusted output argument + - LP: #1571027 + * ALSA: hda - Asus N750JV external subwoofer fixup + - LP: #1571027 + * ALSA: hda - Fix white noise on Asus N750JV headphone + - LP: #1571027 + * ALSA: hda - Apply fix for white noise on Asus N550JV, too + - LP: #1571027 + * drm/radeon: add a dpm quirk for sapphire Dual-X R7 370 2G D5 + - LP: #1571027 + * fs: add file_dentry() + - LP: #1571027 + * nfs: use file_dentry() + - LP: #1571027 + * hwmon: (max1111) Return -ENODEV from max1111_read_channel if not + instantiated + - LP: #1571027 + * drm/radeon: add another R7 370 quirk + - LP: #1571027 + * drm/radeon: add a dpm quirk for all R7 370 parts + - LP: #1571027 + * powerpc/mm: Fixup preempt underflow with huge pages + - LP: #1571027 + * pinctrl: pistachio: fix mfio84-89 function description and pinmux. + - LP: #1571027 + * pinctrl: sunxi: Fix A33 external interrupts not working + - LP: #1571027 + * usb: renesas_usbhs: avoid NULL pointer derefernce in + usbhsf_pkt_handler() + - LP: #1571027 + * usb: renesas_usbhs: disable TX IRQ before starting TX DMAC transfer + - LP: #1571027 + * btrfs: fix crash/invalid memory access on fsync when using overlayfs + - LP: #1571027 + * ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk() + - LP: #1571027 + * ALSA: usb-audio: Fix double-free in error paths after + snd_usb_add_audio_stream() call + - LP: #1571027 + * USB: mct_u232: add sanity checking in probe + - LP: #1571027 + - CVE-2016-3136 + * USB: cypress_m8: add endpoint sanity check + - LP: #1571027 + - CVE-2016-3137 + * USB: digi_acceleport: do sanity checking for the number of ports + - LP: #1571027 + * [media] au0828: fix au0828_v4l2_close() dev_state race condition + - LP: #1571027 + * [media] au0828: Fix dev_state handling + - LP: #1571027 + * sd: Fix excessive capacity printing on devices with blocks bigger than + 512 bytes + - LP: #1571027 + * drm/dp: move hw_mutex up the call stack + - LP: #1571027 + * drm/udl: Use unlocked gem unreferencing + - LP: #1571027 + * ext4: add lockdep annotations for i_data_sem + - LP: #1571027 + * ALSA: hda - fix front mic problem for a HP desktop + - LP: #1564712, #1571027 + * KVM: x86: Inject pending interrupt even if pending nmi exist + - LP: #1571027 + * ALSA: timer: Use mod_timer() for rearming the system timer + - LP: #1571027 + * mm: fix invalid node in alloc_migrate_target() + - LP: #1571027 + * iio: st_magn: always define ST_MAGN_TRIGGER_SET_STATE + - LP: #1571027 + * ext4: ignore quota mount options if the quota feature is enabled + - LP: #1571027 + * xen/events: Mask a moving irq + - LP: #1571027 + * usb: renesas_usbhs: fix to avoid using a disabled ep in + usbhsg_queue_done() + - LP: #1571027 + * mac80211: properly deal with station hashtable insert errors + - LP: #1571027 + * compiler-gcc: disable -ftracer for __noclone functions + - LP: #1571027 + * rbd: use GFP_NOIO consistently for request allocations + - LP: #1571027 + * Btrfs: fix file/data loss caused by fsync after rename and new inode + - LP: #1571027 + * USB: serial: ftdi_sio: Add support for ICP DAS I-756xU devices + - LP: #1571027 + * USB: serial: cp210x: Adding GE Healthcare Device ID + - LP: #1571027 + * USB: option: add "D-Link DWM-221 B1" device id + - LP: #1571027 + * virtio: virtio 1.0 cs04 spec compliance for reset + - LP: #1571027 + * libnvdimm: fix smart data retrieval + - LP: #1571027 + * gpio: pca953x: Use correct u16 value for register word write + - LP: #1571027 + * parisc: Avoid function pointers for kernel exception routines + - LP: #1571027 + * parisc: Fix kernel crash with reversed copy_from_user() + - LP: #1571027 + * parisc: Unbreak handling exceptions from kernel modules + - LP: #1571027 + * net: macb: replace macb_writel() call by queue_writel() to update queue + ISR + - LP: #1571027 + * net: bcmgenet: fix dev->stats.tx_bytes accounting + - LP: #1571027 + * net: bcmgenet: fix skb_len in bcmgenet_xmit_single() + - LP: #1571027 + * ipv6: udp: fix UDP_MIB_IGNOREDMULTI updates + - LP: #1571027 + * pinctrl: nomadik: fix pull debug print inversion + - LP: #1571027 + * ip6_tunnel: set rtnl_link_ops before calling register_netdevice + - LP: #1571027 + * KVM: x86: move steal time initialization to vcpu entry time + - LP: #1571027 + * lib/ucs2_string: Add ucs2 -> utf8 helper functions + - LP: #1571027 + * efi: Use ucs2_as_utf8 in efivarfs instead of open coding a bad version + - LP: #1571027 + * efi: Do variable name validation tests in utf8 + - LP: #1571027 + * efi: Make our variable validation list include the guid + - LP: #1571027 + * efi: Make efivarfs entries immutable by default + - LP: #1571027 + * efi: Add pstore variables to the deletion whitelist + - LP: #1571027 + * lib/ucs2_string: Correct ucs2 -> utf8 conversion + - LP: #1571027 + * ipr: Fix out-of-bounds null overwrite + - LP: #1571027 + * ipr: Fix regression when loading firmware + - LP: #1571027 + * perf/x86/intel: Fix PEBS data source interpretation on Nehalem/Westmere + - LP: #1571027 + * ALSA: hda - Add new GPU codec ID 0x10de0082 to snd-hda + - LP: #1571027 + * mwifiex: fix corner case association failure + - LP: #1571027 + * net: phy: at803x: Request 'reset' GPIO only for AT8030 PHY + - LP: #1571027 + * Linux 4.2.8-ckt8 + - LP: #1571027 + + -- Kamal Mostafa Thu, 21 Apr 2016 14:01:37 -0700 + +linux-raspi2 (4.2.0-1028.36) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1557882 + + [ Ubuntu: 4.2.0-35.40 ] + + * Revert "workqueue: make sure delayed work run in local cpu" + - LP: #1556269 + * Revert "ALSA: hda - Fix noise on Gigabyte Z170X mobo" + - LP: #1556269 + * KVM: VMX: Fix host initiated access to guest MSR_TSC_AUX + - LP: #1552592 + * locking/qspinlock: Move __ARCH_SPIN_LOCK_UNLOCKED to qspinlock_types.h + - LP: #1545330 + * [media] usbvision fix overflow of interfaces array + - LP: #1556269 + * [media] usbvision: fix crash on detecting device with invalid + configuration + - LP: #1556269 + * ASN.1: Fix non-match detection failure on data overrun + - LP: #1556269 + * iw_cxgb3: Fix incorrectly returning error on success + - LP: #1556269 + * EVM: Use crypto_memneq() for digest comparisons + - LP: #1556269 + * vmstat: explicitly schedule per-cpu work on the CPU we need it to run + on + - LP: #1556269 + * x86/entry/compat: Add missing CLAC to entry_INT80_32 + - LP: #1556269 + * iio-light: Use a signed return type for ltr501_match_samp_freq() + - LP: #1556269 + * iio: add IIO_TRIGGER dependency to STK8BA50 + - LP: #1556269 + * iio: add HAS_IOMEM dependency to VF610_ADC + - LP: #1556269 + * iio: dac: mcp4725: set iio name property in sysfs + - LP: #1556269 + * iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG + - LP: #1556269 + * iio: light: acpi-als: Report data as processed + - LP: #1556269 + * iio:adc:ti_am335x_adc Fix buffered mode by identifying as software + buffer. + - LP: #1556269 + * ASoC: rt5645: fix the shift bit of IN1 boost + - LP: #1556269 + * ARCv2: STAR 9000950267: Handle return from intr to Delay Slot #2 + - LP: #1556269 + * cgroup: make sure a parent css isn't offlined before its children + - LP: #1556269 + * ARM: OMAP2+: Fix wait_dll_lock_timed for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix l2dis_3630 for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix save_secure_ram_context for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix l2_inv_api_params for rodata + - LP: #1556269 + * ARM: OMAP2+: Fix ppa_zero_params and ppa_por_params for rodata + - LP: #1556269 + * rtlwifi: rtl8821ae: Fix 5G failure when EEPROM is incorrectly encoded + - LP: #1556269 + * PCI/AER: Flush workqueue on device remove to avoid use-after-free + - LP: #1556269 + * ARM: dts: Fix wl12xx missing clocks that cause hangs + - LP: #1556269 + * libata: disable forced PORTS_IMPL for >= AHCI 1.3 + - LP: #1556269 + * mac80211: Requeue work after scan complete for all VIF types. + - LP: #1556269 + * rfkill: fix rfkill_fop_read wait_event usage + - LP: #1556269 + * ARM: dts: at91: sama5d4: fix instance id of DBGU + - LP: #1556269 + * ARM: dts: at91: sama5d4ek: add phy address and IRQ for macb0 + - LP: #1556269 + * ARM: dts: at91: sama5d4 xplained: fix phy0 IRQ type + - LP: #1556269 + * crypto: shash - Fix has_key setting + - LP: #1556269 + * Input: vmmouse - fix absolute device registration + - LP: #1556269 + * spi: atmel: fix gpio chip-select in case of non-DT platform + - LP: #1556269 + * drm/i915/dp: fall back to 18 bpp when sink capability is unknown + - LP: #1556269 + * ALSA: usb-audio: Fix OPPO HA-1 vendor ID + - LP: #1556269 + * ALSA: usb-audio: Add native DSD support for PS Audio NuWave DAC + - LP: #1556269 + * ALSA: usb-audio: Add quirk for Microsoft LifeCam HD-6000 + - LP: #1556269 + * target: Fix WRITE_SAME/DISCARD conversion to linux 512b sectors + - LP: #1556269 + * crypto: algif_hash - wait for crypto_ahash_init() to complete + - LP: #1556269 + * iio: inkern: fix a NULL dereference on error + - LP: #1556269 + * iio: pressure: mpl115: fix temperature offset sign + - LP: #1556269 + * intel_scu_ipcutil: underflow in scu_reg_access() + - LP: #1556269 + * ALSA: seq: Fix race at closing in virmidi driver + - LP: #1556269 + * ALSA: rawmidi: Remove kernel WARNING for NULL user-space buffer check + - LP: #1556269 + * ALSA: pcm: Fix potential deadlock in OSS emulation + - LP: #1556269 + * ALSA: seq: Fix yet another races among ALSA timer accesses + - LP: #1556269 + * ALSA: timer: Code cleanup + - LP: #1556269 + * ALSA: timer: Fix link corruption due to double start or stop + - LP: #1556269 + * libata: fix sff host state machine locking while polling + - LP: #1556269 + * MIPS: Fix buffer overflow in syscall_get_arguments() + - LP: #1556269 + * cputime: Prevent 32bit overflow in time[val|spec]_to_cputime() + - LP: #1556269 + * drm: add helper to check for wc memory support + - LP: #1556269 + * drm/radeon: mask out WC from BO on unsupported arches + - LP: #1556269 + * drm/amdgpu: mask out WC from BO on unsupported arches + - LP: #1556269 + * ASoC: dpcm: fix the BE state on hw_free + - LP: #1556269 + * drm/amdgpu: move gmc7 support out of CIK dependency + - LP: #1556269 + * drm/amdgpu: iceland use CI based MC IP + - LP: #1556269 + * drm/amdgpu: The VI specific EXE bit should only apply to GMC v8.0 above + - LP: #1556269 + * drm/amdgpu: pull topaz gmc bits into gmc_v7 + - LP: #1556269 + * drm/amdgpu: drop topaz support from gmc8 module + - LP: #1556269 + * modules: fix modparam async_probe request + - LP: #1556269 + * module: wrapper for symbol name. + - LP: #1556269 + * ALSA: hda - Add fixup for Mac Mini 7,1 model + - LP: #1556269 + * ALSA: rawmidi: Make snd_rawmidi_transmit() race-free + - LP: #1556269 + * ALSA: rawmidi: Fix race at copying & updating the position + - LP: #1556269 + * ALSA: seq: Fix lockdep warnings due to double mutex locks + - LP: #1556269 + * drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration + - LP: #1556269 + * radix-tree: fix race in gang lookup + - LP: #1556269 + * drivers/hwspinlock: fix race between radix tree insertion and lookup + - LP: #1556269 + * btrfs: fix clone / extent-same deadlocks + - LP: #1556269 + * Btrfs: fix invalid page accesses in extent_same (dedup) ioctl + - LP: #1556269 + * Btrfs: fix page reading in extent_same ioctl leading to csum errors + - LP: #1556269 + * usb: xhci: handle both SSIC ports in PME stuck quirk + - LP: #1556269 + * usb: xhci: add a quirk bit for ssic port unused + - LP: #1556269 + * usb: xhci: set SSIC port unused only if xhci_suspend succeeds + - LP: #1556269 + * usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Broxton-M platforms + - LP: #1556269 + * xhci: Fix list corruption in urb dequeue at host removal + - LP: #1556269 + * target: Invoke release_cmd() callback without holding a spinlock + - LP: #1556269 + * target: Fix LUN_RESET active I/O handling for ACK_KREF + - LP: #1556269 + * target: Fix LUN_RESET active TMR descriptor handling + - LP: #1556269 + * target: Fix TAS handling for multi-session se_node_acls + - LP: #1556269 + * [media] tda1004x: only update the frontend properties if locked + - LP: #1556269 + * ALSA: timer: Fix leftover link at closing + - LP: #1556269 + * [media] saa7134-alsa: Only frees registered sound cards + - LP: #1556269 + * ARM: nomadik: fix up SD/MMC DT settings + - LP: #1556269 + * Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl + - LP: #1556269 + * scsi_dh_rdac: always retry MODE SELECT on command lock violation + - LP: #1556269 + * SCSI: Add Marvell Console to VPD blacklist + - LP: #1556269 + * drm: fix missing reference counting decrease + - LP: #1556269 + * drm: Add drm_fixp_from_fraction and drm_fixp2int_ceil + - LP: #1556269 + * drm/dp/mst: Calculate MST PBN with 31.32 fixed point + - LP: #1556269 + * drm/dp/mst: Reverse order of MST enable and clearing VC payload table. + - LP: #1556269 + * drm/dp/mst: deallocate payload on port destruction + - LP: #1556269 + * ALSA: hda - Fix static checker warning in patch_hdmi.c + - LP: #1556269 + * target: Fix remote-port TMR ABORT + se_cmd fabric stop + - LP: #1556269 + * dump_stack: avoid potential deadlocks + - LP: #1556269 + * mm, vmstat: fix wrong WQ sleep when memory reclaim doesn't make any + progress + - LP: #1556269 + * ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery + cleanup + - LP: #1556269 + * mm: replace vma_lock_anon_vma with anon_vma_lock_read/write + - LP: #1556269 + * radix-tree: fix oops after radix_tree_iter_retry + - LP: #1556269 + * crypto: user - lock crypto_alg_list on alg dump + - LP: #1556269 + * crypto: algif_skcipher - Do not set MAY_BACKLOG on the async path + - LP: #1556269 + * crypto: atmel-sha - fix atmel_sha_remove() + - LP: #1556269 + * crypto: marvell/cesa - fix test in mv_cesa_dev_dma_init() + - LP: #1556269 + * target: Fix race with SCF_SEND_DELAYED_TAS handling + - LP: #1556269 + * qla2xxx: Fix stale pointer access. + - LP: #1556269 + * serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) + - LP: #1556269 + * tty: Add support for PCIe WCH382 2S multi-IO card + - LP: #1556269 + * pty: fix possible use after free of tty->driver_data + - LP: #1556269 + * pty: make sure super_block is still valid in final /dev/tty close + - LP: #1556269 + * ALSA: hda - Fix speaker output from VAIO AiO machines + - LP: #1556269 + * klist: fix starting point removed bug in klist iterators + - LP: #1556269 + * ALSA: dummy: Implement timer backend switching more safely + - LP: #1556269 + * drm/i915/dsi: defend gpio table against out of bounds access + - LP: #1556269 + * drm/i915/dsi: don't pass arbitrary data to sideband + - LP: #1556269 + * powerpc: Fix dedotify for binutils >= 2.26 + - LP: #1556269 + * ALSA: timer: Fix wrong instance passed to slave callbacks + - LP: #1556269 + * ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz() + - LP: #1556269 + * xen/scsiback: correct frontend counting + - LP: #1556269 + * nfs: fix nfs_size_to_loff_t + - LP: #1556269 + * ALSA: timer: Fix race between stop and interrupt + - LP: #1556269 + * ALSA: hda - Fix bad dereference of jack object + - LP: #1556269 + * ALSA: timer: Fix race at concurrent reads + - LP: #1556269 + * phy: core: fix wrong err handle for phy_power_on + - LP: #1556269 + * phy: twl4030-usb: Relase usb phy on unload + - LP: #1556269 + * phy: twl4030-usb: Fix unbalanced pm_runtime_enable on module reload + - LP: #1556269 + * drm/i915/skl: Don't skip mst encoders in skl_ddi_pll_select() + - LP: #1556269 + * drm/i915: fix error path in intel_setup_gmbus() + - LP: #1556269 + * ahci: Intel DNV device IDs SATA + - LP: #1556269 + * workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup + - LP: #1556269 + * drm/amdgpu: fix s4 resume + - LP: #1556269 + * drm/amdgpu: remove unnecessary forward declaration + - LP: #1556269 + * drm/radeon: hold reference to fences in radeon_sa_bo_new + - LP: #1556269 + * drm/amdgpu: fix issue with overlapping userptrs + - LP: #1556269 + * cifs: fix erroneous return value + - LP: #1556269 + * s390/dasd: prevent incorrect length error under z/VM after PAV changes + - LP: #1556269 + * s390/dasd: fix refcount for PAV reassignment + - LP: #1556269 + * ARM: 8519/1: ICST: try other dividends than 1 + - LP: #1556269 + * btrfs: properly set the termination value of ctx->pos in readdir + - LP: #1556269 + * irqchip/gic-v3-its: Fix double ICC_EOIR write for LPI in EOImode==1 + - LP: #1556269 + * scsi: fix soft lockup in scsi_remove_target() on module removal + - LP: #1556269 + * ext4: fix potential integer overflow + - LP: #1556269 + * ext4: don't read blocks from disk after extents being swapped + - LP: #1556269 + * bio: return EINTR if copying to user space got interrupted + - LP: #1556269 + * iwlwifi: mvm: don't allow sched scans without matches to be started + - LP: #1556269 + * powerpc/eeh: Fix stale cached primary bus + - LP: #1556269 + * xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY + - LP: #1556269 + * xen/pciback: Save the number of MSI-X entries to be copied later. + - LP: #1556269 + * xen/pcifront: Fix mysterious crashes when NUMA locality information was + extracted. + - LP: #1556269 + * ALSA: seq: Fix leak of pool buffer at concurrent writes + - LP: #1556269 + * ALSA: hda - Cancel probe work instead of flush at remove + - LP: #1556269 + * dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer + - LP: #1556269 + * tracepoints: Do not trace when cpu is offline + - LP: #1556269 + * tracing: Fix freak link error caused by branch tracer + - LP: #1556269 + * ALSA: seq: Fix double port list deletion + - LP: #1556269 + * drm/amdgpu: use post-decrement in error handling + - LP: #1556269 + * drm/radeon: use post-decrement in error handling + - LP: #1556269 + * drm/qxl: use kmalloc_array to alloc reloc_info in + qxl_process_single_command + - LP: #1556269 + * drm: Fix treatment of drm_vblank_offdelay in drm_vblank_on() (v2) + - LP: #1556269 + * x86/uaccess/64: Make the __copy_user_nocache() assembly code more + readable + - LP: #1556269 + * x86/uaccess/64: Handle the caching of 4-byte nocache copies properly in + __copy_user_nocache() + - LP: #1556269 + * usb: dwc3: Fix assignment of EP transfer resources + - LP: #1556269 + * powerpc/ioda: Set "read" permission when "write" is set + - LP: #1556269 + * NFSv4: Fix a dentry leak on alias use + - LP: #1556269 + * x86/mm: Fix vmalloc_fault() to handle large pages properly + - LP: #1556269 + * ALSA: pcm: Fix rwsem deadlock for non-atomic PCM stream + - LP: #1556269 + * USB: option: add support for SIM7100E + - LP: #1556269 + * USB: cp210x: add IDs for GE B650V3 and B850V3 boards + - LP: #1556269 + * USB: option: add "4G LTE usb-modem U901" + - LP: #1556269 + * mm: fix regression in remap_file_pages() emulation + - LP: #1556269 + * ipc: convert invalid scenarios to use WARN_ON + - LP: #1556269 + * ipc/shm: handle removed segments gracefully in shm_mmap() + - LP: #1556269 + * hwmon: (ads1015) Handle negative conversion values correctly + - LP: #1556269 + * ext4: fix bh->b_state corruption + - LP: #1556269 + * ext4: fix crashes in dioread_nolock mode + - LP: #1556269 + * nfit: fix multi-interface dimm handling, acpi6.1 compatibility + - LP: #1556269 + * hwmon: (gpio-fan) Remove un-necessary speed_index lookup for thermal + hook + - LP: #1556269 + * kernel/resource.c: fix muxed resource handling in __request_region() + - LP: #1556269 + * drivers: android: correct the size of struct binder_uintptr_t for + BC_DEAD_BINDER_DONE + - LP: #1556269 + * can: ems_usb: Fix possible tx overflow + - LP: #1556269 + * dm: fix dm_rq_target_io leak on faults with .request_fn DM w/ blk-mq + paths + - LP: #1556269 + * s390/compat: correct restore of high gprs on signal return + - LP: #1556269 + * drm/amdgpu/pm: adjust display configuration after powerstate + - LP: #1556269 + * ARM: OMAP2+: Fix onenand initialization to avoid filesystem corruption + - LP: #1556269 + * sunrpc/cache: fix off-by-one in qword_get() + - LP: #1556269 + * KVM: arm/arm64: vgic: Ensure bitmaps are long enough + - LP: #1556269 + * ARCv2: SMP: Emulate IPI to self using software triggered interrupt + - LP: #1556269 + * KVM: x86: fix missed hardware breakpoints + - LP: #1556269 + * KVM: async_pf: do not warn on page allocation failures + - LP: #1556269 + * tracing: Fix showing function event in available_events + - LP: #1556269 + * libceph: don't bail early from try_read() when skipping a message + - LP: #1556269 + * libceph: use the right footer size when skipping a message + - LP: #1556269 + * ALSA: hda - Fixing background noise on Dell Inspiron 3162 + - LP: #1549620, #1556269 + * KVM: x86: MMU: fix ubsan index-out-of-range warning + - LP: #1556269 + * ALSA: hda/realtek - Support Dell headset mode for ALC225 + - LP: #1556269 + * ALSA: hda - Fixup speaker pass-through control for nid 0x14 on ALC225 + - LP: #1549660, #1556269 + * ALSA: hda - Fix headset support and noise on HP EliteBook 755 G2 + - LP: #1556269 + * ALSA: hda - Loop interrupt handling until really cleared + - LP: #1556269 + * x86/mpx: Fix off-by-one comparison with nr_registers + - LP: #1556269 + * mm: thp: fix SMP race condition between THP page fault and + MADV_DONTNEED + - LP: #1556269 + * ocfs2: unlock inode if deleting inode from orphan fails + - LP: #1556269 + * hpfs: don't truncate the file when delete fails + - LP: #1556269 + * do_last(): don't let a bogus return value from ->open() et.al. to + confuse us + - LP: #1556269 + * namei: ->d_inode of a pinned dentry is stable only for positives + - LP: #1556269 + * should_follow_link(): validate ->d_seq after having decided to follow + - LP: #1556269 + * do_last(): ELOOP failure exit should be done after leaving RCU mode + - LP: #1556269 + * af_iucv: Validate socket address length in iucv_sock_bind() + - LP: #1556269 + * net: dp83640: Fix tx timestamp overflow handling. + - LP: #1556269 + * tcp: fix NULL deref in tcp_v4_send_ack() + - LP: #1556269 + * af_unix: fix struct pid memory leak + - LP: #1556269 + * pptp: fix illegal memory access caused by multiple bind()s + - LP: #1556269 + * sctp: allow setting SCTP_SACK_IMMEDIATELY by the application + - LP: #1556269 + * switchdev: Require RTNL mutex to be held when sending FDB notifications + - LP: #1556269 + * tcp: beware of alignments in tcp_get_info() + - LP: #1556269 + * ipv6: enforce flowi6_oif usage in ip6_dst_lookup_tail() + - LP: #1556269 + * ipv6/udp: use sticky pktinfo egress ifindex on connect() + - LP: #1556269 + * net/ipv6: add sysctl option accept_ra_min_hop_limit + - LP: #1556269 + * ipv6: addrconf: Fix recursive spin lock call + - LP: #1556269 + * ipv6: fix a lockdep splat + - LP: #1556269 + * unix: correctly track in-flight fds in sending process user_struct + - LP: #1556269 + * net:Add sysctl_max_skb_frags + - LP: #1556269 + * tg3: Fix for tg3 transmit queue 0 timed out when too many gso_segs + - LP: #1556269 + * sctp: translate network order to host order when users get a hmacid + - LP: #1556269 + * flow_dissector: Fix unaligned access in __skb_flow_dissector when used + by eth_get_headlen + - LP: #1556269 + * net: Copy inner L3 and L4 headers as unaligned on GRE TEB + - LP: #1556269 + * bpf: fix branch offset adjustment on backjumps after patching ctx + expansion + - LP: #1556269 + * bonding: Fix ARP monitor validation + - LP: #1556269 + * ipv4: fix memory leaks in ip_cmsg_send() callers + - LP: #1556269 + * af_unix: Guard against other == sk in unix_dgram_sendmsg + - LP: #1556269 + * qmi_wwan: add "4G LTE usb-modem U901" + - LP: #1556269 + * net/mlx4_en: Count HW buffer overrun only once + - LP: #1556269 + * net/mlx4_en: Choose time-stamping shift value according to HW frequency + - LP: #1556269 + * net/mlx4_en: Avoid changing dev->features directly in run-time + - LP: #1556269 + * l2tp: Fix error creating L2TP tunnels + - LP: #1556269 + * pppoe: fix reference counting in PPPoE proxy + - LP: #1556269 + * route: check and remove route cache when we get route + - LP: #1556269 + * rtnl: RTM_GETNETCONF: fix wrong return value + - LP: #1556269 + * unix_diag: fix incorrect sign extension in unix_lookup_by_ino + - LP: #1556269 + * sctp: Fix port hash table size computation + - LP: #1556269 + * net/mlx4_core: Do not BUG_ON during reset when PCI is offline + - LP: #1556269 + * s390/perf_event: fix address range for asynchronous stack + - LP: #1556269 + * batman-adv: Avoid endless loop in bat-on-bat netdevice check + - LP: #1556269 + * af_unix: Don't set err in unix_stream_read_generic unless there was an + error + - LP: #1556269 + * netlink: not trim skb for mmaped socket when dump + - LP: #1556269 + * Input: xpad - remove unused function + - LP: #1556269 + * ARM: dts: kirkwood: use unique machine name for ds112 + - LP: #1556269 + * s390/stacktrace: fix address ranges for asynchronous and panic stack + - LP: #1556269 + * MAINTAINERS: Remove stale entry for BCM33xx chips + - LP: #1556269 + * [media] exynos4-is: fix a format string bug + - LP: #1556269 + * net/mlx4_core: Fix potential corruption in counters database + - LP: #1556269 + * net: phy: bcm7xxx: Fix shadow mode 2 disabling + - LP: #1556269 + * writeback: initialize inode members that track writeback history + - LP: #1556269 + * bonding: don't use stale speed and duplex information + - LP: #1556269 + * net: phy: bcm7xxx: Fix bcm7xxx_config_init() check + - LP: #1556269 + * s390/oprofile: fix address range for asynchronous stack + - LP: #1556269 + * net: phy: Fix phy_mac_interrupt() + - LP: #1556269 + * net: phy: Avoid polling PHY with PHY_IGNORE_INTERRUPTS + - LP: #1556269 + * net: phy: bcm7xxx: Fix 40nm EPHY features + - LP: #1556269 + * netfilter: nfnetlink: correctly validate length of batch messages + - LP: #1556269 + * pipe: limit the per-user amount of pages allocated in pipes + - LP: #1556269 + * Linux 4.2.8-ckt5 + - LP: #1556269 + * x86/mm: Fix slow_virt_to_phys() for X86_PAE again + - LP: #1549601 + * Drivers: hv: vss: run only on supported host versions + - LP: #1496927 + * ovl: copy new uid/gid into overlayfs runtime inode + - LP: #1555997 + * sched/numa: Fix use-after-free bug in the task_numa_compare + - LP: #1527643 + + -- Brad Figg Wed, 16 Mar 2016 11:46:29 -0700 + +linux-raspi2 (4.2.0-1027.35) wily; urgency=low + + [ Brad Figg ] + + * rebased on Ubuntu-4.2.0-34.39 + + -- Brad Figg Tue, 08 Mar 2016 11:32:12 -0800 + +linux-raspi2 (4.2.0-1026.34) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1550761 + * rebased on Ubuntu-4.2.0-32.37 + + [ Kamal Mostafa ] + + * Merged back Ubuntu-4.2.0-31.36 + + -- Brad Figg Mon, 29 Feb 2016 08:27:22 -0800 + +linux-raspi2 (4.2.0-1025.32) wily; urgency=low + + [ Luis Henriques ] + + * rebased on Ubuntu-4.2.0-30.35 + + [ Ubuntu: 4.2.0-30.35 ] + + * SAUCE: cred: Add clone_cred() interface + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Use mounter's credentials instead of selectively + raising caps + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Skip permission checking for trusted.overlayfs.* + xattrs + - LP: #1531747, #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Be more careful about copying up sxid files + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + * SAUCE: overlayfs: Propogate nosuid from lower and upper mounts + - LP: #1534961, #1535150 + - CVE-2016-1575 CVE-2016-1576 + + -- Luis Henriques Fri, 19 Feb 2016 12:12:51 +0000 + +linux-raspi2 (4.2.0-1024.31) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1543518 + * rebased on Ubuntu-4.2.0-29.34 + + [ Ubuntu: 4.2.0-29.34 ] + + * Release Tracking Bug + - LP: #1543167 + * Revert "SAUCE: apparmor: fix sleep from invalid context" + - LP: #1542049 + * Revert "af_unix: Revert 'lock_interruptible' in stream receive code" + - LP: #1540731 + + -- Luis Henriques Tue, 09 Feb 2016 11:00:40 +0000 + +linux-raspi2 (4.2.0-1023.30) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1540861 + + [ Tim Gardner ] + + * Dropped ('pinctrl-bcm2835: bcm2835_gpio_direction_output must set the value') as + it conflicted with upstream stable ('pinctrl: bcm2835: Fix initial value for direction_output') + and provided the same functionality. + * Added upsream cherry-pick ad82362b2defd4adad87d8538617b2f51a4bf9c3 ('mm: add dma_pool_zalloc() call to DMA API') + in order to compensate for a missing stable patch. + * Revert "dmaengine: bcm2835-dma: Convert to use DMA pool" + This patch conflicts with the Raspberry Pi 2 BSP patches that implement DMA. It professes to + fix a memleak, but does so while also converting to a completely new DMA API (which completely breaks + the BSP implementation for DMA). + * Rebased against Ubuntu-4.2.0-28.33 + + [ Ubuntu: 4.2.0-28.33 ] + + * Release Tracking Bug + - LP: #1540634 + * CONFIG: CONFIG_DEBUG_UART_BCM63XX is not set + * SAUCE: ubuntu: aufs: tiny, extract a new func xino_fwrite_wkq() + - LP: #1533043 + * SAUCE: ubuntu: aufs: for 4.3, XINO handles EINTR from the dying process + - LP: #1533043 + * SAUCE: (no-up): apparmor: fix for failed mediation of socket that is + being shutdown + - LP: #1446906 + * SAUCE: apparmor: fix sleep from invalid context + - LP: #1539349 + * [Config] Add pvpanic to virtual flavour + - LP: #1537923 + * Revert "ACPI / LPSS: allow to use specific PM domain during ->probe()" + - LP: #1540532 + * tools: Add a "make all" rule + - LP: #1536370 + * vf610_adc: Fix internal temperature calculation + - LP: #1536370 + * iio: lpc32xx_adc: fix warnings caused by enabling unprepared clock + - LP: #1536370 + * iio:ad5064: Make sure ad5064_i2c_write() returns 0 on success + - LP: #1536370 + * iio: ad5064: Fix ad5629/ad5669 shift + - LP: #1536370 + * iio:ad7793: Fix ad7785 product ID + - LP: #1536370 + * iio: adc: vf610_adc: Fix division by zero error + - LP: #1536370 + * mmc: mmc: Improve reliability of mmc_select_hs200() + - LP: #1536370 + * mmc: mmc: Fix HS setting in mmc_select_hs400() + - LP: #1536370 + * mmc: mmc: Move mmc_switch_status() + - LP: #1536370 + * mmc: mmc: Improve reliability of mmc_select_hs400() + - LP: #1536370 + * crypto: qat - don't use userspace pointer + - LP: #1536370 + * iio: si7020: Swap data byte order + - LP: #1536370 + * iio: adc: xilinx: Fix VREFN scale + - LP: #1536370 + * ipmi: Start the timer and thread on internal msgs + - LP: #1536370 + * drm/i915: quirk backlight present on Macbook 4, 1 + - LP: #1536370 + * drm/i915: get runtime PM reference around GEM set_caching IOCTL + - LP: #1536370 + * drm/radeon: Disable uncacheable CPU mappings of GTT with RV6xx + - LP: #1536370 + * drm/radeon: unconditionally set sysfs_initialized + - LP: #1536370 + * drm/amdgpu: Fix default page access routing + - LP: #1536370 + * USB: qcserial: Fix support for HP lt4112 LTE/HSPA+ Gobi 4G Modem + - LP: #1536370 + * ext2, ext4: warn when mounting with dax enabled + - LP: #1536370 + * arm64: mm: use correct mapping granularity under DEBUG_RODATA + - LP: #1536370 + * drm/i915: Don't clobber the addfb2 ioctl params + - LP: #1536370 + * arm64: kernel: pause/unpause function graph tracer in cpu_suspend() + - LP: #1536370 + * usb: chipidea: debug: disable usb irq while role switch + - LP: #1536370 + * xhci: Fix a race in usb2 LPM resume, blocking U3 for usb2 devices + - LP: #1536370 + * fat: fix fake_offset handling on error path + - LP: #1536370 + * kernel/signal.c: unexport sigsuspend() + - LP: #1536370 + * parisc: Drop unused MADV_xxxK_PAGES flags from asm/mman.h + - LP: #1536370 + * mmc: remove bondage between REQ_META and reliable write + - LP: #1536370 + * stmmac: avoid ipq806x constant overflow warning + - LP: #1536370 + * perf symbols: Fix dso lookup by long name and missing buildids + - LP: #1536370 + * net/mlx4_core: Avoid returning success in case of an error flow + - LP: #1536370 + * mtd: nand: fix shutdown/reboot for multi-chip systems + - LP: #1536370 + * FS-Cache: Add missing initialization of ret in cachefiles_write_page() + - LP: #1536370 + * ipvlan: fix leak in ipvlan_rcv_frame + - LP: #1536370 + * ipvlan: fix use after free of skb + - LP: #1536370 + * macvlan: fix leak in macvlan_handle_frame + - LP: #1536370 + * ALSA: hda - Fix noise on Dell Latitude E6440 + - LP: #1536370 + * dm thin: restore requested 'error_if_no_space' setting on OODS to WRITE + transition + - LP: #1536370 + * ALSA: hda - Add fixup for Acer Aspire One Cloudbook 14 + - LP: #1536370 + * dm crypt: fix a possible hang due to race condition on exit + - LP: #1536370 + * mac: validate mac_partition is within sector + - LP: #1536370 + * ALSA: hda - Apply HP headphone fixups more generically + - LP: #1536370 + * blk-mq: fix calling unplug callbacks with preempt disabled + - LP: #1536370 + * ARM: imx: add platform irq type setting in gpc + - LP: #1536370 + * watchdog: omap_wdt: fix null pointer dereference + - LP: #1536370 + * ARC: dw2 unwind: Remove falllback linear search thru FDE entries + - LP: #1536370 + * dm thin: fix regression in advertised discard limits + - LP: #1536370 + * fix sysvfs symlinks + - LP: #1536370 + * vfs: Make sendfile(2) killable even better + - LP: #1536370 + * vfs: Avoid softlockups with sendfile(2) + - LP: #1536370 + * nfs4: limit callback decoding to received bytes + - LP: #1536370 + * ALSA: hda - Fix headphone noise after Dell XPS 13 resume back from S3 + - LP: #1519168, #1536370 + * ARM: dts: vfxxx: Fix dspi[01] spi-num-chipselects. + - LP: #1536370 + * ARM/arm64: KVM: test properly for a PTE's uncachedness + - LP: #1536370 + * arm64: KVM: Fix AArch32 to AArch64 register mapping + - LP: #1536370 + * drm/radeon: make rv770_set_sw_state failures non-fatal + - LP: #1536370 + * PCI: Prevent out of bounds access in numa_node override + - LP: #1536370 + * ALSA: hda - Fix noise on Gigabyte Z170X mobo + - LP: #1536370 + * ARM: dove: Fix legacy get_irqnr_and_base + - LP: #1536370 + * ARM: orion5x: Fix legacy get_irqnr_and_base + - LP: #1536370 + * drm/radeon: make some dpm errors debug only + - LP: #1536370 + * NFSv4.1/pNFS: Don't request a minimal read layout beyond the end of + file + - LP: #1536370 + * nfs4: resend LAYOUTGET when there is a race that changes the seqid + - LP: #1536370 + * xen/gntdev: Grant maps should not be subject to NUMA balancing + - LP: #1536370 + * iscsi-target: Fix rx_login_comp hang after login failure + - LP: #1536370 + * target: Fix race for SCF_COMPARE_AND_WRITE_POST checking + - LP: #1536370 + * target: fix COMPARE_AND_WRITE non zero SGL offset data corruption + - LP: #1536370 + * thermal: fix thermal_zone_bind_cooling_device prototype + - LP: #1536370 + * ARM: 8454/1: OF implies OF_FLATTREE + - LP: #1536370 + * ARM: dts: Kirkwood: Fix QNAP TS219 power-off + - LP: #1536370 + * ASoC: rsnd: fixup SCU_SYS_INT_EN1 address + - LP: #1536370 + * Bluetooth: Fix l2cap_chan leak in SMP + - LP: #1536370 + * crypto: nx - Fix timing leak in GCM and CCM decryption + - LP: #1536370 + * crypto: talitos - Fix timing leak in ESP ICV verification + - LP: #1536370 + * ASoC: wm8962: correct addresses for HPF_C_0/1 + - LP: #1536370 + * rtlwifi: rtl8821ae: Fix lockups on boot + - LP: #1536370 + * mac80211: mesh: fix call_rcu() usage + - LP: #1536370 + * advansys: fix big-endian builds + - LP: #1536370 + * mac80211: ensure we don't update tx power on a non-running sdata + - LP: #1536370 + * drm/i915: Mark uneven memory banks on gen4 desktop as unknown swizzling + - LP: #1536370 + * ring-buffer: Update read stamp with first real commit on page + - LP: #1536370 + * drm/i915: Don't override output type for DDI HDMI + - LP: #1536370 + * block: Always check queue limits for cloned requests + - LP: #1536370 + * direct-io: Fix negative return from dio read beyond eof + - LP: #1536370 + * drm/amdgpu: fix userptr flags check + - LP: #1536370 + * virtio-gpu: use no-merge for fill-modes + - LP: #1536370 + * Fix a memory leak in scsi_host_dev_release() + - LP: #1536370 + * wan/x25: Fix use-after-free in x25_asy_open_tty() + - LP: #1536370 + * mac80211: do not actively scan DFS channels + - LP: #1536370 + * PM / Domains: Fix bad of_node_put() in failure paths of + genpd_dev_pm_attach() + - LP: #1536370 + * drm: Fix an unwanted master inheritance v2 + - LP: #1536370 + * sched/core: Clear the root_domain cpumasks in init_rootdomain() + - LP: #1536370 + * ARM/arm64: KVM: correct PTE uncachedness check + - LP: #1536370 + * drm/amdgpu: partially revert "drm/amdgpu: fix + VM_CONTEXT*_PAGE_TABLE_END_ADDR" v2 + - LP: #1536370 + * x86/mpx: Fix instruction decoder condition + - LP: #1536370 + * x86/signal: Fix restart_syscall number for x32 tasks + - LP: #1536370 + * Don't reset ->total_link_count on nested calls of vfs_path_lookup() + - LP: #1536370 + * net: mvneta: fix bit assignment in MVNETA_RXQ_CONFIG_REG + - LP: #1536370 + * net: mvneta: fix bit assignment for RX packet irq enable + - LP: #1536370 + * net: mvneta: add configuration for MBUS windows access protection + - LP: #1536370 + * iwlwifi: mvm: don't overwrite the key indices in D3 entry + - LP: #1536370 + * mac80211: fix off-channel mgmt-tx uninitialized variable usage + - LP: #1536370 + * drm/rockchip: unset pgoff when mmap'ing gems + - LP: #1536370 + * remoteproc: avoid stack overflow in debugfs file + - LP: #1536370 + * sched/rt: Hide the push_irq_work_func() declaration + - LP: #1536370 + * drm: imx: convert to drm_crtc_send_vblank_event() + - LP: #1536370 + * sched/wait: Fix signal handling in bit wait helpers + - LP: #1536370 + * ACPI / property: fix compile error for + acpi_node_get_property_reference() when CONFIG_ACPI=n + - LP: #1536370 + * ipv4: igmp: Allow removing groups from a removed interface + - LP: #1536370 + * isdn: Partially revert debug format string usage clean up + - LP: #1536370 + * sched/core: Remove false-positive warning from wake_up_process() + - LP: #1536370 + * gpio: omap: drop omap1 mpuio specific irq_mask/unmask callbacks + - LP: #1536370 + * SUNRPC: Fix callback channel + - LP: #1536370 + * cuse: fix memory leak + - LP: #1536370 + * fuse: break infinite loop in fuse_fill_write_pages() + - LP: #1536370 + * usb: gadget: pxa27x: fix suspend callback + - LP: #1536370 + * iio: fix some warning messages + - LP: #1536370 + * iio: adc: spmi-vadc: add missing of_node_put + - LP: #1536370 + * USB: cp210x: Remove CP2110 ID from compatibility list + - LP: #1536370 + * USB: cdc_acm: Ignore Infineon Flash Loader utility + - LP: #1536370 + * USB: serial: Another Infineon flash loader USB ID + - LP: #1536370 + * ext4: Fix handling of extended tv_sec + - LP: #1536370 + * jbd2: Fix unreclaimed pages after truncate in data=journal mode + - LP: #1536370 + * drm/ttm: Fixed a read/write lock imbalance + - LP: #1536370 + * ext4: fix an endianness bug in ext4_encrypted_zeroout() + - LP: #1536370 + * ext4: fix an endianness bug in ext4_encrypted_follow_link() + - LP: #1536370 + * AHCI: Fix softreset failed issue of Port Multiplier + - LP: #1536370 + * sata_sil: disable trim + - LP: #1536370 + * usb-storage: Fix scsi-sd failure "Invalid field in cdb" for USB adapter + JMicron + - LP: #1536370 + * staging: lustre: echo_copy.._lsm() dereferences userland pointers + directly + - LP: #1536370 + * irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB + - LP: #1536370 + * usb: core : hub: Fix BOS 'NULL pointer' kernel panic + - LP: #1536370 + * USB: whci-hcd: add check for dma mapping error + - LP: #1536370 + * usb: Use the USB_SS_MULT() macro to decode burst multiplier for log + message + - LP: #1536370 + * dm btree: fix leak of bufio-backed block in btree_split_sibling error + path + - LP: #1536370 + * dm thin metadata: fix bug in dm_thin_remove_range() + - LP: #1536370 + * perf: Fix PERF_EVENT_IOC_PERIOD deadlock + - LP: #1536370 + * xhci: Fix memory leak in xhci_pme_acpi_rtd3_enable() + - LP: #1536370 + * usb: xhci: fix config fail of FS hub behind a HS hub with MTT + - LP: #1536370 + * jbd2: fix null committed data return in undo_access + - LP: #1536370 + * block: detach bdev inode from its wb in __blkdev_put() + - LP: #1536370 + * ALSA: rme96: Fix unexpected volume reset after rate changes + - LP: #1536370 + * ALSA: hda - Add inverted dmic for Packard Bell DOTS + - LP: #1523232, #1536370 + * vhost: relax log address alignment + - LP: #1536370 + * virtio: fix memory leak of virtio ida cache layers + - LP: #1536370 + * IB/srp: Fix a memory leak + - LP: #1536370 + * IB/srp: Fix possible send queue overflow + - LP: #1536370 + * powerpc/opal-irqchip: Fix double endian conversion + - LP: #1536370 + * powerpc/opal-irqchip: Fix deadlock introduced by "Fix double endian + conversion" + - LP: #1536370 + * cxl: Set endianess of kernel contexts + - LP: #1536370 + * ALSA: hda - Fixing speaker noise on the two latest thinkpad models + - LP: #1523517, #1536370 + * of/fdt: Add mutex protection for calls to __unflatten_device_tree() + - LP: #1536370 + * 9p: ->evict_inode() should kick out ->i_data, not ->i_mapping + - LP: #1536370 + * fix the regression from "direct-io: Fix negative return from dio read + beyond eof" + - LP: #1536370 + * radeon/cik: Fix GFX IB test on Big-Endian + - LP: #1536370 + * radeon: Fix VCE ring test for Big-Endian systems + - LP: #1536370 + * radeon: Fix VCE IB test on Big-Endian systems + - LP: #1536370 + * ALSA: hda - Fix noise problems on Thinkpad T440s + - LP: #1536370 + * ALSA: hda/ca0132 - quirk for Alienware 17 2015 + - LP: #1536370 + * dm thin metadata: fix bug when taking a metadata snapshot + - LP: #1536370 + * dm space map metadata: fix ref counting bug when bootstrapping a new + space map + - LP: #1536370 + * ipmi: move timer init to before irq is setup + - LP: #1536370 + * dm btree: fix bufio buffer leaks in dm_btree_del() error path + - LP: #1536370 + * vgaarb: fix signal handling in vga_get() + - LP: #1536370 + * ARM: dts: vf610: use reset values for L2 cache latencies + - LP: #1536370 + * xhci: fix usb2 resume timing and races. + - LP: #1536370 + * USB: add quirk for devices with broken LPM + - LP: #1536370 + * parisc iommu: fix panic due to trying to allocate too large region + - LP: #1536370 + * mm: hugetlb: fix hugepage memory leak caused by wrong reserve count + - LP: #1536370 + * mm, vmstat: allow WQ concurrency to discover memory reclaim doesn't + make any progress + - LP: #1536370 + * mm: hugetlb: call huge_pte_alloc() only if ptep is null + - LP: #1536370 + * drivers/base/memory.c: prohibit offlining of memory blocks with missing + sections + - LP: #1536370 + * ocfs2: fix SGID not inherited issue + - LP: #1536370 + * sh64: fix __NR_fgetxattr + - LP: #1536370 + * sched/wait: Fix the signal handling fix + - LP: #1536370 + * sata/mvebu: use #ifdef around suspend/resume code + - LP: #1536370 + * usb: musb: USB_TI_CPPI41_DMA requires dmaengine support + - LP: #1536370 + * i2c: rk3x: populate correct variable for sda_falling_time + - LP: #1536370 + * i2c: mv64xxx: The n clockdiv factor is 0 based on sunxi SoCs + - LP: #1536370 + * xen/events/fifo: Consume unprocessed events when a CPU dies + - LP: #1536370 + * ARM: 8465/1: mm: keep reserved ASIDs in sync with mm after multiple + rollovers + - LP: #1536370 + * net: mvpp2: fix missing DMA region unmap in egress processing + - LP: #1536370 + * net: mvpp2: fix buffers' DMA handling on RX path + - LP: #1536370 + * net: mvpp2: fix refilling BM pools in RX path + - LP: #1536370 + * dmaengine: at_xdmac: fix macro typo + - LP: #1536370 + * video: fbdev: fsl: Fix kernel crash when diu_ops is not implemented + - LP: #1536370 + * crypto: skcipher - Copy iv from desc even for 0-len walks + - LP: #1536370 + * ASoC: es8328: Fix deemphasis values + - LP: #1536370 + * KVM: PPC: Book3S HV: Prohibit setting illegal transaction state in MSR + - LP: #1536370 + * dmaengine: at_xdmac: fix at_xdmac_prep_dma_memcpy() + - LP: #1536370 + * rfkill: copy the name into the rfkill struct + - LP: #1536370 + * ses: Fix problems with simple enclosures + - LP: #1536370 + * ASoC: davinci-mcasp: Fix XDATA check in mcasp_start_tx + - LP: #1536370 + * ses: fix additional element traversal bug + - LP: #1536370 + * powercap / RAPL: fix BIOS lock check + - LP: #1536370 + * ARCv2: intc: Fix random perf irq disabling in SMP setup + - LP: #1536370 + * i2c: designware: reverts "i2c: designware: Add support for AMD I2C + controller" + - LP: #1536370 + * i2c: designware: fix IO timeout issue for AMD controller + - LP: #1536370 + * ASoC: wm8974: set cache type for regmap + - LP: #1536370 + * n_tty: Fix poll() after buffer-limited eof push read + - LP: #1536370 + * tty: Fix GPF in flush_to_ldisc() + - LP: #1536370 + * ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest + DragonFly + - LP: #1536370 + * ALSA: usb-audio: Add sample rate inquiry quirk for AudioQuest DragonFly + - LP: #1536370 + * drm: Don't overwrite UNVERFIED mode status to OK + - LP: #1536370 + * ARM: dts: imx6: Fix Ethernet PHY mode on Ventana boards + - LP: #1536370 + * ARM: 8471/1: need to save/restore arm register(r11) when it is + corrupted + - LP: #1536370 + * ALSA: hda - Fix headphone mic input on a few Dell ALC293 machines + - LP: #1526330, #1536370 + * ALSA: hda - Apply click noise workaround for Thinkpads generically + - LP: #1536370 + * ALSA: hda - Set codec to D3 at reboot/shutdown on Thinkpads + - LP: #1536370 + * ALSA: hda - Add a fixup for Thinkpad X1 Carbon 2nd + - LP: #1536370 + * spi: fix parent-device reference leak + - LP: #1536370 + * scripts: recordmcount: break hardlinks + - LP: #1536370 + * dma-debug: Fix dma_debug_entry offset calculation + - LP: #1536370 + * ftrace/scripts: Have recordmcount copy the object file + - LP: #1536370 + * mtd: ubi: fixup error correction in do_sync_erase() + - LP: #1536370 + * mtd: ubi: don't leak e if schedule_erase() fails + - LP: #1536370 + * ARC: dw2 unwind: Reinstante unwinding out of modules + - LP: #1536370 + * ARC: dw2 unwind: Ignore CIE version !=1 gracefully instead of bailing + - LP: #1536370 + * powerpc/powernv: pr_warn_once on unsupported OPAL_MSG type + - LP: #1536370 + * drm/nouveau/bios/fan: hardcode the fan mode to linear + - LP: #1536370 + * md/raid10: fix data corruption and crash during resync + - LP: #1536370 + * ALSA: hda - Set SKL+ hda controller power at freeze() and thaw() + - LP: #1536370 + * s390/dis: Fix handling of format specifiers + - LP: #1536370 + * [media] Revert "[media] ivtv: avoid going past input/audio array" + - LP: #1536370 + * [media] airspy: increase USB control message buffer size + - LP: #1536370 + * USB: ipaq.c: fix a timeout loop + - LP: #1536370 + * USB: fix invalid memory access in hub_activate() + - LP: #1536370 + * i2c: rcar: disable runtime PM correctly in slave mode + - LP: #1536370 + * md: remove check for MD_RECOVERY_NEEDED in action_store. + - LP: #1536370 + * parisc: Fix syscall restarts + - LP: #1536370 + * ALSA: hda/realtek - Fix silent headphone output on MacPro 4,1 (v2) + - LP: #1536370 + * MIPS: uaccess: Fix strlen_user with EVA + - LP: #1536370 + * drm/i915: Break busywaiting for requests on pending signals + - LP: #1536370 + * drm/i915: Limit the busy wait on requests to 5us not 10ms! + - LP: #1536370 + * drm/i915: Only spin whilst waiting on the current request + - LP: #1536370 + * MIPS: CPS: drop .set mips64r2 directives + - LP: #1536370 + * KVM: MTRR: fix fixed MTRR segment look up + - LP: #1536370 + * KVM: MTRR: observe maxphyaddr from guest CPUID, not host + - LP: #1536370 + * KVM: MTRR: treat memory as writeback if MTRR is disabled in guest CPUID + - LP: #1536370 + * arm: fix handling of F_OFD_... in oabi_fcntl64() + - LP: #1536370 + * ocfs2: fix BUG when calculate new backup super + - LP: #1536370 + * mm/memory_hotplug.c: check for missing sections in + test_pages_in_a_zone() + - LP: #1536370 + * ipv6/addrlabel: fix ip6addrlbl_get() + - LP: #1536370 + * xfrm: add rcu protection to sk->sk_policy[] + - LP: #1536370 + * amd-xgbe: fix a couple timeout loops + - LP: #1536370 + * phy: sun9i-usb: add USB dependency + - LP: #1536370 + * sctp: convert sack_needed and sack_generation to bits + - LP: #1536370 + * sctp: start t5 timer only when peer rwnd is 0 and local state is + SHUTDOWN_PENDING + - LP: #1536370 + * serial: 8250_uniphier: fix dl_read and dl_write functions + - LP: #1536370 + * net: fix warnings in 'make htmldocs' by moving macro definition out of + field declaration + - LP: #1536370 + * netfilter: nfnetlink_queue: Unregister pernet subsys in case of init + failure + - LP: #1536370 + * addrconf: always initialize sysctl table data + - LP: #1536370 + * ser_gigaset: fix deallocation of platform device structure + - LP: #1536370 + * pinctrl: bcm2835: Fix initial value for direction_output + - LP: #1536370 + * mISDN: fix a loop count + - LP: #1536370 + * sh_eth: fix TX buffer byte-swapping + - LP: #1536370 + * qlcnic: fix a timeout loop + - LP: #1536370 + * dmaengine: bcm2835-dma: Convert to use DMA pool + - LP: #1536370 + * net: phy: mdio-mux: Check return value of mdiobus_alloc() + - LP: #1536370 + * include/linux/mmdebug.h: should include linux/bug.h + - LP: #1536370 + * genirq: Prevent chip buslock deadlock + - LP: #1536370 + * x86/mce: Ensure offline CPUs don't participate in rendezvous process + - LP: #1536370 + * x86/paravirt: Prevent rtc_cmos platform device init on PV guests + - LP: #1536370 + * ASoC: arizona: Fix bclk for sample rates that are multiple of 4kHz + - LP: #1536370 + * ALSA: hda - Add mic mute hotkey quirk for Lenovo ThinkCentre AIO + - LP: #1536370 + * ALSA: hda - Add keycode map for alc input device + - LP: #1536370 + * ftrace/scripts: Fix incorrect use of sprintf in recordmcount + - LP: #1536370 + * tracing: Fix setting of start_index in find_next() + - LP: #1536370 + * tile: provide CONFIG_PAGE_SIZE_64KB etc for tilepro + - LP: #1536370 + * ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption + - LP: #1536370 + * ARM: versatile: fix MMC/SD interrupt assignment + - LP: #1536370 + * async_tx: use GFP_NOWAIT rather than GFP_IO + - LP: #1536370 + * dts: vt8500: Add SDHC node to DTS file for WM8650 + - LP: #1536370 + * ftrace/module: Call clean up function when module init fails early + - LP: #1536370 + * vmstat: allocate vmstat_wq before it is used + - LP: #1536370 + * firmware: dmi_scan: Fix UUID endianness for SMBIOS >= 2.6 + - LP: #1536370 + * kvm: x86: only channel 0 of the i8254 is linked to the HPET + - LP: #1536370 + * ASoC: Use nested lock for snd_soc_dapm_mutex_lock + - LP: #1536370 + * net: sched: fix missing free per cpu on qstats + - LP: #1536370 + * net: filter: make JITs zero A for SKF_AD_ALU_XOR_X + - LP: #1536370 + * sched/core: Reset task's lockless wake-queues on fork() + - LP: #1536370 + * net: possible use after free in dst_release + - LP: #1536370 + * Linux 4.2.8-ckt2 + - LP: #1536370 + * drivers/base/memory.c: fix kernel warning during memory hotplug on + ppc64 + - LP: #1463654 + * xfrm: dst_entries_init() per-net dst_ops + - LP: #1486670 + * powerpc/pseries: Limit EPOW reset event warnings + - LP: #1539102 + * drm/nouveau/nv46: Change mc subdev oclass from nv44 to nv4c + - LP: #1540532 + * ovl: allow zero size xattr + - LP: #1540532 + * ovl: use a minimal buffer in ovl_copy_xattr + - LP: #1540532 + * [media] vb2: fix a regression in poll() behavior for output,streams + - LP: #1540532 + * [media] gspca: ov534/topro: prevent a division by 0 + - LP: #1540532 + * [media] media: dvb-core: Don't force CAN_INVERSION_AUTO in oneshot mode + - LP: #1540532 + * [media] si2157: return -EINVAL if firmware blob is too big + - LP: #1540532 + * tools lib traceevent: Fix output of %llu for 64 bit values read on 32 + bit machines + - LP: #1540532 + * cxl: use correct operator when writing pcie config space values + - LP: #1540532 + * KVM: x86: expose MSR_TSC_AUX to userspace + - LP: #1540532 + * KVM: x86: correctly print #AC in traces + - LP: #1540532 + * drm/amdgpu: call hpd_irq_event on resume + - LP: #1540532 + * drm/radeon: call hpd_irq_event on resume + - LP: #1540532 + * xhci: refuse loading if nousb is used + - LP: #1540532 + * ARM: mvebu: remove duplicated regulator definition in Armada 388 GP + - LP: #1540532 + * arm64: Clear out any singlestep state on a ptrace detach operation + - LP: #1540532 + * time: Avoid signed overflow in timekeeping_get_ns() + - LP: #1540532 + * ovl: root: copy attr + - LP: #1540532 + * Bluetooth: Add support of Toshiba Broadcom based devices + - LP: #1522949, #1540532 + * ext4 crypto: exit cleanly if ext4_derive_key_aes() fails + - LP: #1540532 + * ext4 crypto: add missing locking for keyring_key access + - LP: #1540532 + * rtlwifi: fix memory leak for USB device + - LP: #1540532 + * wlcore/wl12xx: spi: fix oops on firmware load + - LP: #1540532 + * ovl: setattr: check permissions before copy-up + - LP: #1540532 + * ovl: check dentry positiveness in ovl_cleanup_whiteouts() + - LP: #1540532 + * EDAC, mc_sysfs: Fix freeing bus' name + - LP: #1540532 + * EDAC: Robustify workqueues destruction + - LP: #1540532 + * arm64: mm: ensure that the zero page is visible to the page table + walker + - LP: #1540532 + * powerpc: Make value-returning atomics fully ordered + - LP: #1540532 + * powerpc: Make {cmp}xchg* and their atomic_ versions fully ordered + - LP: #1540532 + * dm space map metadata: remove unused variable in brb_pop() + - LP: #1540532 + * Drivers: hv: vmbus: Fix a Host signaling bug + - LP: #1540532 + * tools: hv: vss: fix the write()'s argument: error -> vss_msg + - LP: #1540532 + * clk: exynos: use irqsave version of spin_lock to avoid deadlock with + irqs + - LP: #1540532 + * iommu/io-pgtable-arm: Ensure we free the final level on teardown + - LP: #1540532 + * dm thin: fix race condition when destroying thin pool workqueue + - LP: #1540532 + * drm/radeon: Fix "slow" audio over DP on DCE8+ + - LP: #1540532 + * futex: Drop refcount if requeue_pi() acquired the rtmutex + - LP: #1540532 + * arm64: mdscr_el1: avoid exposing DCC to userspace + - LP: #1540532 + * arm64: kernel: enforce pmuserenr_el0 initialization and restore + - LP: #1540532 + * coresight: checking for NULL string in coresight_name_match() + - LP: #1540532 + * drm/radeon: Fix off-by-one errors in radeon_vm_bo_set_addr + - LP: #1540532 + * drm/amdgpu: Fix off-by-one errors in amdgpu_vm_bo_map + - LP: #1540532 + * drm/radeon: clean up fujitsu quirks + - LP: #1540532 + * mmc: mmc: Fix incorrect use of driver strength switching HS200 and + HS400 + - LP: #1540532 + * mmc: sdhci-pci: Do not default to 33 Ohm driver strength for Intel SPT + - LP: #1540532 + * mmc: sdio: Fix invalid vdd in voltage switch power cycle + - LP: #1540532 + * mmc: sdhci: Fix DMA descriptor with zero data length + - LP: #1540532 + * mmc: sdhci: Fix sdhci_runtime_pm_bus_on/off() + - LP: #1540532 + * regulator: axp20x: Fix GPIO LDO enable value for AXP22x + - LP: #1540532 + * udf: limit the maximum number of indirect extents in a row + - LP: #1540532 + * [media] rc: sunxi-cir: Initialize the spinlock properly + - LP: #1540532 + * nfs: Fix race in __update_open_stateid() + - LP: #1540532 + * USB: cp210x: add ID for ELV Marble Sound Board 1 + - LP: #1540532 + * Thermal: initialize thermal zone device correctly + - LP: #1540532 + * Thermal: handle thermal zone device properly during system sleep + - LP: #1540532 + * Thermal: do thermal zone update after a cooling device registered + - LP: #1540532 + * posix-clock: Fix return code on the poll method's error path + - LP: #1540532 + * rtlwifi: rtl8723be: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8723ae: Fix initialization of module parameters + - LP: #1540532 + * rtlwifi: rtl8821ae: Fix errors in parameter initialization + - LP: #1540532 + * rtlwifi: rtl8188ee: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8192de: Fix incorrect module parameter descriptions + - LP: #1540532 + * rtlwifi: rtl8192se: Fix module parameter initialization + - LP: #1540532 + * rtlwifi: rtl8192ce: Fix handling of module parameters + - LP: #1540532 + * rtlwifi: rtl8192cu: Add missing parameter setup + - LP: #1540532 + * NFS: Fix attribute cache revalidation + - LP: #1540532 + * rtlwifi: rtl_pci: Fix kernel panic + - LP: #1540532 + * bcache: fix a livelock when we cause a huge number of cache misses + - LP: #1540532 + * bcache: Add a cond_resched() call to gc + - LP: #1540532 + * bcache: clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing + device + - LP: #1540532 + * bcache: fix a leak in bch_cached_dev_run() + - LP: #1540532 + * bcache: unregister reboot notifier if bcache fails to unregister device + - LP: #1540532 + * bcache: allows use of register in udev to avoid "device_busy" error. + - LP: #1540532 + * bcache: Change refill_dirty() to always scan entire disk if necessary + - LP: #1540532 + * wlcore/wl12xx: spi: fix NULL pointer dereference (Oops) + - LP: #1540532 + * Input: i8042 - add Fujitsu Lifebook U745 to the nomux list + - LP: #1540532 + * libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct + - LP: #1540532 + * x86/xen: don't reset vcpu_info on a cancelled suspend + - LP: #1540532 + * udf: Prevent buffer overrun with multi-byte characters + - LP: #1540532 + * udf: Check output buffer length when converting name to CS0 + - LP: #1540532 + * drm/dp/mst: process broadcast messages correctly + - LP: #1540532 + * drm/dp/mst: always send reply for UP request + - LP: #1540532 + * drm/dp/mst: fix in MSTB RAD initialization + - LP: #1540532 + * drm/dp/mst: fix in RAD element access + - LP: #1540532 + * PCI: Fix minimum allocation address overwrite + - LP: #1540532 + * PCI: host: Mark PCIe/PCI (MSI) IRQ cascade handlers as IRQF_NO_THREAD + - LP: #1540532 + * btrfs: handle invalid num_stripes in sys_array + - LP: #1540532 + * iwlwifi: update and fix 7265 series PCI IDs + - LP: #1540532 + * iwlwifi: pcie: properly configure the debug buffer size for 8000 + - LP: #1540532 + * locks: fix unlock when fcntl_setlk races with a close + - LP: #1540532 + * scsi: add Synology to 1024 sector blacklist + - LP: #1540532 + * ASoC: compress: Fix compress device direction check + - LP: #1540532 + * dm snapshot: fix hung bios when copy error occurs + - LP: #1540532 + * uml: fix hostfs mknod() + - LP: #1540532 + * uml: flush stdout before forking + - LP: #1540532 + * drm/nouveau/kms: take mode_config mutex in connector hotplug path + - LP: #1540532 + * ALSA: usb: Add native DSD support for Oppo HA-1 + - LP: #1540532 + * ALSA: hda - Fixup inverted internal mic for Lenovo E50-80 + - LP: #1529624, #1540532 + * x86/mm: Add barriers and document switch_mm()-vs-flush synchronization + - LP: #1540532 + * x86/boot: Double BOOT_HEAP_SIZE to 64KB + - LP: #1540532 + * s390: fix normalization bug in exception table sorting + - LP: #1540532 + * xfs: inode recovery readahead can race with inode buffer creation + - LP: #1540532 + * xfs: handle dquot buffer readahead in log recovery correctly + - LP: #1540532 + * clocksource/drivers/vt8500: Increase the minimum delta + - LP: #1540532 + * Input: elantech - mark protocols v2 and v3 as semi-mt + - LP: #1540532 + * x86/reboot/quirks: Add iMac10,1 to pci_reboot_dmi_table[] + - LP: #1540532 + * ALSA: seq: Fix missing NULL check at remove_events ioctl + - LP: #1540532 + * ALSA: seq: Fix race at timer setup and close + - LP: #1540532 + * virtio_balloon: fix race by fill and leak + - LP: #1540532 + * virtio_balloon: fix race between migration and ballooning + - LP: #1540532 + * ALSA: hda - Fix white noise on Dell Latitude E5550 + - LP: #1540532 + * parisc: Fix __ARCH_SI_PREAMBLE_SIZE + - LP: #1540532 + * scripts/recordmcount.pl: support data in text section on powerpc + - LP: #1540532 + * powerpc/module: Handle R_PPC64_ENTRY relocations + - LP: #1540532 + * ALSA: hda - fix the headset mic detection problem for a Dell laptop + - LP: #1533461, #1540532 + * ALSA: usb-audio: Fix mixer ctl regression of Native Instrument devices + - LP: #1540532 + * drm/i915: Restore inhibiting the load of the default context + - LP: #1540532 + * drm/i915: intel_hpd_init(): Fix suspend/resume reprobing + - LP: #1540532 + * x86/mm: Improve switch_mm() barrier comments + - LP: #1540532 + * ALSA: timer: Fix double unlink of active_list + - LP: #1540532 + * dmaengine: dw: fix cyclic transfer setup + - LP: #1540532 + * dmaengine: dw: fix cyclic transfer callbacks + - LP: #1540532 + * mmc: mmci: fix an ages old detection error + - LP: #1540532 + * ALSA: timer: Fix race among timer ioctls + - LP: #1540532 + * sparc64: fix incorrect sign extension in sys_sparc64_personality + - LP: #1540532 + * cifs: Ratelimit kernel log messages + - LP: #1540532 + * cifs: fix race between call_async() and reconnect() + - LP: #1540532 + * cifs_dbg() outputs an uninitialized buffer in cifs_readdir() + - LP: #1540532 + * m32r: fix m32104ut_defconfig build fail + - LP: #1540532 + * dma-debug: switch check from _text to _stext + - LP: #1540532 + * scripts/bloat-o-meter: fix python3 syntax error + - LP: #1540532 + * ocfs2/dlm: ignore cleaning the migration mle that is inuse + - LP: #1540532 + * ALSA: hda - Add fixup for Dell Latitidue E6540 + - LP: #1540532 + * ALSA: timer: Harden slave timer list handling + - LP: #1540532 + * zram/zcomp: use GFP_NOIO to allocate streams + - LP: #1540532 + * zram: try vmalloc() after kmalloc() + - LP: #1540532 + * ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba + Portege R700 + - LP: #1540532 + * ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba + Satellite R830 + - LP: #1540532 + * mm: soft-offline: check return value in second __get_any_page() call + - LP: #1540532 + * zram: don't call idr_remove() from zram_remove() + - LP: #1540532 + * memcg: only free spare array when readers are done + - LP: #1540532 + * panic: release stale console lock to always get the logbuf printed out + - LP: #1540532 + * kernel/panic.c: turn off locks debug before releasing console lock + - LP: #1540532 + * printk: do cond_resched() between lines while outputting to consoles + - LP: #1540532 + * ALSA: hda - Fix bass pin fixup for ASUS N550JX + - LP: #1540532 + * crypto: algif_skcipher - Require setkey before accept(2) + - LP: #1540532 + * crypto: af_alg - Disallow bind/setkey/... after accept(2) + - LP: #1540532 + * crypto: af_alg - Fix socket double-free when accept fails + - LP: #1540532 + * crypto: af_alg - Add nokey compatibility path + - LP: #1540532 + * crypto: algif_skcipher - Add nokey compatibility path + - LP: #1540532 + * crypto: hash - Add crypto_ahash_has_setkey + - LP: #1540532 + * crypto: algif_hash - Require setkey before accept(2) + - LP: #1540532 + * crypto: af_alg - Allow af_af_alg_release_parent to be called on nokey + path + - LP: #1540532 + * crypto: algif_hash - Remove custom release parent function + - LP: #1540532 + * crypto: algif_skcipher - Remove custom release parent function + - LP: #1540532 + * crypto: af_alg - Forbid bind(2) when nokey child sockets are present + - LP: #1540532 + * lib: sw842: select crc32 + - LP: #1540532 + * crypto: algif_hash - Fix race condition in hash_check_key + - LP: #1540532 + * crypto: algif_skcipher - Fix race condition in skcipher_check_key + - LP: #1540532 + * ALSA: hrtimer: Fix stall by hrtimer_cancel() + - LP: #1540532 + * dmaengine: at_xdmac: fix resume for cyclic transfers + - LP: #1540532 + * ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode + - LP: #1540532 + * ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode + - LP: #1540532 + * ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0 + - LP: #1540532 + * ARM: debug-ll: fix BCM63xx entry for multiplatform + - LP: #1540532 + * xfs: log mount failures don't wait for buffers to be released + - LP: #1540532 + * crypto: algif_skcipher - Load TX SG list after waiting + - LP: #1540532 + * crypto: crc32c - Fix crc32c soft dependency + - LP: #1540532 + * IB/qib: fix mcast detach when qp not attached + - LP: #1540532 + * IB/qib: Support creating qps with GFP_NOIO flag + - LP: #1540532 + * IB/mlx5: Expose correct maximum number of CQE capacity + - LP: #1540532 + * IB/cm: Fix a recently introduced deadlock + - LP: #1540532 + * ideapad-laptop: Add Lenovo ideapad Y700-17ISK to no_hw_rfkill dmi list + - LP: #1540532 + * Btrfs: fix deadlock running delayed iputs at transaction commit time + - LP: #1540532 + * iscsi-target: Fix potential dead-lock during node acl delete + - LP: #1540532 + * crypto: algif_skcipher - sendmsg SG marking is off by one + - LP: #1540532 + * ALSA: hda - Flush the pending probe work at remove + - LP: #1540532 + * zsmalloc: fix migrate_zspage-zs_free race condition + - LP: #1540532 + * prctl: take mmap sem for writing to protect against others + - LP: #1540532 + * ALSA: timer: Handle disconnection more safely + - LP: #1540532 + * libceph: fix ceph_msg_revoke() + - LP: #1540532 + * MIPS: Loongson-3: Fix SMP_ASK_C0COUNT IPI handler + - LP: #1540532 + * MIPS: hpet: Choose a safe value for the ETIME check + - LP: #1540532 + * ocfs2: NFS hangs in __ocfs2_cluster_lock due to race with + ocfs2_unblock_lock + - LP: #1540532 + * pNFS/flexfiles: Fix an XDR encoding bug in layoutreturn + - LP: #1540532 + * make sure that freeing shmem fast symlinks is RCU-delayed + - LP: #1540532 + * MAINTAINERS: return arch/sh to maintained state, with new maintainers + - LP: #1540532 + * MIPS: Fix some missing CONFIG_CPU_MIPSR6 #ifdefs + - LP: #1540532 + * ideapad-laptop: Add Lenovo Yoga 700 to no_hw_rfkill dmi list + - LP: #1540532 + * drm/i915: On fb alloc failure, unref gem object where it gets refed + - LP: #1540532 + * [media] rc: allow rc modules to be loaded if rc-main is not a module + - LP: #1540532 + * [media] lirc_imon: do not leave imon_probe() with mutex held + - LP: #1540532 + * SCSI: initio: remove duplicate module device table + - LP: #1540532 + * clk: xgene: Fix divider with non-zero shift value + - LP: #1540532 + * clk: st: avoid uninitialized variable use + - LP: #1540532 + * MAINTAINERS: gpio-brcmstb: Remove stray '>' + - LP: #1540532 + * ASoC: Intel: pass correct parameter in sst_alloc_stream_mrfld() + - LP: #1540532 + * PCI/MSI: Initialize MSI capability for all architectures + - LP: #1540532 + * ath9k_htc: check for underflow in ath9k_htc_rx_msg() + - LP: #1540532 + * ASoC: tegra_alc5632: check return value + - LP: #1540532 + * mtd: nand: fix ONFI parameter page layout + - LP: #1540532 + * mac80211: fix mgmt-tx abort cookie and leak + - LP: #1540532 + * mtd: nand: denali: add missing nand_release() call in denali_remove() + - LP: #1540532 + * Drivers: hv: util: catch allocation errors + - LP: #1540532 + * Drivers: hv: utils: use memdup_user in hvt_op_write + - LP: #1540532 + * tpm_tis: Use devm_free_irq not free_irq + - LP: #1540532 + * ALSA: fm801: explicitly free IRQ line + - LP: #1540532 + * ARM: imx: select SRC for i.MX7 + - LP: #1540532 + * ALSA: fm801: propagate TUNER_ONLY bit when autodetected + - LP: #1540532 + * ALSA: fm801: detect FM-only card earlier + - LP: #1540532 + * pinctrl: bcm2835: Fix memory leak in error path + - LP: #1540532 + * mmc: sdhci: restore behavior when setting VDD via external regulator + - LP: #1540532 + * x86/LDT: Print the real LDT base address + - LP: #1540532 + * sysrq: Fix warning in sysrq generated crash. + - LP: #1540532 + * kconfig: return 'false' instead of 'no' in bool function + - LP: #1540532 + * perf/x86: Fix filter_events() bug with event mappings + - LP: #1540532 + * perf/x86: fix PEBS issues on Intel Atom/Core2 + - LP: #1540532 + * power: test_power: correctly handle empty writes + - LP: #1540532 + * firmware: actually return NULL on failed request_firmware_nowait() + - LP: #1540532 + * target: Fix a memory leak in target_dev_lba_map_store() + - LP: #1540532 + * phy: micrel: Fix finding PHY properties in MAC node for KSZ9031. + - LP: #1540532 + * m68k/atari, m68k/sun3: Fix SCSI platform device registration when + driver is modular + - LP: #1540532 + * um: Fix build error and kconfig for i386 + - LP: #1540532 + * net: sctp: prevent writes to cookie_hmac_alg from accessing invalid + memory + - LP: #1540532 + * ipv6: tcp: add rcu locking in tcp_v6_send_synack() + - LP: #1540532 + * bonding: Prevent IPv6 link local address on enslaved devices + - LP: #1540532 + * kbuild: Demote 'sign-compare' warning to W=2 + - LP: #1540532 + * mmc: sd: limit SD card power limit according to cards capabilities + - LP: #1540532 + * net: tcp_memcontrol: properly detect ancestor socket pressure + - LP: #1540532 + * vmstat: make vmstat_updater deferrable again and shut down on idle + - LP: #1540532 + * include/linux/memblock.h: fix ordering of 'flags' argument in comments + - LP: #1540532 + * Btrfs: clean up an error code in btrfs_init_space_info() + - LP: #1540532 + * btrfs: initialize the seq counter in struct btrfs_device + - LP: #1540532 + * bridge: fix lockdep addr_list_lock false positive splat + - LP: #1540532 + * batman-adv: Avoid recursive call_rcu for batadv_bla_claim + - LP: #1540532 + * batman-adv: Avoid recursive call_rcu for batadv_nc_node + - LP: #1540532 + * batman-adv: Drop immediate batadv_orig_ifinfo free function + - LP: #1540532 + * batman-adv: Drop immediate batadv_neigh_node free function + - LP: #1540532 + * batman-adv: Drop immediate neigh_ifinfo free function + - LP: #1540532 + * batman-adv: Drop immediate orig_node free function + - LP: #1540532 + * printk: help pr_debug and pr_devel to optimize out arguments + - LP: #1540532 + * ARM: dts: armadillo800eva Correct extal1 frequency to 24 MHz + - LP: #1540532 + * team: Replace rcu_read_lock with a mutex in team_vlan_rx_kill_vid + - LP: #1540532 + * mmc: debugfs: correct wrong voltage value + - LP: #1540532 + * IB/mlx4: Initialize hop_limit when creating address handle + - LP: #1540532 + * net/mlx4: Remove unused macro + - LP: #1540532 + * NFSv4: Don't perform cached access checks before we've OPENed the file + - LP: #1540532 + * NFS: Ensure we revalidate attributes before using execute_ok() + - LP: #1540532 + * veth: don’t modify ip_summed; doing so treats packets with bad + checksums as good. + - LP: #1540532 + * net: cdc_ncm: avoid changing RX/TX buffers on MTU changes + - LP: #1540532 + * sctp: sctp should release assoc when sctp_make_abort_user return NULL + in sctp_close + - LP: #1540532 + * connector: bump skb->users before callback invocation + - LP: #1540532 + * af_unix: Fix splice-bind deadlock + - LP: #1540532 + * unix: properly account for FDs passed over unix sockets + - LP: #1540532 + * bridge: Only call /sbin/bridge-stp for the initial network namespace + - LP: #1540532 + * tcp_yeah: don't set ssthresh below 2 + - LP: #1540532 + * sched,cls_flower: set key address type when present + - LP: #1540532 + * udp: disallow UFO for sockets with SO_NO_CHECK option + - LP: #1540532 + * net: preserve IP control block during GSO segmentation + - LP: #1540532 + * phonet: properly unshare skbs in phonet_rcv() + - LP: #1540532 + * net: bpf: reject invalid shifts + - LP: #1540532 + * batman-adv: Drop immediate batadv_hard_iface free function + - LP: #1540532 + * vxlan: fix test which detect duplicate vxlan iface + - LP: #1540532 + * ipv6: update skb->csum when CE mark is propagated + - LP: #1540532 + * Linux 4.2.8-ckt3 + - LP: #1540532 + + -- Luis Henriques Thu, 04 Feb 2016 18:55:33 +0000 + +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,284 @@ +#!/usr/bin/python3 +# +# hv_set_ifconfig -- take the hv_kvp_daemon generated configuration +# file and apply it to the Ubuntu configuration. +# + +# CONFIG example: +# HWADDR=11:22:33:44:55:66 +# DEVICE=foo1 +# DHCP=yes + +# CONFIG example: +# HWADDR=11:22:33:44:55:66 +# DEVICE=foo1 +# IPADDR=192.168.99.10 +# GATEWAY=192.168.99.1 +# DNS1=192.168.88.250 +# IPADDR2=192.168.99.11 +# IPV6ADDR=2001:DB8:99::10 +# IPV6NETMASK=64 +# IPV6_DEFAULTGW=2001:DB8:99::10 + +# set interfaces in hv_kvp_daemon style +import fileinput +import sys +import errno +import os +import shutil +import tempfile +import subprocess + +if_filename="/etc/network/interfaces" + +# Drop our output (XXX?) +sys.stdout = open(os.devnull, 'w') +sys.stderr = open(os.devnull, 'w') + +# Confirm we can open the network configuration. +try: + if_file=open(if_filename,"r+") +except IOError as e: + exit(e.errno) +else: + if_file.close() + +# Usage: hv_set_ifconfig +if len(sys.argv) != 2 : + exit(errno.EINVAL) + +# +# Here is the format of the ip configuration file: +# +# HWADDR=macaddr +# DEVICE=interface name +# BOOTPROTO= (where is "dhcp" if DHCP is configured +# or "none" if no boot-time protocol should be used) +# +# IPADDR0=ipaddr1 +# IPADDR1=ipaddr2 +# IPADDRx=ipaddry (where y = x + 1) +# +# NETMASK0=netmask1 +# NETMASKx=netmasky (where y = x + 1) +# +# GATEWAY=ipaddr1 +# GATEWAYx=ipaddry (where y = x + 1) +# +# DNSx=ipaddrx (where first DNS address is tagged as DNS1 etc) +# +# IPV6 addresses will be tagged as IPV6ADDR, IPV6 gateway will be +# tagged as IPV6_DEFAULTGW and IPV6 NETMASK will be tagged as +# IPV6NETMASK. +# + +kvp=dict(line.strip().split("=") for line in fileinput.input()) + +# Setting the hwaddress to something azure is not expecting is fatal +# to networking. +if not "HWADDR" in kvp : + exit(errno.EPROTO) + +# Confirm we have a device specified. +if not "DEVICE" in kvp : + exit(1) + +output=[] +basename=kvp["DEVICE"] + +# DNS entries will go with the first interface and there can be a max +# of three. These will be emitted with the first interface. +dns = [] +for count in (1, 2, 3): + key = "DNS" + str(count) + if key in kvp: + dns += [kvp[key]] +dns_emitted = False + +# IPV4 may either be dhcp or static. +if ("DHCP" in kvp and kvp["DHCP"] == "yes") or \ + ("BOOTPROTO" in kvp and kvp["BOOTPROTO"] == "dhcp"): + output += ["auto " + basename] + output += ["iface " + basename + " inet dhcp"] + output += [""] +else: + autolist = [] + # Matchup the interface specific lines + + # No real max for the number of interface + aliases ... + # only required is the address (but mate everything up that comes in. + + # IPv4 -- ensure we sort by numeric suffixes. + v4names = [ int(name[6:]) for name in kvp.keys() if name.startswith("IPADDR") ] + v4names.sort() + + for if_count in v4names: + ifname = basename + which = str(if_count) + + if if_count: + ifname += ":" + str(if_count) + which_gw = which + else: + which_gw = "" + + if not ifname in autolist: + autolist += [ifname] + + output += [ "iface " + ifname + " inet static" ] + output += [ "\t" + "address " + kvp["IPADDR" + which] ] + if "NETMASK" + which in kvp: + output += [ "\tnetmask " + kvp["NETMASK" + which] ] + if "GATEWAY" + which_gw in kvp: + output += ["\tgateway " + kvp["GATEWAY" + which_gw]] + + if not dns_emitted: + dns_emitted = True + output += ["\tdns-nameservers " + ' '.join(dns)] + output += [""] + +# IPv6 requires a netmask +# If an ipv6 exists, you'll want to turn off /proc/sys/net/ipv6/conf/all/autoconf with +# echo 0 > /proc/sys/net/ipv6/conf/all/autoconf +v6names = [ int(name[8:]) for name in kvp.keys() if name.startswith("IPV6ADDR") ] +v6names.sort() + +for if6_count in v6names: + ifname = basename + which = str(if6_count) + + if if6_count: + ifname += ":" + str(if6_count) + which_gw = which + else: + which_gw = "" + + if not ifname in autolist: + autolist += [ifname] + + if "IPV6NETMASK" + which in kvp: + output += [ "iface " + ifname + " inet6 static"] + output += [ "\taddress " + kvp["IPV6ADDR" + which]] + output += [ "\tnetmask " + kvp["IPV6NETMASK" + which]] + if "IPV6_DEFAULTGW" + which_gw in kvp: + output += [ "\tgateway " + kvp["IPV6_DEFAULTGW" + which_gw] ] + if not dns_emitted: + dns_emitted = True + output += ["\tdns-nameservers " + ' '.join(dns)] + output += [""] + +# Mark this new interface for automatic up. +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) + output = line + "\n" + os.write(fd, output.encode('utf-8')) + +# Insert the new output at the end and inside the existing markers if found. +emitted = False +fd, path = tempfile.mkstemp() +for line in newfile: + if line == end_mark: + emit("\n".join(output)) + emitted = True + emit(line) +if not emitted: + emit(start_mark) + emit("\n".join(output)) + emit(end_mark) +os.close(fd) + +shutil.copy(path,if_filename) +os.chmod(if_filename,0o644) + +#print("TMPFILE is at: " + path) +#print("Copied file is at: " + if_filename) + +try: + retcode = subprocess.call("ifdown "+basename , shell=True) + if retcode < 0: + print("Child was terminated by signal", -retcode, file=sys.stderr) + else: + print("Child returned", retcode, file=sys.stderr) +except OSError as e: + print("Execution failed:", e, file=sys.stderr) + +try: + retcode = subprocess.call("ifup "+basename , shell=True) + if retcode < 0: + print("Child was terminated by signal", -retcode, file=sys.stderr) + else: + print("Child returned", retcode, file=sys.stderr) +except OSError as e: + print("Execution failed:", e, file=sys.stderr) --- linux-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-1029 +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-1029/debian.README.gz for details + +Package: linux-raspi2-tools-4.2.0-1029 +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-1029 + 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-1029 on + . + You probabaly want to install the linux-tools- meta package. + + +Package: linux-image-4.2.0-1029-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-1029-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-1029-raspi2 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-raspi2-headers-4.2.0-1029, ${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-1029/debian.README.gz for details. + +Package: linux-image-4.2.0-1029-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-1029-raspi2 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-raspi2-tools-4.2.0-1029 +Description: Linux kernel version specific tools for version 4.2.0-1029 + 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-1029 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: *.*launchpad\.net\/.*\/([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_lpss.c +++ linux-raspi2-4.2.0/drivers/acpi/acpi_lpss.c @@ -680,8 +680,13 @@ } switch (action) { - case BUS_NOTIFY_ADD_DEVICE: + case BUS_NOTIFY_BOUND_DRIVER: pdev->dev.pm_domain = &acpi_lpss_pm_domain; + break; + case BUS_NOTIFY_UNBOUND_DRIVER: + pdev->dev.pm_domain = NULL; + break; + case BUS_NOTIFY_ADD_DEVICE: if (pdata->dev_desc->flags & LPSS_LTR) return sysfs_create_group(&pdev->dev.kobj, &lpss_attr_group); @@ -689,7 +694,6 @@ case BUS_NOTIFY_DEL_DEVICE: if (pdata->dev_desc->flags & LPSS_LTR) sysfs_remove_group(&pdev->dev.kobj, &lpss_attr_group); - pdev->dev.pm_domain = NULL; break; default: break; --- 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/acpi_processor.c +++ linux-raspi2-4.2.0/drivers/acpi/acpi_processor.c @@ -473,6 +473,58 @@ } #endif /* CONFIG_ACPI_HOTPLUG_CPU */ +#ifdef CONFIG_X86 +static bool acpi_hwp_native_thermal_lvt_set; +static acpi_status __init acpi_hwp_native_thermal_lvt_osc(acpi_handle handle, + u32 lvl, + void *context, + void **rv) +{ + u8 sb_uuid_str[] = "4077A616-290C-47BE-9EBD-D87058713953"; + u32 capbuf[2]; + struct acpi_osc_context osc_context = { + .uuid_str = sb_uuid_str, + .rev = 1, + .cap.length = 8, + .cap.pointer = capbuf, + }; + + if (acpi_hwp_native_thermal_lvt_set) + return AE_CTRL_TERMINATE; + + capbuf[0] = 0x0000; + capbuf[1] = 0x1000; /* set bit 12 */ + + if (ACPI_SUCCESS(acpi_run_osc(handle, &osc_context))) { + if (osc_context.ret.pointer && osc_context.ret.length > 1) { + u32 *capbuf_ret = osc_context.ret.pointer; + + if (capbuf_ret[1] & 0x1000) { + acpi_handle_info(handle, + "_OSC native thermal LVT Acked\n"); + acpi_hwp_native_thermal_lvt_set = true; + } + } + kfree(osc_context.ret.pointer); + } + + return AE_OK; +} + +void __init acpi_early_processor_osc(void) +{ + if (boot_cpu_has(X86_FEATURE_HWP)) { + acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, + ACPI_UINT32_MAX, + acpi_hwp_native_thermal_lvt_osc, + NULL, NULL, NULL); + acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, + acpi_hwp_native_thermal_lvt_osc, + NULL, NULL); + } +} +#endif + /* * The following ACPI IDs are known to be suitable for representing as * processor devices. --- linux-raspi2-4.2.0.orig/drivers/acpi/acpi_video.c +++ linux-raspi2-4.2.0/drivers/acpi/acpi_video.c @@ -451,6 +451,15 @@ * as brightness control does not work. */ { + /* https://bugzilla.kernel.org/show_bug.cgi?id=21012 */ + .callback = video_disable_backlight_sysfs_if, + .ident = "Toshiba Portege R700", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE R700"), + }, + }, + { /* https://bugs.freedesktop.org/show_bug.cgi?id=82634 */ .callback = video_disable_backlight_sysfs_if, .ident = "Toshiba Portege R830", @@ -459,6 +468,15 @@ DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE R830"), }, }, + { + /* https://bugzilla.kernel.org/show_bug.cgi?id=21012 */ + .callback = video_disable_backlight_sysfs_if, + .ident = "Toshiba Satellite R830", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE R830"), + }, + }, {} }; --- 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/bus.c +++ linux-raspi2-4.2.0/drivers/acpi/bus.c @@ -612,6 +612,9 @@ goto error1; } + /* Set capability bits for _OSC under processor scope */ + acpi_early_processor_osc(); + /* * _OSC method may exist in module level code, * so it must be run after ACPI_FULL_INITIALIZATION --- 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 @@ -122,6 +124,12 @@ static inline void acpi_early_processor_set_pdc(void) {} #endif +#ifdef CONFIG_X86 +void acpi_early_processor_osc(void); +#else +static inline void acpi_early_processor_osc(void) {} +#endif + /* -------------------------------------------------------------------------- Embedded Controller -------------------------------------------------------------------------- */ --- linux-raspi2-4.2.0.orig/drivers/acpi/nfit.c +++ linux-raspi2-4.2.0/drivers/acpi/nfit.c @@ -403,37 +403,16 @@ nfit_mem->bdw = NULL; } -static int nfit_mem_add(struct acpi_nfit_desc *acpi_desc, +static void nfit_mem_init_bdw(struct acpi_nfit_desc *acpi_desc, struct nfit_mem *nfit_mem, struct acpi_nfit_system_address *spa) { u16 dcr = __to_nfit_memdev(nfit_mem)->region_index; struct nfit_memdev *nfit_memdev; struct nfit_flush *nfit_flush; - struct nfit_dcr *nfit_dcr; struct nfit_bdw *nfit_bdw; struct nfit_idt *nfit_idt; u16 idt_idx, range_index; - list_for_each_entry(nfit_dcr, &acpi_desc->dcrs, list) { - if (nfit_dcr->dcr->region_index != dcr) - continue; - nfit_mem->dcr = nfit_dcr->dcr; - break; - } - - if (!nfit_mem->dcr) { - dev_dbg(acpi_desc->dev, "SPA %d missing:%s%s\n", - spa->range_index, __to_nfit_memdev(nfit_mem) - ? "" : " MEMDEV", nfit_mem->dcr ? "" : " DCR"); - return -ENODEV; - } - - /* - * We've found enough to create an nvdimm, optionally - * find an associated BDW - */ - list_add(&nfit_mem->list, &acpi_desc->dimms); - list_for_each_entry(nfit_bdw, &acpi_desc->bdws, list) { if (nfit_bdw->bdw->region_index != dcr) continue; @@ -442,12 +421,12 @@ } if (!nfit_mem->bdw) - return 0; + return; nfit_mem_find_spa_bdw(acpi_desc, nfit_mem); if (!nfit_mem->spa_bdw) - return 0; + return; range_index = nfit_mem->spa_bdw->range_index; list_for_each_entry(nfit_memdev, &acpi_desc->memdevs, list) { @@ -472,8 +451,6 @@ } break; } - - return 0; } static int nfit_mem_dcr_init(struct acpi_nfit_desc *acpi_desc, @@ -482,7 +459,6 @@ struct nfit_mem *nfit_mem, *found; struct nfit_memdev *nfit_memdev; int type = nfit_spa_type(spa); - u16 dcr; switch (type) { case NFIT_SPA_DCR: @@ -493,14 +469,18 @@ } list_for_each_entry(nfit_memdev, &acpi_desc->memdevs, list) { - int rc; + struct nfit_dcr *nfit_dcr; + u32 device_handle; + u16 dcr; if (nfit_memdev->memdev->range_index != spa->range_index) continue; found = NULL; dcr = nfit_memdev->memdev->region_index; + device_handle = nfit_memdev->memdev->device_handle; list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) - if (__to_nfit_memdev(nfit_mem)->region_index == dcr) { + if (__to_nfit_memdev(nfit_mem)->device_handle + == device_handle) { found = nfit_mem; break; } @@ -513,6 +493,31 @@ if (!nfit_mem) return -ENOMEM; INIT_LIST_HEAD(&nfit_mem->list); + list_add(&nfit_mem->list, &acpi_desc->dimms); + } + + list_for_each_entry(nfit_dcr, &acpi_desc->dcrs, list) { + if (nfit_dcr->dcr->region_index != dcr) + continue; + /* + * Record the control region for the dimm. For + * the ACPI 6.1 case, where there are separate + * control regions for the pmem vs blk + * interfaces, be sure to record the extended + * blk details. + */ + if (!nfit_mem->dcr) + nfit_mem->dcr = nfit_dcr->dcr; + else if (nfit_mem->dcr->windows == 0 + && nfit_dcr->dcr->windows) + nfit_mem->dcr = nfit_dcr->dcr; + break; + } + + if (dcr && !nfit_mem->dcr) { + dev_err(acpi_desc->dev, "SPA %d missing DCR %d\n", + spa->range_index, dcr); + return -ENODEV; } if (type == NFIT_SPA_DCR) { @@ -529,6 +534,7 @@ nfit_mem->idt_dcr = nfit_idt->idt; break; } + nfit_mem_init_bdw(acpi_desc, nfit_mem, spa); } else { /* * A single dimm may belong to multiple SPA-PM @@ -537,13 +543,6 @@ */ nfit_mem->memdev_pmem = nfit_memdev->memdev; } - - if (found) - continue; - - rc = nfit_mem_add(acpi_desc, nfit_mem, spa); - if (rc) - return rc; } return 0; --- 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/acpi/video_detect.c +++ linux-raspi2-4.2.0/drivers/acpi/video_detect.c @@ -135,14 +135,6 @@ DMI_MATCH(DMI_PRODUCT_NAME, "UL30A"), }, }, - { - .callback = video_detect_force_vendor, - .ident = "Dell Inspiron 5737", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5737"), - }, - }, /* * These models have a working acpi_video backlight control, and using --- linux-raspi2-4.2.0.orig/drivers/android/binder.c +++ linux-raspi2-4.2.0/drivers/android/binder.c @@ -2074,7 +2074,7 @@ if (get_user(cookie, (binder_uintptr_t __user *)ptr)) return -EFAULT; - ptr += sizeof(void *); + ptr += sizeof(cookie); list_for_each_entry(w, &proc->delivered_death, entry) { struct binder_ref_death *tmp_death = container_of(w, struct binder_ref_death, work); --- linux-raspi2-4.2.0.orig/drivers/ata/ahci.c +++ linux-raspi2-4.2.0/drivers/ata/ahci.c @@ -264,6 +264,26 @@ { PCI_VDEVICE(INTEL, 0x3b2b), board_ahci }, /* PCH RAID */ { PCI_VDEVICE(INTEL, 0x3b2c), board_ahci }, /* PCH RAID */ { PCI_VDEVICE(INTEL, 0x3b2f), board_ahci }, /* PCH AHCI */ + { PCI_VDEVICE(INTEL, 0x19b0), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19b1), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19b2), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19b3), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19b4), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19b5), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19b6), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19b7), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19bE), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19bF), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19c0), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19c1), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19c2), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19c3), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19c4), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19c5), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19c6), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19c7), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19cE), board_ahci }, /* DNV AHCI */ + { PCI_VDEVICE(INTEL, 0x19cF), board_ahci }, /* DNV AHCI */ { PCI_VDEVICE(INTEL, 0x1c02), board_ahci }, /* CPT AHCI */ { PCI_VDEVICE(INTEL, 0x1c03), board_ahci }, /* CPT AHCI */ { PCI_VDEVICE(INTEL, 0x1c04), board_ahci }, /* CPT RAID */ @@ -344,6 +364,22 @@ { PCI_VDEVICE(INTEL, 0xa105), board_ahci }, /* Sunrise Point-H RAID */ { PCI_VDEVICE(INTEL, 0xa107), board_ahci }, /* Sunrise Point-H RAID */ { PCI_VDEVICE(INTEL, 0xa10f), board_ahci }, /* Sunrise Point-H RAID */ + { PCI_VDEVICE(INTEL, 0x2822), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0x2823), board_ahci }, /* Lewisburg AHCI*/ + { PCI_VDEVICE(INTEL, 0x2826), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0x2827), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa182), board_ahci }, /* Lewisburg AHCI*/ + { PCI_VDEVICE(INTEL, 0xa184), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa186), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa18e), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa1d2), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa1d6), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa202), board_ahci }, /* Lewisburg AHCI*/ + { PCI_VDEVICE(INTEL, 0xa204), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa206), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa20e), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa252), board_ahci }, /* Lewisburg RAID*/ + { PCI_VDEVICE(INTEL, 0xa256), board_ahci }, /* Lewisburg RAID*/ /* JMicron 360/1/3/5/6, match class to avoid IDE function */ { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, @@ -351,6 +387,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 +1488,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/ahci_mvebu.c +++ linux-raspi2-4.2.0/drivers/ata/ahci_mvebu.c @@ -62,6 +62,7 @@ writel(0x80, hpriv->mmio + AHCI_VENDOR_SPECIFIC_0_DATA); } +#ifdef CONFIG_PM_SLEEP static int ahci_mvebu_suspend(struct platform_device *pdev, pm_message_t state) { return ahci_platform_suspend_host(&pdev->dev); @@ -81,6 +82,10 @@ return ahci_platform_resume_host(&pdev->dev); } +#else +#define ahci_mvebu_suspend NULL +#define ahci_mvebu_resume NULL +#endif static const struct ata_port_info ahci_mvebu_port_info = { .flags = AHCI_FLAG_COMMON, --- linux-raspi2-4.2.0.orig/drivers/ata/ahci_xgene.c +++ linux-raspi2-4.2.0/drivers/ata/ahci_xgene.c @@ -739,9 +739,9 @@ dev_warn(&pdev->dev, "%s: Error reading device info. Assume version1\n", __func__); version = XGENE_AHCI_V1; - } - if (info->valid & ACPI_VALID_CID) + } else if (info->valid & ACPI_VALID_CID) { version = XGENE_AHCI_V2; + } } } #endif --- linux-raspi2-4.2.0.orig/drivers/ata/libahci.c +++ linux-raspi2-4.2.0/drivers/ata/libahci.c @@ -495,8 +495,8 @@ } } - /* fabricate port_map from cap.nr_ports */ - if (!port_map) { + /* fabricate port_map from cap.nr_ports for < AHCI 1.3 */ + if (!port_map && vers < 0x10300) { port_map = (1 << ahci_nr_ports(cap)) - 1; dev_warn(dev, "forcing PORTS_IMPL to 0x%x\n", port_map); @@ -1266,6 +1266,15 @@ ata_tf_to_fis(tf, pmp, is_cmd, fis); ahci_fill_cmd_slot(pp, 0, cmd_fis_len | flags | (pmp << 12)); + /* set port value for softreset of Port Multiplier */ + if (pp->fbs_enabled && pp->fbs_last_dev != pmp) { + tmp = readl(port_mmio + PORT_FBS); + tmp &= ~(PORT_FBS_DEV_MASK | PORT_FBS_DEC); + tmp |= pmp << PORT_FBS_DEV_OFFSET; + writel(tmp, port_mmio + PORT_FBS); + pp->fbs_last_dev = pmp; + } + /* issue & wait */ writel(1, port_mmio + PORT_CMD_ISSUE); --- linux-raspi2-4.2.0.orig/drivers/ata/libata-scsi.c +++ linux-raspi2-4.2.0/drivers/ata/libata-scsi.c @@ -675,19 +675,18 @@ int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *scsidev, int cmd, void __user *arg) { - int val = -EINVAL, rc = -EINVAL; + unsigned long val; + int rc = -EINVAL; unsigned long flags; switch (cmd) { - case ATA_IOC_GET_IO32: + case HDIO_GET_32BIT: spin_lock_irqsave(ap->lock, flags); val = ata_ioc32(ap); spin_unlock_irqrestore(ap->lock, flags); - if (copy_to_user(arg, &val, 1)) - return -EFAULT; - return 0; + return put_user(val, (unsigned long __user *)arg); - case ATA_IOC_SET_IO32: + case HDIO_SET_32BIT: val = (unsigned long) arg; rc = 0; spin_lock_irqsave(ap->lock, flags); --- linux-raspi2-4.2.0.orig/drivers/ata/libata-sff.c +++ linux-raspi2-4.2.0/drivers/ata/libata-sff.c @@ -997,12 +997,9 @@ static void ata_hsm_qc_complete(struct ata_queued_cmd *qc, int in_wq) { struct ata_port *ap = qc->ap; - unsigned long flags; if (ap->ops->error_handler) { if (in_wq) { - spin_lock_irqsave(ap->lock, flags); - /* EH might have kicked in while host lock is * released. */ @@ -1014,8 +1011,6 @@ } else ata_port_freeze(ap); } - - spin_unlock_irqrestore(ap->lock, flags); } else { if (likely(!(qc->err_mask & AC_ERR_HSM))) ata_qc_complete(qc); @@ -1024,10 +1019,8 @@ } } else { if (in_wq) { - spin_lock_irqsave(ap->lock, flags); ata_sff_irq_on(ap); ata_qc_complete(qc); - spin_unlock_irqrestore(ap->lock, flags); } else ata_qc_complete(qc); } @@ -1048,9 +1041,10 @@ { struct ata_link *link = qc->dev->link; struct ata_eh_info *ehi = &link->eh_info; - unsigned long flags = 0; int poll_next; + lockdep_assert_held(ap->lock); + WARN_ON_ONCE((qc->flags & ATA_QCFLAG_ACTIVE) == 0); /* Make sure ata_sff_qc_issue() does not throw things @@ -1112,14 +1106,6 @@ } } - /* Send the CDB (atapi) or the first data block (ata pio out). - * During the state transition, interrupt handler shouldn't - * be invoked before the data transfer is complete and - * hsm_task_state is changed. Hence, the following locking. - */ - if (in_wq) - spin_lock_irqsave(ap->lock, flags); - if (qc->tf.protocol == ATA_PROT_PIO) { /* PIO data out protocol. * send first data block. @@ -1135,9 +1121,6 @@ /* send CDB */ atapi_send_cdb(ap, qc); - if (in_wq) - spin_unlock_irqrestore(ap->lock, flags); - /* if polling, ata_sff_pio_task() handles the rest. * otherwise, interrupt handler takes over from here. */ @@ -1361,12 +1344,14 @@ u8 status; int poll_next; + spin_lock_irq(ap->lock); + BUG_ON(ap->sff_pio_task_link == NULL); /* qc can be NULL if timeout occurred */ qc = ata_qc_from_tag(ap, link->active_tag); if (!qc) { ap->sff_pio_task_link = NULL; - return; + goto out_unlock; } fsm_start: @@ -1381,11 +1366,14 @@ */ status = ata_sff_busy_wait(ap, ATA_BUSY, 5); if (status & ATA_BUSY) { + spin_unlock_irq(ap->lock); ata_msleep(ap, 2); + spin_lock_irq(ap->lock); + status = ata_sff_busy_wait(ap, ATA_BUSY, 10); if (status & ATA_BUSY) { ata_sff_queue_pio_task(link, ATA_SHORT_PAUSE); - return; + goto out_unlock; } } @@ -1402,6 +1390,8 @@ */ if (poll_next) goto fsm_start; +out_unlock: + spin_unlock_irq(ap->lock); } /** --- 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/ata/sata_sil.c +++ linux-raspi2-4.2.0/drivers/ata/sata_sil.c @@ -630,6 +630,9 @@ unsigned int n, quirks = 0; unsigned char model_num[ATA_ID_PROD_LEN + 1]; + /* This controller doesn't support trim */ + dev->horkage |= ATA_HORKAGE_NOTRIM; + ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); for (n = 0; sil_blacklist[n].product; n++) --- 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/firmware_class.c +++ linux-raspi2-4.2.0/drivers/base/firmware_class.c @@ -1118,15 +1118,17 @@ _request_firmware(const struct firmware **firmware_p, const char *name, struct device *device, unsigned int opt_flags) { - struct firmware *fw; + struct firmware *fw = NULL; long timeout; int ret; if (!firmware_p) return -EINVAL; - if (!name || name[0] == '\0') - return -EINVAL; + if (!name || name[0] == '\0') { + ret = -EINVAL; + goto out; + } ret = _request_firmware_prepare(&fw, name, device); if (ret <= 0) /* error or already assigned */ --- linux-raspi2-4.2.0.orig/drivers/base/memory.c +++ linux-raspi2-4.2.0/drivers/base/memory.c @@ -303,6 +303,10 @@ if (mem->state == MEM_OFFLINE) return 0; + /* Can't offline block with non-present sections */ + if (mem->section_count != sections_per_block) + return -EINVAL; + return memory_block_change_state(mem, MEM_OFFLINE, MEM_ONLINE); } @@ -446,8 +450,7 @@ const char *buf, size_t count) { u64 phys_addr; - int nid; - int i, ret; + int nid, ret; unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block; ret = kstrtoull(buf, 0, &phys_addr); @@ -457,15 +460,12 @@ if (phys_addr & ((pages_per_block << PAGE_SHIFT) - 1)) return -EINVAL; - for (i = 0; i < sections_per_block; i++) { - nid = memory_add_physaddr_to_nid(phys_addr); - ret = add_memory(nid, phys_addr, - PAGES_PER_SECTION << PAGE_SHIFT); - if (ret) - goto out; + nid = memory_add_physaddr_to_nid(phys_addr); + ret = add_memory(nid, phys_addr, + MIN_MEMORY_BLOCK_SIZE * sections_per_block); - phys_addr += MIN_MEMORY_BLOCK_SIZE; - } + if (ret) + goto out; ret = count; out: --- 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/domain.c +++ linux-raspi2-4.2.0/drivers/base/power/domain.c @@ -2216,10 +2216,10 @@ } pd = of_genpd_get_from_provider(&pd_args); + of_node_put(pd_args.np); if (IS_ERR(pd)) { dev_dbg(dev, "%s() failed to find PM domain: %ld\n", __func__, PTR_ERR(pd)); - of_node_put(dev->of_node); return PTR_ERR(pd); } @@ -2237,7 +2237,6 @@ if (ret < 0) { dev_err(dev, "failed to add to PM domain %s: %d", pd->name, ret); - of_node_put(dev->of_node); 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/mtip32xx/mtip32xx.c +++ linux-raspi2-4.2.0/drivers/block/mtip32xx/mtip32xx.c @@ -618,8 +618,6 @@ port = dd->port; - set_bit(MTIP_PF_EH_ACTIVE_BIT, &port->flags); - if (test_bit(MTIP_PF_IC_ACTIVE_BIT, &port->flags)) { cmd = mtip_cmd_from_tag(dd, MTIP_TAG_INTERNAL); dbg_printk(MTIP_DRV_NAME " TFE for the internal command\n"); @@ -628,7 +626,7 @@ cmd->comp_func(port, MTIP_TAG_INTERNAL, cmd, PORT_IRQ_TF_ERR); } - goto handle_tfe_exit; + return; } /* clear the tag accumulator */ @@ -701,7 +699,7 @@ fail_reason = "thermal shutdown"; } if (buf[288] == 0xBF) { - set_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag); + set_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag); dev_info(&dd->pdev->dev, "Drive indicates rebuild has failed. Secure erase required.\n"); fail_all_ncq_cmds = 1; @@ -771,11 +769,6 @@ } } print_tags(dd, "reissued (TFE)", tagaccum, cmd_cnt); - -handle_tfe_exit: - /* clear eh_active */ - clear_bit(MTIP_PF_EH_ACTIVE_BIT, &port->flags); - wake_up_interruptible(&port->svc_wait); } /* @@ -1007,6 +1000,7 @@ (fis->features == 0x27 || fis->features == 0x72 || fis->features == 0x62 || fis->features == 0x26))) { clear_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag); + clear_bit(MTIP_DDF_REBUILD_FAILED_BIT, &port->dd->dd_flag); /* Com reset after secure erase or lowlevel format */ mtip_restart_port(port); clear_bit(MTIP_PF_SE_ACTIVE_BIT, &port->flags); @@ -1099,6 +1093,7 @@ struct mtip_cmd *int_cmd; struct driver_data *dd = port->dd; int rv = 0; + unsigned long start; /* Make sure the buffer is 8 byte aligned. This is asic specific. */ if (buffer & 0x00000007) { @@ -1162,6 +1157,8 @@ /* Populate the command header */ int_cmd->command_header->byte_count = 0; + start = jiffies; + /* Issue the command to the hardware */ mtip_issue_non_ncq_command(port, MTIP_TAG_INTERNAL); @@ -1170,10 +1167,12 @@ if ((rv = wait_for_completion_interruptible_timeout( &wait, msecs_to_jiffies(timeout))) <= 0) { + if (rv == -ERESTARTSYS) { /* interrupted */ dev_err(&dd->pdev->dev, - "Internal command [%02X] was interrupted after %lu ms\n", - fis->command, timeout); + "Internal command [%02X] was interrupted after %u ms\n", + fis->command, + jiffies_to_msecs(jiffies - start)); rv = -EINTR; goto exec_ic_exit; } else if (rv == 0) /* timeout */ @@ -2924,9 +2923,7 @@ * is in progress nor error handling is active */ wait_event_interruptible(port->svc_wait, (port->flags) && - !(port->flags & MTIP_PF_PAUSE_IO)); - - set_bit(MTIP_PF_SVC_THD_ACTIVE_BIT, &port->flags); + (port->flags & MTIP_PF_SVC_THD_WORK)); if (kthread_should_stop() || test_bit(MTIP_PF_SVC_THD_STOP_BIT, &port->flags)) @@ -2936,6 +2933,8 @@ &dd->dd_flag))) goto st_out; + set_bit(MTIP_PF_SVC_THD_ACTIVE_BIT, &port->flags); + restart_eh: /* Demux bits: start with error handling */ if (test_bit(MTIP_PF_EH_ACTIVE_BIT, &port->flags)) { @@ -2978,10 +2977,8 @@ } if (test_bit(MTIP_PF_REBUILD_BIT, &port->flags)) { - if (mtip_ftl_rebuild_poll(dd) < 0) - set_bit(MTIP_DDF_REBUILD_FAILED_BIT, - &dd->dd_flag); - clear_bit(MTIP_PF_REBUILD_BIT, &port->flags); + if (mtip_ftl_rebuild_poll(dd) == 0) + clear_bit(MTIP_PF_REBUILD_BIT, &port->flags); } } @@ -3096,7 +3093,7 @@ if (buf[288] == 0xBF) { dev_info(&dd->pdev->dev, "Drive indicates rebuild has failed.\n"); - /* TODO */ + set_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag); } } @@ -3270,20 +3267,25 @@ return rv; } -static void mtip_standby_drive(struct driver_data *dd) +static int mtip_standby_drive(struct driver_data *dd) { - if (dd->sr) - return; + int rv = 0; + if (dd->sr || !dd->port) + return -ENODEV; /* * Send standby immediate (E0h) to the drive so that it * saves its state. */ if (!test_bit(MTIP_PF_REBUILD_BIT, &dd->port->flags) && - !test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag)) - if (mtip_standby_immediate(dd->port)) + !test_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag) && + !test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag)) { + rv = mtip_standby_immediate(dd->port); + if (rv) dev_warn(&dd->pdev->dev, "STANDBY IMMEDIATE failed\n"); + } + return rv; } /* @@ -3341,8 +3343,7 @@ * Send standby immediate (E0h) to the drive so that it * saves its state. */ - if (!dd->sr && dd->port) - mtip_standby_immediate(dd->port); + mtip_standby_drive(dd); return 0; } @@ -3365,7 +3366,7 @@ * Send standby immediate (E0h) to the drive * so that it saves its state. */ - if (mtip_standby_immediate(dd->port) != 0) { + if (mtip_standby_drive(dd) != 0) { dev_err(&dd->pdev->dev, "Failed standby-immediate command\n"); return -EFAULT; @@ -3603,6 +3604,28 @@ return 0; } +static int mtip_block_open(struct block_device *dev, fmode_t mode) +{ + struct driver_data *dd; + + if (dev && dev->bd_disk) { + dd = (struct driver_data *) dev->bd_disk->private_data; + + if (dd) { + if (test_bit(MTIP_DDF_REMOVAL_BIT, + &dd->dd_flag)) { + return -ENODEV; + } + return 0; + } + } + return -ENODEV; +} + +void mtip_block_release(struct gendisk *disk, fmode_t mode) +{ +} + /* * Block device operation function. * @@ -3610,6 +3633,8 @@ * layer. */ static const struct block_device_operations mtip_block_ops = { + .open = mtip_block_open, + .release = mtip_block_release, .ioctl = mtip_block_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = mtip_block_compat_ioctl, @@ -3671,10 +3696,9 @@ rq_data_dir(rq))) { return -ENODATA; } - if (unlikely(test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag))) + if (unlikely(test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag) || + test_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag))) return -ENODATA; - if (test_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag)) - return -ENXIO; } if (rq->cmd_flags & REQ_DISCARD) { @@ -3858,7 +3882,6 @@ mtip_hw_debugfs_init(dd); -skip_create_disk: memset(&dd->tags, 0, sizeof(dd->tags)); dd->tags.ops = &mtip_mq_ops; dd->tags.nr_hw_queues = 1; @@ -3888,6 +3911,7 @@ dd->disk->queue = dd->queue; dd->queue->queuedata = dd; +skip_create_disk: /* Initialize the protocol layer. */ wait_for_rebuild = mtip_hw_get_identify(dd); if (wait_for_rebuild < 0) { @@ -4049,7 +4073,8 @@ dd->bdev = NULL; } if (dd->disk) { - del_gendisk(dd->disk); + if (test_bit(MTIP_DDF_INIT_DONE_BIT, &dd->dd_flag)) + del_gendisk(dd->disk); if (dd->disk->queue) { blk_cleanup_queue(dd->queue); blk_mq_free_tag_set(&dd->tags); @@ -4090,7 +4115,8 @@ dev_info(&dd->pdev->dev, "Shutting down %s ...\n", dd->disk->disk_name); - del_gendisk(dd->disk); + if (test_bit(MTIP_DDF_INIT_DONE_BIT, &dd->dd_flag)) + del_gendisk(dd->disk); if (dd->disk->queue) { blk_cleanup_queue(dd->queue); blk_mq_free_tag_set(&dd->tags); @@ -4435,7 +4461,7 @@ struct driver_data *dd = pci_get_drvdata(pdev); unsigned long flags, to; - set_bit(MTIP_DDF_REMOVE_PENDING_BIT, &dd->dd_flag); + set_bit(MTIP_DDF_REMOVAL_BIT, &dd->dd_flag); spin_lock_irqsave(&dev_lock, flags); list_del_init(&dd->online_list); @@ -4452,12 +4478,18 @@ } while (atomic_read(&dd->irq_workers_active) != 0 && time_before(jiffies, to)); + fsync_bdev(dd->bdev); + if (atomic_read(&dd->irq_workers_active) != 0) { dev_warn(&dd->pdev->dev, "Completion workers still active!\n"); } - blk_mq_stop_hw_queues(dd->queue); + if (dd->sr) + blk_mq_stop_hw_queues(dd->queue); + + set_bit(MTIP_DDF_REMOVE_PENDING_BIT, &dd->dd_flag); + /* Clean up the block layer. */ mtip_block_remove(dd); --- linux-raspi2-4.2.0.orig/drivers/block/mtip32xx/mtip32xx.h +++ linux-raspi2-4.2.0/drivers/block/mtip32xx/mtip32xx.h @@ -144,6 +144,11 @@ MTIP_PF_REBUILD_BIT = 6, MTIP_PF_SVC_THD_STOP_BIT = 8, + MTIP_PF_SVC_THD_WORK = ((1 << MTIP_PF_EH_ACTIVE_BIT) | + (1 << MTIP_PF_ISSUE_CMDS_BIT) | + (1 << MTIP_PF_REBUILD_BIT) | + (1 << MTIP_PF_SVC_THD_STOP_BIT)), + /* below are bit numbers in 'dd_flag' defined in driver_data */ MTIP_DDF_SEC_LOCK_BIT = 0, MTIP_DDF_REMOVE_PENDING_BIT = 1, @@ -153,6 +158,7 @@ MTIP_DDF_RESUME_BIT = 6, MTIP_DDF_INIT_DONE_BIT = 7, MTIP_DDF_REBUILD_FAILED_BIT = 8, + MTIP_DDF_REMOVAL_BIT = 9, MTIP_DDF_STOP_IO = ((1 << MTIP_DDF_REMOVE_PENDING_BIT) | (1 << MTIP_DDF_SEC_LOCK_BIT) | --- 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: @@ -556,8 +556,8 @@ req, req->cmd_type); if (unlikely(!nbd->sock)) { - dev_err(disk_to_dev(nbd->disk), - "Attempted send on closed socket\n"); + dev_err_ratelimited(disk_to_dev(nbd->disk), + "Attempted send on closed socket\n"); req->errors++; nbd_end_request(nbd, req); spin_lock_irq(q->queue_lock); --- 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/paride/pd.c +++ linux-raspi2-4.2.0/drivers/block/paride/pd.c @@ -126,7 +126,7 @@ */ #include -static bool verbose = 0; +static int verbose = 0; static int major = PD_MAJOR; static char *name = PD_NAME; static int cluster = 64; @@ -161,7 +161,7 @@ static DEFINE_MUTEX(pd_mutex); static DEFINE_SPINLOCK(pd_lock); -module_param(verbose, bool, 0); +module_param(verbose, int, 0); module_param(major, int, 0); module_param(name, charp, 0); module_param(cluster, int, 0); --- linux-raspi2-4.2.0.orig/drivers/block/paride/pt.c +++ linux-raspi2-4.2.0/drivers/block/paride/pt.c @@ -117,7 +117,7 @@ */ -static bool verbose = 0; +static int verbose = 0; static int major = PT_MAJOR; static char *name = PT_NAME; static int disable = 0; @@ -152,7 +152,7 @@ #include -module_param(verbose, bool, 0); +module_param(verbose, int, 0); module_param(major, int, 0); module_param(name, charp, 0); module_param_array(drive0, int, NULL, 0); --- 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) @@ -1953,7 +1955,7 @@ osdc = &rbd_dev->rbd_client->client->osdc; osd_req = ceph_osdc_alloc_request(osdc, snapc, num_ops, false, - GFP_ATOMIC); + GFP_NOIO); if (!osd_req) return NULL; /* ENOMEM */ @@ -2002,7 +2004,7 @@ rbd_dev = img_request->rbd_dev; osdc = &rbd_dev->rbd_client->client->osdc; osd_req = ceph_osdc_alloc_request(osdc, snapc, num_osd_ops, - false, GFP_ATOMIC); + false, GFP_NOIO); if (!osd_req) return NULL; /* ENOMEM */ @@ -2501,7 +2503,7 @@ bio_chain_clone_range(&bio_list, &bio_offset, clone_size, - GFP_ATOMIC); + GFP_NOIO); if (!obj_request->bio_list) goto out_unwind; } else if (type == OBJ_REQUEST_PAGES) { @@ -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 @@ -76,7 +76,7 @@ */ static struct zcomp_strm *zcomp_strm_alloc(struct zcomp *comp) { - struct zcomp_strm *zstrm = kmalloc(sizeof(*zstrm), GFP_KERNEL); + struct zcomp_strm *zstrm = kmalloc(sizeof(*zstrm), GFP_NOIO); if (!zstrm) return NULL; @@ -85,7 +85,7 @@ * allocate 2 pages. 1 for compressed data, plus 1 extra for the * case when compressed size is larger than the original one */ - zstrm->buffer = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, 1); + zstrm->buffer = (void *)__get_free_pages(GFP_NOIO | __GFP_ZERO, 1); if (!zstrm->private || !zstrm->buffer) { zcomp_strm_free(comp, zstrm); zstrm = NULL; @@ -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/block/zram/zcomp_lz4.c +++ linux-raspi2-4.2.0/drivers/block/zram/zcomp_lz4.c @@ -10,17 +10,36 @@ #include #include #include +#include +#include #include "zcomp_lz4.h" static void *zcomp_lz4_create(void) { - return kzalloc(LZ4_MEM_COMPRESS, GFP_KERNEL); + void *ret; + + /* + * This function can be called in swapout/fs write path + * so we can't use GFP_FS|IO. And it assumes we already + * have at least one stream in zram initialization so we + * don't do best effort to allocate more stream in here. + * A default stream will work well without further multiple + * streams. That's why we use NORETRY | NOWARN. + */ + ret = kzalloc(LZ4_MEM_COMPRESS, GFP_NOIO | __GFP_NORETRY | + __GFP_NOWARN); + if (!ret) + ret = __vmalloc(LZ4_MEM_COMPRESS, + GFP_NOIO | __GFP_NORETRY | __GFP_NOWARN | + __GFP_ZERO | __GFP_HIGHMEM, + PAGE_KERNEL); + return ret; } static void zcomp_lz4_destroy(void *private) { - kfree(private); + kvfree(private); } static int zcomp_lz4_compress(const unsigned char *src, unsigned char *dst, --- linux-raspi2-4.2.0.orig/drivers/block/zram/zcomp_lzo.c +++ linux-raspi2-4.2.0/drivers/block/zram/zcomp_lzo.c @@ -10,17 +10,36 @@ #include #include #include +#include +#include #include "zcomp_lzo.h" static void *lzo_create(void) { - return kzalloc(LZO1X_MEM_COMPRESS, GFP_KERNEL); + void *ret; + + /* + * This function can be called in swapout/fs write path + * so we can't use GFP_FS|IO. And it assumes we already + * have at least one stream in zram initialization so we + * don't do best effort to allocate more stream in here. + * A default stream will work well without further multiple + * streams. That's why we use NORETRY | NOWARN. + */ + ret = kzalloc(LZO1X_MEM_COMPRESS, GFP_NOIO | __GFP_NORETRY | + __GFP_NOWARN); + if (!ret) + ret = __vmalloc(LZO1X_MEM_COMPRESS, + GFP_NOIO | __GFP_NORETRY | __GFP_NOWARN | + __GFP_ZERO | __GFP_HIGHMEM, + PAGE_KERNEL); + return ret; } static void lzo_destroy(void *private) { - kfree(private); + kvfree(private); } static int lzo_compress(const unsigned char *src, unsigned char *dst, --- linux-raspi2-4.2.0.orig/drivers/block/zram/zram_drv.c +++ linux-raspi2-4.2.0/drivers/block/zram/zram_drv.c @@ -1319,7 +1319,6 @@ pr_info("Removed device: %s\n", zram->disk->disk_name); - idr_remove(&zram_index_idr, zram->disk->first_minor); blk_cleanup_queue(zram->disk->queue); del_gendisk(zram->disk); put_disk(zram->disk); @@ -1361,10 +1360,12 @@ mutex_lock(&zram_index_mutex); zram = idr_find(&zram_index_idr, dev_id); - if (zram) + if (zram) { ret = zram_remove(zram); - else + idr_remove(&zram_index_idr, dev_id); + } else { ret = -ENODEV; + } mutex_unlock(&zram_index_mutex); return ret ? ret : count; --- linux-raspi2-4.2.0.orig/drivers/bluetooth/ath3k.c +++ linux-raspi2-4.2.0/drivers/bluetooth/ath3k.c @@ -82,6 +82,7 @@ { USB_DEVICE(0x0489, 0xe05f) }, { USB_DEVICE(0x0489, 0xe076) }, { USB_DEVICE(0x0489, 0xe078) }, + { USB_DEVICE(0x0489, 0xe095) }, { USB_DEVICE(0x04c5, 0x1330) }, { USB_DEVICE(0x04CA, 0x3004) }, { USB_DEVICE(0x04CA, 0x3005) }, @@ -92,7 +93,9 @@ { USB_DEVICE(0x04CA, 0x300d) }, { USB_DEVICE(0x04CA, 0x300f) }, { USB_DEVICE(0x04CA, 0x3010) }, + { USB_DEVICE(0x04CA, 0x3014) }, { USB_DEVICE(0x0930, 0x0219) }, + { USB_DEVICE(0x0930, 0x021c) }, { USB_DEVICE(0x0930, 0x0220) }, { USB_DEVICE(0x0930, 0x0227) }, { USB_DEVICE(0x0b05, 0x17d0) }, @@ -104,6 +107,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) }, @@ -111,10 +115,12 @@ { USB_DEVICE(0x13d3, 0x3362) }, { USB_DEVICE(0x13d3, 0x3375) }, { USB_DEVICE(0x13d3, 0x3393) }, + { USB_DEVICE(0x13d3, 0x3395) }, { USB_DEVICE(0x13d3, 0x3402) }, { USB_DEVICE(0x13d3, 0x3408) }, { USB_DEVICE(0x13d3, 0x3423) }, { USB_DEVICE(0x13d3, 0x3432) }, + { USB_DEVICE(0x13d3, 0x3472) }, { USB_DEVICE(0x13d3, 0x3474) }, /* Atheros AR5BBU12 with sflash firmware */ @@ -142,6 +148,7 @@ { USB_DEVICE(0x0489, 0xe05f), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe076), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe078), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe095), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, @@ -152,7 +159,9 @@ { USB_DEVICE(0x04ca, 0x300d), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x300f), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04ca, 0x3014), .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 +173,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 }, @@ -171,10 +181,12 @@ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3395), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3408), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3423), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3432), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3472), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3474), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU22 with sflash firmware */ --- linux-raspi2-4.2.0.orig/drivers/bluetooth/btusb.c +++ linux-raspi2-4.2.0/drivers/bluetooth/btusb.c @@ -145,6 +145,10 @@ { USB_VENDOR_AND_INTERFACE_INFO(0x13d3, 0xff, 0x01, 0x01), .driver_info = BTUSB_BCM_PATCHRAM }, + /* Toshiba Corp - Broadcom based */ + { USB_VENDOR_AND_INTERFACE_INFO(0x0930, 0xff, 0x01, 0x01), + .driver_info = BTUSB_BCM_PATCHRAM }, + /* Intel Bluetooth USB Bootloader (RAM module) */ { USB_DEVICE(0x8087, 0x0a5a), .driver_info = BTUSB_INTEL_BOOT | BTUSB_BROKEN_ISOC }, @@ -181,6 +185,7 @@ { USB_DEVICE(0x0489, 0xe05f), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe076), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe078), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe095), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, @@ -191,7 +196,9 @@ { USB_DEVICE(0x04ca, 0x300d), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x300f), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04ca, 0x3014), .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 +210,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 }, @@ -210,10 +218,12 @@ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3395), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3408), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3423), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3432), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3472), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3474), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU12 with sflash firmware */ --- 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/bus/imx-weim.c +++ linux-raspi2-4.2.0/drivers/bus/imx-weim.c @@ -150,7 +150,7 @@ return ret; } - for_each_child_of_node(pdev->dev.of_node, child) { + for_each_available_child_of_node(pdev->dev.of_node, child) { if (!child->name) continue; --- 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_si_intf.c +++ linux-raspi2-4.2.0/drivers/char/ipmi/ipmi_si_intf.c @@ -404,18 +404,42 @@ return rv; } -static void start_check_enables(struct smi_info *smi_info) +static void smi_mod_timer(struct smi_info *smi_info, unsigned long new_val) +{ + smi_info->last_timeout_jiffies = jiffies; + mod_timer(&smi_info->si_timer, new_val); + smi_info->timer_running = true; +} + +/* + * Start a new message and (re)start the timer and thread. + */ +static void start_new_msg(struct smi_info *smi_info, unsigned char *msg, + unsigned int size) +{ + smi_mod_timer(smi_info, jiffies + SI_TIMEOUT_JIFFIES); + + if (smi_info->thread) + wake_up_process(smi_info->thread); + + smi_info->handlers->start_transaction(smi_info->si_sm, msg, size); +} + +static void start_check_enables(struct smi_info *smi_info, bool start_timer) { unsigned char msg[2]; msg[0] = (IPMI_NETFN_APP_REQUEST << 2); msg[1] = IPMI_GET_BMC_GLOBAL_ENABLES_CMD; - smi_info->handlers->start_transaction(smi_info->si_sm, msg, 2); + if (start_timer) + start_new_msg(smi_info, msg, 2); + else + smi_info->handlers->start_transaction(smi_info->si_sm, msg, 2); smi_info->si_state = SI_CHECKING_ENABLES; } -static void start_clear_flags(struct smi_info *smi_info) +static void start_clear_flags(struct smi_info *smi_info, bool start_timer) { unsigned char msg[3]; @@ -424,7 +448,10 @@ msg[1] = IPMI_CLEAR_MSG_FLAGS_CMD; msg[2] = WDT_PRE_TIMEOUT_INT; - smi_info->handlers->start_transaction(smi_info->si_sm, msg, 3); + if (start_timer) + start_new_msg(smi_info, msg, 3); + else + smi_info->handlers->start_transaction(smi_info->si_sm, msg, 3); smi_info->si_state = SI_CLEARING_FLAGS; } @@ -434,10 +461,8 @@ smi_info->curr_msg->data[1] = IPMI_GET_MSG_CMD; smi_info->curr_msg->data_size = 2; - smi_info->handlers->start_transaction( - smi_info->si_sm, - smi_info->curr_msg->data, - smi_info->curr_msg->data_size); + start_new_msg(smi_info, smi_info->curr_msg->data, + smi_info->curr_msg->data_size); smi_info->si_state = SI_GETTING_MESSAGES; } @@ -447,20 +472,11 @@ smi_info->curr_msg->data[1] = IPMI_READ_EVENT_MSG_BUFFER_CMD; smi_info->curr_msg->data_size = 2; - smi_info->handlers->start_transaction( - smi_info->si_sm, - smi_info->curr_msg->data, - smi_info->curr_msg->data_size); + start_new_msg(smi_info, smi_info->curr_msg->data, + smi_info->curr_msg->data_size); smi_info->si_state = SI_GETTING_EVENTS; } -static void smi_mod_timer(struct smi_info *smi_info, unsigned long new_val) -{ - smi_info->last_timeout_jiffies = jiffies; - mod_timer(&smi_info->si_timer, new_val); - smi_info->timer_running = true; -} - /* * When we have a situtaion where we run out of memory and cannot * allocate messages, we just leave them in the BMC and run the system @@ -470,11 +486,11 @@ * Note that we cannot just use disable_irq(), since the interrupt may * be shared. */ -static inline bool disable_si_irq(struct smi_info *smi_info) +static inline bool disable_si_irq(struct smi_info *smi_info, bool start_timer) { if ((smi_info->irq) && (!smi_info->interrupt_disabled)) { smi_info->interrupt_disabled = true; - start_check_enables(smi_info); + start_check_enables(smi_info, start_timer); return true; } return false; @@ -484,7 +500,7 @@ { if ((smi_info->irq) && (smi_info->interrupt_disabled)) { smi_info->interrupt_disabled = false; - start_check_enables(smi_info); + start_check_enables(smi_info, true); return true; } return false; @@ -502,7 +518,7 @@ msg = ipmi_alloc_smi_msg(); if (!msg) { - if (!disable_si_irq(smi_info)) + if (!disable_si_irq(smi_info, true)) smi_info->si_state = SI_NORMAL; } else if (enable_si_irq(smi_info)) { ipmi_free_smi_msg(msg); @@ -518,7 +534,7 @@ /* Watchdog pre-timeout */ smi_inc_stat(smi_info, watchdog_pretimeouts); - start_clear_flags(smi_info); + start_clear_flags(smi_info, true); smi_info->msg_flags &= ~WDT_PRE_TIMEOUT_INT; if (smi_info->intf) ipmi_smi_watchdog_pretimeout(smi_info->intf); @@ -870,8 +886,7 @@ msg[0] = (IPMI_NETFN_APP_REQUEST << 2); msg[1] = IPMI_GET_MSG_FLAGS_CMD; - smi_info->handlers->start_transaction( - smi_info->si_sm, msg, 2); + start_new_msg(smi_info, msg, 2); smi_info->si_state = SI_GETTING_FLAGS; goto restart; } @@ -901,7 +916,7 @@ * disable and messages disabled. */ if (smi_info->supports_event_msg_buff || smi_info->irq) { - start_check_enables(smi_info); + start_check_enables(smi_info, true); } else { smi_info->curr_msg = alloc_msg_handle_irq(smi_info); if (!smi_info->curr_msg) @@ -1203,14 +1218,14 @@ new_smi->intf = intf; - /* Try to claim any interrupts. */ - if (new_smi->irq_setup) - new_smi->irq_setup(new_smi); - /* Set up the timer that drives the interface. */ setup_timer(&new_smi->si_timer, smi_timeout, (long)new_smi); smi_mod_timer(new_smi, jiffies + SI_TIMEOUT_JIFFIES); + /* Try to claim any interrupts. */ + if (new_smi->irq_setup) + new_smi->irq_setup(new_smi); + /* * Check if the user forcefully enabled the daemon. */ @@ -3515,7 +3530,7 @@ * Start clearing the flags before we enable interrupts or the * timer to avoid racing with the timer. */ - start_clear_flags(new_smi); + start_clear_flags(new_smi, false); /* * IRQ is defined to be set when non-zero. req_events will @@ -3817,7 +3832,7 @@ poll(to_clean); schedule_timeout_uninterruptible(1); } - disable_si_irq(to_clean); + disable_si_irq(to_clean, false); while (to_clean->curr_msg || (to_clean->si_state != SI_NORMAL)) { poll(to_clean); schedule_timeout_uninterruptible(1); --- 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 @@ -133,11 +133,13 @@ chip->cdev.owner = chip->pdev->driver->owner; chip->cdev.kobj.parent = &chip->dev.kobj; + devm_add_action(dev, (void (*)(void *)) put_device, &chip->dev); + return chip; } EXPORT_SYMBOL_GPL(tpmm_chip_alloc); -static int tpm_dev_add_device(struct tpm_chip *chip) +static int tpm_add_char_device(struct tpm_chip *chip) { int rc; @@ -148,7 +150,6 @@ chip->devname, MAJOR(chip->dev.devt), MINOR(chip->dev.devt), rc); - device_unregister(&chip->dev); return rc; } @@ -159,16 +160,17 @@ chip->devname, MAJOR(chip->dev.devt), MINOR(chip->dev.devt), rc); + cdev_del(&chip->cdev); return rc; } return rc; } -static void tpm_dev_del_device(struct tpm_chip *chip) +static void tpm_del_char_device(struct tpm_chip *chip) { cdev_del(&chip->cdev); - device_unregister(&chip->dev); + device_del(&chip->dev); } static int tpm1_chip_register(struct tpm_chip *chip) @@ -225,13 +227,13 @@ if (rc) return rc; - rc = tpm_dev_add_device(chip); + rc = tpm_add_char_device(chip); if (rc) goto out_err; /* 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; @@ -264,6 +266,6 @@ synchronize_rcu(); tpm1_chip_unregister(chip); - tpm_dev_del_device(chip); + tpm_del_char_device(chip); } EXPORT_SYMBOL_GPL(tpm_chip_unregister); --- 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) { @@ -319,11 +310,11 @@ struct device *dev = &device->dev; struct tpm_chip *chip = dev_get_drvdata(dev); - tpm_chip_unregister(chip); - if (chip->flags & TPM_CHIP_FLAG_TPM2) tpm2_shutdown(chip, TPM2_SU_CLEAR); + tpm_chip_unregister(chip); + return 0; } --- 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. @@ -361,7 +401,7 @@ iowrite32(intmask, chip->vendor.iobase + TPM_INT_ENABLE(chip->vendor.locality)); - free_irq(chip->vendor.irq, chip); + devm_free_irq(chip->pdev, chip->vendor.irq, chip); chip->vendor.irq = 0; } @@ -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-divider.c +++ linux-raspi2-4.2.0/drivers/clk/clk-divider.c @@ -412,6 +412,12 @@ }; EXPORT_SYMBOL_GPL(clk_divider_ops); +const struct clk_ops clk_divider_ro_ops = { + .recalc_rate = clk_divider_recalc_rate, + .round_rate = clk_divider_round_rate, +}; +EXPORT_SYMBOL_GPL(clk_divider_ro_ops); + static struct clk *_register_divider(struct device *dev, const char *name, const char *parent_name, unsigned long flags, void __iomem *reg, u8 shift, u8 width, @@ -435,7 +441,10 @@ return ERR_PTR(-ENOMEM); init.name = name; - init.ops = &clk_divider_ops; + if (clk_divider_flags & CLK_DIVIDER_READ_ONLY) + init.ops = &clk_divider_ro_ops; + else + init.ops = &clk_divider_ops; init.flags = flags | CLK_IS_BASIC; init.parent_names = (parent_name ? &parent_name: NULL); init.num_parents = (parent_name ? 1 : 0); --- 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/clk-xgene.c +++ linux-raspi2-4.2.0/drivers/clk/clk-xgene.c @@ -353,7 +353,8 @@ /* Set new divider */ data = xgene_clk_read(pclk->param.divider_reg + pclk->param.reg_divider_offset); - data &= ~((1 << pclk->param.reg_divider_width) - 1); + data &= ~(((1 << pclk->param.reg_divider_width) - 1) + << pclk->param.reg_divider_shift); data |= divider; xgene_clk_write(data, pclk->param.divider_reg + pclk->param.reg_divider_offset); --- 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/meson/clkc.c +++ linux-raspi2-4.2.0/drivers/clk/meson/clkc.c @@ -199,7 +199,7 @@ } void __init meson_clk_register_clks(const struct clk_conf *clk_confs, - size_t nr_confs, + unsigned int nr_confs, void __iomem *clk_base) { unsigned int i; --- linux-raspi2-4.2.0.orig/drivers/clk/nxp/clk-lpc18xx-ccu.c +++ linux-raspi2-4.2.0/drivers/clk/nxp/clk-lpc18xx-ccu.c @@ -209,7 +209,7 @@ div->width = 1; div_hw = &div->hw; - div_ops = &clk_divider_ops; + div_ops = &clk_divider_ro_ops; } branch->gate.reg = branch->offset + reg_base; --- 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-msm8960.c +++ linux-raspi2-4.2.0/drivers/clk/qcom/gcc-msm8960.c @@ -2753,7 +2753,7 @@ }, .freq_tbl = clk_tbl_ce3, .clkr = { - .enable_reg = 0x2c08, + .enable_reg = 0x36c0, .enable_mask = BIT(7), .hw.init = &(struct clk_init_data){ .name = "ce3_src", @@ -2769,7 +2769,7 @@ .halt_reg = 0x2fdc, .halt_bit = 5, .clkr = { - .enable_reg = 0x36c4, + .enable_reg = 0x36cc, .enable_mask = BIT(4), .hw.init = &(struct clk_init_data){ .name = "ce3_core_clk", --- 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-rk3188.c +++ linux-raspi2-4.2.0/drivers/clk/rockchip/clk-rk3188.c @@ -708,6 +708,9 @@ "aclk_cpu", "aclk_peri", "hclk_peri", + "pclk_cpu", + "pclk_peri", + "hclk_cpubus" }; static void __init rk3188_common_clk_init(struct device_node *np) --- 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/rockchip/clk.c +++ linux-raspi2-4.2.0/drivers/clk/rockchip/clk.c @@ -70,7 +70,7 @@ if (gate_offset >= 0) { gate = kzalloc(sizeof(*gate), GFP_KERNEL); if (!gate) - return ERR_PTR(-ENOMEM); + goto err_gate; gate->flags = gate_flags; gate->reg = base + gate_offset; @@ -82,7 +82,7 @@ if (div_width > 0) { div = kzalloc(sizeof(*div), GFP_KERNEL); if (!div) - return ERR_PTR(-ENOMEM); + goto err_div; div->flags = div_flags; div->reg = base + muxdiv_offset; @@ -90,7 +90,9 @@ div->width = div_width; div->lock = lock; div->table = div_table; - div_ops = &clk_divider_ops; + div_ops = (div_flags & CLK_DIVIDER_READ_ONLY) + ? &clk_divider_ro_ops + : &clk_divider_ops; } clk = clk_register_composite(NULL, name, parent_names, num_parents, @@ -100,6 +102,11 @@ flags); return clk; +err_div: + kfree(gate); +err_gate: + kfree(mux); + return ERR_PTR(-ENOMEM); } static struct clk *rockchip_clk_register_frac_branch(const char *name, --- linux-raspi2-4.2.0.orig/drivers/clk/samsung/clk-cpu.c +++ linux-raspi2-4.2.0/drivers/clk/samsung/clk-cpu.c @@ -145,6 +145,7 @@ unsigned long alt_prate = clk_get_rate(cpuclk->alt_parent); unsigned long alt_div = 0, alt_div_mask = DIV_MASK; unsigned long div0, div1 = 0, mux_reg; + unsigned long flags; /* find out the divider values to use for clock data */ while ((cfg_data->prate * 1000) != ndata->new_rate) { @@ -153,7 +154,7 @@ cfg_data++; } - spin_lock(cpuclk->lock); + spin_lock_irqsave(cpuclk->lock, flags); /* * For the selected PLL clock frequency, get the pre-defined divider @@ -161,7 +162,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 +183,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,13 +204,13 @@ 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); } - spin_unlock(cpuclk->lock); + spin_unlock_irqrestore(cpuclk->lock, flags); return 0; } @@ -220,9 +221,10 @@ const struct exynos_cpuclk_cfg_data *cfg_data = cpuclk->cfg; unsigned long div = 0, div_mask = DIV_MASK; unsigned long mux_reg; + unsigned long flags; /* 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; @@ -230,20 +232,20 @@ } } - spin_lock(cpuclk->lock); + spin_lock_irqsave(cpuclk->lock, flags); /* select mout_apll as the alternate parent */ mux_reg = readl(base + E4210_SRC_CPU); 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; } exynos_set_safe_div(base, div, div_mask); - spin_unlock(cpuclk->lock); + spin_unlock_irqrestore(cpuclk->lock, flags); return 0; } --- 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/st/clkgen-fsyn.c +++ linux-raspi2-4.2.0/drivers/clk/st/clkgen-fsyn.c @@ -548,19 +548,20 @@ return 0; } -static long quadfs_pll_fs660c32_round_rate(struct clk_hw *hw, unsigned long rate - , unsigned long *prate) +static long quadfs_pll_fs660c32_round_rate(struct clk_hw *hw, + unsigned long rate, + unsigned long *prate) { struct stm_fs params; - if (!clk_fs660c32_vco_get_params(*prate, rate, ¶ms)) - clk_fs660c32_vco_get_rate(*prate, ¶ms, &rate); + if (clk_fs660c32_vco_get_params(*prate, rate, ¶ms)) + return rate; - pr_debug("%s: %s new rate %ld [sdiv=0x%x,md=0x%x,pe=0x%x,nsdiv3=%u]\n", + clk_fs660c32_vco_get_rate(*prate, ¶ms, &rate); + + pr_debug("%s: %s new rate %ld [ndiv=%u]\n", __func__, __clk_get_name(hw->clk), - rate, (unsigned int)params.sdiv, - (unsigned int)params.mdiv, - (unsigned int)params.pe, (unsigned int)params.nsdiv); + rate, (unsigned int)params.ndiv); return rate; } --- 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; @@ -141,6 +141,7 @@ const char *parent_names[2]; char name[12]; struct clk_init_data init; + static int instance; int i; if (!sp810) { @@ -172,7 +173,7 @@ init.num_parents = ARRAY_SIZE(parent_names); for (i = 0; i < ARRAY_SIZE(sp810->timerclken); i++) { - snprintf(name, ARRAY_SIZE(name), "timerclken%d", i); + snprintf(name, sizeof(name), "sp810_%d_%d", instance, i); sp810->timerclken[i].sp810 = sp810; sp810->timerclken[i].channel = i; @@ -184,5 +185,6 @@ } of_clk_add_provider(node, clk_sp810_timerclken_of_get, sp810); + instance++; } CLK_OF_DECLARE(sp810, "arm,sp810", clk_sp810_of_setup); --- 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/clocksource/vt8500_timer.c +++ linux-raspi2-4.2.0/drivers/clocksource/vt8500_timer.c @@ -50,6 +50,8 @@ #define msecs_to_loops(t) (loops_per_jiffy / 1000 * HZ * t) +#define MIN_OSCR_DELTA 16 + static void __iomem *regbase; static cycle_t vt8500_timer_read(struct clocksource *cs) @@ -80,7 +82,7 @@ cpu_relax(); writel((unsigned long)alarm, regbase + TIMER_MATCH_VAL); - if ((signed)(alarm - clocksource.read(&clocksource)) <= 16) + if ((signed)(alarm - clocksource.read(&clocksource)) <= MIN_OSCR_DELTA) return -ETIME; writel(1, regbase + TIMER_IER_VAL); @@ -160,7 +162,7 @@ pr_err("%s: setup_irq failed for %s\n", __func__, clockevent.name); clockevents_config_and_register(&clockevent, VT8500_TIMER_HZ, - 4, 0xf0000000); + MIN_OSCR_DELTA * 2, 0xf0000000); } CLOCKSOURCE_OF_DECLARE(vt8500, "via,vt8500-timer", vt8500_timer_init); --- linux-raspi2-4.2.0.orig/drivers/connector/connector.c +++ linux-raspi2-4.2.0/drivers/connector/connector.c @@ -178,26 +178,21 @@ * * It checks skb, netlink header and msg sizes, and calls callback helper. */ -static void cn_rx_skb(struct sk_buff *__skb) +static void cn_rx_skb(struct sk_buff *skb) { struct nlmsghdr *nlh; - struct sk_buff *skb; int len, err; - skb = skb_get(__skb); - if (skb->len >= NLMSG_HDRLEN) { nlh = nlmsg_hdr(skb); len = nlmsg_len(nlh); if (len < (int)sizeof(struct cn_msg) || skb->len < nlh->nlmsg_len || - len > CONNECTOR_MAX_MSG_SIZE) { - kfree_skb(skb); + len > CONNECTOR_MAX_MSG_SIZE) return; - } - err = cn_call_callback(skb); + err = cn_call_callback(skb_get(skb)); if (err < 0) kfree_skb(skb); } --- 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/cpufreq_governor.c +++ linux-raspi2-4.2.0/drivers/cpufreq/cpufreq_governor.c @@ -284,16 +284,18 @@ cdata->gdbs_data = dbs_data; } + policy->governor_data = dbs_data; + ret = sysfs_create_group(get_governor_parent_kobj(policy), get_sysfs_attr(dbs_data)); if (ret) goto put_kobj; - policy->governor_data = dbs_data; - return 0; put_kobj: + policy->governor_data = NULL; + if (!have_governor_per_policy()) { cdata->gdbs_data = NULL; cpufreq_put_global_kobject(); @@ -310,11 +312,12 @@ { struct common_dbs_data *cdata = dbs_data->cdata; - policy->governor_data = NULL; if (!--dbs_data->usage_count) { sysfs_remove_group(get_governor_parent_kobj(policy), get_sysfs_attr(dbs_data)); + policy->governor_data = NULL; + if (!have_governor_per_policy()) { cdata->gdbs_data = NULL; cpufreq_put_global_kobject(); @@ -322,6 +325,8 @@ cdata->exit(dbs_data, policy->governor->initialized == 1); kfree(dbs_data); + } else { + policy->governor_data = NULL; } } --- 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/cpufreq/pxa2xx-cpufreq.c +++ linux-raspi2-4.2.0/drivers/cpufreq/pxa2xx-cpufreq.c @@ -202,7 +202,7 @@ } } #else -static int pxa_cpufreq_change_voltage(struct pxa_freqs *pxa_freq) +static int pxa_cpufreq_change_voltage(const struct pxa_freqs *pxa_freq) { return 0; } --- 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/atmel-sha.c +++ linux-raspi2-4.2.0/drivers/crypto/atmel-sha.c @@ -1489,13 +1489,6 @@ if (sha_dd->caps.has_dma) atmel_sha_dma_cleanup(sha_dd); - iounmap(sha_dd->io_base); - - clk_put(sha_dd->iclk); - - if (sha_dd->irq >= 0) - free_irq(sha_dd->irq, sha_dd); - return 0; } --- linux-raspi2-4.2.0.orig/drivers/crypto/ccp/ccp-crypto-aes-cmac.c +++ linux-raspi2-4.2.0/drivers/crypto/ccp/ccp-crypto-aes-cmac.c @@ -202,6 +202,39 @@ return ccp_aes_cmac_finup(req); } +static int ccp_aes_cmac_export(struct ahash_request *req, void *out) +{ + struct ccp_aes_cmac_req_ctx *rctx = ahash_request_ctx(req); + struct ccp_aes_cmac_exp_ctx state; + + state.null_msg = rctx->null_msg; + memcpy(state.iv, rctx->iv, sizeof(state.iv)); + state.buf_count = rctx->buf_count; + memcpy(state.buf, rctx->buf, sizeof(state.buf)); + + /* 'out' may not be aligned so memcpy from local variable */ + memcpy(out, &state, sizeof(state)); + + return 0; +} + +static int ccp_aes_cmac_import(struct ahash_request *req, const void *in) +{ + struct ccp_aes_cmac_req_ctx *rctx = ahash_request_ctx(req); + struct ccp_aes_cmac_exp_ctx state; + + /* 'in' may not be aligned so memcpy to local variable */ + memcpy(&state, in, sizeof(state)); + + memset(rctx, 0, sizeof(*rctx)); + rctx->null_msg = state.null_msg; + memcpy(rctx->iv, state.iv, sizeof(rctx->iv)); + rctx->buf_count = state.buf_count; + memcpy(rctx->buf, state.buf, sizeof(rctx->buf)); + + return 0; +} + static int ccp_aes_cmac_setkey(struct crypto_ahash *tfm, const u8 *key, unsigned int key_len) { @@ -334,10 +367,13 @@ alg->final = ccp_aes_cmac_final; alg->finup = ccp_aes_cmac_finup; alg->digest = ccp_aes_cmac_digest; + alg->export = ccp_aes_cmac_export; + alg->import = ccp_aes_cmac_import; alg->setkey = ccp_aes_cmac_setkey; halg = &alg->halg; halg->digestsize = AES_BLOCK_SIZE; + halg->statesize = sizeof(struct ccp_aes_cmac_exp_ctx); base = &halg->base; snprintf(base->cra_name, CRYPTO_MAX_ALG_NAME, "cmac(aes)"); --- linux-raspi2-4.2.0.orig/drivers/crypto/ccp/ccp-crypto-sha.c +++ linux-raspi2-4.2.0/drivers/crypto/ccp/ccp-crypto-sha.c @@ -194,6 +194,43 @@ return ccp_sha_finup(req); } +static int ccp_sha_export(struct ahash_request *req, void *out) +{ + struct ccp_sha_req_ctx *rctx = ahash_request_ctx(req); + struct ccp_sha_exp_ctx state; + + state.type = rctx->type; + state.msg_bits = rctx->msg_bits; + state.first = rctx->first; + memcpy(state.ctx, rctx->ctx, sizeof(state.ctx)); + state.buf_count = rctx->buf_count; + memcpy(state.buf, rctx->buf, sizeof(state.buf)); + + /* 'out' may not be aligned so memcpy from local variable */ + memcpy(out, &state, sizeof(state)); + + return 0; +} + +static int ccp_sha_import(struct ahash_request *req, const void *in) +{ + struct ccp_sha_req_ctx *rctx = ahash_request_ctx(req); + struct ccp_sha_exp_ctx state; + + /* 'in' may not be aligned so memcpy to local variable */ + memcpy(&state, in, sizeof(state)); + + memset(rctx, 0, sizeof(*rctx)); + rctx->type = state.type; + rctx->msg_bits = state.msg_bits; + rctx->first = state.first; + memcpy(rctx->ctx, state.ctx, sizeof(rctx->ctx)); + rctx->buf_count = state.buf_count; + memcpy(rctx->buf, state.buf, sizeof(rctx->buf)); + + return 0; +} + static int ccp_sha_setkey(struct crypto_ahash *tfm, const u8 *key, unsigned int key_len) { @@ -390,9 +427,12 @@ alg->final = ccp_sha_final; alg->finup = ccp_sha_finup; alg->digest = ccp_sha_digest; + alg->export = ccp_sha_export; + alg->import = ccp_sha_import; halg = &alg->halg; halg->digestsize = def->digest_size; + halg->statesize = sizeof(struct ccp_sha_exp_ctx); base = &halg->base; snprintf(base->cra_name, CRYPTO_MAX_ALG_NAME, "%s", def->name); --- linux-raspi2-4.2.0.orig/drivers/crypto/ccp/ccp-crypto.h +++ linux-raspi2-4.2.0/drivers/crypto/ccp/ccp-crypto.h @@ -129,6 +129,15 @@ struct ccp_cmd cmd; }; +struct ccp_aes_cmac_exp_ctx { + unsigned int null_msg; + + u8 iv[AES_BLOCK_SIZE]; + + unsigned int buf_count; + u8 buf[AES_BLOCK_SIZE]; +}; + /***** SHA related defines *****/ #define MAX_SHA_CONTEXT_SIZE SHA256_DIGEST_SIZE #define MAX_SHA_BLOCK_SIZE SHA256_BLOCK_SIZE @@ -171,6 +180,19 @@ struct ccp_cmd cmd; }; +struct ccp_sha_exp_ctx { + enum ccp_sha_type type; + + u64 msg_bits; + + unsigned int first; + + u8 ctx[MAX_SHA_CONTEXT_SIZE]; + + unsigned int buf_count; + u8 buf[MAX_SHA_BLOCK_SIZE]; +}; + /***** Common Context Structure *****/ struct ccp_ctx { int (*complete)(struct crypto_async_request *req, int ret); --- linux-raspi2-4.2.0.orig/drivers/crypto/marvell/cesa.c +++ linux-raspi2-4.2.0/drivers/crypto/marvell/cesa.c @@ -306,7 +306,7 @@ return -ENOMEM; dma->padding_pool = dmam_pool_create("cesa_padding", dev, 72, 1, 0); - if (!dma->cache_pool) + if (!dma->padding_pool) return -ENOMEM; cesa->dma = dma; @@ -420,7 +420,7 @@ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); cesa->regs = devm_ioremap_resource(dev, res); if (IS_ERR(cesa->regs)) - return -ENOMEM; + return PTR_ERR(cesa->regs); ret = mv_cesa_dev_dma_init(cesa); if (ret) --- 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/nx/nx-aes-ccm.c +++ linux-raspi2-4.2.0/drivers/crypto/nx/nx-aes-ccm.c @@ -412,7 +412,7 @@ processed += to_process; } while (processed < nbytes); - rc = memcmp(csbcpb->cpb.aes_ccm.out_pat_or_mac, priv->oauth_tag, + rc = crypto_memneq(csbcpb->cpb.aes_ccm.out_pat_or_mac, priv->oauth_tag, authsize) ? -EBADMSG : 0; out: spin_unlock_irqrestore(&nx_ctx->lock, irq_flags); --- linux-raspi2-4.2.0.orig/drivers/crypto/nx/nx-aes-gcm.c +++ linux-raspi2-4.2.0/drivers/crypto/nx/nx-aes-gcm.c @@ -414,7 +414,7 @@ itag, req->src, req->assoclen + nbytes, crypto_aead_authsize(crypto_aead_reqtfm(req)), SCATTERWALK_FROM_SG); - rc = memcmp(itag, otag, + rc = crypto_memneq(itag, otag, crypto_aead_authsize(crypto_aead_reqtfm(req))) ? -EBADMSG : 0; } --- linux-raspi2-4.2.0.orig/drivers/crypto/qat/qat_common/adf_ctl_drv.c +++ linux-raspi2-4.2.0/drivers/crypto/qat/qat_common/adf_ctl_drv.c @@ -198,7 +198,7 @@ goto out_err; } - params_head = section_head->params; + params_head = section.params; while (params_head) { if (copy_from_user(&key_val, (void __user *)params_head, --- linux-raspi2-4.2.0.orig/drivers/crypto/talitos.c +++ linux-raspi2-4.2.0/drivers/crypto/talitos.c @@ -1025,7 +1025,7 @@ icvdata = &edesc->link_tbl[0]; sg = sg_last(req->dst, edesc->dst_nents ? : 1); - err = memcmp(icvdata, (char *)sg_virt(sg) + sg->length - + err = crypto_memneq(icvdata, (char *)sg_virt(sg) + sg->length - ctx->authsize, ctx->authsize) ? -EBADMSG : 0; } --- 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 @@ -156,7 +156,7 @@ #define AT_XDMAC_CC_WRIP (0x1 << 23) /* Write in Progress (read only) */ #define AT_XDMAC_CC_WRIP_DONE (0x0 << 23) #define AT_XDMAC_CC_WRIP_IN_PROGRESS (0x1 << 23) -#define AT_XDMAC_CC_PERID(i) (0x7f & (h) << 24) /* Channel Peripheral Identifier */ +#define AT_XDMAC_CC_PERID(i) (0x7f & (i) << 24) /* Channel Peripheral Identifier */ #define AT_XDMAC_CDS_MSP 0x2C /* Channel Data Stride Memory Set Pattern */ #define AT_XDMAC_CSUS 0x30 /* Channel Source Microblock Stride */ #define AT_XDMAC_CDUS 0x34 /* Channel Destination Microblock Stride */ @@ -176,6 +176,7 @@ #define AT_XDMAC_MAX_CHAN 0x20 #define AT_XDMAC_MAX_CSIZE 16 /* 16 data */ #define AT_XDMAC_MAX_DWIDTH 8 /* 64 bits */ +#define AT_XDMAC_RESIDUE_MAX_RETRIES 5 #define AT_XDMAC_DMA_BUSWIDTHS\ (BIT(DMA_SLAVE_BUSWIDTH_UNDEFINED) |\ @@ -455,6 +456,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 +476,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 +807,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 +885,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; } @@ -1080,6 +1087,7 @@ /* Check remaining length and change data width if needed. */ dwidth = at_xdmac_align_width(chan, src_addr | dst_addr | xfer_size); + chan_cc &= ~AT_XDMAC_CC_DWIDTH_MASK; chan_cc |= AT_XDMAC_CC_DWIDTH(dwidth); ublen = xfer_size >> dwidth; @@ -1212,8 +1220,8 @@ struct at_xdmac_desc *desc, *_desc; struct list_head *descs_list; enum dma_status ret; - int residue; - u32 cur_nda, mask, value; + int residue, retry; + u32 cur_nda, check_nda, cur_ubc, mask, value; u8 dwidth = 0; unsigned long flags; @@ -1250,7 +1258,42 @@ cpu_relax(); } + /* + * When processing the residue, we need to read two registers but we + * can't do it in an atomic way. AT_XDMAC_CNDA is used to find where + * we stand in the descriptor list and AT_XDMAC_CUBC is used + * to know how many data are remaining for the current descriptor. + * Since the dma channel is not paused to not loose data, between the + * AT_XDMAC_CNDA and AT_XDMAC_CUBC read, we may have change of + * descriptor. + * For that reason, after reading AT_XDMAC_CUBC, we check if we are + * still using the same descriptor by reading a second time + * AT_XDMAC_CNDA. If AT_XDMAC_CNDA has changed, it means we have to + * read again AT_XDMAC_CUBC. + * Memory barriers are used to ensure the read order of the registers. + * A max number of retries is set because unlikely it can never ends if + * we are transferring a lot of data with small buffers. + */ cur_nda = at_xdmac_chan_read(atchan, AT_XDMAC_CNDA) & 0xfffffffc; + rmb(); + cur_ubc = at_xdmac_chan_read(atchan, AT_XDMAC_CUBC); + for (retry = 0; retry < AT_XDMAC_RESIDUE_MAX_RETRIES; retry++) { + rmb(); + check_nda = at_xdmac_chan_read(atchan, AT_XDMAC_CNDA) & 0xfffffffc; + + if (likely(cur_nda == check_nda)) + break; + + cur_nda = check_nda; + rmb(); + cur_ubc = at_xdmac_chan_read(atchan, AT_XDMAC_CUBC); + } + + if (unlikely(retry >= AT_XDMAC_RESIDUE_MAX_RETRIES)) { + ret = DMA_ERROR; + goto spin_unlock; + } + /* * Remove size of all microblocks already transferred and the current * one. Then add the remaining size to transfer of the current @@ -1263,7 +1306,7 @@ if ((desc->lld.mbr_nda & 0xfffffffc) == cur_nda) break; } - residue += at_xdmac_chan_read(atchan, AT_XDMAC_CUBC) << dwidth; + residue += cur_ubc << dwidth; dma_set_residue(txstate, residue); @@ -1517,6 +1560,7 @@ list_for_each_entry_safe(desc, _desc, &atchan->xfers_list, xfer_node) at_xdmac_remove_xfer(atchan, desc); + clear_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status); clear_bit(AT_XDMAC_CHAN_IS_CYCLIC, &atchan->status); spin_unlock_irqrestore(&atchan->lock, flags); @@ -1649,6 +1693,8 @@ atchan = to_at_xdmac_chan(chan); at_xdmac_chan_write(atchan, AT_XDMAC_CC, atchan->save_cc); if (at_xdmac_chan_is_cyclic(atchan)) { + if (at_xdmac_chan_is_paused(atchan)) + at_xdmac_device_resume(chan); at_xdmac_chan_write(atchan, AT_XDMAC_CNDA, atchan->save_cnda); at_xdmac_chan_write(atchan, AT_XDMAC_CNDC, atchan->save_cndc); at_xdmac_chan_write(atchan, AT_XDMAC_CIE, atchan->save_cim); --- 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,8 @@ struct bcm2835_desc *d; dma_addr_t dev_addr; unsigned int es, sync_type; - unsigned int frame; + unsigned int frame, max_size; + int i; /* Grab configuration */ if (!is_slave_direction(direction)) { @@ -375,7 +403,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 +453,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 +470,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 +640,8 @@ } c->cfg = *cfg; + if (!c->dreq) + c->dreq = cfg->slave_id; return 0; } @@ -580,6 +772,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 +786,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 +808,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 +841,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 +854,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 +870,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 @@ -536,16 +536,17 @@ /* Called with dwc->lock held and all DMAC interrupts disabled */ static void dwc_handle_cyclic(struct dw_dma *dw, struct dw_dma_chan *dwc, - u32 status_err, u32 status_xfer) + u32 status_block, u32 status_err, u32 status_xfer) { unsigned long flags; - if (dwc->mask) { + if (status_block & dwc->mask) { void (*callback)(void *param); void *callback_param; dev_vdbg(chan2dev(&dwc->chan), "new cyclic period llp 0x%08x\n", channel_readl(dwc, LLP)); + dma_writel(dw, CLEAR.BLOCK, dwc->mask); callback = dwc->cdesc->period_callback; callback_param = dwc->cdesc->period_callback_param; @@ -577,6 +578,7 @@ channel_writel(dwc, CTL_LO, 0); channel_writel(dwc, CTL_HI, 0); + dma_writel(dw, CLEAR.BLOCK, dwc->mask); dma_writel(dw, CLEAR.ERROR, dwc->mask); dma_writel(dw, CLEAR.XFER, dwc->mask); @@ -585,6 +587,9 @@ spin_unlock_irqrestore(&dwc->lock, flags); } + + /* Re-enable interrupts */ + channel_set_bit(dw, MASK.BLOCK, dwc->mask); } /* ------------------------------------------------------------------------- */ @@ -593,10 +598,12 @@ { struct dw_dma *dw = (struct dw_dma *)data; struct dw_dma_chan *dwc; + u32 status_block; u32 status_xfer; u32 status_err; int i; + status_block = dma_readl(dw, RAW.BLOCK); status_xfer = dma_readl(dw, RAW.XFER); status_err = dma_readl(dw, RAW.ERROR); @@ -605,16 +612,15 @@ for (i = 0; i < dw->dma.chancnt; i++) { dwc = &dw->chan[i]; if (test_bit(DW_DMA_IS_CYCLIC, &dwc->flags)) - dwc_handle_cyclic(dw, dwc, status_err, status_xfer); + dwc_handle_cyclic(dw, dwc, status_block, status_err, + status_xfer); else if (status_err & (1 << i)) dwc_handle_error(dw, dwc); else if (status_xfer & (1 << i)) dwc_scan_descriptors(dw, dwc); } - /* - * Re-enable interrupts. - */ + /* Re-enable interrupts */ channel_set_bit(dw, MASK.XFER, dw->all_chan_mask); channel_set_bit(dw, MASK.ERROR, dw->all_chan_mask); } @@ -635,6 +641,7 @@ * softirq handler. */ channel_clear_bit(dw, MASK.XFER, dw->all_chan_mask); + channel_clear_bit(dw, MASK.BLOCK, dw->all_chan_mask); channel_clear_bit(dw, MASK.ERROR, dw->all_chan_mask); status = dma_readl(dw, STATUS_INT); @@ -645,6 +652,7 @@ /* Try to recover */ channel_clear_bit(dw, MASK.XFER, (1 << 8) - 1); + channel_clear_bit(dw, MASK.BLOCK, (1 << 8) - 1); channel_clear_bit(dw, MASK.SRC_TRAN, (1 << 8) - 1); channel_clear_bit(dw, MASK.DST_TRAN, (1 << 8) - 1); channel_clear_bit(dw, MASK.ERROR, (1 << 8) - 1); @@ -712,7 +720,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 +799,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 +819,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 +856,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 +876,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); @@ -1111,6 +1119,7 @@ dma_writel(dw, CFG, 0); channel_clear_bit(dw, MASK.XFER, dw->all_chan_mask); + channel_clear_bit(dw, MASK.BLOCK, dw->all_chan_mask); channel_clear_bit(dw, MASK.SRC_TRAN, dw->all_chan_mask); channel_clear_bit(dw, MASK.DST_TRAN, dw->all_chan_mask); channel_clear_bit(dw, MASK.ERROR, dw->all_chan_mask); @@ -1216,6 +1225,7 @@ /* Disable interrupts */ channel_clear_bit(dw, MASK.XFER, dwc->mask); + channel_clear_bit(dw, MASK.BLOCK, dwc->mask); channel_clear_bit(dw, MASK.ERROR, dwc->mask); spin_unlock_irqrestore(&dwc->lock, flags); @@ -1245,7 +1255,7 @@ int dw_dma_cyclic_start(struct dma_chan *chan) { struct dw_dma_chan *dwc = to_dw_dma_chan(chan); - struct dw_dma *dw = to_dw_dma(dwc->chan.device); + struct dw_dma *dw = to_dw_dma(chan->device); unsigned long flags; if (!test_bit(DW_DMA_IS_CYCLIC, &dwc->flags)) { @@ -1255,25 +1265,10 @@ spin_lock_irqsave(&dwc->lock, flags); - /* Assert channel is idle */ - if (dma_readl(dw, CH_EN) & dwc->mask) { - dev_err(chan2dev(&dwc->chan), - "%s: BUG: Attempted to start non-idle channel\n", - __func__); - dwc_dump_chan_regs(dwc); - spin_unlock_irqrestore(&dwc->lock, flags); - return -EBUSY; - } - - dma_writel(dw, CLEAR.ERROR, dwc->mask); - dma_writel(dw, CLEAR.XFER, dwc->mask); - - /* Setup DMAC channel registers */ - channel_writel(dwc, LLP, dwc->cdesc->desc[0]->txd.phys); - channel_writel(dwc, CTL_LO, DWC_CTLL_LLP_D_EN | DWC_CTLL_LLP_S_EN); - channel_writel(dwc, CTL_HI, 0); + /* Enable interrupts to perform cyclic transfer */ + channel_set_bit(dw, MASK.BLOCK, dwc->mask); - channel_set_bit(dw, CH_EN, dwc->mask); + dwc_dostart(dwc, dwc->cdesc->desc[0]); spin_unlock_irqrestore(&dwc->lock, flags); @@ -1479,6 +1474,7 @@ dwc_chan_disable(dw, dwc); + dma_writel(dw, CLEAR.BLOCK, dwc->mask); dma_writel(dw, CLEAR.ERROR, dwc->mask); dma_writel(dw, CLEAR.XFER, dwc->mask); @@ -1569,9 +1565,6 @@ /* Force dma off, just in case */ dw_dma_off(dw); - /* Disable BLOCK interrupts as well */ - channel_clear_bit(dw, MASK.BLOCK, dw->all_chan_mask); - /* Create a pool of consistent memory blocks for hardware descriptors */ dw->desc_pool = dmam_pool_create("dw_dmac_desc_pool", chip->dev, sizeof(struct dw_desc), 4, 0); @@ -1591,7 +1584,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 +1595,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 +1614,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 @@ -580,6 +580,8 @@ (PXA_DCMD_LENGTH & sizeof(u32)); if (flags & DMA_PREP_INTERRUPT) updater->dcmd |= PXA_DCMD_ENDIRQEN; + if (sw_desc->cyclic) + sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr = sw_desc->first; } static bool is_desc_completed(struct virt_dma_desc *vd) @@ -670,6 +672,10 @@ dev_dbg(&chan->vc.chan.dev->device, "%s(): checking txd %p[%x]: completed=%d\n", __func__, vd, vd->tx.cookie, is_desc_completed(vd)); + if (to_pxad_sw_desc(vd)->cyclic) { + vchan_cyclic_callback(vd); + break; + } if (is_desc_completed(vd)) { list_del(&vd->node); vchan_cookie_complete(vd); @@ -888,6 +894,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, @@ -1072,7 +1079,7 @@ return NULL; pxad_get_config(chan, dir, &dcmd, &dsadr, &dtadr); - dcmd |= PXA_DCMD_ENDIRQEN | (PXA_DCMD_LENGTH | period_len); + dcmd |= PXA_DCMD_ENDIRQEN | (PXA_DCMD_LENGTH & period_len); dev_dbg(&chan->vc.chan.dev->device, "%s(): buf_addr=0x%lx len=%zu period=%zu dir=%d flags=%lx\n", __func__, (unsigned long)buf_addr, len, period_len, dir, flags); --- linux-raspi2-4.2.0.orig/drivers/edac/amd64_edac.c +++ linux-raspi2-4.2.0/drivers/edac/amd64_edac.c @@ -1437,7 +1437,7 @@ u64 chan_off; u64 dram_base = get_dram_base(pvt, range); u64 hole_off = f10_dhar_offset(pvt); - u64 dct_sel_base_off = (pvt->dct_sel_hi & 0xFFFFFC00) << 16; + u64 dct_sel_base_off = (u64)(pvt->dct_sel_hi & 0xFFFFFC00) << 16; if (hi_rng) { /* --- linux-raspi2-4.2.0.orig/drivers/edac/edac_device.c +++ linux-raspi2-4.2.0/drivers/edac/edac_device.c @@ -435,16 +435,13 @@ */ void edac_device_workq_teardown(struct edac_device_ctl_info *edac_dev) { - int status; - if (!edac_dev->edac_check) return; - status = cancel_delayed_work(&edac_dev->work); - if (status == 0) { - /* workq instance might be running, wait for it */ - flush_workqueue(edac_workqueue); - } + edac_dev->op_state = OP_OFFLINE; + + cancel_delayed_work_sync(&edac_dev->work); + flush_workqueue(edac_workqueue); } /* --- linux-raspi2-4.2.0.orig/drivers/edac/edac_mc.c +++ linux-raspi2-4.2.0/drivers/edac/edac_mc.c @@ -586,18 +586,10 @@ */ static void edac_mc_workq_teardown(struct mem_ctl_info *mci) { - int status; + mci->op_state = OP_OFFLINE; - if (mci->op_state != OP_RUNNING_POLL) - return; - - status = cancel_delayed_work(&mci->work); - if (status == 0) { - edac_dbg(0, "not canceled, flush the queue\n"); - - /* workq instance might be running, wait for it */ - flush_workqueue(edac_workqueue); - } + cancel_delayed_work_sync(&mci->work); + flush_workqueue(edac_workqueue); } /* --- linux-raspi2-4.2.0.orig/drivers/edac/edac_mc_sysfs.c +++ linux-raspi2-4.2.0/drivers/edac/edac_mc_sysfs.c @@ -972,21 +972,26 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, const struct attribute_group **groups) { + char *name; int i, err; /* * The memory controller needs its own bus, in order to avoid * namespace conflicts at /sys/bus/edac. */ - mci->bus->name = kasprintf(GFP_KERNEL, "mc%d", mci->mc_idx); - if (!mci->bus->name) + name = kasprintf(GFP_KERNEL, "mc%d", mci->mc_idx); + if (!name) return -ENOMEM; + mci->bus->name = name; + edac_dbg(0, "creating bus %s\n", mci->bus->name); err = bus_register(mci->bus); - if (err < 0) - goto fail_free_name; + if (err < 0) { + kfree(name); + return err; + } /* get the /sys/devices/system/edac subsys reference */ mci->dev.type = &mci_attr_type; @@ -1055,8 +1060,8 @@ device_unregister(&mci->dev); fail_unregister_bus: bus_unregister(mci->bus); -fail_free_name: - kfree(mci->bus->name); + kfree(name); + return err; } @@ -1087,10 +1092,12 @@ void edac_unregister_sysfs(struct mem_ctl_info *mci) { + const char *name = mci->bus->name; + edac_dbg(1, "Unregistering device %s\n", dev_name(&mci->dev)); device_unregister(&mci->dev); bus_unregister(mci->bus); - kfree(mci->bus->name); + kfree(name); } static void mc_attr_release(struct device *dev) --- linux-raspi2-4.2.0.orig/drivers/edac/edac_pci.c +++ linux-raspi2-4.2.0/drivers/edac/edac_pci.c @@ -274,13 +274,12 @@ */ static void edac_pci_workq_teardown(struct edac_pci_ctl_info *pci) { - int status; - edac_dbg(0, "\n"); - status = cancel_delayed_work(&pci->work); - if (status == 0) - flush_workqueue(edac_workqueue); + pci->op_state = OP_OFFLINE; + + cancel_delayed_work_sync(&pci->work); + flush_workqueue(edac_workqueue); } /* --- linux-raspi2-4.2.0.orig/drivers/edac/sb_edac.c +++ linux-raspi2-4.2.0/drivers/edac/sb_edac.c @@ -1077,8 +1077,8 @@ edac_dbg(0, "TAD#%d: up to %u.%03u GB (0x%016Lx), socket interleave %d, memory interleave %d, TGT: %d, %d, %d, %d, reg=0x%08x\n", n_tads, gb, (mb*1000)/1024, ((u64)tmp_mb) << 20L, - (u32)TAD_SOCK(reg), - (u32)TAD_CH(reg), + (u32)(1 << TAD_SOCK(reg)), + (u32)TAD_CH(reg) + 1, (u32)TAD_TGT0(reg), (u32)TAD_TGT1(reg), (u32)TAD_TGT2(reg), @@ -1356,7 +1356,7 @@ } ch_way = TAD_CH(reg) + 1; - sck_way = TAD_SOCK(reg) + 1; + sck_way = 1 << TAD_SOCK(reg); if (ch_way == 3) idx = addr >> 6; @@ -1413,7 +1413,7 @@ n_tads, addr, limit, - (u32)TAD_SOCK(reg), + sck_way, ch_way, offset, idx, @@ -1428,18 +1428,12 @@ offset, addr); return -EINVAL; } - addr -= offset; - /* Store the low bits [0:6] of the addr */ - ch_addr = addr & 0x7f; - /* Remove socket wayness and remove 6 bits */ - addr >>= 6; - addr = div_u64(addr, sck_xch); -#if 0 - /* Divide by channel way */ - addr = addr / ch_way; -#endif - /* Recover the last 6 bits */ - ch_addr |= addr << 6; + + ch_addr = addr - offset; + ch_addr >>= (6 + shiftup); + ch_addr /= ch_way * sck_way; + ch_addr <<= (6 + shiftup); + ch_addr |= addr & ((1 << (6 + shiftup)) - 1); /* * Step 3) Decode rank @@ -1648,6 +1642,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 +1676,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 +1697,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/dmi_scan.c +++ linux-raspi2-4.2.0/drivers/firmware/dmi_scan.c @@ -521,6 +521,7 @@ dmi_ver = smbios_ver; else dmi_ver = (buf[14] & 0xF0) << 4 | (buf[14] & 0x0F); + dmi_ver <<= 8; dmi_num = get_unaligned_le16(buf + 12); dmi_len = get_unaligned_le16(buf + 6); dmi_base = get_unaligned_le32(buf + 8); @@ -528,15 +529,14 @@ if (dmi_walk_early(dmi_decode) == 0) { if (smbios_ver) { pr_info("SMBIOS %d.%d present.\n", - dmi_ver >> 8, dmi_ver & 0xFF); + dmi_ver >> 16, (dmi_ver >> 8) & 0xFF); } else { smbios_entry_point_size = 15; memcpy(smbios_entry_point, buf, smbios_entry_point_size); pr_info("Legacy DMI %d.%d present.\n", - dmi_ver >> 8, dmi_ver & 0xFF); + dmi_ver >> 16, (dmi_ver >> 8) & 0xFF); } - dmi_ver <<= 8; dmi_format_ids(dmi_ids_string, sizeof(dmi_ids_string)); printk(KERN_DEBUG "DMI: %s\n", dmi_ids_string); return 0; --- linux-raspi2-4.2.0.orig/drivers/firmware/efi/efi.c +++ linux-raspi2-4.2.0/drivers/firmware/efi/efi.c @@ -176,6 +176,7 @@ { generic_ops.get_variable = efi.get_variable; generic_ops.set_variable = efi.set_variable; + generic_ops.set_variable_nonblocking = efi.set_variable_nonblocking; generic_ops.get_next_variable = efi.get_next_variable; generic_ops.query_variable_store = efi_query_variable_store; --- linux-raspi2-4.2.0.orig/drivers/firmware/efi/efivars.c +++ linux-raspi2-4.2.0/drivers/firmware/efi/efivars.c @@ -221,7 +221,7 @@ } if ((attributes & ~EFI_VARIABLE_MASK) != 0 || - efivar_validate(name, data, size) == false) { + efivar_validate(vendor, name, data, size) == false) { printk(KERN_ERR "efivars: Malformed variable content\n"); return -EINVAL; } @@ -447,7 +447,8 @@ } if ((attributes & ~EFI_VARIABLE_MASK) != 0 || - efivar_validate(name, data, size) == false) { + efivar_validate(new_var->VendorGuid, name, data, + size) == false) { printk(KERN_ERR "efivars: Malformed variable content\n"); return -EINVAL; } @@ -540,38 +541,30 @@ static int efivar_create_sysfs_entry(struct efivar_entry *new_var) { - int i, short_name_size; + int short_name_size; char *short_name; - unsigned long variable_name_size; - efi_char16_t *variable_name; + unsigned long utf8_name_size; + efi_char16_t *variable_name = new_var->var.VariableName; int ret; - variable_name = new_var->var.VariableName; - variable_name_size = ucs2_strlen(variable_name) * sizeof(efi_char16_t); - /* - * Length of the variable bytes in ASCII, plus the '-' separator, + * Length of the variable bytes in UTF8, plus the '-' separator, * plus the GUID, plus trailing NUL */ - short_name_size = variable_name_size / sizeof(efi_char16_t) - + 1 + EFI_VARIABLE_GUID_LEN + 1; - - short_name = kzalloc(short_name_size, GFP_KERNEL); + utf8_name_size = ucs2_utf8size(variable_name); + short_name_size = utf8_name_size + 1 + EFI_VARIABLE_GUID_LEN + 1; + short_name = kmalloc(short_name_size, GFP_KERNEL); if (!short_name) return -ENOMEM; - /* Convert Unicode to normal chars (assume top bits are 0), - ala UTF-8 */ - for (i=0; i < (int)(variable_name_size / sizeof(efi_char16_t)); i++) { - short_name[i] = variable_name[i] & 0xFF; - } + ucs2_as_utf8(short_name, variable_name, short_name_size); + /* This is ugly, but necessary to separate one vendor's private variables from another's. */ - - *(short_name + strlen(short_name)) = '-'; + short_name[utf8_name_size] = '-'; efi_guid_to_str(&new_var->var.VendorGuid, - short_name + strlen(short_name)); + short_name + utf8_name_size + 1); new_var->kobj.kset = efivars_kset; --- 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/efi/vars.c +++ linux-raspi2-4.2.0/drivers/firmware/efi/vars.c @@ -165,67 +165,133 @@ } struct variable_validate { + efi_guid_t vendor; char *name; bool (*validate)(efi_char16_t *var_name, int match, u8 *data, unsigned long len); }; +/* + * This is the list of variables we need to validate, as well as the + * whitelist for what we think is safe not to default to immutable. + * + * If it has a validate() method that's not NULL, it'll go into the + * validation routine. If not, it is assumed valid, but still used for + * whitelisting. + * + * Note that it's sorted by {vendor,name}, but globbed names must come after + * any other name with the same prefix. + */ static const struct variable_validate variable_validate[] = { - { "BootNext", validate_uint16 }, - { "BootOrder", validate_boot_order }, - { "DriverOrder", validate_boot_order }, - { "Boot*", validate_load_option }, - { "Driver*", validate_load_option }, - { "ConIn", validate_device_path }, - { "ConInDev", validate_device_path }, - { "ConOut", validate_device_path }, - { "ConOutDev", validate_device_path }, - { "ErrOut", validate_device_path }, - { "ErrOutDev", validate_device_path }, - { "Timeout", validate_uint16 }, - { "Lang", validate_ascii_string }, - { "PlatformLang", validate_ascii_string }, - { "", NULL }, + { EFI_GLOBAL_VARIABLE_GUID, "BootNext", validate_uint16 }, + { EFI_GLOBAL_VARIABLE_GUID, "BootOrder", validate_boot_order }, + { EFI_GLOBAL_VARIABLE_GUID, "Boot*", validate_load_option }, + { EFI_GLOBAL_VARIABLE_GUID, "DriverOrder", validate_boot_order }, + { EFI_GLOBAL_VARIABLE_GUID, "Driver*", validate_load_option }, + { EFI_GLOBAL_VARIABLE_GUID, "ConIn", validate_device_path }, + { EFI_GLOBAL_VARIABLE_GUID, "ConInDev", validate_device_path }, + { EFI_GLOBAL_VARIABLE_GUID, "ConOut", validate_device_path }, + { EFI_GLOBAL_VARIABLE_GUID, "ConOutDev", validate_device_path }, + { EFI_GLOBAL_VARIABLE_GUID, "ErrOut", validate_device_path }, + { EFI_GLOBAL_VARIABLE_GUID, "ErrOutDev", validate_device_path }, + { EFI_GLOBAL_VARIABLE_GUID, "Lang", validate_ascii_string }, + { EFI_GLOBAL_VARIABLE_GUID, "OsIndications", NULL }, + { EFI_GLOBAL_VARIABLE_GUID, "PlatformLang", validate_ascii_string }, + { EFI_GLOBAL_VARIABLE_GUID, "Timeout", validate_uint16 }, + { LINUX_EFI_CRASH_GUID, "*", NULL }, + { NULL_GUID, "", NULL }, }; +static bool +variable_matches(const char *var_name, size_t len, const char *match_name, + int *match) +{ + for (*match = 0; ; (*match)++) { + char c = match_name[*match]; + char u = var_name[*match]; + + /* Wildcard in the matching name means we've matched */ + if (c == '*') + return true; + + /* Case sensitive match */ + if (!c && *match == len) + return true; + + if (c != u) + return false; + + if (!c) + return true; + } + return true; +} + bool -efivar_validate(efi_char16_t *var_name, u8 *data, unsigned long len) +efivar_validate(efi_guid_t vendor, efi_char16_t *var_name, u8 *data, + unsigned long data_size) { int i; - u16 *unicode_name = var_name; + unsigned long utf8_size; + u8 *utf8_name; + + utf8_size = ucs2_utf8size(var_name); + utf8_name = kmalloc(utf8_size + 1, GFP_KERNEL); + if (!utf8_name) + return false; + + ucs2_as_utf8(utf8_name, var_name, utf8_size); + utf8_name[utf8_size] = '\0'; - for (i = 0; variable_validate[i].validate != NULL; i++) { + for (i = 0; variable_validate[i].name[0] != '\0'; i++) { const char *name = variable_validate[i].name; - int match; + int match = 0; - for (match = 0; ; match++) { - char c = name[match]; - u16 u = unicode_name[match]; - - /* All special variables are plain ascii */ - if (u > 127) - return true; - - /* Wildcard in the matching name means we've matched */ - if (c == '*') - return variable_validate[i].validate(var_name, - match, data, len); + if (efi_guidcmp(vendor, variable_validate[i].vendor)) + continue; - /* Case sensitive match */ - if (c != u) + if (variable_matches(utf8_name, utf8_size+1, name, &match)) { + if (variable_validate[i].validate == NULL) break; - - /* Reached the end of the string while matching */ - if (!c) - return variable_validate[i].validate(var_name, - match, data, len); + kfree(utf8_name); + return variable_validate[i].validate(var_name, match, + data, data_size); } } - + kfree(utf8_name); return true; } EXPORT_SYMBOL_GPL(efivar_validate); +bool +efivar_variable_is_removable(efi_guid_t vendor, const char *var_name, + size_t len) +{ + int i; + bool found = false; + int match = 0; + + /* + * Check if our variable is in the validated variables list + */ + for (i = 0; variable_validate[i].name[0] != '\0'; i++) { + if (efi_guidcmp(variable_validate[i].vendor, vendor)) + continue; + + if (variable_matches(var_name, len, + variable_validate[i].name, &match)) { + found = true; + break; + } + } + + /* + * If it's in our list, it is removable. + */ + return found; +} +EXPORT_SYMBOL_GPL(efivar_variable_is_removable); + static efi_status_t check_var_size(u32 attributes, unsigned long size) { @@ -852,7 +918,7 @@ *set = false; - if (efivar_validate(name, data, *size) == false) + if (efivar_validate(*vendor, name, data, *size) == false) return -EINVAL; /* --- 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/gpio/gpio-omap.c +++ linux-raspi2-4.2.0/drivers/gpio/gpio-omap.c @@ -1118,8 +1118,6 @@ /* MPUIO is a bit different, reading IRQ status clears it */ if (bank->is_mpuio) { irqc->irq_ack = dummy_irq_chip.irq_ack; - irqc->irq_mask = irq_gc_mask_set_bit; - irqc->irq_unmask = irq_gc_mask_clr_bit; if (!bank->regs->wkup_en) irqc->irq_set_wake = NULL; } --- linux-raspi2-4.2.0.orig/drivers/gpio/gpio-pca953x.c +++ linux-raspi2-4.2.0/drivers/gpio/gpio-pca953x.c @@ -18,6 +18,7 @@ #include #include #include +#include #ifdef CONFIG_OF_GPIO #include #endif @@ -154,7 +155,7 @@ switch (chip->chip_type) { case PCA953X_TYPE: ret = i2c_smbus_write_word_data(chip->client, - reg << 1, (u16) *val); + reg << 1, cpu_to_le16(get_unaligned((u16 *)val))); break; case PCA957X_TYPE: ret = i2c_smbus_write_byte_data(chip->client, reg << 1, --- linux-raspi2-4.2.0.orig/drivers/gpio/gpio-rcar.c +++ linux-raspi2-4.2.0/drivers/gpio/gpio-rcar.c @@ -200,6 +200,44 @@ return 0; } +static void gpio_rcar_irq_bus_lock(struct irq_data *d) +{ + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct gpio_rcar_priv *p = gpiochip_get_data(gc); + + pm_runtime_get_sync(&p->pdev->dev); +} + +static void gpio_rcar_irq_bus_sync_unlock(struct irq_data *d) +{ + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct gpio_rcar_priv *p = gpiochip_get_data(gc); + + pm_runtime_put(&p->pdev->dev); +} + + +static int gpio_rcar_irq_request_resources(struct irq_data *d) +{ + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct gpio_rcar_priv *p = gpiochip_get_data(gc); + int error; + + error = pm_runtime_get_sync(&p->pdev->dev); + if (error < 0) + return error; + + return 0; +} + +static void gpio_rcar_irq_release_resources(struct irq_data *d) +{ + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct gpio_rcar_priv *p = gpiochip_get_data(gc); + + pm_runtime_put(&p->pdev->dev); +} + static irqreturn_t gpio_rcar_irq_handler(int irq, void *dev_id) { struct gpio_rcar_priv *p = dev_id; @@ -442,6 +480,10 @@ irq_chip->irq_unmask = gpio_rcar_irq_enable; irq_chip->irq_set_type = gpio_rcar_irq_set_type; irq_chip->irq_set_wake = gpio_rcar_irq_set_wake; + irq_chip->irq_bus_lock = gpio_rcar_irq_bus_lock; + irq_chip->irq_bus_sync_unlock = gpio_rcar_irq_bus_sync_unlock; + irq_chip->irq_request_resources = gpio_rcar_irq_request_resources; + irq_chip->irq_release_resources = gpio_rcar_irq_release_resources; irq_chip->flags = IRQCHIP_SET_TYPE_MASKED | IRQCHIP_MASK_ON_SUSPEND; ret = gpiochip_add(gpio_chip); --- linux-raspi2-4.2.0.orig/drivers/gpio/gpiolib.c +++ linux-raspi2-4.2.0/drivers/gpio/gpiolib.c @@ -219,7 +219,7 @@ } /** - * gpiochip_add() - register a gpio_chip + * gpiochip_add_data() - register a gpio_chip * @chip: the chip to register, with chip->base initialized * Context: potentially before irqs will work * @@ -227,7 +227,7 @@ * because the chip->base is invalid or already associated with a * different chip. Otherwise it returns zero as a success code. * - * When gpiochip_add() is called very early during boot, so that GPIOs + * When gpiochip_add_data() is called very early during boot, so that GPIOs * can be freely used, the chip->dev device must be registered before * the gpio framework's arch_initcall(). Otherwise sysfs initialization * for GPIOs will fail rudely. @@ -235,7 +235,7 @@ * If chip->base is negative, this requests dynamic assignment of * a range of valid GPIOs. */ -int gpiochip_add(struct gpio_chip *chip) +int gpiochip_add_data(struct gpio_chip *chip, void *data) { unsigned long flags; int status = 0; @@ -247,6 +247,13 @@ if (!descs) return -ENOMEM; + chip->data = data; + + if (chip->ngpio == 0) { + chip_err(chip, "tried to insert a GPIO chip with zero lines\n"); + return -EINVAL; + } + spin_lock_irqsave(&gpio_lock, flags); if (base < 0) { @@ -317,7 +324,7 @@ chip->label ? : "generic"); return status; } -EXPORT_SYMBOL_GPL(gpiochip_add); +EXPORT_SYMBOL_GPL(gpiochip_add_data); /** * gpiochip_remove() - unregister a gpio_chip --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/Makefile +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/Makefile @@ -20,7 +20,7 @@ amdgpu_ucode.o amdgpu_bo_list.o amdgpu_ctx.o amdgpu_sync.o # add asic specific block -amdgpu-$(CONFIG_DRM_AMDGPU_CIK)+= cik.o gmc_v7_0.o cik_ih.o kv_smc.o kv_dpm.o \ +amdgpu-$(CONFIG_DRM_AMDGPU_CIK)+= cik.o cik_ih.o kv_smc.o kv_dpm.o \ ci_smc.o ci_dpm.o dce_v8_0.o gfx_v7_0.o cik_sdma.o uvd_v4_2.o vce_v2_0.o amdgpu-y += \ @@ -28,6 +28,7 @@ # add GMC block amdgpu-y += \ + gmc_v7_0.o \ gmc_v8_0.o # add IH block --- 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 @@ -634,8 +634,6 @@ uint32_t align; }; -struct amdgpu_sa_bo; - /* sub-allocation buffer */ struct amdgpu_sa_bo { struct list_head olist; @@ -1583,6 +1581,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 +1678,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 /* @@ -2221,6 +2220,8 @@ int amdgpu_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, uint32_t flags); bool amdgpu_ttm_tt_has_userptr(struct ttm_tt *ttm); +bool amdgpu_ttm_tt_affect_userptr(struct ttm_tt *ttm, unsigned long start, + unsigned long end); bool amdgpu_ttm_tt_is_readonly(struct ttm_tt *ttm); uint32_t amdgpu_ttm_tt_pte_flags(struct amdgpu_device *adev, struct ttm_tt *ttm, struct ttm_mem_reg *mem); --- 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_device.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1735,13 +1735,18 @@ } /* post card */ - amdgpu_atom_asic_init(adev->mode_info.atom_context); + if (!amdgpu_card_posted(adev)) + amdgpu_atom_asic_init(adev->mode_info.atom_context); r = amdgpu_resume(adev); - - r = amdgpu_ib_ring_tests(adev); if (r) - DRM_ERROR("ib ring test failed (%d).\n", r); + DRM_ERROR("amdgpu_resume failed (%d).\n", r); + + if (resume) { + r = amdgpu_ib_ring_tests(adev); + if (r) + DRM_ERROR("ib ring test failed (%d).\n", r); + } r = amdgpu_late_init(adev); if (r) @@ -1757,6 +1762,7 @@ } drm_kms_helper_poll_enable(dev); + drm_helper_hpd_irq_event(dev); if (fbcon) { amdgpu_fbdev_set_suspend(adev, 0); --- 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_gem.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -241,8 +241,9 @@ AMDGPU_GEM_USERPTR_REGISTER)) return -EINVAL; - if (!(args->flags & AMDGPU_GEM_USERPTR_ANONONLY) || - !(args->flags & AMDGPU_GEM_USERPTR_REGISTER)) { + if (!(args->flags & AMDGPU_GEM_USERPTR_READONLY) && ( + !(args->flags & AMDGPU_GEM_USERPTR_ANONONLY) || + !(args->flags & AMDGPU_GEM_USERPTR_REGISTER))) { /* if we want to write to it we must require anonymous memory and install a MMU notifier */ --- 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_mn.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c @@ -142,7 +142,8 @@ list_for_each_entry(bo, &node->bos, mn_list) { - if (!bo->tbo.ttm || bo->tbo.ttm->state != tt_bound) + if (!amdgpu_ttm_tt_affect_userptr(bo->tbo.ttm, start, + end)) continue; r = amdgpu_bo_reserve(bo, true); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "amdgpu.h" #include "amdgpu_trace.h" @@ -269,6 +270,13 @@ AMDGPU_GEM_DOMAIN_OA); bo->flags = flags; + + /* For architectures that don't support WC memory, + * mask out the WC flag from the BO + */ + if (!drm_arch_can_wc_memory()) + bo->flags &= ~AMDGPU_GEM_CREATE_CPU_GTT_USWC; + amdgpu_fill_placement_to_bo(bo, placement); /* Kernel allocation are uninterruptible */ r = ttm_bo_init(&adev->mman.bdev, &bo->tbo, size, type, @@ -407,7 +415,8 @@ } if (fpfn > bo->placements[i].fpfn) bo->placements[i].fpfn = fpfn; - if (lpfn && lpfn < bo->placements[i].lpfn) + if (!bo->placements[i].lpfn || + (lpfn && lpfn < bo->placements[i].lpfn)) bo->placements[i].lpfn = lpfn; bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT; } --- 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 @@ -592,11 +592,6 @@ /* update display watermarks based on new power state */ amdgpu_display_bandwidth_update(adev); - /* update displays */ - amdgpu_dpm_display_configuration_changed(adev); - - adev->pm.dpm.current_active_crtcs = adev->pm.dpm.new_active_crtcs; - adev->pm.dpm.current_active_crtc_count = adev->pm.dpm.new_active_crtc_count; /* wait for the rings to drain */ for (i = 0; i < AMDGPU_MAX_RINGS; i++) { @@ -613,6 +608,12 @@ amdgpu_dpm_post_set_power_state(adev); + /* update displays */ + amdgpu_dpm_display_configuration_changed(adev); + + adev->pm.dpm.current_active_crtcs = adev->pm.dpm.new_active_crtcs; + adev->pm.dpm.current_active_crtc_count = adev->pm.dpm.new_active_crtc_count; + if (adev->pm.funcs->force_performance_level) { if (adev->pm.dpm.thermal_active) { enum amdgpu_dpm_forced_level level = adev->pm.dpm.forced_level; @@ -693,6 +694,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 +725,8 @@ return ret; } + adev->pm.sysfs_initialized = true; + return 0; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -708,7 +708,7 @@ 0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); if (pci_dma_mapping_error(adev->pdev, gtt->ttm.dma_address[i])) { - while (--i) { + while (i--) { pci_unmap_page(adev->pdev, gtt->ttm.dma_address[i], PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); gtt->ttm.dma_address[i] = 0; @@ -779,6 +779,25 @@ return !!gtt->userptr; } +bool amdgpu_ttm_tt_affect_userptr(struct ttm_tt *ttm, unsigned long start, + unsigned long end) +{ + struct amdgpu_ttm_tt *gtt = (void *)ttm; + unsigned long size; + + if (gtt == NULL) + return false; + + if (gtt->ttm.ttm.state != tt_bound || !gtt->userptr) + return false; + + size = (unsigned long)gtt->ttm.ttm.num_pages * PAGE_SIZE; + if (gtt->userptr > end || gtt->userptr + size <= start) + return false; + + return true; +} + bool amdgpu_ttm_tt_is_readonly(struct ttm_tt *ttm) { struct amdgpu_ttm_tt *gtt = (void *)ttm; @@ -803,7 +822,7 @@ if (!ttm || ttm->caching_state == tt_cached) flags |= AMDGPU_PTE_SNOOPED; - if (adev->asic_type >= CHIP_TOPAZ) + if (adev->asic_type >= CHIP_TONGA) flags |= AMDGPU_PTE_EXECUTABLE; flags |= AMDGPU_PTE_READABLE; --- 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 { @@ -954,15 +954,15 @@ } /* make sure object fit at this offset */ - eaddr = saddr + size; + eaddr = saddr + size - 1; if ((saddr >= eaddr) || (offset + size > amdgpu_bo_size(bo_va->bo))) { amdgpu_bo_unreserve(bo_va->bo); return -EINVAL; } last_pfn = eaddr / AMDGPU_GPU_PAGE_SIZE; - if (last_pfn > adev->vm_manager.max_pfn) { - dev_err(adev->dev, "va above limit (0x%08X > 0x%08X)\n", + if (last_pfn >= adev->vm_manager.max_pfn) { + dev_err(adev->dev, "va above limit (0x%08X >= 0x%08X)\n", last_pfn, adev->vm_manager.max_pfn); amdgpu_bo_unreserve(bo_va->bo); return -EINVAL; @@ -973,7 +973,7 @@ saddr /= AMDGPU_GPU_PAGE_SIZE; eaddr /= AMDGPU_GPU_PAGE_SIZE; - it = interval_tree_iter_first(&vm->va, saddr, eaddr - 1); + it = interval_tree_iter_first(&vm->va, saddr, eaddr); if (it) { struct amdgpu_bo_va_mapping *tmp; tmp = container_of(it, struct amdgpu_bo_va_mapping, it); @@ -995,7 +995,7 @@ INIT_LIST_HEAD(&mapping->list); mapping->it.start = saddr; - mapping->it.last = eaddr - 1; + mapping->it.last = eaddr; mapping->offset = offset; mapping->flags = flags; @@ -1190,7 +1190,7 @@ { const unsigned align = min(AMDGPU_VM_PTB_ALIGN_SIZE, AMDGPU_VM_PTE_COUNT * 8); - unsigned pd_size, pd_entries, pts_size; + unsigned pd_size, pd_entries; int i, r; for (i = 0; i < AMDGPU_MAX_RINGS; ++i) { @@ -1208,8 +1208,7 @@ pd_entries = amdgpu_vm_num_pdes(adev); /* allocate page table array */ - pts_size = pd_entries * sizeof(struct amdgpu_vm_pt); - vm->page_tables = kzalloc(pts_size, GFP_KERNEL); + vm->page_tables = drm_calloc_large(pd_entries, sizeof(struct amdgpu_vm_pt)); if (vm->page_tables == NULL) { DRM_ERROR("Cannot allocate memory for page table array\n"); return -ENOMEM; @@ -1260,7 +1259,7 @@ for (i = 0; i < amdgpu_vm_num_pdes(adev); i++) amdgpu_bo_unref(&vm->page_tables[i].bo); - kfree(vm->page_tables); + drm_free_large(vm->page_tables); amdgpu_bo_unref(&vm->page_directory); --- 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/gmc_v7_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c @@ -42,9 +42,39 @@ MODULE_FIRMWARE("radeon/boniare_mc.bin"); MODULE_FIRMWARE("radeon/hawaii_mc.bin"); +MODULE_FIRMWARE("amdgpu/topaz_mc.bin"); + +static const u32 golden_settings_iceland_a11[] = +{ + mmVM_PRT_APERTURE0_LOW_ADDR, 0x0fffffff, 0x0fffffff, + mmVM_PRT_APERTURE1_LOW_ADDR, 0x0fffffff, 0x0fffffff, + mmVM_PRT_APERTURE2_LOW_ADDR, 0x0fffffff, 0x0fffffff, + mmVM_PRT_APERTURE3_LOW_ADDR, 0x0fffffff, 0x0fffffff +}; + +static const u32 iceland_mgcg_cgcg_init[] = +{ + mmMC_MEM_POWER_LS, 0xffffffff, 0x00000104 +}; + +static void gmc_v7_0_init_golden_registers(struct amdgpu_device *adev) +{ + switch (adev->asic_type) { + case CHIP_TOPAZ: + amdgpu_program_register_sequence(adev, + iceland_mgcg_cgcg_init, + (const u32)ARRAY_SIZE(iceland_mgcg_cgcg_init)); + amdgpu_program_register_sequence(adev, + golden_settings_iceland_a11, + (const u32)ARRAY_SIZE(golden_settings_iceland_a11)); + break; + default: + break; + } +} /** - * gmc8_mc_wait_for_idle - wait for MC idle callback. + * gmc7_mc_wait_for_idle - wait for MC idle callback. * * @adev: amdgpu_device pointer * @@ -132,13 +162,20 @@ case CHIP_HAWAII: chip_name = "hawaii"; break; + case CHIP_TOPAZ: + chip_name = "topaz"; + break; case CHIP_KAVERI: case CHIP_KABINI: return 0; default: BUG(); } - snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); + if (adev->asic_type == CHIP_TOPAZ) + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", chip_name); + else + snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); + err = request_firmware(&adev->mc.fw, fw_name, adev->dev); if (err) goto out; @@ -474,6 +511,7 @@ tmp = REG_SET_FIELD(tmp, VM_L2_CNTL, ENABLE_L2_PDE0_CACHE_LRU_UPDATE_BY_WRITE, 1); tmp = REG_SET_FIELD(tmp, VM_L2_CNTL, EFFECTIVE_L2_QUEUE_SIZE, 7); tmp = REG_SET_FIELD(tmp, VM_L2_CNTL, CONTEXT1_IDENTITY_ACCESS_MODE, 1); + tmp = REG_SET_FIELD(tmp, VM_L2_CNTL, ENABLE_DEFAULT_PAGE_OUT_TO_SYSTEM_MEMORY, 1); WREG32(mmVM_L2_CNTL, tmp); tmp = REG_SET_FIELD(0, VM_L2_CNTL2, INVALIDATE_ALL_L1_TLBS, 1); tmp = REG_SET_FIELD(tmp, VM_L2_CNTL2, INVALIDATE_L2_CACHE, 1); @@ -485,7 +523,7 @@ WREG32(mmVM_L2_CNTL3, tmp); /* setup context0 */ WREG32(mmVM_CONTEXT0_PAGE_TABLE_START_ADDR, adev->mc.gtt_start >> 12); - WREG32(mmVM_CONTEXT0_PAGE_TABLE_END_ADDR, (adev->mc.gtt_end >> 12) - 1); + WREG32(mmVM_CONTEXT0_PAGE_TABLE_END_ADDR, adev->mc.gtt_end >> 12); WREG32(mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR, adev->gart.table_addr >> 12); WREG32(mmVM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR, (u32)(adev->dummy_page.addr >> 12)); @@ -955,6 +993,8 @@ int r; struct amdgpu_device *adev = (struct amdgpu_device *)handle; + gmc_v7_0_init_golden_registers(adev); + gmc_v7_0_mc_program(adev); if (!(adev->flags & AMDGPU_IS_APU)) { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c @@ -42,7 +42,6 @@ static void gmc_v8_0_set_gart_funcs(struct amdgpu_device *adev); static void gmc_v8_0_set_irq_funcs(struct amdgpu_device *adev); -MODULE_FIRMWARE("amdgpu/topaz_mc.bin"); MODULE_FIRMWARE("amdgpu/tonga_mc.bin"); static const u32 golden_settings_tonga_a11[] = @@ -61,19 +60,6 @@ mmMC_MEM_POWER_LS, 0xffffffff, 0x00000104 }; -static const u32 golden_settings_iceland_a11[] = -{ - mmVM_PRT_APERTURE0_LOW_ADDR, 0x0fffffff, 0x0fffffff, - mmVM_PRT_APERTURE1_LOW_ADDR, 0x0fffffff, 0x0fffffff, - mmVM_PRT_APERTURE2_LOW_ADDR, 0x0fffffff, 0x0fffffff, - mmVM_PRT_APERTURE3_LOW_ADDR, 0x0fffffff, 0x0fffffff -}; - -static const u32 iceland_mgcg_cgcg_init[] = -{ - mmMC_MEM_POWER_LS, 0xffffffff, 0x00000104 -}; - static const u32 cz_mgcg_cgcg_init[] = { mmMC_MEM_POWER_LS, 0xffffffff, 0x00000104 @@ -82,14 +68,6 @@ static void gmc_v8_0_init_golden_registers(struct amdgpu_device *adev) { switch (adev->asic_type) { - case CHIP_TOPAZ: - amdgpu_program_register_sequence(adev, - iceland_mgcg_cgcg_init, - (const u32)ARRAY_SIZE(iceland_mgcg_cgcg_init)); - amdgpu_program_register_sequence(adev, - golden_settings_iceland_a11, - (const u32)ARRAY_SIZE(golden_settings_iceland_a11)); - break; case CHIP_TONGA: amdgpu_program_register_sequence(adev, tonga_mgcg_cgcg_init, @@ -196,9 +174,6 @@ DRM_DEBUG("\n"); switch (adev->asic_type) { - case CHIP_TOPAZ: - chip_name = "topaz"; - break; case CHIP_TONGA: chip_name = "tonga"; break; @@ -563,6 +538,7 @@ tmp = REG_SET_FIELD(tmp, VM_L2_CNTL, ENABLE_L2_PDE0_CACHE_LRU_UPDATE_BY_WRITE, 1); tmp = REG_SET_FIELD(tmp, VM_L2_CNTL, EFFECTIVE_L2_QUEUE_SIZE, 7); tmp = REG_SET_FIELD(tmp, VM_L2_CNTL, CONTEXT1_IDENTITY_ACCESS_MODE, 1); + tmp = REG_SET_FIELD(tmp, VM_L2_CNTL, ENABLE_DEFAULT_PAGE_OUT_TO_SYSTEM_MEMORY, 1); WREG32(mmVM_L2_CNTL, tmp); tmp = RREG32(mmVM_L2_CNTL2); tmp = REG_SET_FIELD(tmp, VM_L2_CNTL2, INVALIDATE_ALL_L1_TLBS, 1); @@ -590,7 +566,7 @@ WREG32(mmVM_L2_CNTL4, tmp); /* setup context0 */ WREG32(mmVM_CONTEXT0_PAGE_TABLE_START_ADDR, adev->mc.gtt_start >> 12); - WREG32(mmVM_CONTEXT0_PAGE_TABLE_END_ADDR, (adev->mc.gtt_end >> 12) - 1); + WREG32(mmVM_CONTEXT0_PAGE_TABLE_END_ADDR, adev->mc.gtt_end >> 12); WREG32(mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR, adev->gart.table_addr >> 12); WREG32(mmVM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR, (u32)(adev->dummy_page.addr >> 12)); @@ -934,7 +910,7 @@ gmc_v8_0_mc_program(adev); - if (!(adev->flags & AMDGPU_IS_APU)) { + if (adev->asic_type == CHIP_TONGA) { r = gmc_v8_0_mc_load_microcode(adev); if (r) { DRM_ERROR("Failed to load MC firmware!\n"); --- 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/sdma_v2_4.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c @@ -32,8 +32,8 @@ #include "oss/oss_2_4_d.h" #include "oss/oss_2_4_sh_mask.h" -#include "gmc/gmc_8_1_d.h" -#include "gmc/gmc_8_1_sh_mask.h" +#include "gmc/gmc_7_1_d.h" +#include "gmc/gmc_7_1_sh_mask.h" #include "gca/gfx_8_0_d.h" #include "gca/gfx_8_0_enum.h" --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c @@ -122,25 +122,12 @@ static int tonga_dpm_suspend(void *handle) { - return 0; + return tonga_dpm_hw_fini(handle); } static int tonga_dpm_resume(void *handle) { - int ret; - struct amdgpu_device *adev = (struct amdgpu_device *)handle; - - mutex_lock(&adev->pm.mutex); - - ret = tonga_smu_start(adev); - if (ret) { - DRM_ERROR("SMU start failed\n"); - goto fail; - } - -fail: - mutex_unlock(&adev->pm.mutex); - return ret; + return tonga_dpm_hw_init(handle); } static int tonga_dpm_set_clockgating_state(void *handle, --- 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 @@ -60,6 +60,7 @@ #include "vi.h" #include "vi_dpm.h" #include "gmc_v8_0.h" +#include "gmc_v7_0.h" #include "gfx_v8_0.h" #include "sdma_v2_4.h" #include "sdma_v3_0.h" @@ -968,6 +969,9 @@ u32 mask; int ret; + if (pci_is_root_bus(adev->pdev->bus)) + return; + if (amdgpu_pcie_gen2 == 0) return; @@ -1024,10 +1028,10 @@ }, { .type = AMD_IP_BLOCK_TYPE_GMC, - .major = 8, - .minor = 0, + .major = 7, + .minor = 4, .rev = 0, - .funcs = &gmc_v8_0_ip_funcs, + .funcs = &gmc_v7_0_ip_funcs, }, { .type = AMD_IP_BLOCK_TYPE_IH, @@ -1290,7 +1294,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/amd/amdkfd/kfd_dbgdev.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c @@ -513,7 +513,7 @@ union SQ_CMD_BITS *in_reg_sq_cmd, union GRBM_GFX_INDEX_BITS *in_reg_gfx_index) { - int status; + int status = 0; union SQ_CMD_BITS reg_sq_cmd; union GRBM_GFX_INDEX_BITS reg_gfx_index; struct HsaDbgWaveMsgAMDGen2 *pMsg; --- 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 @@ -227,7 +227,7 @@ } while (ast_read32(ast, 0x10000) != 0x01); data = ast_read32(ast, 0x10004); - if (data & 0x400) + if (data & 0x40) ast->dram_bus_width = 16; else ast->dram_bus_width = 32; @@ -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_helper.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_dp_helper.c @@ -176,7 +176,7 @@ { struct drm_dp_aux_msg msg; unsigned int retry; - int err; + int err = 0; memset(&msg, 0, sizeof(msg)); msg.address = offset; @@ -184,6 +184,8 @@ msg.buffer = buffer; msg.size = size; + mutex_lock(&aux->hw_mutex); + /* * The specification doesn't give any recommendation on how often to * retry native transactions. We used to retry 7 times like for @@ -192,25 +194,24 @@ */ for (retry = 0; retry < 32; retry++) { - mutex_lock(&aux->hw_mutex); err = aux->transfer(aux, &msg); - mutex_unlock(&aux->hw_mutex); if (err < 0) { if (err == -EBUSY) continue; - return err; + goto unlock; } switch (msg.reply & DP_AUX_NATIVE_REPLY_MASK) { case DP_AUX_NATIVE_REPLY_ACK: if (err < size) - return -EPROTO; - return err; + err = -EPROTO; + goto unlock; case DP_AUX_NATIVE_REPLY_NACK: - return -EIO; + err = -EIO; + goto unlock; case DP_AUX_NATIVE_REPLY_DEFER: usleep_range(400, 500); @@ -219,7 +220,11 @@ } DRM_DEBUG_KMS("too many retries, giving up\n"); - return -EIO; + err = -EIO; + +unlock: + mutex_unlock(&aux->hw_mutex); + return err; } /** @@ -441,9 +446,7 @@ * before giving up the AUX transaction. */ for (retry = 0, defer_i2c = 0; retry < (7 + defer_i2c); retry++) { - mutex_lock(&aux->hw_mutex); ret = aux->transfer(aux, msg); - mutex_unlock(&aux->hw_mutex); if (ret < 0) { if (ret == -EBUSY) continue; @@ -570,6 +573,8 @@ memset(&msg, 0, sizeof(msg)); + mutex_lock(&aux->hw_mutex); + for (i = 0; i < num; i++) { msg.address = msgs[i].addr; msg.request = (msgs[i].flags & I2C_M_RD) ? @@ -613,6 +618,8 @@ msg.size = 0; (void)drm_dp_i2c_do_msg(aux, &msg); + mutex_unlock(&aux->hw_mutex); + return err; } --- 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 @@ -798,13 +798,32 @@ return mstb; } +static void drm_dp_free_mst_port(struct kref *kref); + +static void drm_dp_free_mst_branch_device(struct kref *kref) +{ + struct drm_dp_mst_branch *mstb = container_of(kref, struct drm_dp_mst_branch, kref); + if (mstb->port_parent) { + if (list_empty(&mstb->port_parent->next)) + kref_put(&mstb->port_parent->kref, drm_dp_free_mst_port); + } + kfree(mstb); +} + static void drm_dp_destroy_mst_branch_device(struct kref *kref) { struct drm_dp_mst_branch *mstb = container_of(kref, struct drm_dp_mst_branch, kref); struct drm_dp_mst_port *port, *tmp; bool wake_tx = false; - cancel_work_sync(&mstb->mgr->work); + /* + * init kref again to be used by ports to remove mst branch when it is + * not needed anymore + */ + kref_init(kref); + + if (mstb->port_parent && list_empty(&mstb->port_parent->next)) + kref_get(&mstb->port_parent->kref); /* * destroy all ports - don't need lock @@ -832,7 +851,8 @@ if (wake_tx) wake_up(&mstb->mgr->tx_waitq); - kfree(mstb); + + kref_put(kref, drm_dp_free_mst_branch_device); } static void drm_dp_put_mst_branch_device(struct drm_dp_mst_branch *mstb) @@ -863,29 +883,34 @@ { 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); + kref_get(&port->parent->kref); 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) @@ -971,17 +996,17 @@ static u8 drm_dp_calculate_rad(struct drm_dp_mst_port *port, u8 *rad) { - int lct = port->parent->lct; + int parent_lct = port->parent->lct; int shift = 4; - int idx = lct / 2; - if (lct > 1) { - memcpy(rad, port->parent->rad, idx); - shift = (lct % 2) ? 4 : 0; + int idx = (parent_lct - 1) / 2; + if (parent_lct > 1) { + memcpy(rad, port->parent->rad, idx + 1); + shift = (parent_lct % 2) ? 4 : 0; } else rad[0] = 0; rad[idx] |= port->port_num << shift; - return lct + 1; + return parent_lct + 1; } /* @@ -1037,7 +1062,7 @@ snprintf(proppath, proppath_size, "mst:%d", mstb->mgr->conn_base_id); for (i = 0; i < (mstb->lct - 1); i++) { int shift = (i % 2) ? 0 : 4; - int port_num = mstb->rad[i / 2] >> shift; + int port_num = (mstb->rad[i / 2] >> shift) & 0xf; snprintf(temp, sizeof(temp), "-%d", port_num); strlcat(proppath, temp, proppath_size); } @@ -1115,12 +1140,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); } @@ -1178,21 +1212,66 @@ for (i = 0; i < lct - 1; i++) { int shift = (i % 2) ? 0 : 4; - int port_num = rad[i / 2] >> shift; + int port_num = (rad[i / 2] >> shift) & 0xf; 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; +} + +static struct drm_dp_mst_branch *get_mst_branch_device_by_guid_helper( + struct drm_dp_mst_branch *mstb, + uint8_t *guid) +{ + struct drm_dp_mst_branch *found_mstb; + struct drm_dp_mst_port *port; + + list_for_each_entry(port, &mstb->ports, next) { + if (!port->mstb) + continue; + + if (port->guid_valid && memcmp(port->guid, guid, 16) == 0) + return port->mstb; + + found_mstb = get_mst_branch_device_by_guid_helper(port->mstb, guid); + + if (found_mstb) + return found_mstb; + } + + return NULL; +} + +static struct drm_dp_mst_branch *drm_dp_get_mst_branch_device_by_guid( + struct drm_dp_mst_topology_mgr *mgr, + uint8_t *guid) +{ + struct drm_dp_mst_branch *mstb; + + /* find the port by iterating down */ + mutex_lock(&mgr->lock); + + if (mgr->guid_valid && memcmp(mgr->guid, guid, 16) == 0) + mstb = mgr->mst_primary; + else + mstb = get_mst_branch_device_by_guid_helper(mgr->mst_primary, guid); + + if (mstb) + kref_get(&mstb->kref); + mutex_unlock(&mgr->lock); return mstb; } @@ -1308,6 +1387,7 @@ struct drm_dp_sideband_msg_tx *txmsg) { struct drm_dp_mst_branch *mstb = txmsg->dst; + u8 req_type; /* both msg slots are full */ if (txmsg->seqno == -1) { @@ -1324,7 +1404,13 @@ txmsg->seqno = 1; mstb->tx_slots[txmsg->seqno] = txmsg; } - hdr->broadcast = 0; + + req_type = txmsg->msg[0] & 0x7f; + if (req_type == DP_CONNECTION_STATUS_NOTIFY || + req_type == DP_RESOURCE_STATUS_NOTIFY) + hdr->broadcast = 1; + else + hdr->broadcast = 0; hdr->path_msg = txmsg->path_msg; hdr->lct = mstb->lct; hdr->lcr = mstb->lct - 1; @@ -1426,26 +1512,18 @@ } /* called holding qlock */ -static void process_single_up_tx_qlock(struct drm_dp_mst_topology_mgr *mgr) +static void process_single_up_tx_qlock(struct drm_dp_mst_topology_mgr *mgr, + struct drm_dp_sideband_msg_tx *txmsg) { - struct drm_dp_sideband_msg_tx *txmsg; int ret; /* construct a chunk from the first msg in the tx_msg queue */ - if (list_empty(&mgr->tx_msg_upq)) { - mgr->tx_up_in_progress = false; - return; - } - - txmsg = list_first_entry(&mgr->tx_msg_upq, struct drm_dp_sideband_msg_tx, next); ret = process_single_tx_qlock(mgr, txmsg, true); - if (ret == 1) { - /* up txmsgs aren't put in slots - so free after we send it */ - list_del(&txmsg->next); - kfree(txmsg); - } else if (ret) + + if (ret != 1) DRM_DEBUG_KMS("failed to send msg in q %d\n", ret); - mgr->tx_up_in_progress = true; + + txmsg->dst->tx_slots[txmsg->seqno] = NULL; } static void drm_dp_queue_down_tx(struct drm_dp_mst_topology_mgr *mgr, @@ -1540,6 +1618,37 @@ return 0; } +static struct drm_dp_mst_port *drm_dp_get_last_connected_port_to_mstb(struct drm_dp_mst_branch *mstb) +{ + if (!mstb->port_parent) + return NULL; + + if (mstb->port_parent->mstb != mstb) + return mstb->port_parent; + + return drm_dp_get_last_connected_port_to_mstb(mstb->port_parent->parent); +} + +static struct drm_dp_mst_branch *drm_dp_get_last_connected_port_and_mstb(struct drm_dp_mst_topology_mgr *mgr, + struct drm_dp_mst_branch *mstb, + int *port_num) +{ + struct drm_dp_mst_branch *rmstb = NULL; + struct drm_dp_mst_port *found_port; + mutex_lock(&mgr->lock); + if (mgr->mst_primary) { + found_port = drm_dp_get_last_connected_port_to_mstb(mstb); + + if (found_port) { + rmstb = found_port->parent; + kref_get(&rmstb->kref); + *port_num = found_port->port_num; + } + } + mutex_unlock(&mgr->lock); + return rmstb; +} + static int drm_dp_payload_send_msg(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, int id, @@ -1547,11 +1656,16 @@ { struct drm_dp_sideband_msg_tx *txmsg; struct drm_dp_mst_branch *mstb; - int len, ret; + int len, ret, port_num; + port_num = port->port_num; mstb = drm_dp_get_validated_mstb_ref(mgr, port->parent); - if (!mstb) - return -EINVAL; + if (!mstb) { + mstb = drm_dp_get_last_connected_port_and_mstb(mgr, port->parent, &port_num); + + if (!mstb) + return -EINVAL; + } txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); if (!txmsg) { @@ -1560,7 +1674,7 @@ } txmsg->dst = mstb; - len = build_allocate_payload(txmsg, port->port_num, + len = build_allocate_payload(txmsg, port_num, id, pbn); @@ -1830,11 +1944,12 @@ drm_dp_encode_up_ack_reply(txmsg, req_type); mutex_lock(&mgr->qlock); - list_add_tail(&txmsg->next, &mgr->tx_msg_upq); - if (!mgr->tx_up_in_progress) { - process_single_up_tx_qlock(mgr); - } + + process_single_up_tx_qlock(mgr, txmsg); + mutex_unlock(&mgr->qlock); + + kfree(txmsg); return 0; } @@ -1913,6 +2028,12 @@ mgr->mst_primary = mstb; kref_get(&mgr->mst_primary->kref); + ret = drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, + DP_MST_EN | DP_UP_REQ_EN | DP_UPSTREAM_IS_SRC); + if (ret < 0) { + goto out_unlock; + } + { struct drm_dp_payload reset_pay; reset_pay.start_slot = 0; @@ -1920,12 +2041,6 @@ drm_dp_dpcd_write_payload(mgr, 0, &reset_pay); } - ret = drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, - DP_MST_EN | DP_UP_REQ_EN | DP_UPSTREAM_IS_SRC); - if (ret < 0) { - goto out_unlock; - } - /* sort out guid */ ret = drm_dp_dpcd_read(mgr->aux, DP_GUID, mgr->guid, 16); @@ -1978,6 +2093,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); @@ -2129,28 +2246,50 @@ if (mgr->up_req_recv.have_eomt) { struct drm_dp_sideband_msg_req_body msg; - struct drm_dp_mst_branch *mstb; + struct drm_dp_mst_branch *mstb = NULL; bool seqno; - mstb = drm_dp_get_mst_branch_device(mgr, - mgr->up_req_recv.initial_hdr.lct, - mgr->up_req_recv.initial_hdr.rad); - if (!mstb) { - DRM_DEBUG_KMS("Got MST reply from unknown device %d\n", mgr->up_req_recv.initial_hdr.lct); - memset(&mgr->up_req_recv, 0, sizeof(struct drm_dp_sideband_msg_rx)); - return 0; + + if (!mgr->up_req_recv.initial_hdr.broadcast) { + mstb = drm_dp_get_mst_branch_device(mgr, + mgr->up_req_recv.initial_hdr.lct, + mgr->up_req_recv.initial_hdr.rad); + if (!mstb) { + DRM_DEBUG_KMS("Got MST reply from unknown device %d\n", mgr->up_req_recv.initial_hdr.lct); + memset(&mgr->up_req_recv, 0, sizeof(struct drm_dp_sideband_msg_rx)); + return 0; + } } seqno = mgr->up_req_recv.initial_hdr.seqno; drm_dp_sideband_parse_req(&mgr->up_req_recv, &msg); if (msg.req_type == DP_CONNECTION_STATUS_NOTIFY) { - drm_dp_send_up_ack_reply(mgr, mstb, msg.req_type, seqno, false); + drm_dp_send_up_ack_reply(mgr, mgr->mst_primary, msg.req_type, seqno, false); + + if (!mstb) + mstb = drm_dp_get_mst_branch_device_by_guid(mgr, msg.u.conn_stat.guid); + + if (!mstb) { + DRM_DEBUG_KMS("Got MST reply from unknown device %d\n", mgr->up_req_recv.initial_hdr.lct); + memset(&mgr->up_req_recv, 0, sizeof(struct drm_dp_sideband_msg_rx)); + return 0; + } + drm_dp_update_port(mstb, &msg.u.conn_stat); DRM_DEBUG_KMS("Got CSN: pn: %d ldps:%d ddps: %d mcs: %d ip: %d pdt: %d\n", msg.u.conn_stat.port_number, msg.u.conn_stat.legacy_device_plug_status, msg.u.conn_stat.displayport_device_plug_status, msg.u.conn_stat.message_capability_status, msg.u.conn_stat.input_port, msg.u.conn_stat.peer_device_type); (*mgr->cbs->hotplug)(mgr); } else if (msg.req_type == DP_RESOURCE_STATUS_NOTIFY) { - drm_dp_send_up_ack_reply(mgr, mstb, msg.req_type, seqno, false); + drm_dp_send_up_ack_reply(mgr, mgr->mst_primary, msg.req_type, seqno, false); + if (!mstb) + mstb = drm_dp_get_mst_branch_device_by_guid(mgr, msg.u.resource_stat.guid); + + if (!mstb) { + DRM_DEBUG_KMS("Got MST reply from unknown device %d\n", mgr->up_req_recv.initial_hdr.lct); + memset(&mgr->up_req_recv, 0, sizeof(struct drm_dp_sideband_msg_rx)); + return 0; + } + DRM_DEBUG_KMS("Got RSN: pn: %d avail_pbn %d\n", msg.u.resource_stat.port_number, msg.u.resource_stat.available_pbn); } @@ -2330,6 +2469,7 @@ DRM_DEBUG_KMS("payload: vcpi %d already allocated for pbn %d - requested pbn %d\n", port->vcpi.vcpi, port->vcpi.pbn, pbn); if (pbn == port->vcpi.pbn) { *slots = port->vcpi.num_slots; + drm_dp_put_port(port); return true; } } @@ -2489,32 +2629,31 @@ */ int drm_dp_calc_pbn_mode(int clock, int bpp) { - fixed20_12 pix_bw; - fixed20_12 fbpp; - fixed20_12 result; - fixed20_12 margin, tmp; - u32 res; - - pix_bw.full = dfixed_const(clock); - fbpp.full = dfixed_const(bpp); - tmp.full = dfixed_const(8); - fbpp.full = dfixed_div(fbpp, tmp); - - result.full = dfixed_mul(pix_bw, fbpp); - margin.full = dfixed_const(54); - tmp.full = dfixed_const(64); - margin.full = dfixed_div(margin, tmp); - result.full = dfixed_div(result, margin); - - margin.full = dfixed_const(1006); - tmp.full = dfixed_const(1000); - margin.full = dfixed_div(margin, tmp); - result.full = dfixed_mul(result, margin); - - result.full = dfixed_div(result, tmp); - result.full = dfixed_ceil(result); - res = dfixed_trunc(result); - return res; + u64 kbps; + s64 peak_kbps; + u32 numerator; + u32 denominator; + + kbps = clock * bpp; + + /* + * margin 5300ppm + 300ppm ~ 0.6% as per spec, factor is 1.006 + * The unit of 54/64Mbytes/sec is an arbitrary unit chosen based on + * common multiplier to render an integer PBN for all link rate/lane + * counts combinations + * calculate + * peak_kbps *= (1006/1000) + * peak_kbps *= (64/54) + * peak_kbps *= 8 convert to bytes + */ + + numerator = 64 * 1006; + denominator = 54 * 8 * 1000 * 1000; + + kbps *= numerator; + peak_kbps = drm_fixp_from_fraction(kbps, denominator); + + return drm_fixp2int_ceil(peak_kbps); } EXPORT_SYMBOL(drm_dp_calc_pbn_mode); @@ -2522,11 +2661,23 @@ { int ret; ret = drm_dp_calc_pbn_mode(154000, 30); - if (ret != 689) + if (ret != 689) { + DRM_ERROR("PBN calculation test failed - clock %d, bpp %d, expected PBN %d, actual PBN %d.\n", + 154000, 30, 689, ret); return -EINVAL; + } ret = drm_dp_calc_pbn_mode(234000, 30); - if (ret != 1047) + if (ret != 1047) { + DRM_ERROR("PBN calculation test failed - clock %d, bpp %d, expected PBN %d, actual PBN %d.\n", + 234000, 30, 1047, ret); + return -EINVAL; + } + ret = drm_dp_calc_pbn_mode(297000, 24); + if (ret != 1063) { + DRM_ERROR("PBN calculation test failed - clock %d, bpp %d, expected PBN %d, actual PBN %d.\n", + 297000, 24, 1063, ret); return -EINVAL; + } return 0; } @@ -2657,11 +2808,18 @@ mutex_unlock(&mgr->qlock); } +static void drm_dp_free_mst_port(struct kref *kref) +{ + struct drm_dp_mst_port *port = container_of(kref, struct drm_dp_mst_port, kref); + kref_put(&port->parent->kref, drm_dp_free_mst_branch_device); + kfree(port); +} + static void drm_dp_destroy_connector_work(struct work_struct *work) { 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 @@ -2677,14 +2835,26 @@ list_del(&port->next); mutex_unlock(&mgr->destroy_connector_lock); + kref_init(&port->kref); + INIT_LIST_HEAD(&port->next); + mgr->cbs->destroy_connector(mgr, port->connector); 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); + if (!port->input && port->vcpi.vcpi > 0) { + if (mgr->mst_state) { + drm_dp_mst_reset_vcpi_slots(mgr, port); + drm_dp_update_payload_part1(mgr); + drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); + } + } + + kref_put(&port->kref, drm_dp_free_mst_port); + send_hotplug = true; } + if (send_hotplug) + (*mgr->cbs->hotplug)(mgr); } /** @@ -2707,7 +2877,6 @@ mutex_init(&mgr->qlock); mutex_init(&mgr->payload_lock); mutex_init(&mgr->destroy_connector_lock); - INIT_LIST_HEAD(&mgr->tx_msg_upq); INIT_LIST_HEAD(&mgr->tx_msg_downq); INIT_LIST_HEAD(&mgr->destroy_connector_list); INIT_WORK(&mgr->work, drm_dp_mst_link_probe_work); @@ -2737,6 +2906,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 +2942,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_drv.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_drv.c @@ -163,6 +163,11 @@ goto out_unlock; } + if (!file_priv->allowed_master) { + ret = drm_new_set_master(dev, file_priv); + goto out_unlock; + } + file_priv->minor->master = drm_master_get(file_priv->master); file_priv->is_master = 1; if (dev->driver->master_set) { --- 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_fops.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_fops.c @@ -126,6 +126,60 @@ } /** + * drm_new_set_master - Allocate a new master object and become master for the + * associated master realm. + * + * @dev: The associated device. + * @fpriv: File private identifying the client. + * + * This function must be called with dev::struct_mutex held. + * Returns negative error code on failure. Zero on success. + */ +int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv) +{ + struct drm_master *old_master; + int ret; + + lockdep_assert_held_once(&dev->master_mutex); + + /* create a new master */ + fpriv->minor->master = drm_master_create(fpriv->minor); + if (!fpriv->minor->master) + return -ENOMEM; + + /* take another reference for the copy in the local file priv */ + old_master = fpriv->master; + fpriv->master = drm_master_get(fpriv->minor->master); + + if (dev->driver->master_create) { + ret = dev->driver->master_create(dev, fpriv->master); + if (ret) + goto out_err; + } + if (dev->driver->master_set) { + ret = dev->driver->master_set(dev, fpriv, true); + if (ret) + goto out_err; + } + + fpriv->is_master = 1; + fpriv->allowed_master = 1; + fpriv->authenticated = 1; + if (old_master) + drm_master_put(&old_master); + + return 0; + +out_err: + /* drop both references and restore old master on failure */ + drm_master_put(&fpriv->minor->master); + drm_master_put(&fpriv->master); + fpriv->master = old_master; + + return ret; +} + +/** * Called whenever a process opens /dev/drm. * * \param filp file pointer. @@ -189,35 +243,9 @@ mutex_lock(&dev->master_mutex); if (drm_is_primary_client(priv) && !priv->minor->master) { /* create a new master */ - priv->minor->master = drm_master_create(priv->minor); - if (!priv->minor->master) { - ret = -ENOMEM; + ret = drm_new_set_master(dev, priv); + if (ret) goto out_close; - } - - priv->is_master = 1; - /* take another reference for the copy in the local file priv */ - priv->master = drm_master_get(priv->minor->master); - priv->authenticated = 1; - - if (dev->driver->master_create) { - ret = dev->driver->master_create(dev, priv->master); - if (ret) { - /* drop both references if this fails */ - drm_master_put(&priv->minor->master); - drm_master_put(&priv->master); - goto out_close; - } - } - if (dev->driver->master_set) { - ret = dev->driver->master_set(dev, priv, true); - if (ret) { - /* drop both references if this fails */ - drm_master_put(&priv->minor->master); - drm_master_put(&priv->master); - goto out_close; - } - } } else if (drm_is_primary_client(priv)) { /* get a reference to the master */ priv->master = drm_master_get(priv->minor->master); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/drm_irq.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_irq.c @@ -1338,8 +1338,7 @@ * re-enable interrupts if there are users left, or the * user wishes vblank interrupts to be enabled all the time. */ - if (atomic_read(&vblank->refcount) != 0 || - (!dev->vblank_disable_immediate && drm_vblank_offdelay == 0)) + if (atomic_read(&vblank->refcount) != 0 || drm_vblank_offdelay == 0) WARN_ON(drm_vblank_enable(dev, crtc)); spin_unlock_irqrestore(&dev->vbl_lock, irqflags); } --- 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_probe_helper.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_probe_helper.c @@ -195,7 +195,8 @@ mode_flags |= DRM_MODE_FLAG_3D_MASK; list_for_each_entry(mode, &connector->modes, head) { - mode->status = drm_mode_validate_basic(mode); + if (mode->status == MODE_OK) + mode->status = drm_mode_validate_basic(mode); if (mode->status == MODE_OK) mode->status = drm_mode_validate_size(mode, maxX, maxY); --- 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, @@ -2119,8 +2144,17 @@ struct drm_i915_private *i915; struct intel_engine_cs *ring; - /** GEM sequence number associated with this request. */ - uint32_t seqno; + /** GEM sequence number associated with the previous request, + * when the HWS breadcrumb is equal to this the GPU is processing + * this request. + */ + u32 previous_seqno; + + /** GEM sequence number associated with this request, + * when the HWS breadcrumb is equal or greater than this the GPU + * has finished processing this request. + */ + u32 seqno; /** Position in the ringbuffer of the start of the request */ u32 head; @@ -2400,6 +2434,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) @@ -2797,15 +2839,17 @@ return (int32_t)(seq1 - seq2) >= 0; } +static inline bool i915_gem_request_started(struct drm_i915_gem_request *req, + bool lazy_coherency) +{ + u32 seqno = req->ring->get_seqno(req->ring, lazy_coherency); + return i915_seqno_passed(seqno, req->previous_seqno); +} + static inline bool i915_gem_request_completed(struct drm_i915_gem_request *req, bool lazy_coherency) { - u32 seqno; - - BUG_ON(req == NULL); - - seqno = req->ring->get_seqno(req->ring, lazy_coherency); - + u32 seqno = req->ring->get_seqno(req->ring, lazy_coherency); return i915_seqno_passed(seqno, req->seqno); } @@ -3303,13 +3347,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.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_gem.c @@ -1174,23 +1174,74 @@ return test_bit(ring->id, &dev_priv->gpu_error.missed_irq_rings); } -static int __i915_spin_request(struct drm_i915_gem_request *req) +static unsigned long local_clock_us(unsigned *cpu) +{ + unsigned long t; + + /* Cheaply and approximately convert from nanoseconds to microseconds. + * The result and subsequent calculations are also defined in the same + * approximate microseconds units. The principal source of timing + * error here is from the simple truncation. + * + * Note that local_clock() is only defined wrt to the current CPU; + * the comparisons are no longer valid if we switch CPUs. Instead of + * blocking preemption for the entire busywait, we can detect the CPU + * switch and use that as indicator of system load and a reason to + * stop busywaiting, see busywait_stop(). + */ + *cpu = get_cpu(); + t = local_clock() >> 10; + put_cpu(); + + return t; +} + +static bool busywait_stop(unsigned long timeout, unsigned cpu) +{ + unsigned this_cpu; + + if (time_after(local_clock_us(&this_cpu), timeout)) + return true; + + return this_cpu != cpu; +} + +static int __i915_spin_request(struct drm_i915_gem_request *req, int state) { unsigned long timeout; + unsigned cpu; - if (i915_gem_request_get_ring(req)->irq_refcount) + /* When waiting for high frequency requests, e.g. during synchronous + * rendering split between the CPU and GPU, the finite amount of time + * required to set up the irq and wait upon it limits the response + * rate. By busywaiting on the request completion for a short while we + * can service the high frequency waits as quick as possible. However, + * if it is a slow request, we want to sleep as quickly as possible. + * The tradeoff between waiting and sleeping is roughly the time it + * takes to sleep on a request, on the order of a microsecond. + */ + + if (req->ring->irq_refcount) return -EBUSY; - timeout = jiffies + 1; + /* Only spin if we know the GPU is processing this request */ + if (!i915_gem_request_started(req, true)) + return -EAGAIN; + + timeout = local_clock_us(&cpu) + 5; while (!need_resched()) { if (i915_gem_request_completed(req, true)) return 0; - if (time_after_eq(jiffies, timeout)) + if (signal_pending_state(state, current)) + break; + + if (busywait_stop(timeout, cpu)) break; cpu_relax_lowlatency(); } + if (i915_gem_request_completed(req, false)) return 0; @@ -1225,6 +1276,7 @@ struct drm_i915_private *dev_priv = dev->dev_private; const bool irq_test_in_progress = ACCESS_ONCE(dev_priv->gpu_error.test_irq_rings) & intel_ring_flag(ring); + int state = interruptible ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE; DEFINE_WAIT(wait); unsigned long timeout_expire; s64 before, now; @@ -1249,7 +1301,7 @@ before = ktime_get_raw_ns(); /* Optimistic spin for the next jiffie before touching IRQs */ - ret = __i915_spin_request(req); + ret = __i915_spin_request(req, state); if (ret == 0) goto out; @@ -1261,8 +1313,7 @@ for (;;) { struct timer_list timer; - prepare_to_wait(&ring->irq_queue, &wait, - interruptible ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE); + prepare_to_wait(&ring->irq_queue, &wait, state); /* We need to check whether any gpu reset happened in between * the caller grabbing the seqno and now ... */ @@ -1280,7 +1331,7 @@ break; } - if (interruptible && signal_pending(current)) { + if (signal_pending_state(state, current)) { ret = -ERESTARTSYS; break; } @@ -2548,6 +2599,7 @@ } request->emitted_jiffies = jiffies; + request->previous_seqno = ring->last_submitted_seqno; ring->last_submitted_seqno = request->seqno; list_add_tail(&request->list, &ring->request_list); request->file_priv = NULL; @@ -4048,6 +4100,7 @@ int i915_gem_set_caching_ioctl(struct drm_device *dev, void *data, struct drm_file *file) { + struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_gem_caching *args = data; struct drm_i915_gem_object *obj; enum i915_cache_level level; @@ -4067,9 +4120,11 @@ return -EINVAL; } + intel_runtime_pm_get(dev_priv); + ret = i915_mutex_lock_interruptible(dev); if (ret) - return ret; + goto rpm_put; obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); if (&obj->base == NULL) { @@ -4082,6 +4137,9 @@ drm_gem_object_unreference(&obj->base); unlock: mutex_unlock(&dev->struct_mutex); +rpm_put: + intel_runtime_pm_put(dev_priv); + return ret; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_gem_context.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_gem_context.c @@ -317,6 +317,10 @@ i915_gem_context_unreference(lctx); ring->last_context = NULL; } + + /* Force the GPU state to be reinitialised on enabling */ + if (ring->default_context) + ring->default_context->legacy_hw_ctx.initialized = false; } } @@ -685,7 +689,7 @@ if (ret) goto unpin_out; - if (!to->legacy_hw_ctx.initialized) { + if (!to->legacy_hw_ctx.initialized || i915_gem_context_is_default(to)) { hw_flags |= MI_RESTORE_INHIBIT; /* NB: If we inhibit the restore, the context is not allowed to * die because future work may end up depending on valid address --- 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_tiling.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_gem_tiling.c @@ -180,11 +180,10 @@ } /* check for L-shaped memory aka modified enhanced addressing */ - if (IS_GEN4(dev)) { - uint32_t ddc2 = I915_READ(DCC2); - - if (!(ddc2 & DCC2_MODIFIED_ENHANCED_DISABLE)) - dev_priv->quirks |= QUIRK_PIN_SWIZZLED_PAGES; + if (IS_GEN4(dev) && + !(I915_READ(DCC2) & DCC2_MODIFIED_ENHANCED_DISABLE)) { + swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN; + swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN; } if (dcc == 0xffffffff) { @@ -213,16 +212,35 @@ * matching, which was the case for the swizzling required in * the table above, or from the 1-ch value being less than * the minimum size of a rank. + * + * Reports indicate that the swizzling actually + * varies depending upon page placement inside the + * channels, i.e. we see swizzled pages where the + * banks of memory are paired and unswizzled on the + * uneven portion, so leave that as unknown. */ - if (I915_READ16(C0DRB3) != I915_READ16(C1DRB3)) { - swizzle_x = I915_BIT_6_SWIZZLE_NONE; - swizzle_y = I915_BIT_6_SWIZZLE_NONE; - } else { + if (I915_READ16(C0DRB3) == I915_READ16(C1DRB3)) { swizzle_x = I915_BIT_6_SWIZZLE_9_10; swizzle_y = I915_BIT_6_SWIZZLE_9; } } + if (swizzle_x == I915_BIT_6_SWIZZLE_UNKNOWN || + swizzle_y == I915_BIT_6_SWIZZLE_UNKNOWN) { + /* Userspace likes to explode if it sees unknown swizzling, + * so lie. We will finish the lie when reporting through + * the get-tiling-ioctl by reporting the physical swizzle + * mode as unknown instead. + * + * As we don't strictly know what the swizzling is, it may be + * bit17 dependent, and so we need to also prevent the pages + * from being moved. + */ + dev_priv->quirks |= QUIRK_PIN_SWIZZLED_PAGES; + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } + dev_priv->mm.bit_6_swizzle_x = swizzle_x; dev_priv->mm.bit_6_swizzle_y = swizzle_y; } --- 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; - intel_hpd_irq_handler(dev, hotplug_trigger, dig_hotplug_reg, hpd_ibx); + dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG); + I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg); + + 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,16 +4534,21 @@ 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); 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; + + /* MST has a dynamic intel_connector->encoder and it's reprobing + * is all handled by the MST helpers. */ if (intel_connector->mst_port) + continue; + + if (!connector->polled && I915_HAS_HOTPLUG(dev) && + intel_connector->encoder->hpd_pin > HPD_NONE) connector->polled = DRM_CONNECTOR_POLL_HPD; } --- 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; @@ -1292,18 +1445,16 @@ DPLL_CFGCR2_KDIV(wrpll_params.kdiv) | 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: + } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || + intel_encoder->type == INTEL_OUTPUT_DP_MST) { + 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 +1485,7 @@ /* bxt clock parameters */ struct bxt_clk_div { + int clock; uint32_t p1; uint32_t p2; uint32_t m2_int; @@ -1343,14 +1495,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 +1542,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 +1943,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 +2061,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 +3061,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 +3099,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); @@ -9815,20 +9819,17 @@ int ret; intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); - if (!intel_fb) { - drm_gem_object_unreference(&obj->base); + if (!intel_fb) return ERR_PTR(-ENOMEM); - } ret = intel_framebuffer_init(dev, intel_fb, mode_cmd, obj); if (ret) goto err; return &intel_fb->base; + err: - drm_gem_object_unreference(&obj->base); kfree(intel_fb); - return ERR_PTR(ret); } @@ -9868,6 +9869,7 @@ struct drm_display_mode *mode, int depth, int bpp) { + struct drm_framebuffer *fb; struct drm_i915_gem_object *obj; struct drm_mode_fb_cmd2 mode_cmd = { 0 }; @@ -9882,7 +9884,11 @@ bpp); mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth); - return intel_framebuffer_create(dev, &mode_cmd, obj); + fb = intel_framebuffer_create(dev, &mode_cmd, obj); + if (IS_ERR(fb)) + drm_gem_object_unreference_unlocked(&obj->base); + + return fb; } static struct drm_framebuffer * @@ -11409,11 +11415,21 @@ pipe_config->pipe_bpp = connector->base.display_info.bpc*3; } - /* Clamp bpp to 8 on screens without EDID 1.4 */ - if (connector->base.display_info.bpc == 0 && bpp > 24) { - DRM_DEBUG_KMS("clamping display bpp (was %d) to default limit of 24\n", - bpp); - pipe_config->pipe_bpp = 24; + /* Clamp bpp to default limit on screens without EDID 1.4 */ + if (connector->base.display_info.bpc == 0) { + int type = connector->base.connector_type; + int clamp_bpp = 24; + + /* Fall back to 18 bpp when DP sink capability is unknown. */ + if (type == DRM_MODE_CONNECTOR_DisplayPort || + type == DRM_MODE_CONNECTOR_eDP) + clamp_bpp = 18; + + if (bpp > clamp_bpp) { + DRM_DEBUG_KMS("clamping display bpp (was %d) to default limit of %d\n", + bpp, clamp_bpp); + pipe_config->pipe_bpp = clamp_bpp; + } } } @@ -13292,8 +13308,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 +13410,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 +13440,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); @@ -13551,6 +13574,7 @@ const struct drm_rect *clip = &state->clip; struct drm_i915_gem_object *obj = intel_fb_obj(fb); struct intel_crtc *intel_crtc; + enum pipe pipe = to_intel_plane(plane)->pipe; unsigned stride; int ret; @@ -13588,10 +13612,26 @@ ret = -EINVAL; } + /* + * There's something wrong with the cursor on CHV pipe C. + * If it straddles the left edge of the screen then + * moving it away from the edge or disabling it often + * results in a pipe underrun, and often that can lead to + * dead pipe (constant underrun reported, and it scans + * out just a solid color). To recover from that, the + * display power well must be turned off and on again. + * Refuse the put the cursor into that compromised position. + */ + if (IS_CHERRYVIEW(plane->dev) && pipe == PIPE_C && + state->visible && state->base.crtc_x < 0) { + DRM_DEBUG_KMS("CHV cursor C not allowed to straddle the left screen edge\n"); + ret = -EINVAL; + } + 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 +13959,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 +13972,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 +14118,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); } @@ -14258,16 +14311,22 @@ static struct drm_framebuffer * intel_user_framebuffer_create(struct drm_device *dev, struct drm_file *filp, - struct drm_mode_fb_cmd2 *mode_cmd) + struct drm_mode_fb_cmd2 *user_mode_cmd) { + struct drm_framebuffer *fb; struct drm_i915_gem_object *obj; + struct drm_mode_fb_cmd2 mode_cmd = *user_mode_cmd; obj = to_intel_bo(drm_gem_object_lookup(dev, filp, - mode_cmd->handles[0])); + mode_cmd.handles[0])); if (&obj->base == NULL) return ERR_PTR(-ENOENT); - return intel_framebuffer_create(dev, mode_cmd, obj); + fb = intel_framebuffer_create(dev, &mode_cmd, obj); + if (IS_ERR(fb)) + drm_gem_object_unreference_unlocked(&obj->base); + + return fb; } #ifndef CONFIG_DRM_I915_FBDEV @@ -14577,6 +14636,9 @@ /* Apple Macbook 2,1 (Core 2 T7400) */ { 0x27a2, 0x8086, 0x7270, quirk_backlight_present }, + /* Apple Macbook 4,1 */ + { 0x2a02, 0x106b, 0x00a1, quirk_backlight_present }, + /* Toshiba CB35 Chromebook (Celeron 2955U) */ { 0x0a06, 0x1179, 0x0a88, quirk_backlight_present }, @@ -14585,6 +14647,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 +14730,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 +15243,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 +15251,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; @@ -4947,7 +4894,8 @@ enum intel_display_power_domain power_domain; enum irqreturn ret = IRQ_NONE; - if (intel_dig_port->base.type != INTEL_OUTPUT_EDP) + if (intel_dig_port->base.type != INTEL_OUTPUT_EDP && + intel_dig_port->base.type != INTEL_OUTPUT_HDMI) intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT; if (long_hpd && intel_dig_port->base.type == INTEL_OUTPUT_EDP) { @@ -4987,9 +4935,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 +4948,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 +4989,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 +5781,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 +5902,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 +5918,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 +5937,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_dsi_panel_vbt.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c @@ -207,7 +207,12 @@ gpio = *data++; /* pull up/down */ - action = *data++; + action = *data++ & 1; + + if (gpio >= ARRAY_SIZE(gtable)) { + DRM_DEBUG_KMS("unknown gpio %u\n", gpio); + goto out; + } function = gtable[gpio].function_reg; pad = gtable[gpio].pad_reg; @@ -226,6 +231,7 @@ vlv_gpio_nc_write(dev_priv, pad, val); mutex_unlock(&dev_priv->sb_lock); +out: return data; } --- 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_i2c.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_i2c.c @@ -681,7 +681,7 @@ return 0; err: - while (--pin) { + while (pin--) { if (!intel_gmbus_is_valid_pin(dev_priv, pin)) continue; --- 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); } @@ -1851,6 +1863,17 @@ return 0; } +static void cleanup_phys_status_page(struct intel_engine_cs *ring) +{ + struct drm_i915_private *dev_priv = to_i915(ring->dev); + + if (!dev_priv->status_page_dmah) + return; + + drm_pci_free(ring->dev, dev_priv->status_page_dmah); + ring->status_page.page_addr = NULL; +} + static void cleanup_status_page(struct intel_engine_cs *ring) { struct drm_i915_gem_object *obj; @@ -1867,9 +1890,9 @@ static int init_status_page(struct intel_engine_cs *ring) { - struct drm_i915_gem_object *obj; + struct drm_i915_gem_object *obj = ring->status_page.obj; - if ((obj = ring->status_page.obj) == NULL) { + if (obj == NULL) { unsigned flags; int ret; @@ -2023,7 +2046,7 @@ if (ret) goto error; } else { - BUG_ON(ring->id != RCS); + WARN_ON(ring->id != RCS); ret = init_phys_status_page(ring); if (ret) goto error; @@ -2087,7 +2110,12 @@ if (ring->cleanup) ring->cleanup(ring); - cleanup_status_page(ring); + if (I915_NEED_GFX_HWS(ring->dev)) { + cleanup_status_page(ring); + } else { + WARN_ON(ring->id != RCS); + cleanup_phys_status_page(ring); + } i915_cmd_parser_fini_ring(ring); i915_gem_batch_pool_fini(&ring->batch_pool); --- 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/imx/ipuv3-crtc.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/imx/ipuv3-crtc.c @@ -212,7 +212,8 @@ spin_lock_irqsave(&drm->event_lock, flags); if (ipu_crtc->page_flip_event) - drm_send_vblank_event(drm, -1, ipu_crtc->page_flip_event); + drm_crtc_send_vblank_event(&ipu_crtc->base, + ipu_crtc->page_flip_event); ipu_crtc->page_flip_event = NULL; imx_drm_crtc_vblank_put(ipu_crtc->imx_crtc); spin_unlock_irqrestore(&drm->event_lock, flags); --- 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_connector.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/nouveau/nouveau_connector.c @@ -969,10 +969,13 @@ NV_DEBUG(drm, "%splugged %s\n", plugged ? "" : "un", name); + mutex_lock(&drm->dev->mode_config.mutex); if (plugged) drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); else drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); + mutex_unlock(&drm->dev->mode_config.mutex); + drm_helper_hpd_irq_event(connector->dev); } --- 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/nouveau/nvkm/engine/device/nv40.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/nouveau/nvkm/engine/device/nv40.c @@ -265,7 +265,7 @@ device->oclass[NVDEV_SUBDEV_CLK ] = &nv40_clk_oclass; device->oclass[NVDEV_SUBDEV_THERM ] = &nv40_therm_oclass; device->oclass[NVDEV_SUBDEV_DEVINIT] = nv1a_devinit_oclass; - device->oclass[NVDEV_SUBDEV_MC ] = nv44_mc_oclass; + device->oclass[NVDEV_SUBDEV_MC ] = nv4c_mc_oclass; device->oclass[NVDEV_SUBDEV_BUS ] = nv31_bus_oclass; device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; device->oclass[NVDEV_SUBDEV_FB ] = nv46_fb_oclass; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.c @@ -83,6 +83,7 @@ fan->type = NVBIOS_THERM_FAN_UNK; } + fan->fan_mode = NVBIOS_THERM_FAN_LINEAR; fan->min_duty = nv_ro08(bios, data + 0x02); fan->max_duty = nv_ro08(bios, data + 0x03); --- 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/qxl/qxl_ioctl.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/qxl/qxl_ioctl.c @@ -168,7 +168,8 @@ cmd->command_size)) return -EFAULT; - reloc_info = kmalloc(sizeof(struct qxl_reloc_info) * cmd->relocs_num, GFP_KERNEL); + reloc_info = kmalloc_array(cmd->relocs_num, + sizeof(struct qxl_reloc_info), GFP_KERNEL); if (!reloc_info) return -ENOMEM; --- 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; @@ -891,8 +892,6 @@ else args.v1.ucLaneNum = 4; - if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode) && (dp_clock == 270000)) - args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ; switch (radeon_encoder->encoder_id) { case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER1; @@ -909,6 +908,10 @@ args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKB; else args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKA; + + if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode) && (dp_clock == 270000)) + args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ; + break; case 2: case 3: @@ -1624,8 +1627,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 +1714,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/cik.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/cik.c @@ -4173,11 +4173,7 @@ control |= ib->length_dw | (vm_id << 24); radeon_ring_write(ring, header); - radeon_ring_write(ring, -#ifdef __BIG_ENDIAN - (2 << 0) | -#endif - (ib->gpu_addr & 0xFFFFFFFC)); + radeon_ring_write(ring, (ib->gpu_addr & 0xFFFFFFFC)); radeon_ring_write(ring, upper_32_bits(ib->gpu_addr) & 0xFFFF); radeon_ring_write(ring, control); } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/dce6_afmt.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/dce6_afmt.c @@ -282,6 +282,14 @@ * is the numerator, DCCG_AUDIO_DTOx_MODULE is the denominator */ if (ASIC_IS_DCE8(rdev)) { + unsigned int div = (RREG32(DENTIST_DISPCLK_CNTL) & + DENTIST_DPREFCLK_WDIVIDER_MASK) >> + DENTIST_DPREFCLK_WDIVIDER_SHIFT; + div = radeon_audio_decode_dfs_div(div); + + if (div) + clock = clock * 100 / div; + WREG32(DCE8_DCCG_AUDIO_DTO1_PHASE, 24000); WREG32(DCE8_DCCG_AUDIO_DTO1_MODULE, clock); } else { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/evergreen_hdmi.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/evergreen_hdmi.c @@ -289,6 +289,16 @@ * number (coefficient of two integer numbers. DCCG_AUDIO_DTOx_PHASE * is the numerator, DCCG_AUDIO_DTOx_MODULE is the denominator */ + if (ASIC_IS_DCE41(rdev)) { + unsigned int div = (RREG32(DCE41_DENTIST_DISPCLK_CNTL) & + DENTIST_DPREFCLK_WDIVIDER_MASK) >> + DENTIST_DPREFCLK_WDIVIDER_SHIFT; + div = radeon_audio_decode_dfs_div(div); + + if (div) + clock = 100 * clock / div; + } + WREG32(DCCG_AUDIO_DTO1_PHASE, 24000); WREG32(DCCG_AUDIO_DTO1_MODULE, clock); } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/evergreend.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/evergreend.h @@ -511,6 +511,11 @@ #define DCCG_AUDIO_DTO1_CNTL 0x05cc # define DCCG_AUDIO_DTO1_USE_512FBR_DTO (1 << 3) +#define DCE41_DENTIST_DISPCLK_CNTL 0x049c +# define DENTIST_DPREFCLK_WDIVIDER(x) (((x) & 0x7f) << 24) +# define DENTIST_DPREFCLK_WDIVIDER_MASK (0x7f << 24) +# define DENTIST_DPREFCLK_WDIVIDER_SHIFT 24 + /* DCE 4.0 AFMT */ #define HDMI_CONTROL 0x7030 # define HDMI_KEEPOUT_MODE (1 << 0) --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon.h @@ -268,6 +268,7 @@ uint32_t current_dispclk; uint32_t dp_extclk; uint32_t max_pixel_clock; + uint32_t vco_freq; }; /* @@ -1658,6 +1659,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_atombios.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_atombios.c @@ -437,7 +437,9 @@ } /* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */ - if (((dev->pdev->device == 0x9802) || (dev->pdev->device == 0x9806)) && + if (((dev->pdev->device == 0x9802) || + (dev->pdev->device == 0x9805) || + (dev->pdev->device == 0x9806)) && (dev->pdev->subsystem_vendor == 0x1734) && (dev->pdev->subsystem_device == 0x11bd)) { if (*connector_type == DRM_MODE_CONNECTOR_VGA) { @@ -448,14 +450,6 @@ } } - /* Fujitsu D3003-S2 board lists DVI-I as DVI-I and VGA */ - if ((dev->pdev->device == 0x9805) && - (dev->pdev->subsystem_vendor == 0x1734) && - (dev->pdev->subsystem_device == 0x11bd)) { - if (*connector_type == DRM_MODE_CONNECTOR_VGA) - return false; - } - return true; } @@ -1112,6 +1106,31 @@ ATOM_FIRMWARE_INFO_V2_2 info_22; }; +union igp_info { + struct _ATOM_INTEGRATED_SYSTEM_INFO info; + struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 info_2; + struct _ATOM_INTEGRATED_SYSTEM_INFO_V6 info_6; + struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7 info_7; + struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8 info_8; +}; + +static void radeon_atombios_get_dentist_vco_freq(struct radeon_device *rdev) +{ + struct radeon_mode_info *mode_info = &rdev->mode_info; + int index = GetIndexIntoMasterTable(DATA, IntegratedSystemInfo); + union igp_info *igp_info; + u8 frev, crev; + u16 data_offset; + + if (atom_parse_data_header(mode_info->atom_context, index, NULL, + &frev, &crev, &data_offset)) { + igp_info = (union igp_info *)(mode_info->atom_context->bios + + data_offset); + rdev->clock.vco_freq = + le32_to_cpu(igp_info->info_6.ulDentistVCOFreq); + } +} + bool radeon_atom_get_clock_info(struct drm_device *dev) { struct radeon_device *rdev = dev->dev_private; @@ -1263,20 +1282,25 @@ rdev->mode_info.firmware_flags = le16_to_cpu(firmware_info->info.usFirmwareCapability.susAccess); + if (ASIC_IS_DCE8(rdev)) + rdev->clock.vco_freq = + le32_to_cpu(firmware_info->info_22.ulGPUPLL_OutputFreq); + else if (ASIC_IS_DCE5(rdev)) + rdev->clock.vco_freq = rdev->clock.current_dispclk; + else if (ASIC_IS_DCE41(rdev)) + radeon_atombios_get_dentist_vco_freq(rdev); + else + rdev->clock.vco_freq = rdev->clock.current_dispclk; + + if (rdev->clock.vco_freq == 0) + rdev->clock.vco_freq = 360000; /* 3.6 GHz */ + return true; } return false; } -union igp_info { - struct _ATOM_INTEGRATED_SYSTEM_INFO info; - struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 info_2; - struct _ATOM_INTEGRATED_SYSTEM_INFO_V6 info_6; - struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7 info_7; - struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8 info_8; -}; - bool radeon_atombios_sideport_present(struct radeon_device *rdev) { struct radeon_mode_info *mode_info = &rdev->mode_info; --- 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)); @@ -737,9 +739,6 @@ struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); - struct radeon_connector *radeon_connector = to_radeon_connector(connector); - struct radeon_connector_atom_dig *dig_connector = - radeon_connector->con_priv; if (!dig || !dig->afmt) return; @@ -751,10 +750,7 @@ radeon_audio_write_speaker_allocation(encoder); radeon_audio_write_sad_regs(encoder); radeon_audio_write_latency_fields(encoder, mode); - if (rdev->clock.dp_extclk || ASIC_IS_DCE5(rdev)) - radeon_audio_set_dto(encoder, rdev->clock.default_dispclk * 10); - else - radeon_audio_set_dto(encoder, dig_connector->dp_clock); + radeon_audio_set_dto(encoder, rdev->clock.vco_freq * 10); radeon_audio_set_audio_packet(encoder); radeon_audio_select_pin(encoder); @@ -779,3 +775,15 @@ if (radeon_encoder->audio && radeon_encoder->audio->dpms) radeon_encoder->audio->dpms(encoder, mode == DRM_MODE_DPMS_ON); } + +unsigned int radeon_audio_decode_dfs_div(unsigned int div) +{ + if (div >= 8 && div < 64) + return (div - 8) * 25 + 200; + else if (div >= 64 && div < 96) + return (div - 64) * 50 + 1600; + else if (div >= 96 && div < 128) + return (div - 96) * 100 + 3200; + else + return 0; +} --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_audio.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_audio.h @@ -79,5 +79,6 @@ void radeon_audio_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode); void radeon_audio_dpms(struct drm_encoder *encoder, int mode); +unsigned int radeon_audio_decode_dfs_div(unsigned int div); #endif --- 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_fb.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_fb.c @@ -334,7 +334,8 @@ void radeon_fb_output_poll_changed(struct radeon_device *rdev) { - drm_fb_helper_hotplug_event(&rdev->mode_info.rfbdev->helper); + if (rdev->mode_info.rfbdev) + drm_fb_helper_hotplug_event(&rdev->mode_info.rfbdev->helper); } static int radeon_fbdev_destroy(struct drm_device *dev, struct radeon_fbdev *rfbdev) @@ -374,6 +375,10 @@ int bpp_sel = 32; int ret; + /* don't enable fbdev if no connectors */ + if (list_empty(&rdev->ddev->mode_config.connector_list)) + return 0; + /* select 8 bpp console on RN50 or 16MB cards */ if (ASIC_IS_RN50(rdev) || rdev->mc.real_vram_size <= (32*1024*1024)) bpp_sel = 8; @@ -426,11 +431,15 @@ void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state) { - fb_set_suspend(rdev->mode_info.rfbdev->helper.fbdev, state); + if (rdev->mode_info.rfbdev) + fb_set_suspend(rdev->mode_info.rfbdev->helper.fbdev, state); } bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj) { + if (!rdev->mode_info.rfbdev) + return false; + if (robj == gem_to_radeon_bo(rdev->mode_info.rfbdev->rfb.obj)) return true; return false; @@ -438,10 +447,12 @@ void radeon_fb_add_connector(struct radeon_device *rdev, struct drm_connector *connector) { - drm_fb_helper_add_one_connector(&rdev->mode_info.rfbdev->helper, connector); + if (rdev->mode_info.rfbdev) + drm_fb_helper_add_one_connector(&rdev->mode_info.rfbdev->helper, connector); } void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector *connector) { - drm_fb_helper_remove_one_connector(&rdev->mode_info.rfbdev->helper, connector); + if (rdev->mode_info.rfbdev) + drm_fb_helper_remove_one_connector(&rdev->mode_info.rfbdev->helper, connector); } --- 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_object.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_object.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "radeon.h" #include "radeon_trace.h" @@ -221,6 +222,12 @@ if (!(rdev->flags & RADEON_IS_PCIE)) bo->flags &= ~(RADEON_GEM_GTT_WC | RADEON_GEM_GTT_UC); + /* Write-combined CPU mappings of GTT cause GPU hangs with RV6xx + * See https://bugs.freedesktop.org/show_bug.cgi?id=91268 + */ + if (rdev->family >= CHIP_RV610 && rdev->family <= CHIP_RV635) + bo->flags &= ~(RADEON_GEM_GTT_WC | RADEON_GEM_GTT_UC); + #ifdef CONFIG_X86_32 /* XXX: Write-combined CPU mappings of GTT seem broken on 32-bit * See https://bugs.freedesktop.org/show_bug.cgi?id=84627 @@ -238,6 +245,12 @@ DRM_INFO_ONCE("Please enable CONFIG_MTRR and CONFIG_X86_PAT for " "better performance thanks to write-combining\n"); bo->flags &= ~RADEON_GEM_GTT_WC; +#else + /* For architectures that don't support WC memory, + * mask out the WC flag from the BO + */ + if (!drm_arch_can_wc_memory()) + bo->flags &= ~RADEON_GEM_GTT_WC; #endif radeon_ttm_placement_from_domain(bo, domain); --- 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 */ @@ -1078,10 +1082,6 @@ /* update displays */ radeon_dpm_display_configuration_changed(rdev); - rdev->pm.dpm.current_active_crtcs = rdev->pm.dpm.new_active_crtcs; - rdev->pm.dpm.current_active_crtc_count = rdev->pm.dpm.new_active_crtc_count; - rdev->pm.dpm.single_display = single_display; - /* wait for the rings to drain */ for (i = 0; i < RADEON_NUM_RINGS; i++) { struct radeon_ring *ring = &rdev->ring[i]; @@ -1097,6 +1097,10 @@ radeon_dpm_post_set_power_state(rdev); + rdev->pm.dpm.current_active_crtcs = rdev->pm.dpm.new_active_crtcs; + rdev->pm.dpm.current_active_crtc_count = rdev->pm.dpm.new_active_crtc_count; + rdev->pm.dpm.single_display = single_display; + if (rdev->asic->dpm.force_performance_level) { if (rdev->pm.dpm.thermal_active) { enum radeon_dpm_forced_level level = rdev->pm.dpm.forced_level; @@ -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,50 @@ 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"); + 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/radeon_sa.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_sa.c @@ -349,8 +349,13 @@ /* see if we can skip over some allocations */ } while (radeon_sa_bo_next_hole(sa_manager, fences, tries)); + for (i = 0; i < RADEON_NUM_RINGS; ++i) + radeon_fence_ref(fences[i]); + spin_unlock(&sa_manager->wq.lock); r = radeon_fence_wait_any(rdev, fences, false); + for (i = 0; i < RADEON_NUM_RINGS; ++i) + radeon_fence_unref(&fences[i]); spin_lock(&sa_manager->wq.lock); /* if we have nothing to wait for block */ if (r == -ENOENT) { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_ttm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_ttm.c @@ -758,7 +758,7 @@ 0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); if (pci_dma_mapping_error(rdev->pdev, gtt->ttm.dma_address[i])) { - while (--i) { + while (i--) { pci_unmap_page(rdev->pdev, gtt->ttm.dma_address[i], PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); gtt->ttm.dma_address[i] = 0; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_vce.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_vce.c @@ -361,31 +361,31 @@ /* stitch together an VCE create msg */ ib.length_dw = 0; - ib.ptr[ib.length_dw++] = 0x0000000c; /* len */ - ib.ptr[ib.length_dw++] = 0x00000001; /* session cmd */ - ib.ptr[ib.length_dw++] = handle; - - ib.ptr[ib.length_dw++] = 0x00000030; /* len */ - ib.ptr[ib.length_dw++] = 0x01000001; /* create cmd */ - ib.ptr[ib.length_dw++] = 0x00000000; - ib.ptr[ib.length_dw++] = 0x00000042; - ib.ptr[ib.length_dw++] = 0x0000000a; - ib.ptr[ib.length_dw++] = 0x00000001; - ib.ptr[ib.length_dw++] = 0x00000080; - ib.ptr[ib.length_dw++] = 0x00000060; - ib.ptr[ib.length_dw++] = 0x00000100; - ib.ptr[ib.length_dw++] = 0x00000100; - ib.ptr[ib.length_dw++] = 0x0000000c; - ib.ptr[ib.length_dw++] = 0x00000000; - - ib.ptr[ib.length_dw++] = 0x00000014; /* len */ - ib.ptr[ib.length_dw++] = 0x05000005; /* feedback buffer */ - ib.ptr[ib.length_dw++] = upper_32_bits(dummy); - ib.ptr[ib.length_dw++] = dummy; - ib.ptr[ib.length_dw++] = 0x00000001; + ib.ptr[ib.length_dw++] = cpu_to_le32(0x0000000c); /* len */ + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001); /* session cmd */ + ib.ptr[ib.length_dw++] = cpu_to_le32(handle); + + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000030); /* len */ + ib.ptr[ib.length_dw++] = cpu_to_le32(0x01000001); /* create cmd */ + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000000); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000042); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x0000000a); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000080); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000060); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000100); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000100); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x0000000c); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000000); + + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000014); /* len */ + ib.ptr[ib.length_dw++] = cpu_to_le32(0x05000005); /* feedback buffer */ + ib.ptr[ib.length_dw++] = cpu_to_le32(upper_32_bits(dummy)); + ib.ptr[ib.length_dw++] = cpu_to_le32(dummy); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001); for (i = ib.length_dw; i < ib_size_dw; ++i) - ib.ptr[i] = 0x0; + ib.ptr[i] = cpu_to_le32(0x0); r = radeon_ib_schedule(rdev, &ib, NULL, false); if (r) { @@ -428,21 +428,21 @@ /* stitch together an VCE destroy msg */ ib.length_dw = 0; - ib.ptr[ib.length_dw++] = 0x0000000c; /* len */ - ib.ptr[ib.length_dw++] = 0x00000001; /* session cmd */ - ib.ptr[ib.length_dw++] = handle; - - ib.ptr[ib.length_dw++] = 0x00000014; /* len */ - ib.ptr[ib.length_dw++] = 0x05000005; /* feedback buffer */ - ib.ptr[ib.length_dw++] = upper_32_bits(dummy); - ib.ptr[ib.length_dw++] = dummy; - ib.ptr[ib.length_dw++] = 0x00000001; + ib.ptr[ib.length_dw++] = cpu_to_le32(0x0000000c); /* len */ + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001); /* session cmd */ + ib.ptr[ib.length_dw++] = cpu_to_le32(handle); + + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000014); /* len */ + ib.ptr[ib.length_dw++] = cpu_to_le32(0x05000005); /* feedback buffer */ + ib.ptr[ib.length_dw++] = cpu_to_le32(upper_32_bits(dummy)); + ib.ptr[ib.length_dw++] = cpu_to_le32(dummy); + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001); - ib.ptr[ib.length_dw++] = 0x00000008; /* len */ - ib.ptr[ib.length_dw++] = 0x02000001; /* destroy cmd */ + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000008); /* len */ + ib.ptr[ib.length_dw++] = cpu_to_le32(0x02000001); /* destroy cmd */ for (i = ib.length_dw; i < ib_size_dw; ++i) - ib.ptr[i] = 0x0; + ib.ptr[i] = cpu_to_le32(0x0); r = radeon_ib_schedule(rdev, &ib, NULL, false); if (r) { @@ -699,12 +699,12 @@ { uint64_t addr = semaphore->gpu_addr; - radeon_ring_write(ring, VCE_CMD_SEMAPHORE); - radeon_ring_write(ring, (addr >> 3) & 0x000FFFFF); - radeon_ring_write(ring, (addr >> 23) & 0x000FFFFF); - radeon_ring_write(ring, 0x01003000 | (emit_wait ? 1 : 0)); + radeon_ring_write(ring, cpu_to_le32(VCE_CMD_SEMAPHORE)); + radeon_ring_write(ring, cpu_to_le32((addr >> 3) & 0x000FFFFF)); + radeon_ring_write(ring, cpu_to_le32((addr >> 23) & 0x000FFFFF)); + radeon_ring_write(ring, cpu_to_le32(0x01003000 | (emit_wait ? 1 : 0))); if (!emit_wait) - radeon_ring_write(ring, VCE_CMD_END); + radeon_ring_write(ring, cpu_to_le32(VCE_CMD_END)); return true; } @@ -719,10 +719,10 @@ void radeon_vce_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib) { struct radeon_ring *ring = &rdev->ring[ib->ring]; - radeon_ring_write(ring, VCE_CMD_IB); - radeon_ring_write(ring, ib->gpu_addr); - radeon_ring_write(ring, upper_32_bits(ib->gpu_addr)); - radeon_ring_write(ring, ib->length_dw); + radeon_ring_write(ring, cpu_to_le32(VCE_CMD_IB)); + radeon_ring_write(ring, cpu_to_le32(ib->gpu_addr)); + radeon_ring_write(ring, cpu_to_le32(upper_32_bits(ib->gpu_addr))); + radeon_ring_write(ring, cpu_to_le32(ib->length_dw)); } /** @@ -738,12 +738,12 @@ struct radeon_ring *ring = &rdev->ring[fence->ring]; uint64_t addr = rdev->fence_drv[fence->ring].gpu_addr; - radeon_ring_write(ring, VCE_CMD_FENCE); - radeon_ring_write(ring, addr); - radeon_ring_write(ring, upper_32_bits(addr)); - radeon_ring_write(ring, fence->seq); - radeon_ring_write(ring, VCE_CMD_TRAP); - radeon_ring_write(ring, VCE_CMD_END); + radeon_ring_write(ring, cpu_to_le32(VCE_CMD_FENCE)); + radeon_ring_write(ring, cpu_to_le32(addr)); + radeon_ring_write(ring, cpu_to_le32(upper_32_bits(addr))); + radeon_ring_write(ring, cpu_to_le32(fence->seq)); + radeon_ring_write(ring, cpu_to_le32(VCE_CMD_TRAP)); + radeon_ring_write(ring, cpu_to_le32(VCE_CMD_END)); } /** @@ -765,7 +765,7 @@ ring->idx, r); return r; } - radeon_ring_write(ring, VCE_CMD_END); + radeon_ring_write(ring, cpu_to_le32(VCE_CMD_END)); radeon_ring_unlock_commit(rdev, ring, false); for (i = 0; i < rdev->usec_timeout; i++) { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_vm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_vm.c @@ -455,15 +455,15 @@ if (soffset) { /* make sure object fit at this offset */ - eoffset = soffset + size; + eoffset = soffset + size - 1; if (soffset >= eoffset) { r = -EINVAL; goto error_unreserve; } last_pfn = eoffset / RADEON_GPU_PAGE_SIZE; - if (last_pfn > rdev->vm_manager.max_pfn) { - dev_err(rdev->dev, "va above limit (0x%08X > 0x%08X)\n", + if (last_pfn >= rdev->vm_manager.max_pfn) { + dev_err(rdev->dev, "va above limit (0x%08X >= 0x%08X)\n", last_pfn, rdev->vm_manager.max_pfn); r = -EINVAL; goto error_unreserve; @@ -478,7 +478,7 @@ eoffset /= RADEON_GPU_PAGE_SIZE; if (soffset || eoffset) { struct interval_tree_node *it; - it = interval_tree_iter_first(&vm->va, soffset, eoffset - 1); + it = interval_tree_iter_first(&vm->va, soffset, eoffset); if (it && it != &bo_va->it) { struct radeon_bo_va *tmp; tmp = container_of(it, struct radeon_bo_va, it); @@ -518,7 +518,7 @@ if (soffset || eoffset) { spin_lock(&vm->status_lock); bo_va->it.start = soffset; - bo_va->it.last = eoffset - 1; + bo_va->it.last = eoffset; list_add(&bo_va->vm_status, &vm->cleared); spin_unlock(&vm->status_lock); interval_tree_insert(&bo_va->it, &vm->va); @@ -888,7 +888,7 @@ unsigned i; start >>= radeon_vm_block_size; - end >>= radeon_vm_block_size; + end = (end - 1) >> radeon_vm_block_size; for (i = start; i <= end; ++i) radeon_bo_fence(vm->page_tables[i].bo, fence, true); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/rv730_dpm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/rv730_dpm.c @@ -464,7 +464,7 @@ result = rv770_send_msg_to_smc(rdev, PPSMC_MSG_TwoLevelsDisabled); if (result != PPSMC_Result_OK) - DRM_ERROR("Could not force DPM to low\n"); + DRM_DEBUG("Could not force DPM to low\n"); WREG32_P(GENERAL_PWRMGT, 0, ~GLOBAL_PWRMGT_EN); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/rv770_dpm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/rv770_dpm.c @@ -193,7 +193,7 @@ result = rv770_send_msg_to_smc(rdev, PPSMC_MSG_TwoLevelsDisabled); if (result != PPSMC_Result_OK) - DRM_ERROR("Could not force DPM to low.\n"); + DRM_DEBUG("Could not force DPM to low.\n"); WREG32_P(GENERAL_PWRMGT, 0, ~GLOBAL_PWRMGT_EN); @@ -1418,7 +1418,7 @@ int rv770_set_sw_state(struct radeon_device *rdev) { if (rv770_send_msg_to_smc(rdev, PPSMC_MSG_SwitchToSwState) != PPSMC_Result_OK) - return -EINVAL; + DRM_DEBUG("rv770_set_sw_state failed\n"); return 0; } --- 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 @@ -2926,7 +2926,11 @@ /* PITCAIRN - https://bugs.freedesktop.org/show_bug.cgi?id=76490 */ { PCI_VENDOR_ID_ATI, 0x6810, 0x1462, 0x3036, 0, 120000 }, { PCI_VENDOR_ID_ATI, 0x6811, 0x174b, 0xe271, 0, 120000 }, + { PCI_VENDOR_ID_ATI, 0x6811, 0x174b, 0x2015, 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 }, + { PCI_VENDOR_ID_ATI, 0x6811, 0x148c, 0x2015, 0, 120000 }, { 0, 0, 0, 0 }, }; @@ -3006,6 +3010,10 @@ } ++p; } + /* limit mclk on all R7 370 parts for stability */ + if (rdev->pdev->device == 0x6811 && + rdev->pdev->revision == 0x81) + max_mclk = 120000; if (rps->vce_active) { rps->evclk = rdev->pm.dpm.vce_states[rdev->pm.dpm.vce_level].evclk; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/sid.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/sid.h @@ -915,6 +915,11 @@ #define DCCG_AUDIO_DTO1_PHASE 0x05c0 #define DCCG_AUDIO_DTO1_MODULE 0x05c4 +#define DENTIST_DISPCLK_CNTL 0x0490 +# define DENTIST_DPREFCLK_WDIVIDER(x) (((x) & 0x7f) << 24) +# define DENTIST_DPREFCLK_WDIVIDER_MASK (0x7f << 24) +# define DENTIST_DPREFCLK_WDIVIDER_SHIFT 24 + #define AFMT_AUDIO_SRC_CONTROL 0x713c #define AFMT_AUDIO_SRC_SELECT(x) (((x) & 7) << 0) /* AFMT_AUDIO_SRC_SELECT --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/vce_v1_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/vce_v1_0.c @@ -178,12 +178,12 @@ return -EINVAL; } - for (i = 0; i < sign->num; ++i) { - if (sign->val[i].chip_id == chip_id) + for (i = 0; i < le32_to_cpu(sign->num); ++i) { + if (le32_to_cpu(sign->val[i].chip_id) == chip_id) break; } - if (i == sign->num) + if (i == le32_to_cpu(sign->num)) return -EINVAL; data += (256 - 64) / 4; @@ -191,18 +191,18 @@ data[1] = sign->val[i].nonce[1]; data[2] = sign->val[i].nonce[2]; data[3] = sign->val[i].nonce[3]; - data[4] = sign->len + 64; + data[4] = cpu_to_le32(le32_to_cpu(sign->len) + 64); memset(&data[5], 0, 44); memcpy(&data[16], &sign[1], rdev->vce_fw->size - sizeof(*sign)); - data += data[4] / 4; + data += le32_to_cpu(data[4]) / 4; data[0] = sign->val[i].sigval[0]; data[1] = sign->val[i].sigval[1]; data[2] = sign->val[i].sigval[2]; data[3] = sign->val[i].sigval[3]; - rdev->vce.keyselect = sign->val[i].keyselect; + rdev->vce.keyselect = le32_to_cpu(sign->val[i].keyselect); return 0; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/rockchip/rockchip_drm_gem.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/rockchip/rockchip_drm_gem.c @@ -67,6 +67,7 @@ * VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap(). */ vma->vm_flags &= ~VM_PFNMAP; + vma->vm_pgoff = 0; ret = dma_mmap_attrs(drm->dev, vma, rk_obj->kvaddr, rk_obj->dma_addr, obj->size, &rk_obj->dma_attrs); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/ttm/ttm_lock.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/ttm/ttm_lock.c @@ -180,7 +180,7 @@ spin_unlock(&lock->lock); } } else - wait_event(lock->queue, __ttm_read_lock(lock)); + wait_event(lock->queue, __ttm_write_lock(lock)); return ret; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/udl/udl_fb.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/udl/udl_fb.c @@ -546,7 +546,7 @@ return ret; out_gfree: - drm_gem_object_unreference(&ufbdev->ufb.obj->base); + drm_gem_object_unreference_unlocked(&ufbdev->ufb.obj->base); out: return ret; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/udl/udl_gem.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/udl/udl_gem.c @@ -52,7 +52,7 @@ return ret; } - drm_gem_object_unreference(&obj->base); + drm_gem_object_unreference_unlocked(&obj->base); *handle_p = handle; return 0; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/virtio/virtgpu_display.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/virtio/virtgpu_display.c @@ -361,7 +361,7 @@ .save = virtio_gpu_conn_save, .restore = virtio_gpu_conn_restore, .detect = virtio_gpu_conn_detect, - .fill_modes = drm_helper_probe_single_connector_modes, + .fill_modes = drm_helper_probe_single_connector_modes_nomerge, .destroy = virtio_gpu_conn_destroy, .reset = drm_atomic_helper_connector_reset, .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, --- 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 @@ -25,6 +25,7 @@ * **************************************************************************/ #include +#include #include #include "vmwgfx_drv.h" @@ -1447,6 +1448,12 @@ static int __init vmwgfx_init(void) { int ret; + +#ifdef CONFIG_VGA_CONSOLE + if (vgacon_text_force()) + return -EINVAL; +#endif + ret = drm_pci_init(&driver, &vmw_pci_driver); if (ret) DRM_ERROR("Failed initializing DRM.\n"); @@ -1458,6 +1465,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_fb.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c @@ -402,12 +402,12 @@ *out = vmw_bo; - ttm_write_unlock(&vmw_priv->fbdev_master.lock); + ttm_write_unlock(&vmw_priv->reservation_sem); return 0; err_unlock: - ttm_write_unlock(&vmw_priv->fbdev_master.lock); + ttm_write_unlock(&vmw_priv->reservation_sem); return ret; } --- 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/gpu/vga/vgaarb.c +++ linux-raspi2-4.2.0/drivers/gpu/vga/vgaarb.c @@ -394,8 +394,10 @@ set_current_state(interruptible ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE); - if (signal_pending(current)) { - rc = -EINTR; + if (interruptible && signal_pending(current)) { + __set_current_state(TASK_RUNNING); + remove_wait_queue(&vga_wait_queue, &wait); + rc = -ERESTARTSYS; break; } schedule(); --- 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; @@ -1870,6 +1870,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_EXTREME_3D) }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DUAL_ACTION) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WHEEL) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD_CORD) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD) }, @@ -2270,6 +2271,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) }, @@ -2582,9 +2584,10 @@ /* * Scan generic devices for group information */ - if (hid_ignore_special_drivers || - (!hdev->group && - !hid_match_id(hdev, hid_have_special_driver))) { + if (hid_ignore_special_drivers) { + hdev->group = HID_GROUP_GENERIC; + } else if (!hdev->group && + !hid_match_id(hdev, hid_have_special_driver)) { ret = hid_scan_report(hdev); if (ret) hid_warn(hdev, "bad device descriptor (%d)\n", ret); --- 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/i2c-hid/i2c-hid.c +++ linux-raspi2-4.2.0/drivers/hid/i2c-hid/i2c-hid.c @@ -280,17 +280,21 @@ u16 dataRegister = le16_to_cpu(ihid->hdesc.wDataRegister); u16 outputRegister = le16_to_cpu(ihid->hdesc.wOutputRegister); u16 maxOutputLength = le16_to_cpu(ihid->hdesc.wMaxOutputLength); + u16 size; + int args_len; + int index = 0; + + i2c_hid_dbg(ihid, "%s\n", __func__); + + if (data_len > ihid->bufsize) + return -EINVAL; - /* hid_hw_* already checked that data_len < HID_MAX_BUFFER_SIZE */ - u16 size = 2 /* size */ + + size = 2 /* size */ + (reportID ? 1 : 0) /* reportID */ + data_len /* buf */; - int args_len = (reportID >= 0x0F ? 1 : 0) /* optional third byte */ + + args_len = (reportID >= 0x0F ? 1 : 0) /* optional third byte */ + 2 /* dataRegister */ + size /* args */; - int index = 0; - - i2c_hid_dbg(ihid, "%s\n", __func__); if (!use_data && maxOutputLength == 0) return -ENOSYS; --- 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: @@ -628,10 +630,19 @@ * on the ring. We will not signal if more data is * to be placed. * + * Based on the channel signal state, we will decide + * which signaling policy will be applied. + * * If we cannot write to the ring-buffer; signal the host * even if we may not have written anything. This is a rare * enough condition that it should not matter. */ + + if (channel->signal_policy) + signal = true; + else + kick_q = true; + if (((ret == 0) && kick_q && signal) || (ret)) vmbus_setevent(channel); @@ -731,10 +742,19 @@ * on the ring. We will not signal if more data is * to be placed. * + * Based on the channel signal state, we will decide + * which signaling policy will be applied. + * * If we cannot write to the ring-buffer; signal the host * even if we may not have written anything. This is a rare * enough condition that it should not matter. */ + + if (channel->signal_policy) + signal = true; + else + kick_q = true; + if (((ret == 0) && kick_q && signal) || (ret)) vmbus_setevent(channel); --- 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_snapshot.c +++ linux-raspi2-4.2.0/drivers/hv/hv_snapshot.c @@ -338,6 +338,11 @@ int hv_vss_init(struct hv_util_service *srv) { + if (vmbus_proto_version < VERSION_WIN8_1) { + pr_warn("Integration service 'Backup (volume snapshot)'" + " not supported on this host version.\n"); + return -ENOTSUPP; + } recv_buffer = srv->recv_buffer; /* --- linux-raspi2-4.2.0.orig/drivers/hv/hv_utils_transport.c +++ linux-raspi2-4.2.0/drivers/hv/hv_utils_transport.c @@ -80,11 +80,10 @@ hvt = container_of(file->f_op, struct hvutil_transport, fops); - inmsg = kzalloc(count, GFP_KERNEL); - if (copy_from_user(inmsg, buf, count)) { - kfree(inmsg); - return -EFAULT; - } + inmsg = memdup_user(buf, count); + if (IS_ERR(inmsg)) + return PTR_ERR(inmsg); + if (hvt->on_msg(inmsg, count)) return -EFAULT; kfree(inmsg); @@ -186,7 +185,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; @@ -204,9 +203,12 @@ goto out_unlock; } hvt->outmsg = kzalloc(len, GFP_KERNEL); - memcpy(hvt->outmsg, msg, len); - hvt->outmsg_len = len; - wake_up_interruptible(&hvt->outmsg_q); + if (hvt->outmsg) { + memcpy(hvt->outmsg, msg, len); + hvt->outmsg_len = len; + wake_up_interruptible(&hvt->outmsg_q); + } else + ret = -ENOMEM; out_unlock: mutex_unlock(&hvt->outmsg_lock); return ret; --- 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,8 @@ * 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(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,11 +121,7 @@ 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)) + if (cur_write_sz >= pending_sz) return true; return false; @@ -517,7 +511,6 @@ u32 next_read_location = 0; u64 prev_indices = 0; unsigned long flags; - u32 old_read; if (buflen <= 0) return -EINVAL; @@ -528,8 +521,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 +551,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(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/ads1015.c +++ linux-raspi2-4.2.0/drivers/hwmon/ads1015.c @@ -126,7 +126,7 @@ struct ads1015_data *data = i2c_get_clientdata(client); unsigned int pga = data->channel_data[channel].pga; int fullscale = fullscale_table[pga]; - const unsigned mask = data->id == ads1115 ? 0x7fff : 0x7ff0; + const int mask = data->id == ads1115 ? 0x7fff : 0x7ff0; return DIV_ROUND_CLOSEST(reg * fullscale, mask); } --- linux-raspi2-4.2.0.orig/drivers/hwmon/dell-smm-hwmon.c +++ linux-raspi2-4.2.0/drivers/hwmon/dell-smm-hwmon.c @@ -932,6 +932,17 @@ static struct dmi_system_id i8k_blacklist_dmi_table[] __initdata = { { /* + * CPU fan speed going up and down on Dell Studio XPS 8000 + * for unknown reasons. + */ + .ident = "Dell Studio XPS 8000", + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Studio XPS 8000"), + }, + }, + { + /* * CPU fan speed going up and down on Dell Studio XPS 8100 * for unknown reasons. */ --- linux-raspi2-4.2.0.orig/drivers/hwmon/gpio-fan.c +++ linux-raspi2-4.2.0/drivers/hwmon/gpio-fan.c @@ -406,16 +406,11 @@ unsigned long *state) { struct gpio_fan_data *fan_data = cdev->devdata; - int r; if (!fan_data) return -EINVAL; - r = get_fan_speed_index(fan_data); - if (r < 0) - return r; - - *state = r; + *state = fan_data->speed_index; return 0; } --- linux-raspi2-4.2.0.orig/drivers/hwmon/max1111.c +++ linux-raspi2-4.2.0/drivers/hwmon/max1111.c @@ -85,6 +85,9 @@ int max1111_read_channel(int channel) { + if (!the_max1111 || !the_max1111->spi) + return -ENODEV; + return max1111_read(&the_max1111->spi->dev, channel); } EXPORT_SYMBOL(max1111_read_channel); @@ -258,6 +261,9 @@ { struct max1111_data *data = spi_get_drvdata(spi); +#ifdef CONFIG_SHARPSL_PM + the_max1111 = NULL; +#endif hwmon_device_unregister(data->hwmon_dev); sysfs_remove_group(&spi->dev.kobj, &max1110_attr_group); sysfs_remove_group(&spi->dev.kobj, &max1111_attr_group); --- 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/hwspinlock/hwspinlock_core.c +++ linux-raspi2-4.2.0/drivers/hwspinlock/hwspinlock_core.c @@ -313,6 +313,10 @@ hwlock = radix_tree_deref_slot(slot); if (unlikely(!hwlock)) continue; + if (radix_tree_is_indirect_ptr(hwlock)) { + slot = radix_tree_iter_retry(&iter); + continue; + } if (hwlock->bank->dev->of_node == args.np) { ret = 0; --- linux-raspi2-4.2.0.orig/drivers/hwtracing/coresight/coresight.c +++ linux-raspi2-4.2.0/drivers/hwtracing/coresight/coresight.c @@ -543,7 +543,7 @@ to_match = data; i_csdev = to_coresight_device(dev); - if (!strcmp(to_match, dev_name(&i_csdev->dev))) + if (to_match && !strcmp(to_match, dev_name(&i_csdev->dev))) return 1; return 0; --- 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-brcmstb.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-brcmstb.c @@ -562,8 +562,7 @@ if (!dev) return -ENOMEM; - dev->bsc_regmap = devm_kzalloc(&pdev->dev, sizeof(struct bsc_regs *), - GFP_KERNEL); + dev->bsc_regmap = devm_kzalloc(&pdev->dev, sizeof(*dev->bsc_regmap), GFP_KERNEL); if (!dev->bsc_regmap) return -ENOMEM; --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-designware-core.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-designware-core.c @@ -811,6 +811,12 @@ tx_aborted: if ((stat & (DW_IC_INTR_TX_ABRT | DW_IC_INTR_STOP_DET)) || dev->msg_err) complete(&dev->cmd_complete); + else if (unlikely(dev->accessor_flags & ACCESS_INTR_MASK)) { + /* workaround to trigger pending interrupt */ + stat = dw_readl(dev, DW_IC_INTR_MASK); + i2c_dw_disable_int(dev); + dw_writel(dev, stat, DW_IC_INTR_MASK); + } return IRQ_HANDLED; } --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-designware-core.h +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-designware-core.h @@ -111,6 +111,7 @@ #define ACCESS_SWAP 0x00000001 #define ACCESS_16BIT 0x00000002 +#define ACCESS_INTR_MASK 0x00000004 extern u32 dw_readl(struct dw_i2c_dev *dev, int offset); extern void dw_writel(struct dw_i2c_dev *dev, u32 b, int offset); --- 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; @@ -91,29 +111,13 @@ dw_i2c_acpi_params(pdev, "FMCN", &dev->fs_hcnt, &dev->fs_lcnt, &dev->sda_hold_time); - /* - * Provide a way for Designware I2C host controllers that are not - * based on Intel LPSS to specify their input clock frequency via - * id->driver_data. - */ id = acpi_match_device(pdev->dev.driver->acpi_match_table, &pdev->dev); if (id && id->driver_data) - clk_register_fixed_rate(&pdev->dev, dev_name(&pdev->dev), NULL, - CLK_IS_ROOT, id->driver_data); + dev->accessor_flags |= (u32)id->driver_data; return 0; } -static void dw_i2c_acpi_unconfigure(struct platform_device *pdev) -{ - struct dw_i2c_dev *dev = platform_get_drvdata(pdev); - const struct acpi_device_id *id; - - id = acpi_match_device(pdev->dev.driver->acpi_match_table, &pdev->dev); - if (id && id->driver_data) - clk_unregister(dev->clk); -} - static const struct acpi_device_id dw_i2c_acpi_match[] = { { "INT33C2", 0 }, { "INT33C3", 0 }, @@ -121,7 +125,7 @@ { "INT3433", 0 }, { "80860F41", 0 }, { "808622C1", 0 }, - { "AMD0010", 133 * 1000 * 1000 }, + { "AMD0010", ACCESS_INTR_MASK }, { } }; MODULE_DEVICE_TABLE(acpi, dw_i2c_acpi_match); @@ -130,7 +134,6 @@ { return -ENODEV; } -static inline void dw_i2c_acpi_unconfigure(struct platform_device *pdev) { } #endif static int dw_i2c_probe(struct platform_device *pdev) @@ -253,12 +256,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 +265,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; } @@ -285,9 +289,6 @@ pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); - if (has_acpi_companion(&pdev->dev)) - dw_i2c_acpi_unconfigure(pdev); - 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 @@ -146,6 +146,8 @@ bool errata_delay; struct reset_control *rstc; bool irq_clear_inverted; + /* Clk div is 2 to the power n, not 2 to the power n + 1 */ + bool clk_n_base_0; }; static struct mv64xxx_i2c_regs mv64xxx_i2c_regs_mv64xxx = { @@ -669,8 +671,6 @@ struct i2c_msg *msgs = drv_data->msgs; int num = drv_data->num_msgs; - return false; - if (!drv_data->offload_enabled) return false; @@ -759,25 +759,29 @@ #ifdef CONFIG_OF #ifdef CONFIG_HAVE_CLK static int -mv64xxx_calc_freq(const int tclk, const int n, const int m) +mv64xxx_calc_freq(struct mv64xxx_i2c_data *drv_data, + const int tclk, const int n, const int m) { - return tclk / (10 * (m + 1) * (2 << n)); + if (drv_data->clk_n_base_0) + return tclk / (10 * (m + 1) * (1 << n)); + else + return tclk / (10 * (m + 1) * (2 << n)); } static bool -mv64xxx_find_baud_factors(const u32 req_freq, const u32 tclk, u32 *best_n, - u32 *best_m) +mv64xxx_find_baud_factors(struct mv64xxx_i2c_data *drv_data, + const u32 req_freq, const u32 tclk) { int freq, delta, best_delta = INT_MAX; int m, n; for (n = 0; n <= 7; n++) for (m = 0; m <= 15; m++) { - freq = mv64xxx_calc_freq(tclk, n, m); + freq = mv64xxx_calc_freq(drv_data, tclk, n, m); delta = req_freq - freq; if (delta >= 0 && delta < best_delta) { - *best_m = m; - *best_n = n; + drv_data->freq_m = m; + drv_data->freq_n = n; best_delta = delta; } if (best_delta == 0) @@ -815,8 +819,11 @@ if (of_property_read_u32(np, "clock-frequency", &bus_freq)) bus_freq = 100000; /* 100kHz by default */ - if (!mv64xxx_find_baud_factors(bus_freq, tclk, - &drv_data->freq_n, &drv_data->freq_m)) { + if (of_device_is_compatible(np, "allwinner,sun4i-a10-i2c") || + of_device_is_compatible(np, "allwinner,sun6i-a31-i2c")) + drv_data->clk_n_base_0 = true; + + if (!mv64xxx_find_baud_factors(drv_data, bus_freq, tclk)) { rc = -EINVAL; goto out; } --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-rcar.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-rcar.c @@ -575,7 +575,7 @@ if (slave->flags & I2C_CLIENT_TEN) return -EAFNOSUPPORT; - pm_runtime_forbid(rcar_i2c_priv_to_dev(priv)); + pm_runtime_get_sync(rcar_i2c_priv_to_dev(priv)); priv->slave = slave; rcar_i2c_write(priv, ICSAR, slave->addr); @@ -597,7 +597,7 @@ priv->slave = NULL; - pm_runtime_allow(rcar_i2c_priv_to_dev(priv)); + pm_runtime_put(rcar_i2c_priv_to_dev(priv)); return 0; } @@ -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-rk3x.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-rk3x.c @@ -907,7 +907,7 @@ &i2c->scl_fall_ns)) i2c->scl_fall_ns = 300; if (of_property_read_u32(pdev->dev.of_node, "i2c-sda-falling-time-ns", - &i2c->scl_fall_ns)) + &i2c->sda_fall_ns)) i2c->sda_fall_ns = i2c->scl_fall_ns; strlcpy(i2c->adap.name, "rk3x-i2c", sizeof(i2c->adap.name)); --- 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 @@ -65,7 +65,7 @@ #include #include -#define INTEL_IDLE_VERSION "0.4" +#define INTEL_IDLE_VERSION "0.4.1" #define PREFIX "intel_idle: " static struct cpuidle_driver intel_idle_driver = { @@ -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); @@ -917,36 +986,92 @@ } /* - * intel_idle_state_table_update() + * ivt_idle_state_table_update(void) * - * Update the default state_table for this CPU-id - * - * Currently used to access tuned IVT multi-socket targets + * Tune IVT multi-socket targets * Assumption: num_sockets == (max_package_num + 1) */ -void intel_idle_state_table_update(void) +static void ivt_idle_state_table_update(void) { /* IVT uses a different table for 1-2, 3-4, and > 4 sockets */ - if (boot_cpu_data.x86_model == 0x3e) { /* IVT */ - int cpu, package_num, num_sockets = 1; + int cpu, package_num, num_sockets = 1; - for_each_online_cpu(cpu) { - package_num = topology_physical_package_id(cpu); - if (package_num + 1 > num_sockets) { - num_sockets = package_num + 1; - - if (num_sockets > 4) { - cpuidle_state_table = ivt_cstates_8s; - return; - } + for_each_online_cpu(cpu) { + package_num = topology_physical_package_id(cpu); + if (package_num + 1 > num_sockets) { + num_sockets = package_num + 1; + + if (num_sockets > 4) { + cpuidle_state_table = ivt_cstates_8s; + return; } } + } + + if (num_sockets > 2) + cpuidle_state_table = ivt_cstates_4s; + + /* else, 1 and 2 socket systems use default ivt_cstates */ +} +/* + * sklh_idle_state_table_update(void) + * + * On SKL-H (model 0x5e) disable C8 and C9 if: + * C10 is enabled and SGX disabled + */ +static void sklh_idle_state_table_update(void) +{ + unsigned long long msr; + unsigned int eax, ebx, ecx, edx; + + + /* if PC10 disabled via cmdline intel_idle.max_cstate=7 or shallower */ + if (max_cstate <= 7) + return; + + /* if PC10 not present in CPUID.MWAIT.EDX */ + if ((mwait_substates & (0xF << 28)) == 0) + return; + + rdmsrl(MSR_NHM_SNB_PKG_CST_CFG_CTL, msr); + + /* PC10 is not enabled in PKG C-state limit */ + if ((msr & 0xF) != 8) + return; - if (num_sockets > 2) - cpuidle_state_table = ivt_cstates_4s; - /* else, 1 and 2 socket systems use default ivt_cstates */ + ecx = 0; + cpuid(7, &eax, &ebx, &ecx, &edx); + + /* if SGX is present */ + if (ebx & (1 << 2)) { + + rdmsrl(MSR_IA32_FEATURE_CONTROL, msr); + + /* if SGX is enabled */ + if (msr & (1 << 18)) + return; + } + + skl_cstates[5].disabled = 1; /* C8-SKL */ + skl_cstates[6].disabled = 1; /* C9-SKL */ +} +/* + * intel_idle_state_table_update() + * + * Update the default state_table for this CPU-id + */ + +static void intel_idle_state_table_update(void) +{ + switch (boot_cpu_data.x86_model) { + + case 0x3e: /* IVT */ + ivt_idle_state_table_update(); + break; + case 0x5e: /* SKL-H */ + sklh_idle_state_table_update(); + break; } - return; } /* @@ -985,6 +1110,14 @@ if (num_substates == 0) continue; + /* if state marked as disabled, skip it */ + if (cpuidle_state_table[cstate].disabled != 0) { + pr_debug(PREFIX "state %s is disabled", + cpuidle_state_table[cstate].name); + continue; + } + + if (((mwait_cstate + 1) > 2) && !boot_cpu_has(X86_FEATURE_NONSTOP_TSC)) mark_tsc_unstable("TSC halts in idle" --- linux-raspi2-4.2.0.orig/drivers/iio/accel/Kconfig +++ linux-raspi2-4.2.0/drivers/iio/accel/Kconfig @@ -150,6 +150,7 @@ config STK8BA50 tristate "Sensortek STK8BA50 3-Axis Accelerometer Driver" depends on I2C + depends on IIO_TRIGGER help Say yes here to get support for the Sensortek STK8BA50 3-axis accelerometer. --- 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/adc/Kconfig +++ linux-raspi2-4.2.0/drivers/iio/adc/Kconfig @@ -336,6 +336,7 @@ config VF610_ADC tristate "Freescale vf610 ADC driver" depends on OF + depends on HAS_IOMEM help Say yes here to support for Vybrid board analog-to-digital converter. Since the IP is used for i.MX6SLX, the driver also support i.MX6SLX. --- linux-raspi2-4.2.0.orig/drivers/iio/adc/ad7793.c +++ linux-raspi2-4.2.0/drivers/iio/adc/ad7793.c @@ -101,7 +101,7 @@ #define AD7795_CH_AIN1M_AIN1M 8 /* AIN1(-) - AIN1(-) */ /* ID Register Bit Designations (AD7793_REG_ID) */ -#define AD7785_ID 0xB +#define AD7785_ID 0x3 #define AD7792_ID 0xA #define AD7793_ID 0xB #define AD7794_ID 0xF --- linux-raspi2-4.2.0.orig/drivers/iio/adc/qcom-spmi-vadc.c +++ linux-raspi2-4.2.0/drivers/iio/adc/qcom-spmi-vadc.c @@ -839,8 +839,10 @@ for_each_available_child_of_node(node, child) { ret = vadc_get_dt_channel_data(vadc->dev, &prop, child); - if (ret) + if (ret) { + of_node_put(child); return ret; + } vadc->chan_props[index] = prop; --- linux-raspi2-4.2.0.orig/drivers/iio/adc/ti_am335x_adc.c +++ linux-raspi2-4.2.0/drivers/iio/adc/ti_am335x_adc.c @@ -289,7 +289,7 @@ goto error_kfifo_free; indio_dev->setup_ops = setup_ops; - indio_dev->modes |= INDIO_BUFFER_HARDWARE; + indio_dev->modes |= INDIO_BUFFER_SOFTWARE; return 0; --- linux-raspi2-4.2.0.orig/drivers/iio/adc/vf610_adc.c +++ linux-raspi2-4.2.0/drivers/iio/adc/vf610_adc.c @@ -98,6 +98,13 @@ #define VF610_ADC_CALF 0x2 #define VF610_ADC_TIMEOUT msecs_to_jiffies(100) +/* V at 25°C of 696 mV */ +#define VF610_VTEMP25_3V0 950 +/* V at 25°C of 699 mV */ +#define VF610_VTEMP25_3V3 867 +/* Typical sensor slope coefficient at all temperatures */ +#define VF610_TEMP_SLOPE_COEFF 1840 + enum clk_sel { VF610_ADCIOC_BUSCLK_SET, VF610_ADCIOC_ALTCLK_SET, @@ -173,6 +180,8 @@ adc_feature->clk_div = 8; } + adck_rate = ipg_rate / adc_feature->clk_div; + /* * Calculate ADC sample frequencies * Sample time unit is ADCK cycles. ADCK clk source is ipg clock, @@ -184,7 +193,6 @@ * BCT (Base Conversion Time): fixed to 25 ADCK cycles for 12 bit mode * LSTAdder(Long Sample Time): fixed to 3 ADCK cycles */ - adck_rate = ipg_rate / info->adc_feature.clk_div; for (i = 0; i < ARRAY_SIZE(vf610_hw_avgs); i++) info->sample_freq_avail[i] = adck_rate / (6 + vf610_hw_avgs[i] * (25 + 3)); @@ -569,11 +577,13 @@ break; case IIO_TEMP: /* - * Calculate in degree Celsius times 1000 - * Using sensor slope of 1.84 mV/°C and - * V at 25°C of 696 mV - */ - *val = 25000 - ((int)info->value - 864) * 1000000 / 1840; + * Calculate in degree Celsius times 1000 + * Using the typical sensor slope of 1.84 mV/°C + * and VREFH_ADC at 3.3V, V at 25°C of 699 mV + */ + *val = 25000 - ((int)info->value - VF610_VTEMP25_3V3) * + 1000000 / VF610_TEMP_SLOPE_COEFF; + break; default: mutex_unlock(&indio_dev->mlock); --- linux-raspi2-4.2.0.orig/drivers/iio/adc/xilinx-xadc-core.c +++ linux-raspi2-4.2.0/drivers/iio/adc/xilinx-xadc-core.c @@ -857,6 +857,7 @@ case XADC_REG_VCCINT: case XADC_REG_VCCAUX: case XADC_REG_VREFP: + case XADC_REG_VREFN: case XADC_REG_VCCBRAM: case XADC_REG_VCCPINT: case XADC_REG_VCCPAUX: --- linux-raspi2-4.2.0.orig/drivers/iio/dac/ad5064.c +++ linux-raspi2-4.2.0/drivers/iio/dac/ad5064.c @@ -113,12 +113,16 @@ ID_AD5065, ID_AD5628_1, ID_AD5628_2, + ID_AD5629_1, + ID_AD5629_2, ID_AD5648_1, ID_AD5648_2, ID_AD5666_1, ID_AD5666_2, ID_AD5668_1, ID_AD5668_2, + ID_AD5669_1, + ID_AD5669_2, }; static int ad5064_write(struct ad5064_state *st, unsigned int cmd, @@ -291,7 +295,7 @@ { }, }; -#define AD5064_CHANNEL(chan, addr, bits) { \ +#define AD5064_CHANNEL(chan, addr, bits, _shift) { \ .type = IIO_VOLTAGE, \ .indexed = 1, \ .output = 1, \ @@ -303,36 +307,39 @@ .sign = 'u', \ .realbits = (bits), \ .storagebits = 16, \ - .shift = 20 - bits, \ + .shift = (_shift), \ }, \ .ext_info = ad5064_ext_info, \ } -#define DECLARE_AD5064_CHANNELS(name, bits) \ +#define DECLARE_AD5064_CHANNELS(name, bits, shift) \ const struct iio_chan_spec name[] = { \ - AD5064_CHANNEL(0, 0, bits), \ - AD5064_CHANNEL(1, 1, bits), \ - AD5064_CHANNEL(2, 2, bits), \ - AD5064_CHANNEL(3, 3, bits), \ - AD5064_CHANNEL(4, 4, bits), \ - AD5064_CHANNEL(5, 5, bits), \ - AD5064_CHANNEL(6, 6, bits), \ - AD5064_CHANNEL(7, 7, bits), \ + AD5064_CHANNEL(0, 0, bits, shift), \ + AD5064_CHANNEL(1, 1, bits, shift), \ + AD5064_CHANNEL(2, 2, bits, shift), \ + AD5064_CHANNEL(3, 3, bits, shift), \ + AD5064_CHANNEL(4, 4, bits, shift), \ + AD5064_CHANNEL(5, 5, bits, shift), \ + AD5064_CHANNEL(6, 6, bits, shift), \ + AD5064_CHANNEL(7, 7, bits, shift), \ } -#define DECLARE_AD5065_CHANNELS(name, bits) \ +#define DECLARE_AD5065_CHANNELS(name, bits, shift) \ const struct iio_chan_spec name[] = { \ - AD5064_CHANNEL(0, 0, bits), \ - AD5064_CHANNEL(1, 3, bits), \ + AD5064_CHANNEL(0, 0, bits, shift), \ + AD5064_CHANNEL(1, 3, bits, shift), \ } -static DECLARE_AD5064_CHANNELS(ad5024_channels, 12); -static DECLARE_AD5064_CHANNELS(ad5044_channels, 14); -static DECLARE_AD5064_CHANNELS(ad5064_channels, 16); +static DECLARE_AD5064_CHANNELS(ad5024_channels, 12, 8); +static DECLARE_AD5064_CHANNELS(ad5044_channels, 14, 6); +static DECLARE_AD5064_CHANNELS(ad5064_channels, 16, 4); -static DECLARE_AD5065_CHANNELS(ad5025_channels, 12); -static DECLARE_AD5065_CHANNELS(ad5045_channels, 14); -static DECLARE_AD5065_CHANNELS(ad5065_channels, 16); +static DECLARE_AD5065_CHANNELS(ad5025_channels, 12, 8); +static DECLARE_AD5065_CHANNELS(ad5045_channels, 14, 6); +static DECLARE_AD5065_CHANNELS(ad5065_channels, 16, 4); + +static DECLARE_AD5064_CHANNELS(ad5629_channels, 12, 4); +static DECLARE_AD5064_CHANNELS(ad5669_channels, 16, 0); static const struct ad5064_chip_info ad5064_chip_info_tbl[] = { [ID_AD5024] = { @@ -382,6 +389,18 @@ .channels = ad5024_channels, .num_channels = 8, }, + [ID_AD5629_1] = { + .shared_vref = true, + .internal_vref = 2500000, + .channels = ad5629_channels, + .num_channels = 8, + }, + [ID_AD5629_2] = { + .shared_vref = true, + .internal_vref = 5000000, + .channels = ad5629_channels, + .num_channels = 8, + }, [ID_AD5648_1] = { .shared_vref = true, .internal_vref = 2500000, @@ -418,6 +437,18 @@ .channels = ad5064_channels, .num_channels = 8, }, + [ID_AD5669_1] = { + .shared_vref = true, + .internal_vref = 2500000, + .channels = ad5669_channels, + .num_channels = 8, + }, + [ID_AD5669_2] = { + .shared_vref = true, + .internal_vref = 5000000, + .channels = ad5669_channels, + .num_channels = 8, + }, }; static inline unsigned int ad5064_num_vref(struct ad5064_state *st) @@ -598,10 +629,16 @@ unsigned int addr, unsigned int val) { struct i2c_client *i2c = to_i2c_client(st->dev); + int ret; st->data.i2c[0] = (cmd << 4) | addr; put_unaligned_be16(val, &st->data.i2c[1]); - return i2c_master_send(i2c, st->data.i2c, 3); + + ret = i2c_master_send(i2c, st->data.i2c, 3); + if (ret < 0) + return ret; + + return 0; } static int ad5064_i2c_probe(struct i2c_client *i2c, @@ -617,12 +654,12 @@ } static const struct i2c_device_id ad5064_i2c_ids[] = { - {"ad5629-1", ID_AD5628_1}, - {"ad5629-2", ID_AD5628_2}, - {"ad5629-3", ID_AD5628_2}, /* similar enough to ad5629-2 */ - {"ad5669-1", ID_AD5668_1}, - {"ad5669-2", ID_AD5668_2}, - {"ad5669-3", ID_AD5668_2}, /* similar enough to ad5669-2 */ + {"ad5629-1", ID_AD5629_1}, + {"ad5629-2", ID_AD5629_2}, + {"ad5629-3", ID_AD5629_2}, /* similar enough to ad5629-2 */ + {"ad5669-1", ID_AD5669_1}, + {"ad5669-2", ID_AD5669_2}, + {"ad5669-3", ID_AD5669_2}, /* similar enough to ad5669-2 */ {} }; MODULE_DEVICE_TABLE(i2c, ad5064_i2c_ids); --- linux-raspi2-4.2.0.orig/drivers/iio/dac/mcp4725.c +++ linux-raspi2-4.2.0/drivers/iio/dac/mcp4725.c @@ -300,6 +300,7 @@ data->client = client; indio_dev->dev.parent = &client->dev; + indio_dev->name = id->name; indio_dev->info = &mcp4725_info; indio_dev->channels = &mcp4725_channel; indio_dev->num_channels = 1; --- 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/humidity/si7020.c +++ linux-raspi2-4.2.0/drivers/iio/humidity/si7020.c @@ -50,10 +50,10 @@ switch (mask) { case IIO_CHAN_INFO_RAW: - ret = i2c_smbus_read_word_data(*client, - chan->type == IIO_TEMP ? - SI7020CMD_TEMP_HOLD : - SI7020CMD_RH_HOLD); + ret = i2c_smbus_read_word_swapped(*client, + chan->type == IIO_TEMP ? + SI7020CMD_TEMP_HOLD : + SI7020CMD_RH_HOLD); if (ret < 0) return ret; *val = ret >> 2; --- 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/imu/adis_buffer.c +++ linux-raspi2-4.2.0/drivers/iio/imu/adis_buffer.c @@ -43,7 +43,7 @@ return -ENOMEM; rx = adis->buffer; - tx = rx + indio_dev->scan_bytes; + tx = rx + scan_count; spi_message_init(&adis->msg); --- 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)) @@ -289,7 +289,7 @@ if (trialmask == NULL) return -ENOMEM; if (!indio_dev->masklength) { - WARN_ON("Trying to set scanmask prior to registering buffer\n"); + WARN(1, "Trying to set scanmask prior to registering buffer\n"); goto err_invalid_mask; } bitmap_copy(trialmask, buffer->scan_mask, indio_dev->masklength); --- linux-raspi2-4.2.0.orig/drivers/iio/industrialio-core.c +++ linux-raspi2-4.2.0/drivers/iio/industrialio-core.c @@ -637,7 +637,7 @@ break; case IIO_SEPARATE: if (!chan->indexed) { - WARN_ON("Differential channels must be indexed\n"); + WARN(1, "Differential channels must be indexed\n"); ret = -EINVAL; goto error_free_full_postfix; } --- 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/inkern.c +++ linux-raspi2-4.2.0/drivers/iio/inkern.c @@ -351,6 +351,8 @@ void iio_channel_release(struct iio_channel *channel) { + if (!channel) + return; iio_device_put(channel->indio_dev); kfree(channel); } --- linux-raspi2-4.2.0.orig/drivers/iio/light/acpi-als.c +++ linux-raspi2-4.2.0/drivers/iio/light/acpi-als.c @@ -54,7 +54,9 @@ .realbits = 32, .storagebits = 32, }, - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), + /* _RAW is here for backward ABI compatibility */ + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | + BIT(IIO_CHAN_INFO_PROCESSED), }, }; @@ -152,7 +154,7 @@ s32 temp_val; int ret; - if (mask != IIO_CHAN_INFO_RAW) + if ((mask != IIO_CHAN_INFO_PROCESSED) && (mask != IIO_CHAN_INFO_RAW)) return -EINVAL; /* we support only illumination (_ALI) so far. */ --- linux-raspi2-4.2.0.orig/drivers/iio/light/ltr501.c +++ linux-raspi2-4.2.0/drivers/iio/light/ltr501.c @@ -180,7 +180,7 @@ {500000, 2000000} }; -static unsigned int ltr501_match_samp_freq(const struct ltr501_samp_table *tab, +static int ltr501_match_samp_freq(const struct ltr501_samp_table *tab, int len, int val, int val2) { int i, freq; --- 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/iio/magnetometer/st_magn.h +++ linux-raspi2-4.2.0/drivers/iio/magnetometer/st_magn.h @@ -41,6 +41,7 @@ static inline void st_magn_deallocate_ring(struct iio_dev *indio_dev) { } +#define ST_MAGN_TRIGGER_SET_STATE NULL #endif /* CONFIG_IIO_BUFFER */ #endif /* ST_MAGN_H */ --- linux-raspi2-4.2.0.orig/drivers/iio/pressure/mpl115.c +++ linux-raspi2-4.2.0/drivers/iio/pressure/mpl115.c @@ -117,7 +117,7 @@ *val = ret >> 6; return IIO_VAL_INT; case IIO_CHAN_INFO_OFFSET: - *val = 605; + *val = -605; *val2 = 750000; return IIO_VAL_INT_PLUS_MICRO; case IIO_CHAN_INFO_SCALE: --- linux-raspi2-4.2.0.orig/drivers/infiniband/core/cm.c +++ linux-raspi2-4.2.0/drivers/infiniband/core/cm.c @@ -826,11 +826,11 @@ wait_time = cm_convert_to_ms(cm_id_priv->av.timeout); /* Check if the device started its remove_one */ - spin_lock_irq(&cm.lock); + spin_lock_irqsave(&cm.lock, flags); if (!cm_dev->going_down) queue_delayed_work(cm.wq, &cm_id_priv->timewait_info->work.work, msecs_to_jiffies(wait_time)); - spin_unlock_irq(&cm.lock); + spin_unlock_irqrestore(&cm.lock, flags); cm_id_priv->timewait_info = NULL; } @@ -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/sa_query.c +++ linux-raspi2-4.2.0/drivers/infiniband/core/sa_query.c @@ -542,7 +542,7 @@ force_grh = rdma_cap_eth_ah(device, port_num); - if (rec->hop_limit > 1 || force_grh) { + if (rec->hop_limit > 0 || force_grh) { ah_attr->ah_flags = IB_AH_GRH; ah_attr->grh.dgid = rec->dgid; --- 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/cxgb3/iwch_cm.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/cxgb3/iwch_cm.c @@ -149,7 +149,7 @@ error = l2t_send(tdev, skb, l2e); if (error < 0) kfree_skb(skb); - return error; + return error < 0 ? error : 0; } int iwch_cxgb3_ofld_send(struct t3cdev *tdev, struct sk_buff *skb) @@ -165,7 +165,7 @@ error = cxgb3_ofld_send(tdev, skb); if (error < 0) kfree_skb(skb); - return error; + return error < 0 ? error : 0; } static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb) --- 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 @@ -91,6 +91,7 @@ ah->av.eth.port_pd = cpu_to_be32(to_mpd(pd)->pdn | (ah_attr->port_num << 24)); ah->av.eth.gid_index = ah_attr->grh.sgid_index; ah->av.eth.vlan = cpu_to_be16(vlan_tag); + ah->av.eth.hop_limit = ah_attr->grh.hop_limit; if (ah_attr->static_rate) { ah->av.eth.stat_rate = ah_attr->static_rate + MLX4_STAT_RATE_OFFSET; while (ah->av.eth.stat_rate > IB_RATE_2_5_GBPS + MLX4_STAT_RATE_OFFSET && @@ -148,9 +149,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/main.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/mlx5/main.c @@ -274,7 +274,7 @@ sizeof(struct mlx5_wqe_data_seg); props->max_sge = min(max_rq_sg, max_sq_sg); props->max_cq = 1 << MLX5_CAP_GEN(mdev, log_max_cq); - props->max_cqe = (1 << MLX5_CAP_GEN(mdev, log_max_eq_sz)) - 1; + props->max_cqe = (1 << MLX5_CAP_GEN(mdev, log_max_cq_sz)) - 1; props->max_mr = 1 << MLX5_CAP_GEN(mdev, log_max_mkey); props->max_pd = 1 << MLX5_CAP_GEN(mdev, log_max_pd); props->max_qp_rd_atom = 1 << MLX5_CAP_GEN(mdev, log_max_ra_req_qp); --- 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_qp.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/qib/qib_qp.c @@ -100,9 +100,10 @@ 32768 /* 1E */ }; -static void get_map_page(struct qib_qpn_table *qpt, struct qpn_map *map) +static void get_map_page(struct qib_qpn_table *qpt, struct qpn_map *map, + gfp_t gfp) { - unsigned long page = get_zeroed_page(GFP_KERNEL); + unsigned long page = get_zeroed_page(gfp); /* * Free the page if someone raced with us installing it. @@ -121,7 +122,7 @@ * zero/one for QP type IB_QPT_SMI/IB_QPT_GSI. */ static int alloc_qpn(struct qib_devdata *dd, struct qib_qpn_table *qpt, - enum ib_qp_type type, u8 port) + enum ib_qp_type type, u8 port, gfp_t gfp) { u32 i, offset, max_scan, qpn; struct qpn_map *map; @@ -151,7 +152,7 @@ max_scan = qpt->nmaps - !offset; for (i = 0;;) { if (unlikely(!map->page)) { - get_map_page(qpt, map); + get_map_page(qpt, map, gfp); if (unlikely(!map->page)) break; } @@ -983,13 +984,21 @@ size_t sz; size_t sg_list_sz; struct ib_qp *ret; + gfp_t gfp; + if (init_attr->cap.max_send_sge > ib_qib_max_sges || init_attr->cap.max_send_wr > ib_qib_max_qp_wrs || - init_attr->create_flags) { - ret = ERR_PTR(-EINVAL); - goto bail; - } + init_attr->create_flags & ~(IB_QP_CREATE_USE_GFP_NOIO)) + return ERR_PTR(-EINVAL); + + /* GFP_NOIO is applicable in RC QPs only */ + if (init_attr->create_flags & IB_QP_CREATE_USE_GFP_NOIO && + init_attr->qp_type != IB_QPT_RC) + return ERR_PTR(-EINVAL); + + gfp = init_attr->create_flags & IB_QP_CREATE_USE_GFP_NOIO ? + GFP_NOIO : GFP_KERNEL; /* Check receive queue parameters if no SRQ is specified. */ if (!init_attr->srq) { @@ -1021,7 +1030,8 @@ sz = sizeof(struct qib_sge) * init_attr->cap.max_send_sge + sizeof(struct qib_swqe); - swq = vmalloc((init_attr->cap.max_send_wr + 1) * sz); + swq = __vmalloc((init_attr->cap.max_send_wr + 1) * sz, + gfp, PAGE_KERNEL); if (swq == NULL) { ret = ERR_PTR(-ENOMEM); goto bail; @@ -1037,13 +1047,13 @@ } else if (init_attr->cap.max_recv_sge > 1) sg_list_sz = sizeof(*qp->r_sg_list) * (init_attr->cap.max_recv_sge - 1); - qp = kzalloc(sz + sg_list_sz, GFP_KERNEL); + qp = kzalloc(sz + sg_list_sz, gfp); if (!qp) { ret = ERR_PTR(-ENOMEM); goto bail_swq; } RCU_INIT_POINTER(qp->next, NULL); - qp->s_hdr = kzalloc(sizeof(*qp->s_hdr), GFP_KERNEL); + qp->s_hdr = kzalloc(sizeof(*qp->s_hdr), gfp); if (!qp->s_hdr) { ret = ERR_PTR(-ENOMEM); goto bail_qp; @@ -1058,8 +1068,16 @@ qp->r_rq.max_sge = init_attr->cap.max_recv_sge; sz = (sizeof(struct ib_sge) * qp->r_rq.max_sge) + sizeof(struct qib_rwqe); - qp->r_rq.wq = vmalloc_user(sizeof(struct qib_rwq) + - qp->r_rq.size * sz); + if (gfp != GFP_NOIO) + qp->r_rq.wq = vmalloc_user( + sizeof(struct qib_rwq) + + qp->r_rq.size * sz); + else + qp->r_rq.wq = __vmalloc( + sizeof(struct qib_rwq) + + qp->r_rq.size * sz, + gfp, PAGE_KERNEL); + if (!qp->r_rq.wq) { ret = ERR_PTR(-ENOMEM); goto bail_qp; @@ -1090,7 +1108,7 @@ dev = to_idev(ibpd->device); dd = dd_from_dev(dev); err = alloc_qpn(dd, &dev->qpn_table, init_attr->qp_type, - init_attr->port_num); + init_attr->port_num, gfp); if (err < 0) { ret = ERR_PTR(err); vfree(qp->r_rq.wq); --- 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/hw/qib/qib_verbs_mcast.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/qib/qib_verbs_mcast.c @@ -286,15 +286,13 @@ struct qib_ibdev *dev = to_idev(ibqp->device); struct qib_ibport *ibp = to_iport(ibqp->device, qp->port_num); struct qib_mcast *mcast = NULL; - struct qib_mcast_qp *p, *tmp; + struct qib_mcast_qp *p, *tmp, *delp = NULL; struct rb_node *n; int last = 0; int ret; - if (ibqp->qp_num <= 1 || qp->state == IB_QPS_RESET) { - ret = -EINVAL; - goto bail; - } + if (ibqp->qp_num <= 1 || qp->state == IB_QPS_RESET) + return -EINVAL; spin_lock_irq(&ibp->lock); @@ -303,8 +301,7 @@ while (1) { if (n == NULL) { spin_unlock_irq(&ibp->lock); - ret = -EINVAL; - goto bail; + return -EINVAL; } mcast = rb_entry(n, struct qib_mcast, rb_node); @@ -328,6 +325,7 @@ */ list_del_rcu(&p->list); mcast->n_attached--; + delp = p; /* If this was the last attached QP, remove the GID too. */ if (list_empty(&mcast->qp_list)) { @@ -338,15 +336,16 @@ } spin_unlock_irq(&ibp->lock); + /* QP not attached */ + if (!delp) + return -EINVAL; + /* + * Wait for any list walkers to finish before freeing the + * list element. + */ + wait_event(mcast->wait, atomic_read(&mcast->refcount) <= 1); + qib_mcast_qp_free(delp); - if (p) { - /* - * Wait for any list walkers to finish before freeing the - * list element. - */ - wait_event(mcast->wait, atomic_read(&mcast->refcount) <= 1); - qib_mcast_qp_free(p); - } if (last) { atomic_dec(&mcast->refcount); wait_event(mcast->wait, !atomic_read(&mcast->refcount)); @@ -355,11 +354,7 @@ dev->n_mcast_grps_allocated--; spin_unlock_irq(&dev->n_mcast_grps_lock); } - - ret = 0; - -bail: - return ret; + return 0; } int qib_mcast_tree_empty(struct qib_ibport *ibp) --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/ipoib/ipoib.h +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/ipoib/ipoib.h @@ -80,7 +80,7 @@ IPOIB_NUM_WC = 4, IPOIB_MAX_PATH_REC_QUEUE = 3, - IPOIB_MAX_MCAST_QUEUE = 3, + IPOIB_MAX_MCAST_QUEUE = 64, IPOIB_FLAG_OPER_UP = 0, IPOIB_FLAG_INITIALIZED = 1, @@ -496,6 +496,7 @@ void ipoib_mcast_join_task(struct work_struct *work); void ipoib_mcast_carrier_on_task(struct work_struct *work); void ipoib_mcast_send(struct net_device *dev, u8 *daddr, struct sk_buff *skb); +void ipoib_mcast_free(struct ipoib_mcast *mc); void ipoib_mcast_restart_task(struct work_struct *work); int ipoib_mcast_start_thread(struct net_device *dev); @@ -549,6 +550,8 @@ int ipoib_mcast_attach(struct net_device *dev, u16 mlid, union ib_gid *mgid, int set_qkey); +int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast); +struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, void *mgid); int ipoib_init_qp(struct net_device *dev); int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca); --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/ipoib/ipoib_ib.c @@ -245,8 +245,6 @@ skb_reset_mac_header(skb); skb_pull(skb, IPOIB_ENCAP_LEN); - skb->truesize = SKB_TRUESIZE(skb->len); - ++dev->stats.rx_packets; dev->stats.rx_bytes += skb->len; --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -922,6 +922,9 @@ unsigned long dt; unsigned long flags; int i; + LIST_HEAD(remove_list); + struct ipoib_mcast *mcast, *tmcast; + struct net_device *dev = priv->dev; if (test_bit(IPOIB_STOP_NEIGH_GC, &priv->flags)) return; @@ -949,6 +952,19 @@ lockdep_is_held(&priv->lock))) != NULL) { /* was the neigh idle for two GC periods */ if (time_after(neigh_obsolete, neigh->alive)) { + u8 *mgid = neigh->daddr + 4; + + /* Is this multicast ? */ + if (*mgid == 0xff) { + mcast = __ipoib_mcast_find(dev, mgid); + + if (mcast && test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) { + list_del(&mcast->list); + rb_erase(&mcast->rb_node, &priv->multicast_tree); + list_add_tail(&mcast->list, &remove_list); + } + } + rcu_assign_pointer(*np, rcu_dereference_protected(neigh->hnext, lockdep_is_held(&priv->lock))); @@ -964,6 +980,10 @@ out_unlock: spin_unlock_irqrestore(&priv->lock, flags); + list_for_each_entry_safe(mcast, tmcast, &remove_list, list) { + ipoib_mcast_leave(dev, mcast); + ipoib_mcast_free(mcast); + } } static void ipoib_reap_neigh(struct work_struct *work) --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/ipoib/ipoib_multicast.c @@ -106,7 +106,7 @@ queue_delayed_work(priv->wq, &priv->mcast_task, 0); } -static void ipoib_mcast_free(struct ipoib_mcast *mcast) +void ipoib_mcast_free(struct ipoib_mcast *mcast) { struct net_device *dev = mcast->dev; int tx_dropped = 0; @@ -153,7 +153,7 @@ return mcast; } -static struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, void *mgid) +struct ipoib_mcast *__ipoib_mcast_find(struct net_device *dev, void *mgid) { struct ipoib_dev_priv *priv = netdev_priv(dev); struct rb_node *n = priv->multicast_tree.rb_node; @@ -393,8 +393,13 @@ goto out_locked; } } else { - if (mcast->logcount++ < 20) { - if (status == -ETIMEDOUT || status == -EAGAIN) { + bool silent_fail = + test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags) && + status == -EINVAL; + + if (mcast->logcount < 20) { + if (status == -ETIMEDOUT || status == -EAGAIN || + silent_fail) { ipoib_dbg_mcast(priv, "%smulticast join failed for %pI6, status %d\n", test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags) ? "sendonly " : "", mcast->mcmember.mgid.raw, status); @@ -403,6 +408,9 @@ test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags) ? "sendonly " : "", mcast->mcmember.mgid.raw, status); } + + if (!silent_fail) + mcast->logcount++; } if (test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags) && @@ -651,7 +659,7 @@ return 0; } -static int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast) +int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast) { struct ipoib_dev_priv *priv = netdev_priv(dev); int ret = 0; --- 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 @@ -876,7 +876,7 @@ * @isert_conn: isert connection struct * * Notes: - * In case the connection state is FULL_FEATURE, move state + * In case the connection state is BOUND, move state * to TEMINATING and start teardown sequence (rdma_disconnect). * In case the connection state is UP, complete flush as well. * @@ -892,6 +892,7 @@ case ISER_CONN_TERMINATING: break; case ISER_CONN_UP: + case ISER_CONN_BOUND: case ISER_CONN_FULL_FEATURE: /* FALLTHRU */ isert_info("Terminating conn %p state %d\n", isert_conn, isert_conn->state); @@ -939,14 +940,9 @@ enum rdma_cm_event_type event) { struct isert_np *isert_np = cma_id->context; - struct isert_conn *isert_conn; + struct isert_conn *isert_conn = cma_id->qp->qp_context; bool terminating = false; - if (isert_np->np_cm_id == cma_id) - return isert_np_cma_handler(cma_id->context, event); - - isert_conn = cma_id->qp->qp_context; - mutex_lock(&isert_conn->mutex); terminating = (isert_conn->state == ISER_CONN_TERMINATING); isert_conn_terminate(isert_conn); @@ -984,12 +980,16 @@ static int isert_cma_handler(struct rdma_cm_id *cma_id, struct rdma_cm_event *event) { + struct isert_np *isert_np = cma_id->context; int ret = 0; isert_info("%s (%d): status %d id %p np %p\n", rdma_event_msg(event->event), event->event, event->status, cma_id, cma_id->context); + if (isert_np->np_cm_id == cma_id) + return isert_np_cma_handler(cma_id->context, event->event); + switch (event->event) { case RDMA_CM_EVENT_CONNECT_REQUEST: ret = isert_connect_request(cma_id, event); @@ -2072,7 +2072,8 @@ void *start = isert_conn->rx_descs; int len = ISERT_QP_MAX_RECV_DTOS * sizeof(*isert_conn->rx_descs); - if (wr_id >= start && wr_id < start + len) + if ((wr_id >= start && wr_id < start + len) || + (wr_id == isert_conn->login_req_buf)) return false; return true; @@ -2098,7 +2099,8 @@ isert_completion_put(desc, isert_cmd, ib_dev, true); } else { isert_conn->post_recv_buf_count--; - if (!isert_conn->post_recv_buf_count) + if (!isert_conn->post_recv_buf_count && + isert_conn->state >= ISER_CONN_BOUND) iscsit_cause_connection_reinstatement(isert_conn->conn, 0); } } @@ -3012,9 +3014,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; @@ -3277,6 +3286,7 @@ conn->context = isert_conn; isert_conn->conn = conn; + isert_conn->state = ISER_CONN_BOUND; isert_set_conn_info(np, conn, isert_conn); @@ -3379,6 +3389,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 +3442,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/isert/ib_isert.h +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/isert/ib_isert.h @@ -50,6 +50,7 @@ enum iser_conn_state { ISER_CONN_INIT, ISER_CONN_UP, + ISER_CONN_BOUND, ISER_CONN_FULL_FEATURE, ISER_CONN_TERMINATING, ISER_CONN_DOWN, --- 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 @@ -496,7 +496,7 @@ struct ib_qp *qp; struct ib_fmr_pool *fmr_pool = NULL; struct srp_fr_pool *fr_pool = NULL; - const int m = 1 + dev->use_fast_reg; + const int m = dev->use_fast_reg ? 3 : 1; struct ib_cq_init_attr cq_attr = {}; int ret; @@ -996,16 +996,16 @@ ret = srp_lookup_path(ch); if (ret) - return ret; + goto out; while (1) { init_completion(&ch->done); ret = srp_send_req(ch, multich); if (ret) - return ret; + goto out; ret = wait_for_completion_interruptible(&ch->done); if (ret < 0) - return ret; + goto out; /* * The CM event handling code will set status to @@ -1013,15 +1013,16 @@ * back, or SRP_DLID_REDIRECT if we get a lid/qp * redirect REJ back. */ - switch (ch->status) { + ret = ch->status; + switch (ret) { case 0: ch->connected = true; - return 0; + goto out; case SRP_PORT_REDIRECT: ret = srp_lookup_path(ch); if (ret) - return ret; + goto out; break; case SRP_DLID_REDIRECT: @@ -1030,13 +1031,16 @@ case SRP_STALE_CONN: shost_printk(KERN_ERR, target->scsi_host, PFX "giving up on stale connection\n"); - ch->status = -ECONNRESET; - return ch->status; + ret = -ECONNRESET; + goto out; default: - return ch->status; + goto out; } } + +out: + return ret <= 0 ? ret : -ENODEV; } static int srp_inv_rkey(struct srp_rdma_ch *ch, u32 rkey) @@ -2757,6 +2761,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 +3273,7 @@ srp_free_ch_ib(target, ch); srp_free_req_data(target, ch); target->ch_count = ch - target->ch; - break; + goto connected; } } @@ -3272,6 +3283,7 @@ node_idx++; } +connected: target->scsi_host->nr_hw_queues = target->ch_count; ret = srp_add_target(host, target); @@ -3294,6 +3306,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/infiniband/ulp/srpt/ib_srpt.c +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -1738,47 +1738,6 @@ return -1; } -/** - * srpt_rx_mgmt_fn_tag() - Process a task management function by tag. - * @ch: RDMA channel of the task management request. - * @fn: Task management function to perform. - * @req_tag: Tag of the SRP task management request. - * @mgmt_ioctx: I/O context of the task management request. - * - * Returns zero if the target core will process the task management - * request asynchronously. - * - * Note: It is assumed that the initiator serializes tag-based task management - * requests. - */ -static int srpt_rx_mgmt_fn_tag(struct srpt_send_ioctx *ioctx, u64 tag) -{ - struct srpt_device *sdev; - struct srpt_rdma_ch *ch; - struct srpt_send_ioctx *target; - int ret, i; - - ret = -EINVAL; - ch = ioctx->ch; - BUG_ON(!ch); - BUG_ON(!ch->sport); - sdev = ch->sport->sdev; - BUG_ON(!sdev); - spin_lock_irq(&sdev->spinlock); - for (i = 0; i < ch->rq_size; ++i) { - target = ch->ioctx_ring[i]; - if (target->cmd.se_lun == ioctx->cmd.se_lun && - target->cmd.tag == tag && - srpt_get_cmd_state(target) != SRPT_STATE_DONE) { - ret = 0; - /* now let the target core abort &target->cmd; */ - break; - } - } - spin_unlock_irq(&sdev->spinlock); - return ret; -} - static int srp_tmr_to_tcm(int fn) { switch (fn) { @@ -1813,7 +1772,6 @@ struct se_cmd *cmd; struct se_session *sess = ch->sess; uint64_t unpacked_lun; - uint32_t tag = 0; int tcm_tmr; int rc; @@ -1829,25 +1787,10 @@ srpt_set_cmd_state(send_ioctx, SRPT_STATE_MGMT); send_ioctx->cmd.tag = srp_tsk->tag; tcm_tmr = srp_tmr_to_tcm(srp_tsk->tsk_mgmt_func); - if (tcm_tmr < 0) { - send_ioctx->cmd.se_tmr_req->response = - TMR_TASK_MGMT_FUNCTION_NOT_SUPPORTED; - goto fail; - } unpacked_lun = srpt_unpack_lun((uint8_t *)&srp_tsk->lun, sizeof(srp_tsk->lun)); - - if (srp_tsk->tsk_mgmt_func == SRP_TSK_ABORT_TASK) { - rc = srpt_rx_mgmt_fn_tag(send_ioctx, srp_tsk->task_tag); - if (rc < 0) { - send_ioctx->cmd.se_tmr_req->response = - TMR_TASK_DOES_NOT_EXIST; - goto fail; - } - tag = srp_tsk->task_tag; - } rc = target_submit_tmr(&send_ioctx->cmd, sess, NULL, unpacked_lun, - srp_tsk, tcm_tmr, GFP_KERNEL, tag, + srp_tsk, tcm_tmr, GFP_KERNEL, srp_tsk->task_tag, TARGET_SCF_ACK_KREF); if (rc != 0) { send_ioctx->cmd.se_tmr_req->response = TMR_FUNCTION_REJECTED; --- 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/joystick/xpad.c +++ linux-raspi2-4.2.0/drivers/input/joystick/xpad.c @@ -1005,7 +1005,6 @@ #else static int xpad_led_probe(struct usb_xpad *xpad) { return 0; } static void xpad_led_disconnect(struct usb_xpad *xpad) { } -static void xpad_identify_controller(struct usb_xpad *xpad) { } #endif --- linux-raspi2-4.2.0.orig/drivers/input/misc/ati_remote2.c +++ linux-raspi2-4.2.0/drivers/input/misc/ati_remote2.c @@ -817,26 +817,49 @@ ar2->udev = udev; + /* Sanity check, first interface must have an endpoint */ + if (alt->desc.bNumEndpoints < 1 || !alt->endpoint) { + dev_err(&interface->dev, + "%s(): interface 0 must have an endpoint\n", __func__); + r = -ENODEV; + goto fail1; + } ar2->intf[0] = interface; ar2->ep[0] = &alt->endpoint[0].desc; + /* Sanity check, the device must have two interfaces */ ar2->intf[1] = usb_ifnum_to_if(udev, 1); + if ((udev->actconfig->desc.bNumInterfaces < 2) || !ar2->intf[1]) { + dev_err(&interface->dev, "%s(): need 2 interfaces, found %d\n", + __func__, udev->actconfig->desc.bNumInterfaces); + r = -ENODEV; + goto fail1; + } + r = usb_driver_claim_interface(&ati_remote2_driver, ar2->intf[1], ar2); if (r) goto fail1; + + /* Sanity check, second interface must have an endpoint */ alt = ar2->intf[1]->cur_altsetting; + if (alt->desc.bNumEndpoints < 1 || !alt->endpoint) { + dev_err(&interface->dev, + "%s(): interface 1 must have an endpoint\n", __func__); + r = -ENODEV; + goto fail2; + } ar2->ep[1] = &alt->endpoint[0].desc; r = ati_remote2_urb_init(ar2); if (r) - goto fail2; + goto fail3; ar2->channel_mask = channel_mask; ar2->mode_mask = mode_mask; r = ati_remote2_setup(ar2, ar2->channel_mask); if (r) - goto fail2; + goto fail3; usb_make_path(udev, ar2->phys, sizeof(ar2->phys)); strlcat(ar2->phys, "/input0", sizeof(ar2->phys)); @@ -845,11 +868,11 @@ r = sysfs_create_group(&udev->dev.kobj, &ati_remote2_attr_group); if (r) - goto fail2; + goto fail3; r = ati_remote2_input_init(ar2); if (r) - goto fail3; + goto fail4; usb_set_intfdata(interface, ar2); @@ -857,10 +880,11 @@ return 0; - fail3: + fail4: sysfs_remove_group(&udev->dev.kobj, &ati_remote2_attr_group); - fail2: + fail3: ati_remote2_urb_cleanup(ar2); + fail2: usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]); fail1: kfree(ar2); --- linux-raspi2-4.2.0.orig/drivers/input/misc/ims-pcu.c +++ linux-raspi2-4.2.0/drivers/input/misc/ims-pcu.c @@ -1663,6 +1663,8 @@ pcu->ctrl_intf = usb_ifnum_to_if(pcu->udev, union_desc->bMasterInterface0); + if (!pcu->ctrl_intf) + return -EINVAL; alt = pcu->ctrl_intf->cur_altsetting; pcu->ep_ctrl = &alt->endpoint[0].desc; @@ -1670,6 +1672,8 @@ pcu->data_intf = usb_ifnum_to_if(pcu->udev, union_desc->bSlaveInterface0); + if (!pcu->data_intf) + return -EINVAL; alt = pcu->data_intf->cur_altsetting; if (alt->desc.bNumEndpoints != 2) { --- linux-raspi2-4.2.0.orig/drivers/input/misc/powermate.c +++ linux-raspi2-4.2.0/drivers/input/misc/powermate.c @@ -307,6 +307,9 @@ int error = -ENOMEM; interface = intf->cur_altsetting; + if (interface->desc.bNumEndpoints < 1) + return -EINVAL; + endpoint = &interface->endpoint[0].desc; if (!usb_endpoint_is_int_in(endpoint)) return -EIO; --- 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 @@ -1222,7 +1222,7 @@ input_set_abs_params(dev, ABS_TOOL_WIDTH, ETP_WMIN_V2, ETP_WMAX_V2, 0, 0); } - input_mt_init_slots(dev, 2, 0); + input_mt_init_slots(dev, 2, INPUT_MT_SEMI_MT); input_set_abs_params(dev, ABS_MT_POSITION_X, x_min, x_max, 0, 0); input_set_abs_params(dev, ABS_MT_POSITION_Y, y_min, y_max, 0, 0); break; @@ -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 @@ -863,7 +863,8 @@ return; /* Bug in FW 8.1, buttons are reported only when ExtBit is 1 */ - if (SYN_ID_FULL(priv->identity) == 0x801 && + if ((SYN_ID_FULL(priv->identity) == 0x801 || + SYN_ID_FULL(priv->identity) == 0x802) && !((psmouse->packet[0] ^ psmouse->packet[3]) & 0x02)) return; @@ -1250,7 +1251,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/mouse/vmmouse.c +++ linux-raspi2-4.2.0/drivers/input/mouse/vmmouse.c @@ -458,8 +458,6 @@ priv->abs_dev = abs_dev; psmouse->private = priv; - input_set_capability(rel_dev, EV_REL, REL_WHEEL); - /* Set up and register absolute device */ snprintf(priv->phys, sizeof(priv->phys), "%s/input1", psmouse->ps2dev.serio->phys); @@ -475,10 +473,6 @@ abs_dev->id.version = psmouse->model; abs_dev->dev.parent = &psmouse->ps2dev.serio->dev; - error = input_register_device(priv->abs_dev); - if (error) - goto init_fail; - /* Set absolute device capabilities */ input_set_capability(abs_dev, EV_KEY, BTN_LEFT); input_set_capability(abs_dev, EV_KEY, BTN_RIGHT); @@ -488,6 +482,13 @@ input_set_abs_params(abs_dev, ABS_X, 0, VMMOUSE_MAX_X, 0, 0); input_set_abs_params(abs_dev, ABS_Y, 0, VMMOUSE_MAX_Y, 0, 0); + error = input_register_device(priv->abs_dev); + if (error) + goto init_fail; + + /* Add wheel capability to the relative device */ + input_set_capability(rel_dev, EV_REL, REL_WHEEL); + psmouse->protocol_handler = vmmouse_process_byte; psmouse->disconnect = vmmouse_disconnect; psmouse->reconnect = vmmouse_reconnect; --- linux-raspi2-4.2.0.orig/drivers/input/serio/i8042-x86ia64io.h +++ linux-raspi2-4.2.0/drivers/input/serio/i8042-x86ia64io.h @@ -258,6 +258,13 @@ }, }, { + /* Fujitsu Lifebook U745 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U745"), + }, + }, + { /* Fujitsu T70H */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), --- linux-raspi2-4.2.0.orig/drivers/input/tablet/aiptek.c +++ linux-raspi2-4.2.0/drivers/input/tablet/aiptek.c @@ -1819,6 +1819,14 @@ input_set_abs_params(inputdev, ABS_TILT_Y, AIPTEK_TILT_MIN, AIPTEK_TILT_MAX, 0, 0); input_set_abs_params(inputdev, ABS_WHEEL, AIPTEK_WHEEL_MIN, AIPTEK_WHEEL_MAX - 1, 0, 0); + /* Verify that a device really has an endpoint */ + if (intf->altsetting[0].desc.bNumEndpoints < 1) { + dev_err(&intf->dev, + "interface has %d endpoints, but must have minimum 1\n", + intf->altsetting[0].desc.bNumEndpoints); + err = -EINVAL; + goto fail3; + } endpoint = &intf->altsetting[0].endpoint[0].desc; /* Go set up our URB, which is called when the tablet receives @@ -1861,6 +1869,7 @@ if (i == ARRAY_SIZE(speeds)) { dev_info(&intf->dev, "Aiptek tried all speeds, no sane response\n"); + err = -EINVAL; goto fail3; } --- 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_init.c +++ linux-raspi2-4.2.0/drivers/iommu/amd_iommu_init.c @@ -228,6 +228,10 @@ static int __init iommu_go_to_state(enum iommu_init_state state); static void init_device_table_dma(void); +static int iommu_pc_get_set_reg_val(struct amd_iommu *iommu, + u8 bank, u8 cntr, u8 fxn, + u64 *value, bool is_write); + static inline void update_last_devid(u16 devid) { if (devid > amd_iommu_last_bdf) @@ -1067,6 +1071,34 @@ } /* + * Family15h Model 30h-3fh (IOMMU Mishandles ATS Write Permission) + * Workaround: + * BIOS should enable ATS write permission check by setting + * L2_DEBUG_3[AtsIgnoreIWDis](D0F2xF4_x47[0]) = 1b + */ +static void amd_iommu_ats_write_check_workaround(struct amd_iommu *iommu) +{ + u32 value; + + if ((boot_cpu_data.x86 != 0x15) || + (boot_cpu_data.x86_model < 0x30) || + (boot_cpu_data.x86_model > 0x3f)) + return; + + /* Test L2_DEBUG_3[AtsIgnoreIWDis] == 1 */ + value = iommu_read_l2(iommu, 0x47); + + if (value & BIT(0)) + return; + + /* Set L2_DEBUG_3[AtsIgnoreIWDis] = 1 */ + iommu_write_l2(iommu, 0x47, value | BIT(0)); + + pr_info("AMD-Vi: Applying ATS write check workaround for IOMMU at %s\n", + dev_name(&iommu->dev->dev)); +} + +/* * This function clues the initialization function for one IOMMU * together and also allocates the command buffer and programs the * hardware. It does NOT enable the IOMMU. This is done afterwards. @@ -1197,8 +1229,8 @@ amd_iommu_pc_present = true; /* Check if the performance counters can be written to */ - if ((0 != amd_iommu_pc_get_set_reg_val(0, 0, 0, 0, &val, true)) || - (0 != amd_iommu_pc_get_set_reg_val(0, 0, 0, 0, &val2, false)) || + if ((0 != iommu_pc_get_set_reg_val(iommu, 0, 0, 0, &val, true)) || + (0 != iommu_pc_get_set_reg_val(iommu, 0, 0, 0, &val2, false)) || (val != val2)) { pr_err("AMD-Vi: Unable to write to IOMMU perf counter.\n"); amd_iommu_pc_present = false; @@ -1344,6 +1376,7 @@ } amd_iommu_erratum_746_workaround(iommu); + amd_iommu_ats_write_check_workaround(iommu); iommu->iommu_dev = iommu_device_create(&iommu->dev->dev, iommu, amd_iommu_groups, "ivhd%d", @@ -2346,22 +2379,15 @@ } EXPORT_SYMBOL(amd_iommu_pc_get_max_counters); -int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn, +static int iommu_pc_get_set_reg_val(struct amd_iommu *iommu, + u8 bank, u8 cntr, u8 fxn, u64 *value, bool is_write) { - struct amd_iommu *iommu; u32 offset; u32 max_offset_lim; - /* Make sure the IOMMU PC resource is available */ - if (!amd_iommu_pc_present) - return -ENODEV; - - /* Locate the iommu associated with the device ID */ - iommu = amd_iommu_rlookup_table[devid]; - /* Check for valid iommu and pc register indexing */ - if (WARN_ON((iommu == NULL) || (fxn > 0x28) || (fxn & 7))) + if (WARN_ON((fxn > 0x28) || (fxn & 7))) return -ENODEV; offset = (u32)(((0x40|bank) << 12) | (cntr << 8) | fxn); @@ -2385,3 +2411,16 @@ return 0; } EXPORT_SYMBOL(amd_iommu_pc_get_set_reg_val); + +int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn, + u64 *value, bool is_write) +{ + struct amd_iommu *iommu = amd_iommu_rlookup_table[devid]; + + /* Make sure the IOMMU PC resource is available */ + if (!amd_iommu_pc_present || iommu == NULL) + return -ENODEV; + + return iommu_pc_get_set_reg_val(iommu, bank, cntr, fxn, + value, is_write); +} --- 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/dmar.c +++ linux-raspi2-4.2.0/drivers/iommu/dmar.c @@ -1342,7 +1342,7 @@ raw_spin_lock_irqsave(&iommu->register_lock, flags); - sts = dmar_readq(iommu->reg + DMAR_GSTS_REG); + sts = readl(iommu->reg + DMAR_GSTS_REG); if (!(sts & DMA_GSTS_QIES)) goto end; --- 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/intel_irq_remapping.c +++ linux-raspi2-4.2.0/drivers/iommu/intel_irq_remapping.c @@ -609,7 +609,7 @@ raw_spin_lock_irqsave(&iommu->register_lock, flags); - sts = dmar_readq(iommu->reg + DMAR_GSTS_REG); + sts = readl(iommu->reg + DMAR_GSTS_REG); if (!(sts & DMA_GSTS_IRES)) goto end; --- 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) @@ -326,17 +341,18 @@ arm_lpae_iopte *start, *end; unsigned long table_size; - /* Only leaf entries at the last level */ - if (lvl == ARM_LPAE_MAX_LEVELS - 1) - return; - if (lvl == ARM_LPAE_START_LVL(data)) table_size = data->pgd_size; else table_size = 1UL << data->pg_shift; start = ptep; - end = (void *)ptep + table_size; + + /* Only leaf entries at the last level */ + if (lvl == ARM_LPAE_MAX_LEVELS - 1) + end = ptep; + else + end = (void *)ptep + table_size; while (ptep != end) { arm_lpae_iopte pte = *ptep++; --- 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-aic-common.c +++ linux-raspi2-4.2.0/drivers/irqchip/irq-atmel-aic-common.c @@ -86,7 +86,7 @@ priority > AT91_AIC_IRQ_MAX_PRIORITY) return -EINVAL; - *val &= AT91_AIC_PRIOR; + *val &= ~AT91_AIC_PRIOR; *val |= priority; return 0; --- 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) @@ -597,11 +598,6 @@ lpi_set_config(d, true); } -static void its_eoi_irq(struct irq_data *d) -{ - gic_write_eoir(d->hwirq); -} - static int its_set_affinity(struct irq_data *d, const struct cpumask *mask_val, bool force) { @@ -638,7 +634,7 @@ .name = "ITS", .irq_mask = its_mask_irq, .irq_unmask = its_unmask_irq, - .irq_eoi = its_eoi_irq, + .irq_eoi = irq_chip_eoi_parent, .irq_set_affinity = its_set_affinity, .irq_compose_msi_msg = its_irq_compose_msi_msg, }; @@ -837,7 +833,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 +856,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 +872,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 +888,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 +924,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 +938,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 +1182,8 @@ return NULL; } + __flush_dcache_area(itt, sz); + dev->its = its; dev->itt = itt; dev->nr_ites = nr_ites; @@ -1421,6 +1442,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 +1527,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/irqchip/irq-versatile-fpga.c +++ linux-raspi2-4.2.0/drivers/irqchip/irq-versatile-fpga.c @@ -210,7 +210,12 @@ parent_irq = -1; } +#ifdef CONFIG_ARCH_VERSATILE + fpga_irq_init(base, node->name, IRQ_SIC_START, parent_irq, valid_mask, + node); +#else fpga_irq_init(base, node->name, 0, parent_irq, valid_mask, node); +#endif writel(clear_mask, base + IRQ_ENABLE_CLEAR); writel(clear_mask, base + FIQ_ENABLE_CLEAR); --- linux-raspi2-4.2.0.orig/drivers/isdn/gigaset/ser-gigaset.c +++ linux-raspi2-4.2.0/drivers/isdn/gigaset/ser-gigaset.c @@ -370,19 +370,23 @@ tasklet_kill(&cs->write_tasklet); if (!cs->hw.ser) return; - dev_set_drvdata(&cs->hw.ser->dev.dev, NULL); platform_device_unregister(&cs->hw.ser->dev); - kfree(cs->hw.ser); - cs->hw.ser = NULL; } static void gigaset_device_release(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); + struct cardstate *cs = dev_get_drvdata(dev); /* adapted from platform_device_release() in drivers/base/platform.c */ kfree(dev->platform_data); kfree(pdev->resource); + + if (!cs) + return; + dev_set_drvdata(dev, NULL); + kfree(cs->hw.ser); + cs->hw.ser = NULL; } /* --- linux-raspi2-4.2.0.orig/drivers/isdn/hardware/mISDN/mISDNipac.c +++ linux-raspi2-4.2.0/drivers/isdn/hardware/mISDN/mISDNipac.c @@ -1170,7 +1170,7 @@ if (ipac->type & IPAC_TYPE_IPACX) { ista = ReadIPAC(ipac, ISACX_ISTA); - while (ista && cnt--) { + while (ista && --cnt) { pr_debug("%s: ISTA %02x\n", ipac->name, ista); if (ista & IPACX__ICA) ipac_irq(&ipac->hscx[0], ista); @@ -1182,7 +1182,7 @@ } } else if (ipac->type & IPAC_TYPE_IPAC) { ista = ReadIPAC(ipac, IPAC_ISTA); - while (ista && cnt--) { + while (ista && --cnt) { pr_debug("%s: ISTA %02x\n", ipac->name, ista); if (ista & (IPAC__ICD | IPAC__EXD)) { istad = ReadISAC(isac, ISAC_ISTA); @@ -1200,7 +1200,7 @@ ista = ReadIPAC(ipac, IPAC_ISTA); } } else if (ipac->type & IPAC_TYPE_HSCX) { - while (cnt) { + while (--cnt) { ista = ReadIPAC(ipac, IPAC_ISTAB + ipac->hscx[1].off); pr_debug("%s: B2 ISTA %02x\n", ipac->name, ista); if (ista) @@ -1211,7 +1211,6 @@ mISDNisac_irq(isac, istad); if (0 == (ista | istad)) break; - cnt--; } } if (cnt > maxloop) /* only for ISAC/HSCX without PCI IRQ test */ --- linux-raspi2-4.2.0.orig/drivers/isdn/hisax/config.c +++ linux-raspi2-4.2.0/drivers/isdn/hisax/config.c @@ -1896,7 +1896,7 @@ ptr--; *ptr++ = '\n'; *ptr = 0; - HiSax_putstatus(cs, NULL, "%s", cs->dlog); + HiSax_putstatus(cs, NULL, cs->dlog); } else HiSax_putstatus(cs, "LogEcho: ", "warning Frame too big (%d)", --- linux-raspi2-4.2.0.orig/drivers/isdn/hisax/hfc_pci.c +++ linux-raspi2-4.2.0/drivers/isdn/hisax/hfc_pci.c @@ -901,7 +901,7 @@ ptr--; *ptr++ = '\n'; *ptr = 0; - HiSax_putstatus(cs, NULL, "%s", cs->dlog); + HiSax_putstatus(cs, NULL, cs->dlog); } else HiSax_putstatus(cs, "LogEcho: ", "warning Frame too big (%d)", total - 3); } --- linux-raspi2-4.2.0.orig/drivers/isdn/hisax/hfc_sx.c +++ linux-raspi2-4.2.0/drivers/isdn/hisax/hfc_sx.c @@ -674,7 +674,7 @@ ptr--; *ptr++ = '\n'; *ptr = 0; - HiSax_putstatus(cs, NULL, "%s", cs->dlog); + HiSax_putstatus(cs, NULL, cs->dlog); } else HiSax_putstatus(cs, "LogEcho: ", "warning Frame too big (%d)", skb->len); } --- linux-raspi2-4.2.0.orig/drivers/isdn/hisax/q931.c +++ linux-raspi2-4.2.0/drivers/isdn/hisax/q931.c @@ -1179,7 +1179,7 @@ dp--; *dp++ = '\n'; *dp = 0; - HiSax_putstatus(cs, NULL, "%s", cs->dlog); + HiSax_putstatus(cs, NULL, cs->dlog); } else HiSax_putstatus(cs, "LogFrame: ", "warning Frame too big (%d)", size); } @@ -1246,7 +1246,7 @@ } if (finish) { *dp = 0; - HiSax_putstatus(cs, NULL, "%s", cs->dlog); + HiSax_putstatus(cs, NULL, cs->dlog); return; } if ((0xfe & buf[0]) == PROTO_DIS_N0) { /* 1TR6 */ @@ -1509,5 +1509,5 @@ dp += sprintf(dp, "Unknown protocol %x!", buf[0]); } *dp = 0; - HiSax_putstatus(cs, NULL, "%s", cs->dlog); + HiSax_putstatus(cs, NULL, cs->dlog); } --- 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/btree.c +++ linux-raspi2-4.2.0/drivers/md/bcache/btree.c @@ -1741,6 +1741,7 @@ do { ret = btree_root(gc_root, c, &op, &writes, &stats); closure_sync(&writes); + cond_resched(); if (ret && ret != -EAGAIN) pr_warn("gc failed!"); @@ -2162,8 +2163,10 @@ rw_lock(true, b, b->level); if (b->key.ptr[0] != btree_ptr || - b->seq != seq + 1) + b->seq != seq + 1) { + op->lock = b->level; goto out; + } } SET_KEY_PTRS(check_key, 1); --- linux-raspi2-4.2.0.orig/drivers/md/bcache/super.c +++ linux-raspi2-4.2.0/drivers/md/bcache/super.c @@ -708,6 +708,8 @@ WARN(sysfs_create_link(&d->kobj, &c->kobj, "cache") || sysfs_create_link(&c->kobj, &d->kobj, d->name), "Couldn't create device <-> cache set symlinks"); + + clear_bit(BCACHE_DEV_UNLINK_DONE, &d->flags); } static void bcache_device_detach(struct bcache_device *d) @@ -872,8 +874,11 @@ buf[SB_LABEL_SIZE] = '\0'; env[2] = kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf); - if (atomic_xchg(&dc->running, 1)) + if (atomic_xchg(&dc->running, 1)) { + kfree(env[1]); + kfree(env[2]); return; + } if (!d->c && BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) { @@ -1035,8 +1040,12 @@ */ atomic_set(&dc->count, 1); - if (bch_cached_dev_writeback_start(dc)) + /* Block writeback thread, but spawn it */ + down_write(&dc->writeback_lock); + if (bch_cached_dev_writeback_start(dc)) { + up_write(&dc->writeback_lock); return -ENOMEM; + } if (BDEV_STATE(&dc->sb) == BDEV_STATE_DIRTY) { bch_sectors_dirty_init(dc); @@ -1048,6 +1057,9 @@ bch_cached_dev_run(dc); bcache_device_link(&dc->disk, c, "bdev"); + /* Allow the writeback thread to proceed */ + up_write(&dc->writeback_lock); + pr_info("Caching %s as %s on set %pU", bdevname(dc->bdev, buf), dc->disk.disk->disk_name, dc->disk.c->sb.set_uuid); @@ -1386,6 +1398,9 @@ struct btree *b; unsigned i; + if (!c) + closure_return(cl); + bch_cache_accounting_destroy(&c->accounting); kobject_put(&c->internal); @@ -1851,11 +1866,12 @@ return 0; } -static void register_cache(struct cache_sb *sb, struct page *sb_page, +static int register_cache(struct cache_sb *sb, struct page *sb_page, struct block_device *bdev, struct cache *ca) { char name[BDEVNAME_SIZE]; - const char *err = "cannot allocate memory"; + const char *err = NULL; + int ret = 0; memcpy(&ca->sb, sb, sizeof(struct cache_sb)); ca->bdev = bdev; @@ -1870,27 +1886,35 @@ if (blk_queue_discard(bdev_get_queue(ca->bdev))) ca->discard = CACHE_DISCARD(&ca->sb); - if (cache_alloc(sb, ca) != 0) + ret = cache_alloc(sb, ca); + if (ret != 0) goto err; - err = "error creating kobject"; - if (kobject_add(&ca->kobj, &part_to_dev(bdev->bd_part)->kobj, "bcache")) - goto err; + if (kobject_add(&ca->kobj, &part_to_dev(bdev->bd_part)->kobj, "bcache")) { + err = "error calling kobject_add"; + ret = -ENOMEM; + goto out; + } mutex_lock(&bch_register_lock); err = register_cache_set(ca); mutex_unlock(&bch_register_lock); - if (err) - goto err; + if (err) { + ret = -ENODEV; + goto out; + } pr_info("registered cache device %s", bdevname(bdev, name)); + out: kobject_put(&ca->kobj); - return; + err: - pr_notice("error opening %s: %s", bdevname(bdev, name), err); - goto out; + if (err) + pr_notice("error opening %s: %s", bdevname(bdev, name), err); + + return ret; } /* Global interfaces/init */ @@ -1961,6 +1985,8 @@ else err = "device busy"; mutex_unlock(&bch_register_lock); + if (attr == &ksysfs_register_quiet) + goto out; } goto err; } @@ -1986,7 +2012,8 @@ if (!ca) goto err_close; - register_cache(sb, sb_page, bdev, ca); + if (register_cache(sb, sb_page, bdev, ca) != 0) + goto err_close; } out: if (sb_page) @@ -1999,8 +2026,7 @@ err_close: blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL); err: - if (attr != &ksysfs_register_quiet) - pr_info("error opening %s: %s", path, err); + pr_info("error opening %s: %s", path, err); ret = -EINVAL; goto out; } @@ -2094,8 +2120,10 @@ closure_debug_init(); bcache_major = register_blkdev(0, "bcache"); - if (bcache_major < 0) + if (bcache_major < 0) { + unregister_reboot_notifier(&reboot); return bcache_major; + } if (!(bcache_wq = create_workqueue("bcache")) || !(bcache_kobj = kobject_create_and_add("bcache", fs_kobj)) || --- linux-raspi2-4.2.0.orig/drivers/md/bcache/writeback.c +++ linux-raspi2-4.2.0/drivers/md/bcache/writeback.c @@ -323,6 +323,10 @@ static bool dirty_pred(struct keybuf *buf, struct bkey *k) { + struct cached_dev *dc = container_of(buf, struct cached_dev, writeback_keys); + + BUG_ON(KEY_INODE(k) != dc->disk.id); + return KEY_DIRTY(k); } @@ -372,11 +376,24 @@ } } +/* + * Returns true if we scanned the entire disk + */ static bool refill_dirty(struct cached_dev *dc) { struct keybuf *buf = &dc->writeback_keys; + struct bkey start = KEY(dc->disk.id, 0, 0); struct bkey end = KEY(dc->disk.id, MAX_KEY_OFFSET, 0); - bool searched_from_start = false; + struct bkey start_pos; + + /* + * make sure keybuf pos is inside the range for this disk - at bringup + * we might not be attached yet so this disk's inode nr isn't + * initialized then + */ + if (bkey_cmp(&buf->last_scanned, &start) < 0 || + bkey_cmp(&buf->last_scanned, &end) > 0) + buf->last_scanned = start; if (dc->partial_stripes_expensive) { refill_full_stripes(dc); @@ -384,14 +401,20 @@ return false; } - if (bkey_cmp(&buf->last_scanned, &end) >= 0) { - buf->last_scanned = KEY(dc->disk.id, 0, 0); - searched_from_start = true; - } - + start_pos = buf->last_scanned; bch_refill_keybuf(dc->disk.c, buf, &end, dirty_pred); - return bkey_cmp(&buf->last_scanned, &end) >= 0 && searched_from_start; + if (bkey_cmp(&buf->last_scanned, &end) < 0) + return false; + + /* + * If we get to the end start scanning again from the beginning, and + * only scan up to where we initially started scanning from: + */ + buf->last_scanned = start; + bch_refill_keybuf(dc->disk.c, buf, &start_pos, dirty_pred); + + return bkey_cmp(&buf->last_scanned, &start_pos) >= 0; } static int bch_writeback_thread(void *arg) --- 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); @@ -863,19 +863,40 @@ return 0; } -#define WRITE_LOCK(cmd) \ - if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) \ +#define WRITE_LOCK(cmd) \ + down_write(&cmd->root_lock); \ + if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { \ + up_write(&cmd->root_lock); \ return -EINVAL; \ - down_write(&cmd->root_lock) + } #define WRITE_LOCK_VOID(cmd) \ - if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) \ + down_write(&cmd->root_lock); \ + if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { \ + up_write(&cmd->root_lock); \ return; \ - down_write(&cmd->root_lock) + } #define WRITE_UNLOCK(cmd) \ up_write(&cmd->root_lock) +#define READ_LOCK(cmd) \ + down_read(&cmd->root_lock); \ + if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { \ + up_read(&cmd->root_lock); \ + return -EINVAL; \ + } + +#define READ_LOCK_VOID(cmd) \ + down_read(&cmd->root_lock); \ + if (cmd->fail_io || dm_bm_is_read_only(cmd->bm)) { \ + up_read(&cmd->root_lock); \ + return; \ + } + +#define READ_UNLOCK(cmd) \ + up_read(&cmd->root_lock) + int dm_cache_resize(struct dm_cache_metadata *cmd, dm_cblock_t new_cache_size) { int r; @@ -1011,22 +1032,20 @@ { int r; - down_read(&cmd->root_lock); + READ_LOCK(cmd); r = __load_discards(cmd, fn, context); - up_read(&cmd->root_lock); + READ_UNLOCK(cmd); return r; } -dm_cblock_t dm_cache_size(struct dm_cache_metadata *cmd) +int dm_cache_size(struct dm_cache_metadata *cmd, dm_cblock_t *result) { - dm_cblock_t r; - - down_read(&cmd->root_lock); - r = cmd->cache_blocks; - up_read(&cmd->root_lock); + READ_LOCK(cmd); + *result = cmd->cache_blocks; + READ_UNLOCK(cmd); - return r; + return 0; } static int __remove(struct dm_cache_metadata *cmd, dm_cblock_t cblock) @@ -1184,9 +1203,9 @@ { int r; - down_read(&cmd->root_lock); + READ_LOCK(cmd); r = __load_mappings(cmd, policy, fn, context); - up_read(&cmd->root_lock); + READ_UNLOCK(cmd); return r; } @@ -1211,18 +1230,18 @@ void dm_cache_dump(struct dm_cache_metadata *cmd) { - down_read(&cmd->root_lock); + READ_LOCK_VOID(cmd); __dump_mappings(cmd); - up_read(&cmd->root_lock); + READ_UNLOCK(cmd); } int dm_cache_changed_this_transaction(struct dm_cache_metadata *cmd) { int r; - down_read(&cmd->root_lock); + READ_LOCK(cmd); r = cmd->changed; - up_read(&cmd->root_lock); + READ_UNLOCK(cmd); return r; } @@ -1272,9 +1291,9 @@ void dm_cache_metadata_get_stats(struct dm_cache_metadata *cmd, struct dm_cache_statistics *stats) { - down_read(&cmd->root_lock); + READ_LOCK_VOID(cmd); *stats = cmd->stats; - up_read(&cmd->root_lock); + READ_UNLOCK(cmd); } void dm_cache_metadata_set_stats(struct dm_cache_metadata *cmd, @@ -1308,9 +1327,9 @@ { int r = -EINVAL; - down_read(&cmd->root_lock); + READ_LOCK(cmd); r = dm_sm_get_nr_free(cmd->metadata_sm, result); - up_read(&cmd->root_lock); + READ_UNLOCK(cmd); return r; } @@ -1320,9 +1339,9 @@ { int r = -EINVAL; - down_read(&cmd->root_lock); + READ_LOCK(cmd); r = dm_sm_get_nr_blocks(cmd->metadata_sm, result); - up_read(&cmd->root_lock); + READ_UNLOCK(cmd); return r; } @@ -1413,7 +1432,13 @@ int dm_cache_metadata_all_clean(struct dm_cache_metadata *cmd, bool *result) { - return blocks_are_unmapped_or_clean(cmd, 0, cmd->cache_blocks, result); + int r; + + READ_LOCK(cmd); + r = blocks_are_unmapped_or_clean(cmd, 0, cmd->cache_blocks, result); + READ_UNLOCK(cmd); + + return r; } void dm_cache_metadata_set_read_only(struct dm_cache_metadata *cmd) @@ -1436,10 +1461,7 @@ struct dm_block *sblock; struct cache_disk_superblock *disk_super; - /* - * We ignore fail_io for this function. - */ - down_write(&cmd->root_lock); + WRITE_LOCK(cmd); set_bit(NEEDS_CHECK, &cmd->flags); r = superblock_lock(cmd, &sblock); @@ -1454,19 +1476,17 @@ dm_bm_unlock(sblock); out: - up_write(&cmd->root_lock); + WRITE_UNLOCK(cmd); return r; } -bool dm_cache_metadata_needs_check(struct dm_cache_metadata *cmd) +int dm_cache_metadata_needs_check(struct dm_cache_metadata *cmd, bool *result) { - bool needs_check; - - down_read(&cmd->root_lock); - needs_check = !!test_bit(NEEDS_CHECK, &cmd->flags); - up_read(&cmd->root_lock); + READ_LOCK(cmd); + *result = !!test_bit(NEEDS_CHECK, &cmd->flags); + READ_UNLOCK(cmd); - return needs_check; + return 0; } int dm_cache_metadata_abort(struct dm_cache_metadata *cmd) --- linux-raspi2-4.2.0.orig/drivers/md/dm-cache-metadata.h +++ linux-raspi2-4.2.0/drivers/md/dm-cache-metadata.h @@ -66,7 +66,7 @@ * origin blocks to map to. */ int dm_cache_resize(struct dm_cache_metadata *cmd, dm_cblock_t new_cache_size); -dm_cblock_t dm_cache_size(struct dm_cache_metadata *cmd); +int dm_cache_size(struct dm_cache_metadata *cmd, dm_cblock_t *result); int dm_cache_discard_bitset_resize(struct dm_cache_metadata *cmd, sector_t discard_block_size, @@ -137,7 +137,7 @@ */ int dm_cache_metadata_all_clean(struct dm_cache_metadata *cmd, bool *result); -bool dm_cache_metadata_needs_check(struct dm_cache_metadata *cmd); +int dm_cache_metadata_needs_check(struct dm_cache_metadata *cmd, bool *result); int dm_cache_metadata_set_needs_check(struct dm_cache_metadata *cmd); void dm_cache_metadata_set_read_only(struct dm_cache_metadata *cmd); void dm_cache_metadata_set_read_write(struct dm_cache_metadata *cmd); --- 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 @@ -988,9 +988,14 @@ static void set_cache_mode(struct cache *cache, enum cache_metadata_mode new_mode) { - bool needs_check = dm_cache_metadata_needs_check(cache->cmd); + bool needs_check; enum cache_metadata_mode old_mode = get_cache_mode(cache); + if (dm_cache_metadata_needs_check(cache->cmd, &needs_check)) { + DMERR("unable to read needs_check flag, setting failure mode"); + new_mode = CM_FAIL; + } + if (new_mode == CM_WRITE && needs_check) { DMERR("%s: unable to switch cache to write mode until repaired.", cache_device_name(cache)); @@ -1729,6 +1734,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 +1770,8 @@ remap_to_cache(cache, bio, cblock); issue(cache, bio); } + + free_prison_cell(cache, cell); } /*----------------------------------------------------------------*/ @@ -3513,6 +3522,7 @@ char buf[BDEVNAME_SIZE]; struct cache *cache = ti->private; dm_cblock_t residency; + bool needs_check; switch (type) { case STATUSTYPE_INFO: @@ -3586,7 +3596,9 @@ else DMEMIT("rw "); - if (dm_cache_metadata_needs_check(cache->cmd)) + r = dm_cache_metadata_needs_check(cache->cmd, &needs_check); + + if (r || needs_check) DMEMIT("needs_check "); else DMEMIT("- "); --- linux-raspi2-4.2.0.orig/drivers/md/dm-crypt.c +++ linux-raspi2-4.2.0/drivers/md/dm-crypt.c @@ -112,7 +112,8 @@ * and encrypts / decrypts at the same time. */ enum flags { DM_CRYPT_SUSPENDED, DM_CRYPT_KEY_VALID, - DM_CRYPT_SAME_CPU, DM_CRYPT_NO_OFFLOAD }; + DM_CRYPT_SAME_CPU, DM_CRYPT_NO_OFFLOAD, + DM_CRYPT_EXIT_THREAD}; /* * The fields in here must be read only after initialization. @@ -968,7 +969,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 @@ -1202,20 +1204,18 @@ if (!RB_EMPTY_ROOT(&cc->write_tree)) goto pop_from_list; + if (unlikely(test_bit(DM_CRYPT_EXIT_THREAD, &cc->flags))) { + spin_unlock_irq(&cc->write_thread_wait.lock); + break; + } + __set_current_state(TASK_INTERRUPTIBLE); __add_wait_queue(&cc->write_thread_wait, &wait); spin_unlock_irq(&cc->write_thread_wait.lock); - if (unlikely(kthread_should_stop())) { - set_task_state(current, TASK_RUNNING); - remove_wait_queue(&cc->write_thread_wait, &wait); - break; - } - schedule(); - set_task_state(current, TASK_RUNNING); spin_lock_irq(&cc->write_thread_wait.lock); __remove_wait_queue(&cc->write_thread_wait, &wait); goto continue_locked; @@ -1530,8 +1530,13 @@ if (!cc) return; - if (cc->write_thread) + if (cc->write_thread) { + spin_lock_irq(&cc->write_thread_wait.lock); + set_bit(DM_CRYPT_EXIT_THREAD, &cc->flags); + wake_up_locked(&cc->write_thread_wait); + spin_unlock_irq(&cc->write_thread_wait.lock); kthread_stop(cc->write_thread); + } if (cc->io_queue) destroy_workqueue(cc->io_queue); @@ -2058,9 +2063,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 +2088,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-exception-store.h +++ linux-raspi2-4.2.0/drivers/md/dm-exception-store.h @@ -70,7 +70,7 @@ * Update the metadata with this exception. */ void (*commit_exception) (struct dm_exception_store *store, - struct dm_exception *e, + struct dm_exception *e, int valid, void (*callback) (void *, int success), void *callback_context); --- 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-snap-persistent.c +++ linux-raspi2-4.2.0/drivers/md/dm-snap-persistent.c @@ -694,7 +694,7 @@ } static void persistent_commit_exception(struct dm_exception_store *store, - struct dm_exception *e, + struct dm_exception *e, int valid, void (*callback) (void *, int success), void *callback_context) { @@ -703,6 +703,9 @@ struct core_exception ce; struct commit_callback *cb; + if (!valid) + ps->valid = 0; + ce.old_chunk = e->old_chunk; ce.new_chunk = e->new_chunk; write_exception(ps, ps->current_committed++, &ce); --- linux-raspi2-4.2.0.orig/drivers/md/dm-snap-transient.c +++ linux-raspi2-4.2.0/drivers/md/dm-snap-transient.c @@ -52,12 +52,12 @@ } static void transient_commit_exception(struct dm_exception_store *store, - struct dm_exception *e, + struct dm_exception *e, int valid, void (*callback) (void *, int success), void *callback_context) { /* Just succeed */ - callback(callback_context, 1); + callback(callback_context, valid); } static void transient_usage(struct dm_exception_store *store, --- linux-raspi2-4.2.0.orig/drivers/md/dm-snap.c +++ linux-raspi2-4.2.0/drivers/md/dm-snap.c @@ -1099,6 +1099,7 @@ int i; int r = -EINVAL; char *origin_path, *cow_path; + dev_t origin_dev, cow_dev; unsigned args_used, num_flush_bios = 1; fmode_t origin_mode = FMODE_READ; @@ -1129,11 +1130,19 @@ ti->error = "Cannot get origin device"; goto bad_origin; } + origin_dev = s->origin->bdev->bd_dev; cow_path = argv[0]; argv++; argc--; + cow_dev = dm_get_dev_t(cow_path); + if (cow_dev && cow_dev == origin_dev) { + ti->error = "COW device cannot be the same as origin device"; + r = -EINVAL; + goto bad_cow; + } + r = dm_get_device(ti, cow_path, dm_table_get_mode(ti->table), &s->cow); if (r) { ti->error = "Cannot get COW device"; @@ -1428,8 +1437,9 @@ dm_table_event(s->ti->table); } -static void pending_complete(struct dm_snap_pending_exception *pe, int success) +static void pending_complete(void *context, int success) { + struct dm_snap_pending_exception *pe = context; struct dm_exception *e; struct dm_snapshot *s = pe->snap; struct bio *origin_bios = NULL; @@ -1499,24 +1509,13 @@ free_pending_exception(pe); } -static void commit_callback(void *context, int success) -{ - struct dm_snap_pending_exception *pe = context; - - pending_complete(pe, success); -} - static void complete_exception(struct dm_snap_pending_exception *pe) { struct dm_snapshot *s = pe->snap; - if (unlikely(pe->copy_error)) - pending_complete(pe, 0); - - else - /* Update the metadata if we are persistent */ - s->store->type->commit_exception(s->store, &pe->e, - commit_callback, pe); + /* Update the metadata if we are persistent */ + s->store->type->commit_exception(s->store, &pe->e, !pe->copy_error, + pending_complete, pe); } /* --- 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-table.c +++ linux-raspi2-4.2.0/drivers/md/dm-table.c @@ -365,6 +365,26 @@ } /* + * Convert the path to a device + */ +dev_t dm_get_dev_t(const char *path) +{ + dev_t uninitialized_var(dev); + struct block_device *bdev; + + bdev = lookup_bdev(path); + if (IS_ERR(bdev)) + dev = name_to_dev_t(path); + else { + dev = bdev->bd_dev; + bdput(bdev); + } + + return dev; +} +EXPORT_SYMBOL_GPL(dm_get_dev_t); + +/* * Add a device to the list, or just increment the usage count if * it's already present. */ @@ -372,23 +392,15 @@ struct dm_dev **result) { int r; - dev_t uninitialized_var(dev); + dev_t dev; struct dm_dev_internal *dd; struct dm_table *t = ti->table; - struct block_device *bdev; BUG_ON(!t); - /* convert the path to a device */ - bdev = lookup_bdev(path); - if (IS_ERR(bdev)) { - dev = name_to_dev_t(path); - if (!dev) - return -ENODEV; - } else { - dev = bdev->bd_dev; - bdput(bdev); - } + dev = dm_get_dev_t(path); + if (!dev) + return -ENODEV; dd = find_device(&t->devices, dev); if (!dd) { --- linux-raspi2-4.2.0.orig/drivers/md/dm-thin-metadata.c +++ linux-raspi2-4.2.0/drivers/md/dm-thin-metadata.c @@ -1203,6 +1203,12 @@ dm_block_t held_root; /* + * We commit to ensure the btree roots which we increment in a + * moment are up to date. + */ + __commit_transaction(pmd); + + /* * Copy the superblock. */ dm_sm_inc_block(pmd->metadata_sm, THIN_SUPERBLOCK_LOCATION); @@ -1530,7 +1536,7 @@ static int __remove_range(struct dm_thin_device *td, dm_block_t begin, dm_block_t end) { int r; - unsigned count; + unsigned count, total_count = 0; struct dm_pool_metadata *pmd = td->pmd; dm_block_t keys[1] = { td->id }; __le64 value; @@ -1553,11 +1559,29 @@ if (r) return r; - r = dm_btree_remove_leaves(&pmd->bl_info, mapping_root, &begin, end, &mapping_root, &count); - if (r) - return r; + /* + * Remove leaves stops at the first unmapped entry, so we have to + * loop round finding mapped ranges. + */ + while (begin < end) { + r = dm_btree_lookup_next(&pmd->bl_info, mapping_root, &begin, &begin, &value); + if (r == -ENODATA) + break; - td->mapped_blocks -= count; + if (r) + return r; + + if (begin >= end) + break; + + r = dm_btree_remove_leaves(&pmd->bl_info, mapping_root, &begin, end, &mapping_root, &count); + if (r) + return r; + + total_count += count; + } + + td->mapped_blocks -= total_count; td->changed = 1; /* @@ -1911,5 +1935,8 @@ void dm_pool_issue_prefetches(struct dm_pool_metadata *pmd) { - dm_tm_issue_prefetches(pmd->tm); + down_read(&pmd->root_lock); + if (!pmd->fail_io) + dm_tm_issue_prefetches(pmd->tm); + up_read(&pmd->root_lock); } --- linux-raspi2-4.2.0.orig/drivers/md/dm-thin.c +++ linux-raspi2-4.2.0/drivers/md/dm-thin.c @@ -2487,6 +2487,7 @@ case PM_WRITE: if (old_mode != new_mode) notify_of_pool_mode_change(pool, "write"); + pool->pf.error_if_no_space = pt->requested_pf.error_if_no_space; dm_pool_metadata_read_write(pool->pmd); pool->process_bio = process_bio; pool->process_discard = process_discard_bio; @@ -3255,7 +3256,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); @@ -3506,8 +3507,8 @@ struct pool_c *pt = ti->private; struct pool *pool = pt->pool; - cancel_delayed_work(&pool->waker); - cancel_delayed_work(&pool->no_space_timeout); + cancel_delayed_work_sync(&pool->waker); + cancel_delayed_work_sync(&pool->no_space_timeout); flush_workqueue(pool->wq); (void) commit(pool); } @@ -4334,6 +4335,9 @@ struct thin_c *tc = ti->private; struct pool *pool = tc->pool; + if (!pool->pf.discard_enabled) + return; + 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 @@ -1161,6 +1161,8 @@ if (clone) free_rq_clone(clone); + else if (!tio->md->queue->mq_ops) + free_rq_tio(tio); } /* @@ -1182,9 +1184,9 @@ { int rw = rq_data_dir(rq); + rq_end_stats(md, rq); dm_unprep_request(rq); - rq_end_stats(md, rq); if (!rq->q->mq_ops) old_requeue_request(rq); else { @@ -2251,6 +2253,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 +2270,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 +2958,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 +2971,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 @@ -4235,8 +4235,7 @@ } mddev_unlock(mddev); } - } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || - test_bit(MD_RECOVERY_NEEDED, &mddev->recovery)) + } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) return -EBUSY; else if (cmd_match(page, "resync")) clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); @@ -4249,8 +4248,12 @@ return -EINVAL; err = mddev_lock(mddev); if (!err) { - clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); - err = mddev->pers->start_reshape(mddev); + if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) + err = -EBUSY; + else { + clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); + err = mddev->pers->start_reshape(mddev); + } mddev_unlock(mddev); } if (err) @@ -8030,8 +8033,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/multipath.c +++ linux-raspi2-4.2.0/drivers/md/multipath.c @@ -129,7 +129,9 @@ } multipath = conf->multipaths + mp_bh->path; - mp_bh->bio = *bio; + bio_init(&mp_bh->bio); + __bio_clone_fast(&mp_bh->bio, bio); + mp_bh->bio.bi_iter.bi_sector += multipath->rdev->data_offset; mp_bh->bio.bi_bdev = multipath->rdev->bdev; mp_bh->bio.bi_rw |= REQ_FAILFAST_TRANSPORT; --- 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 @@ -63,6 +63,11 @@ return bsearch(n, key, 0); } +static int upper_bound(struct btree_node *n, uint64_t key) +{ + return bsearch(n, key, 1); +} + void inc_children(struct dm_transaction_manager *tm, struct btree_node *n, struct dm_btree_value_type *vt) { @@ -250,6 +255,16 @@ dm_tm_unlock(s->tm, f->b); } +static void unlock_all_frames(struct del_stack *s) +{ + struct frame *f; + + while (unprocessed_frames(s)) { + f = s->spine + s->top--; + dm_tm_unlock(s->tm, f->b); + } +} + int dm_btree_del(struct dm_btree_info *info, dm_block_t root) { int r; @@ -306,9 +321,13 @@ pop_frame(s); } } - out: + if (r) { + /* cleanup all frames of del_stack */ + unlock_all_frames(s); + } kfree(s); + return r; } EXPORT_SYMBOL_GPL(dm_btree_del); @@ -390,6 +409,82 @@ } EXPORT_SYMBOL_GPL(dm_btree_lookup); +static int dm_btree_lookup_next_single(struct dm_btree_info *info, dm_block_t root, + uint64_t key, uint64_t *rkey, void *value_le) +{ + int r, i; + uint32_t flags, nr_entries; + struct dm_block *node; + struct btree_node *n; + + r = bn_read_lock(info, root, &node); + if (r) + return r; + + n = dm_block_data(node); + flags = le32_to_cpu(n->header.flags); + nr_entries = le32_to_cpu(n->header.nr_entries); + + if (flags & INTERNAL_NODE) { + i = lower_bound(n, key); + if (i < 0 || i >= nr_entries) { + r = -ENODATA; + goto out; + } + + r = dm_btree_lookup_next_single(info, value64(n, i), key, rkey, value_le); + if (r == -ENODATA && i < (nr_entries - 1)) { + i++; + r = dm_btree_lookup_next_single(info, value64(n, i), key, rkey, value_le); + } + + } else { + i = upper_bound(n, key); + if (i < 0 || i >= nr_entries) { + r = -ENODATA; + goto out; + } + + *rkey = le64_to_cpu(n->keys[i]); + memcpy(value_le, value_ptr(n, i), info->value_type.size); + } +out: + dm_tm_unlock(info->tm, node); + return r; +} + +int dm_btree_lookup_next(struct dm_btree_info *info, dm_block_t root, + uint64_t *keys, uint64_t *rkey, void *value_le) +{ + unsigned level; + int r = -ENODATA; + __le64 internal_value_le; + struct ro_spine spine; + + init_ro_spine(&spine, info); + for (level = 0; level < info->levels - 1u; level++) { + r = btree_lookup_raw(&spine, root, keys[level], + lower_bound, rkey, + &internal_value_le, sizeof(uint64_t)); + if (r) + goto out; + + if (*rkey != keys[level]) { + r = -ENODATA; + goto out; + } + + root = le64_to_cpu(internal_value_le); + } + + r = dm_btree_lookup_next_single(info, root, keys[level], rkey, value_le); +out: + exit_ro_spine(&spine); + return r; +} + +EXPORT_SYMBOL_GPL(dm_btree_lookup_next); + /* * Splits a node by creating a sibling node and shifting half the nodes * contents across. Assumes there is a parent node, and it has room for @@ -471,8 +566,10 @@ r = insert_at(sizeof(__le64), pn, parent_index + 1, le64_to_cpu(rn->keys[0]), &location); - if (r) + if (r) { + unlock_block(s->info, right); return r; + } if (key < le64_to_cpu(rn->keys[0])) { unlock_block(s->info, right); @@ -523,7 +620,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/persistent-data/dm-btree.h +++ linux-raspi2-4.2.0/drivers/md/persistent-data/dm-btree.h @@ -110,6 +110,13 @@ uint64_t *keys, void *value_le); /* + * Tries to find the first key where the bottom level key is >= to that + * given. Useful for skipping empty sections of the btree. + */ +int dm_btree_lookup_next(struct dm_btree_info *info, dm_block_t root, + uint64_t *keys, uint64_t *rkey, void *value_le); + +/* * Insertion (or overwrite an existing value). O(ln(n)) */ int dm_btree_insert(struct dm_btree_info *info, dm_block_t root, @@ -135,9 +142,10 @@ uint64_t *keys, dm_block_t *new_root); /* - * Removes values between 'keys' and keys2, where keys2 is keys with the - * final key replaced with 'end_key'. 'end_key' is the one-past-the-end - * value. 'keys' may be altered. + * Removes a _contiguous_ run of values starting from 'keys' and not + * reaching keys2 (where keys2 is keys with the final key replaced with + * 'end_key'). 'end_key' is the one-past-the-end value. 'keys' may be + * altered. */ int dm_btree_remove_leaves(struct dm_btree_info *info, dm_block_t root, uint64_t *keys, uint64_t end_key, --- linux-raspi2-4.2.0.orig/drivers/md/persistent-data/dm-space-map-metadata.c +++ linux-raspi2-4.2.0/drivers/md/persistent-data/dm-space-map-metadata.c @@ -136,7 +136,7 @@ return 0; } -static int brb_pop(struct bop_ring_buffer *brb, struct block_op *result) +static int brb_peek(struct bop_ring_buffer *brb, struct block_op *result) { struct block_op *bop; @@ -147,6 +147,14 @@ result->type = bop->type; result->block = bop->block; + return 0; +} + +static int brb_pop(struct bop_ring_buffer *brb) +{ + if (brb_empty(brb)) + return -ENODATA; + brb->begin = brb_next(brb, brb->begin); return 0; @@ -211,7 +219,7 @@ while (!brb_empty(&smm->uncommitted)) { struct block_op bop; - r = brb_pop(&smm->uncommitted, &bop); + r = brb_peek(&smm->uncommitted, &bop); if (r) { DMERR("bug in bop ring buffer"); break; @@ -220,6 +228,8 @@ r = commit_bop(smm, &bop); if (r) break; + + brb_pop(&smm->uncommitted); } return r; @@ -683,7 +693,6 @@ static int sm_metadata_extend(struct dm_space_map *sm, dm_block_t extra_blocks) { int r, i; - enum allocation_event ev; struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm); dm_block_t old_len = smm->ll.nr_blocks; @@ -705,11 +714,12 @@ * allocate any new blocks. */ do { - for (i = old_len; !r && i < smm->begin; i++) { - r = sm_ll_inc(&smm->ll, i, &ev); - if (r) - goto out; - } + for (i = old_len; !r && i < smm->begin; i++) + r = add_bop(smm, BOP_INC, i); + + if (r) + goto out; + old_len = smm->begin; r = apply_bops(smm); @@ -754,7 +764,6 @@ { int r; dm_block_t i; - enum allocation_event ev; struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm); smm->begin = superblock + 1; @@ -782,7 +791,7 @@ * allocated blocks that they were built from. */ for (i = superblock; !r && i < smm->begin; i++) - r = sm_ll_inc(&smm->ll, i, &ev); + r = add_bop(smm, BOP_INC, i); if (r) 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 @@ -2052,6 +2052,8 @@ first = i; fbio = r10_bio->devs[i].bio; + fbio->bi_iter.bi_size = r10_bio->sectors << 9; + fbio->bi_iter.bi_idx = 0; vcnt = (r10_bio->sectors + (PAGE_SIZE >> 9) - 1) >> (PAGE_SHIFT - 9); /* now find blocks with errors */ @@ -2095,7 +2097,7 @@ bio_reset(tbio); tbio->bi_vcnt = vcnt; - tbio->bi_iter.bi_size = r10_bio->sectors << 9; + tbio->bi_iter.bi_size = fbio->bi_iter.bi_size; tbio->bi_rw = WRITE; tbio->bi_private = r10_bio; tbio->bi_iter.bi_sector = r10_bio->devs[i].addr; @@ -2580,7 +2582,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 @@ -344,8 +344,7 @@ int hash) { int size; - unsigned long do_wakeup = 0; - int i = 0; + bool do_wakeup = false; unsigned long flags; if (hash == NR_STRIPE_HASH_LOCKS) { @@ -366,19 +365,15 @@ !list_empty(list)) atomic_dec(&conf->empty_inactive_list_nr); list_splice_tail_init(list, conf->inactive_list + hash); - do_wakeup |= 1 << hash; + do_wakeup = true; spin_unlock_irqrestore(conf->hash_locks + hash, flags); } size--; hash--; } - for (i = 0; i < NR_STRIPE_HASH_LOCKS; i++) { - if (do_wakeup & (1 << i)) - wake_up(&conf->wait_for_stripe[i]); - } - if (do_wakeup) { + wake_up(&conf->wait_for_stripe); if (atomic_read(&conf->active_stripes) == 0) wake_up(&conf->wait_for_quiescent); if (conf->retry_read_aligned) @@ -691,15 +686,14 @@ if (!sh) { set_bit(R5_INACTIVE_BLOCKED, &conf->cache_state); - wait_event_exclusive_cmd( - conf->wait_for_stripe[hash], + wait_event_lock_irq( + conf->wait_for_stripe, !list_empty(conf->inactive_list + hash) && (atomic_read(&conf->active_stripes) < (conf->max_nr_stripes * 3 / 4) || !test_bit(R5_INACTIVE_BLOCKED, &conf->cache_state)), - spin_unlock_irq(conf->hash_locks + hash), - spin_lock_irq(conf->hash_locks + hash)); + *(conf->hash_locks + hash)); clear_bit(R5_INACTIVE_BLOCKED, &conf->cache_state); } else { @@ -724,9 +718,6 @@ } } while (sh == NULL); - if (!list_empty(conf->inactive_list + hash)) - wake_up(&conf->wait_for_stripe[hash]); - spin_unlock_irq(conf->hash_locks + hash); return sh; } @@ -2091,6 +2082,14 @@ unsigned long cpu; int err = 0; + /* + * Never shrink. And mddev_suspend() could deadlock if this is called + * from raid5d. In that case, scribble_disks and scribble_sectors + * should equal to new_disks and new_sectors + */ + if (conf->scribble_disks >= new_disks && + conf->scribble_sectors >= new_sectors) + return 0; mddev_suspend(conf->mddev); get_online_cpus(); for_each_present_cpu(cpu) { @@ -2112,6 +2111,10 @@ } put_online_cpus(); mddev_resume(conf->mddev); + if (!err) { + conf->scribble_disks = new_disks; + conf->scribble_sectors = new_sectors; + } return err; } @@ -2192,7 +2195,7 @@ cnt = 0; list_for_each_entry(nsh, &newstripes, lru) { lock_device_hash_lock(conf, hash); - wait_event_exclusive_cmd(conf->wait_for_stripe[hash], + wait_event_cmd(conf->wait_for_stripe, !list_empty(conf->inactive_list + hash), unlock_device_hash_lock(conf, hash), lock_device_hash_lock(conf, hash)); @@ -3505,6 +3508,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 +3522,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)) @@ -4231,7 +4236,6 @@ WARN_ON_ONCE(sh->state & ((1 << STRIPE_ACTIVE) | (1 << STRIPE_SYNCING) | (1 << STRIPE_REPLACED) | - (1 << STRIPE_PREREAD_ACTIVE) | (1 << STRIPE_DELAYED) | (1 << STRIPE_BIT_DELAY) | (1 << STRIPE_FULL_WRITE) | @@ -4246,6 +4250,7 @@ (1 << STRIPE_REPLACED))); set_mask_bits(&sh->state, ~(STRIPE_EXPAND_SYNC_FLAGS | + (1 << STRIPE_PREREAD_ACTIVE) | (1 << STRIPE_DEGRADED)), head_sh->state & (1 << STRIPE_INSYNC)); @@ -6377,6 +6382,12 @@ } put_online_cpus(); + if (!err) { + conf->scribble_disks = max(conf->raid_disks, + conf->previous_raid_disks); + conf->scribble_sectors = max(conf->chunk_sectors, + conf->prev_chunk_sectors); + } return err; } @@ -6467,9 +6478,7 @@ seqcount_init(&conf->gen_lock); mutex_init(&conf->cache_size_mutex); init_waitqueue_head(&conf->wait_for_quiescent); - for (i = 0; i < NR_STRIPE_HASH_LOCKS; i++) { - init_waitqueue_head(&conf->wait_for_stripe[i]); - } + init_waitqueue_head(&conf->wait_for_stripe); init_waitqueue_head(&conf->wait_for_overlap); INIT_LIST_HEAD(&conf->handle_list); INIT_LIST_HEAD(&conf->hold_list); @@ -6956,8 +6965,8 @@ } if (discard_supported && - mddev->queue->limits.max_discard_sectors >= stripe && - mddev->queue->limits.discard_granularity >= stripe) + mddev->queue->limits.max_discard_sectors >= (stripe >> 9) && + mddev->queue->limits.discard_granularity >= stripe) queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, mddev->queue); else --- linux-raspi2-4.2.0.orig/drivers/md/raid5.h +++ linux-raspi2-4.2.0/drivers/md/raid5.h @@ -501,6 +501,8 @@ * conversions */ } __percpu *percpu; + int scribble_disks; + int scribble_sectors; #ifdef CONFIG_HOTPLUG_CPU struct notifier_block cpu_notify; #endif @@ -513,7 +515,7 @@ atomic_t empty_inactive_list_nr; struct llist_head released_stripes; wait_queue_head_t wait_for_quiescent; - wait_queue_head_t wait_for_stripe[NR_STRIPE_HASH_LOCKS]; + wait_queue_head_t wait_for_stripe; wait_queue_head_t wait_for_overlap; unsigned long cache_state; #define R5_INACTIVE_BLOCKED 1 /* release of inactive stripes blocked, --- linux-raspi2-4.2.0.orig/drivers/media/dvb-core/dvb_frontend.c +++ linux-raspi2-4.2.0/drivers/media/dvb-core/dvb_frontend.c @@ -2314,9 +2314,9 @@ dev_dbg(fe->dvb->device, "%s: current delivery system on cache: %d, V3 type: %d\n", __func__, c->delivery_system, fe->ops.info.type); - /* Force the CAN_INVERSION_AUTO bit on. If the frontend doesn't - * do it, it is done for it. */ - info->caps |= FE_CAN_INVERSION_AUTO; + /* Set CAN_INVERSION_AUTO bit on in other than oneshot mode */ + if (!(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT)) + info->caps |= FE_CAN_INVERSION_AUTO; err = 0; break; } --- 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/dvb-frontends/tda1004x.c +++ linux-raspi2-4.2.0/drivers/media/dvb-frontends/tda1004x.c @@ -903,9 +903,18 @@ { struct dtv_frontend_properties *fe_params = &fe->dtv_property_cache; struct tda1004x_state* state = fe->demodulator_priv; + int status; dprintk("%s\n", __func__); + status = tda1004x_read_byte(state, TDA1004X_STATUS_CD); + if (status == -1) + return -EIO; + + /* Only update the properties cache if device is locked */ + if (!(status & 8)) + return 0; + // inversion status fe_params->inversion = INVERSION_OFF; if (tda1004x_read_byte(state, TDA1004X_CONFC1) & 0x20) --- linux-raspi2-4.2.0.orig/drivers/media/i2c/adv7511.c +++ linux-raspi2-4.2.0/drivers/media/i2c/adv7511.c @@ -1161,12 +1161,23 @@ } } +static void adv7511_notify_no_edid(struct v4l2_subdev *sd) +{ + struct adv7511_state *state = get_adv7511_state(sd); + struct adv7511_edid_detect ed; + + /* We failed to read the EDID, so send an event for this. */ + ed.present = false; + ed.segment = adv7511_rd(sd, 0xc4); + v4l2_subdev_notify(sd, ADV7511_EDID_DETECT, (void *)&ed); + v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, 0x0); +} + static void adv7511_edid_handler(struct work_struct *work) { struct delayed_work *dwork = to_delayed_work(work); struct adv7511_state *state = container_of(dwork, struct adv7511_state, edid_handler); struct v4l2_subdev *sd = &state->sd; - struct adv7511_edid_detect ed; v4l2_dbg(1, debug, sd, "%s:\n", __func__); @@ -1191,9 +1202,7 @@ } /* We failed to read the EDID, so send an event for this. */ - ed.present = false; - ed.segment = adv7511_rd(sd, 0xc4); - v4l2_subdev_notify(sd, ADV7511_EDID_DETECT, (void *)&ed); + adv7511_notify_no_edid(sd); v4l2_dbg(1, debug, sd, "%s: no edid found\n", __func__); } @@ -1264,7 +1273,6 @@ /* update read only ctrls */ v4l2_ctrl_s_ctrl(state->hotplug_ctrl, adv7511_have_hotplug(sd) ? 0x1 : 0x0); v4l2_ctrl_s_ctrl(state->rx_sense_ctrl, adv7511_have_rx_sense(sd) ? 0x1 : 0x0); - v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, state->edid.segments ? 0x1 : 0x0); if ((status & MASK_ADV7511_HPD_DETECT) && ((status & MASK_ADV7511_MSEN_DETECT) || state->edid.segments)) { v4l2_dbg(1, debug, sd, "%s: hotplug and (rx-sense or edid)\n", __func__); @@ -1294,6 +1302,7 @@ } adv7511_s_power(sd, false); memset(&state->edid, 0, sizeof(struct adv7511_state_edid)); + adv7511_notify_no_edid(sd); } } @@ -1370,6 +1379,7 @@ } /* one more segment read ok */ state->edid.segments = segment + 1; + v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, 0x1); if (((state->edid.data[0x7e] >> 1) + 1) > state->edid.segments) { /* Request next EDID segment */ v4l2_dbg(1, debug, sd, "%s: request segment %d\n", __func__, state->edid.segments); @@ -1389,7 +1399,6 @@ ed.present = true; ed.segment = 0; state->edid_detect_counter++; - v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, state->edid.segments ? 0x1 : 0x0); v4l2_subdev_notify(sd, ADV7511_EDID_DETECT, (void *)&ed); return ed.present; } --- linux-raspi2-4.2.0.orig/drivers/media/i2c/adv7604.c +++ linux-raspi2-4.2.0/drivers/media/i2c/adv7604.c @@ -1944,10 +1944,9 @@ } /* tx 5v detect */ - tx_5v = io_read(sd, 0x70) & info->cable_det_mask; + tx_5v = irq_reg_0x70 & info->cable_det_mask; if (tx_5v) { v4l2_dbg(1, debug, sd, "%s: tx_5v: 0x%x\n", __func__, tx_5v); - io_write(sd, 0x71, tx_5v); adv76xx_s_detect_tx_5v_ctrl(sd); if (handled) *handled = true; --- linux-raspi2-4.2.0.orig/drivers/media/pci/bt8xx/bttv-driver.c +++ linux-raspi2-4.2.0/drivers/media/pci/bt8xx/bttv-driver.c @@ -2334,6 +2334,19 @@ return 0; } +static void bttv_get_width_mask_vid_cap(const struct bttv_format *fmt, + unsigned int *width_mask, + unsigned int *width_bias) +{ + if (fmt->flags & FORMAT_FLAGS_PLANAR) { + *width_mask = ~15; /* width must be a multiple of 16 pixels */ + *width_bias = 8; /* nearest */ + } else { + *width_mask = ~3; /* width must be a multiple of 4 pixels */ + *width_bias = 2; /* nearest */ + } +} + static int bttv_try_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *f) { @@ -2343,6 +2356,7 @@ enum v4l2_field field; __s32 width, height; __s32 height2; + unsigned int width_mask, width_bias; int rc; fmt = format_by_fourcc(f->fmt.pix.pixelformat); @@ -2375,9 +2389,9 @@ width = f->fmt.pix.width; height = f->fmt.pix.height; + bttv_get_width_mask_vid_cap(fmt, &width_mask, &width_bias); rc = limit_scaled_size_lock(fh, &width, &height, field, - /* width_mask: 4 pixels */ ~3, - /* width_bias: nearest */ 2, + width_mask, width_bias, /* adjust_size */ 1, /* adjust_crop */ 0); if (0 != rc) @@ -2410,6 +2424,7 @@ struct bttv_fh *fh = priv; struct bttv *btv = fh->btv; __s32 width, height; + unsigned int width_mask, width_bias; enum v4l2_field field; retval = bttv_switch_type(fh, f->type); @@ -2424,9 +2439,10 @@ height = f->fmt.pix.height; field = f->fmt.pix.field; + fmt = format_by_fourcc(f->fmt.pix.pixelformat); + bttv_get_width_mask_vid_cap(fmt, &width_mask, &width_bias); retval = limit_scaled_size_lock(fh, &width, &height, f->fmt.pix.field, - /* width_mask: 4 pixels */ ~3, - /* width_bias: nearest */ 2, + width_mask, width_bias, /* adjust_size */ 1, /* adjust_crop */ 1); if (0 != retval) @@ -2434,8 +2450,6 @@ f->fmt.pix.field = field; - fmt = format_by_fourcc(f->fmt.pix.pixelformat); - /* update our state informations */ fh->fmt = fmt; fh->cap.field = f->fmt.pix.field; --- 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/pci/ivtv/ivtv-driver.c +++ linux-raspi2-4.2.0/drivers/media/pci/ivtv/ivtv-driver.c @@ -805,11 +805,11 @@ { int i; - for (i = 0; i < IVTV_CARD_MAX_VIDEO_INPUTS - 1; i++) + for (i = 0; i < IVTV_CARD_MAX_VIDEO_INPUTS; i++) if (itv->card->video_inputs[i].video_type == 0) break; itv->nof_inputs = i; - for (i = 0; i < IVTV_CARD_MAX_AUDIO_INPUTS - 1; i++) + for (i = 0; i < IVTV_CARD_MAX_AUDIO_INPUTS; i++) if (itv->card->audio_inputs[i].audio_type == 0) break; itv->nof_audio_inputs = i; --- linux-raspi2-4.2.0.orig/drivers/media/pci/saa7134/saa7134-alsa.c +++ linux-raspi2-4.2.0/drivers/media/pci/saa7134/saa7134-alsa.c @@ -1211,6 +1211,8 @@ static int alsa_device_exit(struct saa7134_dev *dev) { + if (!snd_saa7134_cards[dev->nr]) + return 1; snd_card_free(snd_saa7134_cards[dev->nr]); snd_saa7134_cards[dev->nr] = NULL; @@ -1260,7 +1262,8 @@ int idx; for (idx = 0; idx < SNDRV_CARDS; idx++) { - snd_card_free(snd_saa7134_cards[idx]); + if (snd_saa7134_cards[idx]) + snd_card_free(snd_saa7134_cards[idx]); } saa7134_dmasound_init = NULL; --- linux-raspi2-4.2.0.orig/drivers/media/pci/saa7134/saa7134-video.c +++ linux-raspi2-4.2.0/drivers/media/pci/saa7134/saa7134-video.c @@ -1214,10 +1214,13 @@ f->fmt.pix.height = dev->height; f->fmt.pix.field = dev->field; f->fmt.pix.pixelformat = dev->fmt->fourcc; - f->fmt.pix.bytesperline = - (f->fmt.pix.width * dev->fmt->depth) >> 3; + if (dev->fmt->planar) + f->fmt.pix.bytesperline = f->fmt.pix.width; + else + f->fmt.pix.bytesperline = + (f->fmt.pix.width * dev->fmt->depth) / 8; f->fmt.pix.sizeimage = - f->fmt.pix.height * f->fmt.pix.bytesperline; + (f->fmt.pix.height * f->fmt.pix.width * dev->fmt->depth) / 8; f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; return 0; } @@ -1293,10 +1296,13 @@ if (f->fmt.pix.height > maxh) f->fmt.pix.height = maxh; f->fmt.pix.width &= ~0x03; - f->fmt.pix.bytesperline = - (f->fmt.pix.width * fmt->depth) >> 3; + if (fmt->planar) + f->fmt.pix.bytesperline = f->fmt.pix.width; + else + f->fmt.pix.bytesperline = + (f->fmt.pix.width * fmt->depth) / 8; f->fmt.pix.sizeimage = - f->fmt.pix.height * f->fmt.pix.bytesperline; + (f->fmt.pix.height * f->fmt.pix.width * fmt->depth) / 8; f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; return 0; --- 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/coda/coda-common.c +++ linux-raspi2-4.2.0/drivers/media/platform/coda/coda-common.c @@ -2095,14 +2095,12 @@ pdev_id = of_id ? of_id->data : platform_get_device_id(pdev); - if (of_id) { + if (of_id) dev->devtype = of_id->data; - } else if (pdev_id) { + else if (pdev_id) dev->devtype = &coda_devdata[pdev_id->driver_data]; - } else { - ret = -EINVAL; - goto err_v4l2_register; - } + else + return -EINVAL; spin_lock_init(&dev->irqlock); INIT_LIST_HEAD(&dev->instances); --- linux-raspi2-4.2.0.orig/drivers/media/platform/exynos4-is/fimc-isp-video.c +++ linux-raspi2-4.2.0/drivers/media/platform/exynos4-is/fimc-isp-video.c @@ -219,8 +219,8 @@ ivb->dma_addr[i]; isp_dbg(2, &video->ve.vdev, - "dma_buf %pad (%d/%d/%d) addr: %pad\n", - &buf_index, ivb->index, i, vb->v4l2_buf.index, + "dma_buf %d (%d/%d/%d) addr: %pad\n", + buf_index, ivb->index, i, vb->v4l2_buf.index, &ivb->dma_addr[i]); } --- 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/vsp1/vsp1_sru.c +++ linux-raspi2-4.2.0/drivers/media/platform/vsp1/vsp1_sru.c @@ -154,6 +154,7 @@ mutex_lock(sru->ctrls.lock); ctrl0 |= vsp1_sru_read(sru, VI6_SRU_CTRL0) & (VI6_SRU_CTRL0_PARAM0_MASK | VI6_SRU_CTRL0_PARAM1_MASK); + vsp1_sru_write(sru, VI6_SRU_CTRL0, ctrl0); mutex_unlock(sru->ctrls.lock); vsp1_sru_write(sru, VI6_SRU_CTRL1, VI6_SRU_CTRL1_PARAM5); --- 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 @@ -60,7 +60,7 @@ struct rc_map_list *map; map = seek_rc_map(name); -#ifdef MODULE +#ifdef CONFIG_MODULES if (!map) { int rc = request_module("%s", name); if (rc < 0) { @@ -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/rc/sunxi-cir.c +++ linux-raspi2-4.2.0/drivers/media/rc/sunxi-cir.c @@ -153,6 +153,8 @@ if (!ir) return -ENOMEM; + spin_lock_init(&ir->ir_lock); + if (of_device_is_compatible(dn, "allwinner,sun5i-a13-ir")) ir->fifo_size = 64; else --- linux-raspi2-4.2.0.orig/drivers/media/tuners/si2157.c +++ linux-raspi2-4.2.0/drivers/media/tuners/si2157.c @@ -166,6 +166,11 @@ 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"); + ret = -EINVAL; + 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/airspy/airspy.c +++ linux-raspi2-4.2.0/drivers/media/usb/airspy/airspy.c @@ -132,7 +132,7 @@ int urbs_submitted; /* USB control message buffer */ - #define BUF_SIZE 24 + #define BUF_SIZE 128 u8 buf[BUF_SIZE]; /* Current configuration */ --- linux-raspi2-4.2.0.orig/drivers/media/usb/au0828/au0828-core.c +++ linux-raspi2-4.2.0/drivers/media/usb/au0828/au0828-core.c @@ -159,7 +159,7 @@ Set the status so poll routines can check and avoid access after disconnect. */ - dev->dev_state = DEV_DISCONNECTED; + set_bit(DEV_DISCONNECTED, &dev->dev_state); au0828_rc_unregister(dev); /* Digital TV */ --- linux-raspi2-4.2.0.orig/drivers/media/usb/au0828/au0828-input.c +++ linux-raspi2-4.2.0/drivers/media/usb/au0828/au0828-input.c @@ -130,7 +130,7 @@ bool first = true; /* do nothing if device is disconnected */ - if (ir->dev->dev_state == DEV_DISCONNECTED) + if (test_bit(DEV_DISCONNECTED, &ir->dev->dev_state)) return 0; /* Check IR int */ @@ -260,7 +260,7 @@ cancel_delayed_work_sync(&ir->work); /* do nothing if device is disconnected */ - if (ir->dev->dev_state != DEV_DISCONNECTED) { + if (!test_bit(DEV_DISCONNECTED, &ir->dev->dev_state)) { /* Disable IR */ au8522_rc_clear(ir, 0xe0, 1 << 4); } --- linux-raspi2-4.2.0.orig/drivers/media/usb/au0828/au0828-video.c +++ linux-raspi2-4.2.0/drivers/media/usb/au0828/au0828-video.c @@ -104,14 +104,13 @@ static int check_dev(struct au0828_dev *dev) { - if (dev->dev_state & DEV_DISCONNECTED) { + if (test_bit(DEV_DISCONNECTED, &dev->dev_state)) { pr_info("v4l2 ioctl: device not present\n"); return -ENODEV; } - if (dev->dev_state & DEV_MISCONFIGURED) { - pr_info("v4l2 ioctl: device is misconfigured; " - "close and open it again\n"); + if (test_bit(DEV_MISCONFIGURED, &dev->dev_state)) { + pr_info("v4l2 ioctl: device is misconfigured; close and open it again\n"); return -EIO; } return 0; @@ -519,8 +518,8 @@ if (!dev) return 0; - if ((dev->dev_state & DEV_DISCONNECTED) || - (dev->dev_state & DEV_MISCONFIGURED)) + if (test_bit(DEV_DISCONNECTED, &dev->dev_state) || + test_bit(DEV_MISCONFIGURED, &dev->dev_state)) return 0; if (urb->status < 0) { @@ -761,10 +760,10 @@ int ret = 0; dev->stream_state = STREAM_INTERRUPT; - if (dev->dev_state == DEV_DISCONNECTED) + if (test_bit(DEV_DISCONNECTED, &dev->dev_state)) return -ENODEV; else if (ret) { - dev->dev_state = DEV_MISCONFIGURED; + set_bit(DEV_MISCONFIGURED, &dev->dev_state); dprintk(1, "%s device is misconfigured!\n", __func__); return ret; } @@ -952,7 +951,7 @@ int ret; dprintk(1, - "%s called std_set %d dev_state %d stream users %d users %d\n", + "%s called std_set %d dev_state %ld stream users %d users %d\n", __func__, dev->std_set_in_tuner_core, dev->dev_state, dev->streaming_users, dev->users); @@ -971,7 +970,7 @@ au0828_analog_stream_enable(dev); au0828_analog_stream_reset(dev); dev->stream_state = STREAM_OFF; - dev->dev_state |= DEV_INITIALIZED; + set_bit(DEV_INITIALIZED, &dev->dev_state); } dev->users++; mutex_unlock(&dev->lock); @@ -985,7 +984,7 @@ struct video_device *vdev = video_devdata(filp); dprintk(1, - "%s called std_set %d dev_state %d stream users %d users %d\n", + "%s called std_set %d dev_state %ld stream users %d users %d\n", __func__, dev->std_set_in_tuner_core, dev->dev_state, dev->streaming_users, dev->users); @@ -1001,7 +1000,7 @@ del_timer_sync(&dev->vbi_timeout); } - if (dev->dev_state == DEV_DISCONNECTED) + if (test_bit(DEV_DISCONNECTED, &dev->dev_state)) goto end; if (dev->users == 1) { @@ -1030,7 +1029,7 @@ .type = V4L2_TUNER_ANALOG_TV, }; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); if (dev->std_set_in_tuner_core) @@ -1102,7 +1101,7 @@ struct video_device *vdev = video_devdata(file); struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); strlcpy(cap->driver, "au0828", sizeof(cap->driver)); @@ -1145,7 +1144,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); f->fmt.pix.width = dev->width; @@ -1164,7 +1163,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); return au0828_set_format(dev, VIDIOC_TRY_FMT, f); @@ -1176,7 +1175,7 @@ struct au0828_dev *dev = video_drvdata(file); int rc; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); rc = check_dev(dev); @@ -1198,7 +1197,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); if (norm == dev->std) @@ -1230,7 +1229,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); *norm = dev->std; @@ -1253,7 +1252,7 @@ [AU0828_VMUX_DEBUG] = "tv debug" }; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); tmp = input->index; @@ -1283,7 +1282,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); *i = dev->ctrl_input; @@ -1294,7 +1293,7 @@ { int i; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); switch (AUVI_INPUT(index).type) { @@ -1379,7 +1378,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); a->index = dev->ctrl_ainput; @@ -1399,7 +1398,7 @@ if (a->index != dev->ctrl_ainput) return -EINVAL; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); return 0; } @@ -1411,7 +1410,7 @@ if (t->index != 0) return -EINVAL; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); strcpy(t->name, "Auvitek tuner"); @@ -1431,7 +1430,7 @@ if (t->index != 0) return -EINVAL; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); au0828_init_tuner(dev); @@ -1453,7 +1452,7 @@ if (freq->tuner != 0) return -EINVAL; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); freq->frequency = dev->ctrl_freq; return 0; @@ -1468,7 +1467,7 @@ if (freq->tuner != 0) return -EINVAL; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); au0828_init_tuner(dev); @@ -1494,7 +1493,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); format->fmt.vbi.samples_per_line = dev->vbi_width; @@ -1520,7 +1519,7 @@ if (cc->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) return -EINVAL; - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); cc->bounds.left = 0; @@ -1542,7 +1541,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); reg->val = au0828_read(dev, reg->reg); @@ -1555,7 +1554,7 @@ { struct au0828_dev *dev = video_drvdata(file); - dprintk(1, "%s called std_set %d dev_state %d\n", __func__, + dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, dev->std_set_in_tuner_core, dev->dev_state); return au0828_writereg(dev, reg->reg, reg->val); --- linux-raspi2-4.2.0.orig/drivers/media/usb/au0828/au0828.h +++ linux-raspi2-4.2.0/drivers/media/usb/au0828/au0828.h @@ -21,6 +21,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include #include #include #include @@ -121,9 +122,9 @@ /* device state */ enum au0828_dev_state { - DEV_INITIALIZED = 0x01, - DEV_DISCONNECTED = 0x02, - DEV_MISCONFIGURED = 0x04 + DEV_INITIALIZED = 0, + DEV_DISCONNECTED = 1, + DEV_MISCONFIGURED = 2 }; struct au0828_dev; @@ -247,7 +248,7 @@ int input_type; int std_set_in_tuner_core; unsigned int ctrl_input; - enum au0828_dev_state dev_state; + long unsigned int dev_state; /* defined at enum au0828_dev_state */; enum au0828_stream_state stream_state; wait_queue_head_t open; --- 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/gspca/ov534.c +++ linux-raspi2-4.2.0/drivers/media/usb/gspca/ov534.c @@ -1491,8 +1491,13 @@ struct v4l2_fract *tpf = &cp->timeperframe; struct sd *sd = (struct sd *) gspca_dev; - /* Set requested framerate */ - sd->frame_rate = tpf->denominator / tpf->numerator; + if (tpf->numerator == 0 || tpf->denominator == 0) + /* Set default framerate */ + sd->frame_rate = 30; + else + /* Set requested framerate */ + sd->frame_rate = tpf->denominator / tpf->numerator; + if (gspca_dev->streaming) set_frame_rate(gspca_dev); --- linux-raspi2-4.2.0.orig/drivers/media/usb/gspca/topro.c +++ linux-raspi2-4.2.0/drivers/media/usb/gspca/topro.c @@ -4802,7 +4802,11 @@ struct v4l2_fract *tpf = &cp->timeperframe; int fr, i; - sd->framerate = tpf->denominator / tpf->numerator; + if (tpf->numerator == 0 || tpf->denominator == 0) + sd->framerate = 30; + else + sd->framerate = tpf->denominator / tpf->numerator; + if (gspca_dev->streaming) setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); --- linux-raspi2-4.2.0.orig/drivers/media/usb/pwc/pwc-if.c +++ linux-raspi2-4.2.0/drivers/media/usb/pwc/pwc-if.c @@ -91,6 +91,7 @@ { USB_DEVICE(0x0471, 0x0312) }, { USB_DEVICE(0x0471, 0x0313) }, /* the 'new' 720K */ { USB_DEVICE(0x0471, 0x0329) }, /* Philips SPC 900NC PC Camera */ + { USB_DEVICE(0x0471, 0x032C) }, /* Philips SPC 880NC PC Camera */ { USB_DEVICE(0x069A, 0x0001) }, /* Askey */ { USB_DEVICE(0x046D, 0x08B0) }, /* Logitech QuickCam Pro 3000 */ { USB_DEVICE(0x046D, 0x08B1) }, /* Logitech QuickCam Notebook Pro */ @@ -802,6 +803,11 @@ name = "Philips SPC 900NC webcam"; type_id = 740; break; + case 0x032C: + PWC_INFO("Philips SPC 880NC USB webcam detected.\n"); + name = "Philips SPC 880NC webcam"; + type_id = 740; + break; default: return -ENODEV; break; --- linux-raspi2-4.2.0.orig/drivers/media/usb/usbvision/usbvision-video.c +++ linux-raspi2-4.2.0/drivers/media/usb/usbvision/usbvision-video.c @@ -1533,11 +1533,32 @@ printk(KERN_INFO "%s: %s found\n", __func__, usbvision_device_data[model].model_string); + /* + * this is a security check. + * an exploit using an incorrect bInterfaceNumber is known + */ + if (ifnum >= USB_MAXINTERFACES || !dev->actconfig->interface[ifnum]) + return -ENODEV; + if (usbvision_device_data[model].interface >= 0) interface = &dev->actconfig->interface[usbvision_device_data[model].interface]->altsetting[0]; - else + else if (ifnum < dev->actconfig->desc.bNumInterfaces) interface = &dev->actconfig->interface[ifnum]->altsetting[0]; + else { + dev_err(&intf->dev, "interface %d is invalid, max is %d\n", + ifnum, dev->actconfig->desc.bNumInterfaces - 1); + ret = -ENODEV; + goto err_usb; + } + + if (interface->desc.bNumEndpoints < 2) { + dev_err(&intf->dev, "interface %d has %d endpoints, but must" + " have minimum 2\n", ifnum, interface->desc.bNumEndpoints); + ret = -ENODEV; + goto err_usb; + } endpoint = &interface->endpoint[1].desc; + if (!usb_endpoint_xfer_isoc(endpoint)) { dev_err(&intf->dev, "%s: interface %d. has non-ISO endpoint!\n", __func__, ifnum); --- 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) || @@ -394,7 +394,8 @@ get_user(kp->index, &up->index) || get_user(kp->type, &up->type) || get_user(kp->flags, &up->flags) || - get_user(kp->memory, &up->memory)) + get_user(kp->memory, &up->memory) || + get_user(kp->length, &up->length)) return -EFAULT; if (V4L2_TYPE_IS_OUTPUT(kp->type)) @@ -406,9 +407,6 @@ return -EFAULT; if (V4L2_TYPE_IS_MULTIPLANAR(kp->type)) { - if (get_user(kp->length, &up->length)) - return -EFAULT; - num_planes = kp->length; if (num_planes == 0) { kp->m.planes = NULL; @@ -441,16 +439,14 @@ } else { switch (kp->memory) { case V4L2_MEMORY_MMAP: - if (get_user(kp->length, &up->length) || - get_user(kp->m.offset, &up->m.offset)) + if (get_user(kp->m.offset, &up->m.offset)) return -EFAULT; break; case V4L2_MEMORY_USERPTR: { compat_long_t tmp; - if (get_user(kp->length, &up->length) || - get_user(tmp, &up->m.userptr)) + if (get_user(tmp, &up->m.userptr)) return -EFAULT; kp->m.userptr = (unsigned long)compat_ptr(tmp); @@ -492,7 +488,8 @@ copy_to_user(&up->timecode, &kp->timecode, sizeof(struct v4l2_timecode)) || put_user(kp->sequence, &up->sequence) || put_user(kp->reserved2, &up->reserved2) || - put_user(kp->reserved, &up->reserved)) + put_user(kp->reserved, &up->reserved) || + put_user(kp->length, &up->length)) return -EFAULT; if (V4L2_TYPE_IS_MULTIPLANAR(kp->type)) { @@ -515,13 +512,11 @@ } else { switch (kp->memory) { case V4L2_MEMORY_MMAP: - if (put_user(kp->length, &up->length) || - put_user(kp->m.offset, &up->m.offset)) + if (put_user(kp->m.offset, &up->m.offset)) return -EFAULT; break; case V4L2_MEMORY_USERPTR: - if (put_user(kp->length, &up->length) || - put_user(kp->m.userptr, &up->m.userptr)) + if (put_user(kp->m.userptr, &up->m.userptr)) return -EFAULT; break; case V4L2_MEMORY_OVERLAY: @@ -587,10 +582,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 +733,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-core.c +++ linux-raspi2-4.2.0/drivers/media/v4l2-core/videobuf2-core.c @@ -2686,10 +2686,10 @@ return res | POLLERR; /* - * For output streams you can write as long as there are fewer buffers - * queued than there are buffers available. + * For output streams you can call write() as long as there are fewer + * buffers queued than there are buffers available. */ - if (V4L2_TYPE_IS_OUTPUT(q->type) && q->queued_count < q->num_buffers) + if (V4L2_TYPE_IS_OUTPUT(q->type) && q->fileio && q->queued_count < q->num_buffers) return res | POLLOUT | POLLWRNORM; if (list_empty(&q->done_list)) { --- 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 @@ -429,7 +437,7 @@ still useful. config BMP085 - bool + tristate depends on SYSFS config BMP085_I2C @@ -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/ad525x_dpot.c +++ linux-raspi2-4.2.0/drivers/misc/ad525x_dpot.c @@ -216,7 +216,7 @@ */ value = swab16(value); - if (dpot->uid == DPOT_UID(AD5271_ID)) + if (dpot->uid == DPOT_UID(AD5274_ID)) value = value >> 2; return value; default: --- 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; @@ -434,6 +497,7 @@ { u64 sr = 0; + set_endian(sr); if (ctx->master) sr |= CXL_PSL_SR_An_MP; if (mfspr(SPRN_LPCR) & LPCR_TC) @@ -443,7 +507,6 @@ sr |= CXL_PSL_SR_An_HV; } else { sr |= CXL_PSL_SR_An_PR | CXL_PSL_SR_An_R; - set_endian(sr); sr &= ~(CXL_PSL_SR_An_HV); if (!test_tsk_thread_flag(current, TIF_32BIT)) sr |= CXL_PSL_SR_An_SF; @@ -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 (tb_to_ns(delta) > 16000); + + 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,11 +196,14 @@ 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; - v = (in_le32(ioaddr) & ~mask) || (val & mask); + v = (in_le32(ioaddr) & ~mask) | (val & mask); out_le32(ioaddr, v); return PCIBIOS_SUCCESSFUL; @@ -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,34 @@ #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(&bus->device_lock); + if (bus->dev_state != MEI_DEV_ENABLED) { + rets = -ENODEV; + goto out; + } - mutex_lock(&dev->device_lock); if (!mei_cl_is_connected(cl)) { rets = -ENODEV; goto out; @@ -327,16 +85,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 +111,13 @@ 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 (bus->dev_state != MEI_DEV_ENABLED) { + rets = -ENODEV; + goto out; + } cb = mei_cl_read_cb(cl, NULL); if (cb) @@ -356,9 +127,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 +141,7 @@ return -ERESTARTSYS; } - mutex_lock(&dev->device_lock); + mutex_lock(&bus->device_lock); if (!mei_cl_is_connected(cl)) { rets = -EBUSY; @@ -396,14 +168,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 +193,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,135 +213,698 @@ } 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); } -int mei_cl_register_event_cb(struct mei_cl_device *device, +/** + * 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); +} + +/** + * 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 *device = cl->device; + 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 (!device || !device->event_cb) + 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 *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 (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; + + 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; + + 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; - set_bit(MEI_CL_EVENT_RX, &device->events); + device_del(&cldev->dev); - schedule_work(&device->event_work); + 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) { return bus_register(&mei_cl_bus_type); --- 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 @@ -62,8 +62,7 @@ #define MMC_SANITIZE_REQ_TIMEOUT 240000 #define MMC_EXTRACT_INDEX_FROM_ARG(x) ((x & 0x00FF0000) >> 16) -#define mmc_req_rel_wr(req) (((req->cmd_flags & REQ_FUA) || \ - (req->cmd_flags & REQ_META)) && \ +#define mmc_req_rel_wr(req) ((req->cmd_flags & REQ_FUA) && \ (rq_data_dir(req) == WRITE)) #define PACKED_CMD_VER 0x01 #define PACKED_CMD_WR 0x02 @@ -1377,13 +1376,9 @@ /* * Reliable writes are used to implement Forced Unit Access and - * REQ_META accesses, and are supported only on MMCs. - * - * XXX: this really needs a good explanation of why REQ_META - * is treated special. + * are supported only on MMCs. */ - bool do_rel_wr = ((req->cmd_flags & REQ_FUA) || - (req->cmd_flags & REQ_META)) && + bool do_rel_wr = (req->cmd_flags & REQ_FUA) && (rq_data_dir(req) == WRITE) && (md->flags & MMC_BLK_REL_WR); @@ -1425,6 +1420,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/debugfs.c +++ linux-raspi2-4.2.0/drivers/mmc/core/debugfs.c @@ -164,7 +164,7 @@ str = "invalid"; break; } - seq_printf(s, "signal voltage:\t%u (%s)\n", ios->chip_select, str); + seq_printf(s, "signal voltage:\t%u (%s)\n", ios->signal_voltage, str); return 0; } --- 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 @@ -1040,9 +1040,24 @@ return err; } +/* Caller must hold re-tuning */ +static int mmc_switch_status(struct mmc_card *card) +{ + u32 status; + int err; + + err = mmc_send_status(card, &status); + if (err) + return err; + + return mmc_switch_status_error(card->host, status); +} + static int mmc_select_hs400(struct mmc_card *card) { struct mmc_host *host = card->host; + bool send_status = true; + unsigned int max_dtr; int err = 0; u8 val; @@ -1053,25 +1068,35 @@ host->ios.bus_width == MMC_BUS_WIDTH_8)) return 0; - /* - * Before switching to dual data rate operation for HS400, - * it is required to convert from HS200 mode to HS mode. - */ - mmc_set_timing(card->host, MMC_TIMING_MMC_HS); - mmc_set_bus_speed(card); + if (host->caps & MMC_CAP_WAIT_WHILE_BUSY) + send_status = false; - val = EXT_CSD_TIMING_HS | - card->drive_strength << EXT_CSD_DRV_STR_SHIFT; + /* Reduce frequency to HS frequency */ + max_dtr = card->ext_csd.hs_max_dtr; + mmc_set_clock(host, max_dtr); + + /* Switch card to HS mode */ + val = EXT_CSD_TIMING_HS; err = __mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, val, card->ext_csd.generic_cmd6_time, - true, true, true); + true, send_status, true); if (err) { pr_err("%s: switch to high-speed from hs200 failed, err:%d\n", mmc_hostname(host), err); return err; } + /* Set host controller to HS timing */ + mmc_set_timing(card->host, MMC_TIMING_MMC_HS); + + if (!send_status) { + err = mmc_switch_status(card); + if (err) + goto out_err; + } + + /* Switch card to DDR */ err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BUS_WIDTH, EXT_CSD_DDR_BUS_WIDTH_8, @@ -1082,22 +1107,35 @@ return err; } + /* Switch card to HS400 */ val = EXT_CSD_TIMING_HS400 | card->drive_strength << EXT_CSD_DRV_STR_SHIFT; err = __mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, val, card->ext_csd.generic_cmd6_time, - true, true, true); + true, send_status, true); if (err) { pr_err("%s: switch to hs400 failed, err:%d\n", mmc_hostname(host), err); return err; } + /* Set host controller to HS400 timing and frequency */ mmc_set_timing(host, MMC_TIMING_MMC_HS400); mmc_set_bus_speed(card); + if (!send_status) { + err = mmc_switch_status(card); + if (err) + goto out_err; + } + return 0; + +out_err: + pr_err("%s: %s failed, error %d\n", mmc_hostname(card->host), + __func__, err); + return err; } int mmc_hs200_to_hs400(struct mmc_card *card) @@ -1105,19 +1143,6 @@ return mmc_select_hs400(card); } -/* Caller must hold re-tuning */ -static int mmc_switch_status(struct mmc_card *card) -{ - u32 status; - int err; - - err = mmc_send_status(card, &status); - if (err) - return err; - - return mmc_switch_status_error(card->host, status); -} - int mmc_hs400_to_hs200(struct mmc_card *card) { struct mmc_host *host = card->host; @@ -1134,8 +1159,7 @@ mmc_set_clock(host, max_dtr); /* Switch HS400 to HS DDR */ - val = EXT_CSD_TIMING_HS | - card->drive_strength << EXT_CSD_DRV_STR_SHIFT; + val = EXT_CSD_TIMING_HS; err = __mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, val, card->ext_csd.generic_cmd6_time, true, send_status, true); @@ -1219,6 +1243,8 @@ static int mmc_select_hs200(struct mmc_card *card) { struct mmc_host *host = card->host; + bool send_status = true; + unsigned int old_timing; int err = -EINVAL; u8 val; @@ -1234,6 +1260,9 @@ mmc_select_driver_type(card); + if (host->caps & MMC_CAP_WAIT_WHILE_BUSY) + send_status = false; + /* * Set the bus width(4 or 8) with host's support and * switch to HS200 mode if bus width is set successfully. @@ -1245,11 +1274,25 @@ err = __mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, val, card->ext_csd.generic_cmd6_time, - true, true, true); - if (!err) - mmc_set_timing(host, MMC_TIMING_MMC_HS200); + true, send_status, true); + if (err) + goto err; + old_timing = host->ios.timing; + mmc_set_timing(host, MMC_TIMING_MMC_HS200); + if (!send_status) { + err = mmc_switch_status(card); + /* + * mmc_select_timing() assumes timing has not changed if + * it is a switch error. + */ + if (err == -EBADMSG) + mmc_set_timing(host, old_timing); + } } err: + if (err) + pr_err("%s: %s failed, error %d\n", mmc_hostname(card->host), + __func__, err); return err; } @@ -1924,7 +1967,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 +1979,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/core/sd.c +++ linux-raspi2-4.2.0/drivers/mmc/core/sd.c @@ -329,6 +329,7 @@ card->sw_caps.sd3_bus_mode = status[13]; /* Driver Strengths supported by the card */ card->sw_caps.sd3_drv_type = status[9]; + card->sw_caps.sd3_curr_limit = status[7] | status[6] << 8; } out: @@ -547,14 +548,25 @@ * when we set current limit to 200ma, the card will draw 200ma, and * when we set current limit to 400/600/800ma, the card will draw its * maximum 300ma from the host. + * + * The above is incorrect: if we try to set a current limit that is + * not supported by the card, the card can rightfully error out the + * attempt, and remain at the default current limit. This results + * in a 300mA card being limited to 200mA even though the host + * supports 800mA. Failures seen with SanDisk 8GB UHS cards with + * an iMX6 host. --rmk */ - if (max_current >= 800) + if (max_current >= 800 && + card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_800) current_limit = SD_SET_CURRENT_LIMIT_800; - else if (max_current >= 600) + else if (max_current >= 600 && + card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_600) current_limit = SD_SET_CURRENT_LIMIT_600; - else if (max_current >= 400) + else if (max_current >= 400 && + card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_400) current_limit = SD_SET_CURRENT_LIMIT_400; - else if (max_current >= 200) + else if (max_current >= 200 && + card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_200) current_limit = SD_SET_CURRENT_LIMIT_200; if (current_limit != SD_SET_CURRENT_NO_CHANGE) { --- linux-raspi2-4.2.0.orig/drivers/mmc/core/sdio.c +++ linux-raspi2-4.2.0/drivers/mmc/core/sdio.c @@ -630,7 +630,7 @@ */ if (!powered_resume && (rocr & ocr & R4_18V_PRESENT)) { err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180, - ocr); + ocr_card); if (err == -EAGAIN) { sdio_reset(host); mmc_go_idle(host); --- 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/mmc_spi.c +++ linux-raspi2-4.2.0/drivers/mmc/host/mmc_spi.c @@ -1436,6 +1436,12 @@ host->pdata->cd_debounce); if (status != 0) goto fail_add_host; + + /* The platform has a CD GPIO signal that may support + * interrupts, so let mmc_gpiod_request_cd_irq() decide + * if polling is needed or not. + */ + mmc->caps &= ~MMC_CAP_NEEDS_POLL; mmc_gpiod_request_cd_irq(mmc); } --- linux-raspi2-4.2.0.orig/drivers/mmc/host/mmci.c +++ linux-raspi2-4.2.0/drivers/mmc/host/mmci.c @@ -1886,7 +1886,7 @@ { .id = 0x00280180, .mask = 0x00ffffff, - .data = &variant_u300, + .data = &variant_nomadik, }, { .id = 0x00480180, --- 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 @@ -277,7 +277,7 @@ if (sdhci_pci_spt_drive_strength > 0) drive_strength = sdhci_pci_spt_drive_strength & 0xf; else - drive_strength = 1; /* 33-ohm */ + drive_strength = 0; /* Default 50-ohm */ if ((mmc_driver_type_mask(drive_strength) & card_drv) == 0) drive_strength = 0; /* Default 50-ohm */ @@ -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; @@ -542,9 +541,12 @@ BUG_ON(len > 65536); - /* tran, valid */ - sdhci_adma_write_desc(host, desc, addr, len, ADMA2_TRAN_VALID); - desc += host->desc_sz; + if (len) { + /* tran, valid */ + sdhci_adma_write_desc(host, desc, addr, len, + ADMA2_TRAN_VALID); + desc += host->desc_sz; + } /* * If this triggers then we have a calculation bug @@ -635,9 +637,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) @@ -663,9 +667,20 @@ if (!data) target_timeout = cmd->busy_timeout * 1000; else { - target_timeout = data->timeout_ns / 1000; - if (host->clock) - target_timeout += data->timeout_clks / host->clock; + target_timeout = DIV_ROUND_UP(data->timeout_ns, 1000); + if (host->clock && data->timeout_clks) { + unsigned long long val; + + /* + * data->timeout_clks is in units of clock cycles. + * host->clock is in Hz. target_timeout is in us. + * Hence, us = 1000000 * cycles / Hz. Round up. + */ + val = 1000000 * data->timeout_clks; + if (do_div(val, host->clock)) + target_timeout++; + target_timeout += val; + } } /* @@ -833,7 +848,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 +964,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 +1149,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: @@ -1255,19 +1273,6 @@ struct mmc_host *mmc = host->mmc; u8 pwr = 0; - if (!IS_ERR(mmc->supply.vmmc)) { - spin_unlock_irq(&host->lock); - mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); - spin_lock_irq(&host->lock); - - if (mode != MMC_POWER_OFF) - sdhci_writeb(host, SDHCI_POWER_ON, SDHCI_POWER_CONTROL); - else - sdhci_writeb(host, 0, SDHCI_POWER_CONTROL); - - return; - } - if (mode != MMC_POWER_OFF) { switch (1 << vdd) { case MMC_VDD_165_195: @@ -1326,6 +1331,12 @@ if (host->quirks & SDHCI_QUIRK_DELAY_AFTER_POWER) mdelay(10); } + + if (!IS_ERR(mmc->supply.vmmc)) { + spin_unlock_irq(&host->lock); + mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); + spin_lock_irq(&host->lock); + } } /*****************************************************************************\ @@ -1559,7 +1570,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 +2109,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 +2148,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) @@ -2752,7 +2745,7 @@ static void sdhci_runtime_pm_bus_on(struct sdhci_host *host) { - if (host->runtime_suspended || host->bus_on) + if (host->bus_on) return; host->bus_on = true; pm_runtime_get_noresume(host->mmc->parent); @@ -2760,7 +2753,7 @@ static void sdhci_runtime_pm_bus_off(struct sdhci_host *host) { - if (host->runtime_suspended || !host->bus_on) + if (!host->bus_on) return; host->bus_on = false; pm_runtime_put_noidle(host->mmc->parent); @@ -3030,7 +3023,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. @@ -3084,14 +3076,14 @@ if (caps[0] & SDHCI_TIMEOUT_CLK_UNIT) host->timeout_clk *= 1000; + if (override_timeout_clk) + host->timeout_clk = override_timeout_clk; + mmc->max_busy_timeout = host->ops->get_max_timeout_count ? host->ops->get_max_timeout_count(host) : 1 << 27; mmc->max_busy_timeout /= host->timeout_clk; } - if (override_timeout_clk) - host->timeout_clk = override_timeout_clk; - mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23; mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; --- 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/brcmnand/brcmnand.c +++ linux-raspi2-4.2.0/drivers/mtd/nand/brcmnand/brcmnand.c @@ -309,6 +309,36 @@ [BRCMNAND_FC_BASE] = 0x400, }; +/* BRCMNAND v7.1 */ +static const u16 brcmnand_regs_v71[] = { + [BRCMNAND_CMD_START] = 0x04, + [BRCMNAND_CMD_EXT_ADDRESS] = 0x08, + [BRCMNAND_CMD_ADDRESS] = 0x0c, + [BRCMNAND_INTFC_STATUS] = 0x14, + [BRCMNAND_CS_SELECT] = 0x18, + [BRCMNAND_CS_XOR] = 0x1c, + [BRCMNAND_LL_OP] = 0x20, + [BRCMNAND_CS0_BASE] = 0x50, + [BRCMNAND_CS1_BASE] = 0, + [BRCMNAND_CORR_THRESHOLD] = 0xdc, + [BRCMNAND_CORR_THRESHOLD_EXT] = 0xe0, + [BRCMNAND_UNCORR_COUNT] = 0xfc, + [BRCMNAND_CORR_COUNT] = 0x100, + [BRCMNAND_CORR_EXT_ADDR] = 0x10c, + [BRCMNAND_CORR_ADDR] = 0x110, + [BRCMNAND_UNCORR_EXT_ADDR] = 0x114, + [BRCMNAND_UNCORR_ADDR] = 0x118, + [BRCMNAND_SEMAPHORE] = 0x150, + [BRCMNAND_ID] = 0x194, + [BRCMNAND_ID_EXT] = 0x198, + [BRCMNAND_LL_RDATA] = 0x19c, + [BRCMNAND_OOB_READ_BASE] = 0x200, + [BRCMNAND_OOB_READ_10_BASE] = 0, + [BRCMNAND_OOB_WRITE_BASE] = 0x280, + [BRCMNAND_OOB_WRITE_10_BASE] = 0, + [BRCMNAND_FC_BASE] = 0x400, +}; + enum brcmnand_cs_reg { BRCMNAND_CS_CFG_EXT = 0, BRCMNAND_CS_CFG, @@ -382,7 +412,9 @@ } /* Register offsets */ - if (ctrl->nand_version >= 0x0600) + if (ctrl->nand_version >= 0x0701) + ctrl->reg_offsets = brcmnand_regs_v71; + else if (ctrl->nand_version >= 0x0600) ctrl->reg_offsets = brcmnand_regs_v60; else if (ctrl->nand_version >= 0x0500) ctrl->reg_offsets = brcmnand_regs_v50; --- linux-raspi2-4.2.0.orig/drivers/mtd/nand/denali.c +++ linux-raspi2-4.2.0/drivers/mtd/nand/denali.c @@ -1613,9 +1613,16 @@ /* driver exit point */ void denali_remove(struct denali_nand_info *denali) { + /* + * Pre-compute DMA buffer size to avoid any problems in case + * nand_release() ever changes in a way that mtd->writesize and + * mtd->oobsize are not reliable after this call. + */ + int bufsize = denali->mtd.writesize + denali->mtd.oobsize; + + nand_release(&denali->mtd); denali_irq_cleanup(denali->irq, denali); - dma_unmap_single(denali->dev, denali->buf.dma_buf, - denali->mtd.writesize + denali->mtd.oobsize, + dma_unmap_single(denali->dev, denali->buf.dma_buf, bufsize, DMA_BIDIRECTIONAL); } EXPORT_SYMBOL(denali_remove); --- 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/nand_base.c +++ linux-raspi2-4.2.0/drivers/mtd/nand/nand_base.c @@ -2964,7 +2964,7 @@ */ static void nand_shutdown(struct mtd_info *mtd) { - nand_get_device(mtd, FL_SHUTDOWN); + nand_get_device(mtd, FL_PM_SUSPENDED); } /* Set default functions */ --- 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/onenand/onenand_base.c +++ linux-raspi2-4.2.0/drivers/mtd/onenand/onenand_base.c @@ -2599,6 +2599,7 @@ */ static int onenand_block_markbad(struct mtd_info *mtd, loff_t ofs) { + struct onenand_chip *this = mtd->priv; int ret; ret = onenand_block_isbad(mtd, ofs); @@ -2610,7 +2611,7 @@ } onenand_get_device(mtd, FL_WRITING); - ret = mtd_block_markbad(mtd, ofs); + ret = this->block_markbad(mtd, ofs); onenand_release_device(mtd); return ret; } --- 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/upd.c +++ linux-raspi2-4.2.0/drivers/mtd/ubi/upd.c @@ -193,7 +193,7 @@ vol->changing_leb = 1; vol->ch_lnum = req->lnum; - vol->upd_buf = vmalloc(req->bytes); + vol->upd_buf = vmalloc(ALIGN((int)req->bytes, ubi->min_io_size)); if (!vol->upd_buf) return -ENOMEM; --- 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 @@ -603,6 +603,7 @@ return 0; } +static int __erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk); /** * do_sync_erase - run the erase worker synchronously. * @ubi: UBI device description object @@ -615,20 +616,16 @@ static int do_sync_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, int vol_id, int lnum, int torture) { - struct ubi_work *wl_wrk; + struct ubi_work wl_wrk; dbg_wl("sync erase of PEB %i", e->pnum); - wl_wrk = kmalloc(sizeof(struct ubi_work), GFP_NOFS); - if (!wl_wrk) - return -ENOMEM; - - wl_wrk->e = e; - wl_wrk->vol_id = vol_id; - wl_wrk->lnum = lnum; - wl_wrk->torture = torture; + wl_wrk.e = e; + wl_wrk.vol_id = vol_id; + wl_wrk.lnum = lnum; + wl_wrk.torture = torture; - return erase_worker(ubi, wl_wrk, 0); + return __erase_worker(ubi, &wl_wrk); } /** @@ -1014,7 +1011,7 @@ } /** - * erase_worker - physical eraseblock erase worker function. + * __erase_worker - physical eraseblock erase worker function. * @ubi: UBI device description object * @wl_wrk: the work object * @shutdown: non-zero if the worker has to free memory and exit @@ -1025,8 +1022,7 @@ * needed. Returns zero in case of success and a negative error code in case of * failure. */ -static int erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk, - int shutdown) +static int __erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk) { struct ubi_wl_entry *e = wl_wrk->e; int pnum = e->pnum; @@ -1034,21 +1030,11 @@ int lnum = wl_wrk->lnum; int err, available_consumed = 0; - if (shutdown) { - dbg_wl("cancel erasure of PEB %d EC %d", pnum, e->ec); - kfree(wl_wrk); - wl_entry_destroy(ubi, e); - return 0; - } - dbg_wl("erase PEB %d EC %d LEB %d:%d", pnum, e->ec, wl_wrk->vol_id, wl_wrk->lnum); err = sync_erase(ubi, e, wl_wrk->torture); if (!err) { - /* Fine, we've erased it successfully */ - kfree(wl_wrk); - spin_lock(&ubi->wl_lock); wl_tree_add(e, &ubi->free); ubi->free_count++; @@ -1066,7 +1052,6 @@ } ubi_err(ubi, "failed to erase PEB %d, error %d", pnum, err); - kfree(wl_wrk); if (err == -EINTR || err == -ENOMEM || err == -EAGAIN || err == -EBUSY) { @@ -1075,6 +1060,7 @@ /* Re-schedule the LEB for erasure */ err1 = schedule_erase(ubi, e, vol_id, lnum, 0); if (err1) { + wl_entry_destroy(ubi, e); err = err1; goto out_ro; } @@ -1150,6 +1136,25 @@ return err; } +static int erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk, + int shutdown) +{ + int ret; + + if (shutdown) { + struct ubi_wl_entry *e = wl_wrk->e; + + dbg_wl("cancel erasure of PEB %d EC %d", e->pnum, e->ec); + kfree(wl_wrk); + wl_entry_destroy(ubi, e); + return 0; + } + + ret = __erase_worker(ubi, wl_wrk); + kfree(wl_wrk); + return ret; +} + /** * ubi_wl_put_peb - return a PEB to the wear-leveling sub-system. * @ubi: UBI device description object @@ -1601,6 +1606,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 @@ -214,6 +214,8 @@ static struct rtnl_link_stats64 *bond_get_stats(struct net_device *bond_dev, struct rtnl_link_stats64 *stats); static void bond_slave_arr_handler(struct work_struct *work); +static bool bond_time_in_interval(struct bonding *bond, unsigned long last_act, + int mod); /*---------------------------- General routines -----------------------------*/ @@ -1209,7 +1211,6 @@ err = netdev_master_upper_dev_link_private(slave_dev, bond_dev, slave); if (err) return err; - slave_dev->flags |= IFF_SLAVE; rtmsg_ifinfo(RTM_NEWLINK, slave_dev, IFF_SLAVE, GFP_KERNEL); return 0; } @@ -1467,6 +1468,9 @@ } } + /* set slave flag before open to prevent IPv6 addrconf */ + slave_dev->flags |= IFF_SLAVE; + /* open the slave since the application closed it */ res = dev_open(slave_dev); if (res) { @@ -1727,6 +1731,7 @@ dev_close(slave_dev); err_restore_mac: + slave_dev->flags &= ~IFF_SLAVE; if (!bond->params.fail_over_mac || BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) { /* XXX TODO - fom follow mode needs to change master's @@ -1751,6 +1756,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; @@ -2086,6 +2092,7 @@ continue; case BOND_LINK_UP: + bond_update_speed_duplex(slave); bond_set_slave_link_state(slave, BOND_LINK_UP); slave->last_link_up = jiffies; @@ -2416,7 +2423,7 @@ struct slave *slave) { struct arphdr *arp = (struct arphdr *)skb->data; - struct slave *curr_active_slave; + struct slave *curr_active_slave, *curr_arp_slave; unsigned char *arp_ptr; __be32 sip, tip; int alen, is_arp = skb->protocol == __cpu_to_be16(ETH_P_ARP); @@ -2463,26 +2470,41 @@ &sip, &tip); curr_active_slave = rcu_dereference(bond->curr_active_slave); + curr_arp_slave = rcu_dereference(bond->current_arp_slave); - /* Backup slaves won't see the ARP reply, but do come through - * here for each ARP probe (so we swap the sip/tip to validate - * the probe). In a "redundant switch, common router" type of - * configuration, the ARP probe will (hopefully) travel from - * the active, through one switch, the router, then the other - * switch before reaching the backup. + /* We 'trust' the received ARP enough to validate it if: + * + * (a) the slave receiving the ARP is active (which includes the + * current ARP slave, if any), or * - * We 'trust' the arp requests if there is an active slave and - * it received valid arp reply(s) after it became active. This - * is done to avoid endless looping when we can't reach the + * (b) the receiving slave isn't active, but there is a currently + * active slave and it received valid arp reply(s) after it became + * the currently active slave, or + * + * (c) there is an ARP slave that sent an ARP during the prior ARP + * interval, and we receive an ARP reply on any slave. We accept + * these because switch FDB update delays may deliver the ARP + * reply to a slave other than the sender of the ARP request. + * + * Note: for (b), backup slaves are receiving the broadcast ARP + * request, not a reply. This request passes from the sending + * slave through the L2 switch(es) to the receiving slave. Since + * this is checking the request, sip/tip are swapped for + * validation. + * + * This is done to avoid endless looping when we can't reach the * arp_ip_target and fool ourselves with our own arp requests. */ - if (bond_is_active_slave(slave)) bond_validate_arp(bond, slave, sip, tip); else if (curr_active_slave && time_after(slave_last_rx(bond, curr_active_slave), curr_active_slave->last_link_up)) bond_validate_arp(bond, slave, tip, sip); + else if (curr_arp_slave && (arp->ar_op == htons(ARPOP_REPLY)) && + bond_time_in_interval(bond, + dev_trans_start(curr_arp_slave->dev), 1)) + bond_validate_arp(bond, slave, sip, tip); out_unlock: if (arp != (struct arphdr *)skb->data) @@ -3097,7 +3119,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/can/usb/ems_usb.c +++ linux-raspi2-4.2.0/drivers/net/can/usb/ems_usb.c @@ -117,6 +117,9 @@ */ #define EMS_USB_ARM7_CLOCK 8000000 +#define CPC_TX_QUEUE_TRIGGER_LOW 25 +#define CPC_TX_QUEUE_TRIGGER_HIGH 35 + /* * CAN-Message representation in a CPC_MSG. Message object type is * CPC_MSG_TYPE_CAN_FRAME or CPC_MSG_TYPE_RTR_FRAME or @@ -278,6 +281,11 @@ switch (urb->status) { case 0: dev->free_slots = dev->intr_in_buffer[1]; + if(dev->free_slots > CPC_TX_QUEUE_TRIGGER_HIGH){ + if (netif_queue_stopped(netdev)){ + netif_wake_queue(netdev); + } + } break; case -ECONNRESET: /* unlink */ @@ -527,8 +535,6 @@ /* Release context */ context->echo_index = MAX_TX_URBS; - if (netif_queue_stopped(netdev)) - netif_wake_queue(netdev); } /* @@ -588,7 +594,7 @@ int err, i; dev->intr_in_buffer[0] = 0; - dev->free_slots = 15; /* initial size */ + dev->free_slots = 50; /* initial size */ for (i = 0; i < MAX_RX_URBS; i++) { struct urb *urb = NULL; @@ -836,7 +842,7 @@ /* Slow down tx path */ if (atomic_read(&dev->active_tx_urbs) >= MAX_TX_URBS || - dev->free_slots < 5) { + dev->free_slots < CPC_TX_QUEUE_TRIGGER_LOW) { netif_stop_queue(netdev); } } --- linux-raspi2-4.2.0.orig/drivers/net/can/usb/gs_usb.c +++ linux-raspi2-4.2.0/drivers/net/can/usb/gs_usb.c @@ -826,9 +826,8 @@ static void gs_destroy_candev(struct gs_can *dev) { unregister_candev(dev->netdev); - free_candev(dev->netdev); usb_kill_anchored_urbs(&dev->tx_submitted); - kfree(dev); + free_candev(dev->netdev); } static int gs_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) @@ -913,12 +912,15 @@ for (i = 0; i < icount; i++) { dev->canch[i] = gs_make_candev(i, intf); if (IS_ERR_OR_NULL(dev->canch[i])) { + /* save error code to return later */ + rc = PTR_ERR(dev->canch[i]); + /* on failure destroy previously created candevs */ icount = i; - for (i = 0; i < icount; i++) { + for (i = 0; i < icount; i++) gs_destroy_candev(dev->canch[i]); - dev->canch[i] = NULL; - } + + usb_kill_anchored_urbs(&dev->rx_submitted); kfree(dev); return rc; } @@ -939,16 +941,12 @@ return; } - for (i = 0; i < GS_MAX_INTF; i++) { - struct gs_can *can = dev->canch[i]; - - if (!can) - continue; - - gs_destroy_candev(can); - } + for (i = 0; i < GS_MAX_INTF; i++) + if (dev->canch[i]) + gs_destroy_candev(dev->canch[i]); usb_kill_anchored_urbs(&dev->rx_submitted); + kfree(dev); } static const struct usb_device_id gs_usb_table[] = { --- 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 || @@ -1849,7 +1849,7 @@ usleep_range(10, 15); /* Poll Until Poll Condition */ - while (count-- && XGMAC_IOREAD_BITS(pdata, DMA_MR, SWR)) + while (--count && XGMAC_IOREAD_BITS(pdata, DMA_MR, SWR)) usleep_range(500, 600); if (!count) @@ -1873,7 +1873,7 @@ /* Poll Until Poll Condition */ for (i = 0; i < pdata->tx_q_count; i++) { count = 2000; - while (count-- && XGMAC_MTL_IOREAD_BITS(pdata, i, + while (--count && XGMAC_MTL_IOREAD_BITS(pdata, i, MTL_Q_TQOMR, FTQ)) usleep_range(500, 600); --- 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 @@ -1022,6 +1022,7 @@ struct enet_cb *tx_cb_ptr; struct netdev_queue *txq; unsigned int pkts_compl = 0; + unsigned int bytes_compl = 0; unsigned int c_index; unsigned int txbds_ready; unsigned int txbds_processed = 0; @@ -1044,16 +1045,13 @@ tx_cb_ptr = &priv->tx_cbs[ring->clean_ptr]; if (tx_cb_ptr->skb) { pkts_compl++; - dev->stats.tx_packets++; - dev->stats.tx_bytes += tx_cb_ptr->skb->len; + bytes_compl += GENET_CB(tx_cb_ptr->skb)->bytes_sent; dma_unmap_single(&dev->dev, dma_unmap_addr(tx_cb_ptr, dma_addr), - tx_cb_ptr->skb->len, + dma_unmap_len(tx_cb_ptr, dma_len), DMA_TO_DEVICE); bcmgenet_free_cb(tx_cb_ptr); } else if (dma_unmap_addr(tx_cb_ptr, dma_addr)) { - dev->stats.tx_bytes += - dma_unmap_len(tx_cb_ptr, dma_len); dma_unmap_page(&dev->dev, dma_unmap_addr(tx_cb_ptr, dma_addr), dma_unmap_len(tx_cb_ptr, dma_len), @@ -1071,6 +1069,9 @@ ring->free_bds += txbds_processed; ring->c_index = (ring->c_index + txbds_processed) & DMA_C_INDEX_MASK; + dev->stats.tx_packets += pkts_compl; + dev->stats.tx_bytes += bytes_compl; + if (ring->free_bds > (MAX_SKB_FRAGS + 1)) { txq = netdev_get_tx_queue(dev, ring->queue); if (netif_tx_queue_stopped(txq)) @@ -1147,7 +1148,7 @@ tx_cb_ptr->skb = skb; - skb_len = skb_headlen(skb) < ETH_ZLEN ? ETH_ZLEN : skb_headlen(skb); + skb_len = skb_headlen(skb); mapping = dma_map_single(kdev, skb->data, skb_len, DMA_TO_DEVICE); ret = dma_mapping_error(kdev, mapping); @@ -1159,7 +1160,7 @@ } dma_unmap_addr_set(tx_cb_ptr, dma_addr, mapping); - dma_unmap_len_set(tx_cb_ptr, dma_len, skb->len); + dma_unmap_len_set(tx_cb_ptr, dma_len, skb_len); length_status = (skb_len << DMA_BUFLENGTH_SHIFT) | dma_desc_flags | (priv->hw_params->qtag_mask << DMA_TX_QTAG_SHIFT) | DMA_TX_APPEND_CRC; @@ -1315,6 +1316,11 @@ goto out; } + /* Retain how many bytes will be sent on the wire, without TSB inserted + * by transmit checksum offload + */ + GENET_CB(skb)->bytes_sent = skb->len; + /* set the SKB transmit checksum */ if (priv->desc_64b_en) { skb = bcmgenet_put_tx_csum(dev, skb); @@ -2703,18 +2709,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 @@ -532,6 +532,12 @@ u32 flags; }; +struct bcmgenet_skb_cb { + unsigned int bytes_sent; /* bytes on the wire (no TSB) */ +}; + +#define GENET_CB(skb) ((struct bcmgenet_skb_cb *)((skb)->cb)) + struct bcmgenet_tx_ring { spinlock_t lock; /* ring lock */ struct napi_struct napi; /* NAPI per tx queue */ @@ -671,6 +677,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), @@ -7833,6 +7834,14 @@ return ret; } +static bool tg3_tso_bug_gso_check(struct tg3_napi *tnapi, struct sk_buff *skb) +{ + /* Check if we will never have enough descriptors, + * as gso_segs can be more than current ring size + */ + return skb_shinfo(skb)->gso_segs < tnapi->tx_pending / 3; +} + static netdev_tx_t tg3_start_xmit(struct sk_buff *, struct net_device *); /* Use GSO to workaround all TSO packets that meet HW bug conditions @@ -7936,14 +7945,19 @@ * vlan encapsulated. */ if (skb->protocol == htons(ETH_P_8021Q) || - skb->protocol == htons(ETH_P_8021AD)) - return tg3_tso_bug(tp, tnapi, txq, skb); + skb->protocol == htons(ETH_P_8021AD)) { + if (tg3_tso_bug_gso_check(tnapi, skb)) + return tg3_tso_bug(tp, tnapi, txq, skb); + goto drop; + } if (!skb_is_gso_v6(skb)) { if (unlikely((ETH_HLEN + hdr_len) > 80) && - tg3_flag(tp, TSO_BUG)) - return tg3_tso_bug(tp, tnapi, txq, skb); - + tg3_flag(tp, TSO_BUG)) { + if (tg3_tso_bug_gso_check(tnapi, skb)) + return tg3_tso_bug(tp, tnapi, txq, skb); + goto drop; + } ip_csum = iph->check; ip_tot_len = iph->tot_len; iph->check = 0; @@ -8075,7 +8089,7 @@ if (would_hit_hwbug) { tg3_tx_skb_unmap(tnapi, tnapi->tx_prod, i); - if (mss) { + if (mss && tg3_tso_bug_gso_check(tnapi, skb)) { /* If it's a TSO packet, do GSO instead of * allocating and copying to a large linear SKB */ @@ -10757,7 +10771,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/cadence/macb.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/cadence/macb.c @@ -1104,7 +1104,7 @@ macb_writel(bp, NCR, ctrl | MACB_BIT(RE)); if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE) - macb_writel(bp, ISR, MACB_BIT(RXUBR)); + queue_writel(queue, ISR, MACB_BIT(RXUBR)); } if (status & MACB_BIT(ISR_ROVR)) { --- 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/emulex/benet/be.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/emulex/benet/be.h @@ -527,6 +527,7 @@ struct delayed_work be_err_detection_work; u8 err_flags; + bool pcicfg_mapped; /* pcicfg obtained via pci_iomap() */ u32 flags; u32 cmd_privileges; /* Ethtool knobs and info */ --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/emulex/benet/be_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/emulex/benet/be_main.c @@ -5481,6 +5481,8 @@ pci_iounmap(adapter->pdev, adapter->csr); if (adapter->db) pci_iounmap(adapter->pdev, adapter->db); + if (adapter->pcicfg && adapter->pcicfg_mapped) + pci_iounmap(adapter->pdev, adapter->pcicfg); } static int db_bar(struct be_adapter *adapter) @@ -5532,8 +5534,10 @@ if (!addr) goto pci_map_err; adapter->pcicfg = addr; + adapter->pcicfg_mapped = true; } else { adapter->pcicfg = adapter->db + SRIOV_VF_PCICFG_OFFSET; + adapter->pcicfg_mapped = false; } } --- 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 @@ -35,7 +35,7 @@ /* Registers */ #define MVNETA_RXQ_CONFIG_REG(q) (0x1400 + ((q) << 2)) -#define MVNETA_RXQ_HW_BUF_ALLOC BIT(1) +#define MVNETA_RXQ_HW_BUF_ALLOC BIT(0) #define MVNETA_RXQ_PKT_OFFSET_ALL_MASK (0xf << 8) #define MVNETA_RXQ_PKT_OFFSET_MASK(offs) ((offs) << 8) #define MVNETA_RXQ_THRESHOLD_REG(q) (0x14c0 + ((q) << 2)) @@ -61,6 +61,7 @@ #define MVNETA_WIN_SIZE(w) (0x2204 + ((w) << 3)) #define MVNETA_WIN_REMAP(w) (0x2280 + ((w) << 2)) #define MVNETA_BASE_ADDR_ENABLE 0x2290 +#define MVNETA_ACCESS_PROTECT_ENABLE 0x2294 #define MVNETA_PORT_CONFIG 0x2400 #define MVNETA_UNI_PROMISC_MODE BIT(0) #define MVNETA_DEF_RXQ(q) ((q) << 1) @@ -156,7 +157,7 @@ #define MVNETA_INTR_ENABLE 0x25b8 #define MVNETA_TXQ_INTR_ENABLE_ALL_MASK 0x0000ff00 -#define MVNETA_RXQ_INTR_ENABLE_ALL_MASK 0xff000000 // note: neta says it's 0x000000FF +#define MVNETA_RXQ_INTR_ENABLE_ALL_MASK 0x000000ff #define MVNETA_RXQ_CMD 0x2680 #define MVNETA_RXQ_DISABLE_SHIFT 8 @@ -949,7 +950,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 +1480,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 +1488,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 +1534,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; @@ -2969,6 +2976,7 @@ } mvreg_write(pp, MVNETA_BASE_ADDR_ENABLE, win_enable); + mvreg_write(pp, MVNETA_ACCESS_PROTECT_ENABLE, win_protect); } /* Power up the port */ @@ -3027,8 +3035,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 +3070,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 +3093,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)) { @@ -3154,7 +3163,7 @@ dev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO; dev->hw_features |= dev->features; dev->vlan_features |= dev->features; - dev->priv_flags |= IFF_UNICAST_FLT; + dev->priv_flags |= IFF_UNICAST_FLT | IFF_LIVE_ADDR_CHANGE; dev->gso_max_segs = MVNETA_MAX_TSO_SEGS; err = register_netdev(dev); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/marvell/mvpp2.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/marvell/mvpp2.c @@ -3413,16 +3413,23 @@ } /* Free all buffers from the pool */ -static void mvpp2_bm_bufs_free(struct mvpp2 *priv, struct mvpp2_bm_pool *bm_pool) +static void mvpp2_bm_bufs_free(struct device *dev, struct mvpp2 *priv, + struct mvpp2_bm_pool *bm_pool) { int i; for (i = 0; i < bm_pool->buf_num; i++) { + dma_addr_t buf_phys_addr; u32 vaddr; /* Get buffer virtual address (indirect access) */ - mvpp2_read(priv, MVPP2_BM_PHY_ALLOC_REG(bm_pool->id)); + buf_phys_addr = mvpp2_read(priv, + MVPP2_BM_PHY_ALLOC_REG(bm_pool->id)); vaddr = mvpp2_read(priv, MVPP2_BM_VIRT_ALLOC_REG); + + dma_unmap_single(dev, buf_phys_addr, + bm_pool->buf_size, DMA_FROM_DEVICE); + if (!vaddr) break; dev_kfree_skb_any((struct sk_buff *)vaddr); @@ -3439,7 +3446,7 @@ { u32 val; - mvpp2_bm_bufs_free(priv, bm_pool); + mvpp2_bm_bufs_free(&pdev->dev, priv, bm_pool); if (bm_pool->buf_num) { WARN(1, "cannot free all buffers in pool %d\n", bm_pool->id); return 0; @@ -3692,7 +3699,8 @@ MVPP2_BM_LONG_BUF_NUM : MVPP2_BM_SHORT_BUF_NUM; else - mvpp2_bm_bufs_free(port->priv, new_pool); + mvpp2_bm_bufs_free(port->dev->dev.parent, + port->priv, new_pool); new_pool->pkt_size = pkt_size; @@ -3756,7 +3764,7 @@ int pkt_size = MVPP2_RX_PKT_SIZE(mtu); /* Update BM pool with new buffer size */ - mvpp2_bm_bufs_free(port->priv, port_pool); + mvpp2_bm_bufs_free(dev->dev.parent, port->priv, port_pool); if (port_pool->buf_num) { WARN(1, "cannot free all buffers in pool %d\n", port_pool->id); return -EIO; @@ -4401,11 +4409,10 @@ mvpp2_txq_inc_get(txq_pcpu); - if (!skb) - continue; - dma_unmap_single(port->dev->dev.parent, buf_phys_addr, skb_headlen(skb), DMA_TO_DEVICE); + if (!skb) + continue; dev_kfree_skb_any(skb); } } @@ -5092,7 +5099,8 @@ struct mvpp2_rx_queue *rxq) { struct net_device *dev = port->dev; - int rx_received, rx_filled, i; + int rx_received; + int rx_done = 0; u32 rcvd_pkts = 0; u32 rcvd_bytes = 0; @@ -5101,17 +5109,18 @@ if (rx_todo > rx_received) rx_todo = rx_received; - rx_filled = 0; - for (i = 0; i < rx_todo; i++) { + while (rx_done < rx_todo) { struct mvpp2_rx_desc *rx_desc = mvpp2_rxq_next_desc_get(rxq); struct mvpp2_bm_pool *bm_pool; struct sk_buff *skb; + dma_addr_t phys_addr; u32 bm, rx_status; int pool, rx_bytes, err; - rx_filled++; + rx_done++; rx_status = rx_desc->status; rx_bytes = rx_desc->data_size - MVPP2_MH_SIZE; + phys_addr = rx_desc->buf_phys_addr; bm = mvpp2_bm_cookie_build(rx_desc); pool = mvpp2_bm_cookie_pool_get(bm); @@ -5128,8 +5137,10 @@ * comprised by the RX descriptor. */ if (rx_status & MVPP2_RXD_ERR_SUMMARY) { + err_drop_frame: dev->stats.rx_errors++; mvpp2_rx_error(port, rx_desc); + /* Return the buffer to the pool */ mvpp2_pool_refill(port, bm, rx_desc->buf_phys_addr, rx_desc->buf_cookie); continue; @@ -5137,6 +5148,15 @@ skb = (struct sk_buff *)rx_desc->buf_cookie; + err = mvpp2_rx_refill(port, bm_pool, bm, 0); + if (err) { + netdev_err(port->dev, "failed to refill BM pools\n"); + goto err_drop_frame; + } + + dma_unmap_single(dev->dev.parent, phys_addr, + bm_pool->buf_size, DMA_FROM_DEVICE); + rcvd_pkts++; rcvd_bytes += rx_bytes; atomic_inc(&bm_pool->in_use); @@ -5147,12 +5167,6 @@ mvpp2_rx_csum(port, rx_status, skb); napi_gro_receive(&port->napi, skb); - - err = mvpp2_rx_refill(port, bm_pool, bm, 0); - if (err) { - netdev_err(port->dev, "failed to refill BM pools\n"); - rx_filled--; - } } if (rcvd_pkts) { @@ -5166,7 +5180,7 @@ /* Update Rx queue management counters */ wmb(); - mvpp2_rxq_status_update(port, rxq->id, rx_todo, rx_filled); + mvpp2_rxq_status_update(port, rxq->id, rx_done, rx_done); return rx_todo; } --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/catas.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/catas.c @@ -182,10 +182,17 @@ err = mlx4_reset_slave(dev); else err = mlx4_reset_master(dev); - BUG_ON(err != 0); + if (!err) { + mlx4_err(dev, "device was reset successfully\n"); + } else { + /* EEH could have disabled the PCI channel during reset. That's + * recoverable and the PCI error flow will handle it. + */ + if (!pci_channel_offline(dev->persist->pdev)) + BUG_ON(1); + } dev->persist->state |= MLX4_DEVICE_STATE_INTERNAL_ERROR; - mlx4_err(dev, "device was reset successfully\n"); mutex_unlock(&persist->device_state_mutex); /* At that step HW was already reset, now notify clients */ --- 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 @@ -236,23 +236,43 @@ .enable = mlx4_en_phc_enable, }; +#define MLX4_EN_WRAP_AROUND_SEC 10ULL + +/* This function calculates the max shift that enables the user range + * of MLX4_EN_WRAP_AROUND_SEC values in the cycles register. + */ +static u32 freq_to_shift(u16 freq) +{ + u32 freq_khz = freq * 1000; + u64 max_val_cycles = freq_khz * 1000 * MLX4_EN_WRAP_AROUND_SEC; + u64 max_val_cycles_rounded = is_power_of_2(max_val_cycles + 1) ? + max_val_cycles : roundup_pow_of_two(max_val_cycles) - 1; + /* calculate max possible multiplier in order to fit in 64bit */ + u64 max_mul = div_u64(0xffffffffffffffffULL, max_val_cycles_rounded); + + /* This comes from the reverse of clocksource_khz2mult */ + return ilog2(div_u64(max_mul * freq_khz, 1000000)); +} + void mlx4_en_init_timestamp(struct mlx4_en_dev *mdev) { struct mlx4_dev *dev = mdev->dev; 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)); mdev->cycles.read = mlx4_en_read_clock; mdev->cycles.mask = CLOCKSOURCE_MASK(48); - /* Using shift to make calculation more accurate. Since current HW - * clock frequency is 427 MHz, and cycles are given using a 48 bits - * register, the biggest shift when calculating using u64, is 14 - * (max_cycles * multiplier < 2^64) - */ - mdev->cycles.shift = 14; + mdev->cycles.shift = freq_to_shift(dev->caps.hca_core_clock); mdev->cycles.mult = clocksource_khz2mult(1000 * dev->caps.hca_core_clock, mdev->cycles.shift); mdev->nominal_c_mult = mdev->cycles.mult; --- 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; @@ -2240,7 +2243,7 @@ struct mlx4_en_dev *mdev = en_priv->mdev; u64 mac_u64 = mlx4_mac_to_u64(mac); - if (!is_valid_ether_addr(mac)) + if (is_multicast_ether_addr(mac)) return -EINVAL; return mlx4_set_vf_mac(mdev->dev, en_priv->port, queue, mac_u64); @@ -2339,8 +2342,6 @@ /* set offloads */ priv->dev->hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_RXCSUM | NETIF_F_TSO | NETIF_F_GSO_UDP_TUNNEL; - priv->dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL; - priv->dev->features |= NETIF_F_GSO_UDP_TUNNEL; } static void mlx4_en_del_vxlan_offloads(struct work_struct *work) @@ -2351,8 +2352,6 @@ /* unset offloads */ priv->dev->hw_enc_features &= ~(NETIF_F_IP_CSUM | NETIF_F_RXCSUM | NETIF_F_TSO | NETIF_F_GSO_UDP_TUNNEL); - priv->dev->hw_features &= ~NETIF_F_GSO_UDP_TUNNEL; - priv->dev->features &= ~NETIF_F_GSO_UDP_TUNNEL; ret = mlx4_SET_PORT_VXLAN(priv->mdev->dev, priv->port, VXLAN_STEER_BY_OUTER_MAC, 0); @@ -2956,6 +2955,11 @@ priv->rss_hash_fn = ETH_RSS_HASH_TOP; } + if (mdev->dev->caps.tunnel_offload_mode == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) { + dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL; + dev->features |= NETIF_F_GSO_UDP_TUNNEL; + } + mdev->pndev[port] = dev; mdev->upper[port] = NULL; @@ -2997,9 +3001,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_port.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/en_port.c @@ -238,11 +238,11 @@ stats->collisions = 0; stats->rx_dropped = be32_to_cpu(mlx4_en_stats->RDROP); stats->rx_length_errors = be32_to_cpu(mlx4_en_stats->RdropLength); - stats->rx_over_errors = be32_to_cpu(mlx4_en_stats->RdropOvflw); + stats->rx_over_errors = 0; stats->rx_crc_errors = be32_to_cpu(mlx4_en_stats->RCRC); stats->rx_frame_errors = 0; stats->rx_fifo_errors = be32_to_cpu(mlx4_en_stats->RdropOvflw); - stats->rx_missed_errors = be32_to_cpu(mlx4_en_stats->RdropOvflw); + stats->rx_missed_errors = 0; stats->tx_aborted_errors = 0; stats->tx_carrier_errors = 0; stats->tx_fifo_errors = 0; --- 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 @@ -875,9 +875,10 @@ dev->caps.qp1_proxy[i - 1] = func_cap.qp1_proxy_qpn; dev->caps.port_mask[i] = dev->caps.port_type[i]; dev->caps.phys_port_id[i] = func_cap.phys_port_id; - if (mlx4_get_slave_pkey_gid_tbl_len(dev, i, - &dev->caps.gid_table_len[i], - &dev->caps.pkey_table_len[i])) + err = mlx4_get_slave_pkey_gid_tbl_len(dev, i, + &dev->caps.gid_table_len[i], + &dev->caps.pkey_table_len[i]); + if (err) goto err_mem; } @@ -889,6 +890,7 @@ dev->caps.uar_page_size * dev->caps.num_uars, (unsigned long long) pci_resource_len(dev->persist->pdev, 2)); + err = -ENOMEM; goto err_mem; } @@ -2654,9 +2656,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 +2686,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 +2696,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 @@ -905,11 +905,13 @@ spin_lock_irq(mlx4_tlock(dev)); r = find_res(dev, counter_index, RES_COUNTER); - if (!r || r->owner != slave) + if (!r || r->owner != slave) { ret = -EINVAL; - counter = container_of(r, struct res_counter, com); - if (!counter->port) - counter->port = port; + } else { + counter = container_of(r, struct res_counter, com); + if (!counter->port) + counter->port = port; + } spin_unlock_irq(mlx4_tlock(dev)); return ret; @@ -3127,7 +3129,7 @@ case QP_TRANS_RTS2RTS: case QP_TRANS_SQD2SQD: case QP_TRANS_SQD2RTS: - if (slave != mlx4_master_func_num(dev)) + if (slave != mlx4_master_func_num(dev)) { if (optpar & MLX4_QP_OPTPAR_PRIMARY_ADDR_PATH) { port = (qp_ctx->pri_path.sched_queue >> 6 & 1) + 1; if (dev->caps.port_mask[port] != MLX4_PORT_TYPE_IB) @@ -3146,6 +3148,7 @@ if (qp_ctx->alt_path.mgid_index >= num_gids) return -EINVAL; } + } break; default: break; @@ -4934,26 +4937,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,20 +196,17 @@ u16 rx_hash_log_tbl_sz; bool lro_en; u32 lro_wqe_sz; + u8 rss_hfunc; + u16 tx_max_inline; }; enum { MLX5E_RQ_STATE_POST_WQES_ENABLE, }; -enum cq_flags { - MLX5E_CQ_HAS_CQES = 1, -}; - struct mlx5e_cq { /* data path - accessed per cqe */ struct mlx5_cqwq wq; - unsigned long flags; /* data path - accessed per napi poll */ struct napi_struct *napi; @@ -266,7 +264,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 +279,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 +325,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 +496,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 +510,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 +532,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: @@ -1494,6 +1561,12 @@ { struct mlx5e_priv *priv = netdev_priv(netdev); + /* May already be CLOSED in case a previous configuration operation + * (e.g RX/TX queue size change) that involves close&open failed. + */ + if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) + return 0; + clear_bit(MLX5E_STATE_OPENED, &priv->state); mlx5e_set_rx_mode_core(priv); @@ -1625,6 +1698,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 +1748,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 +1775,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 +1785,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 +1841,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_rx.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -194,10 +194,6 @@ struct mlx5e_rq *rq = container_of(cq, struct mlx5e_rq, cq); int i; - /* avoid accessing cq (dma coherent memory) if not needed */ - if (!test_and_clear_bit(MLX5E_CQ_HAS_CQES, &cq->flags)) - return false; - for (i = 0; i < budget; i++) { struct mlx5e_rx_wqe *wqe; struct mlx5_cqe64 *cqe; @@ -243,10 +239,8 @@ /* ensure cq space is freed before enabling more cqes */ wmb(); - if (i == budget) { - set_bit(MLX5E_CQ_HAS_CQES, &cq->flags); + if (i == budget) return true; - } return false; } --- 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; @@ -262,10 +313,6 @@ u16 sqcc; int i; - /* avoid accessing cq (dma coherent memory) if not needed */ - if (!test_and_clear_bit(MLX5E_CQ_HAS_CQES, &cq->flags)) - return false; - sq = container_of(cq, struct mlx5e_sq, cq); npkts = 0; @@ -341,10 +388,6 @@ netif_tx_wake_queue(sq->txq); sq->stats.wake++; } - if (i == MLX5E_TX_CQ_POLL_BUDGET) { - set_bit(MLX5E_CQ_HAS_CQES, &cq->flags); - return true; - } - return false; + return (i == MLX5E_TX_CQ_POLL_BUDGET); } --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c @@ -87,7 +87,6 @@ { struct mlx5e_cq *cq = container_of(mcq, struct mlx5e_cq, mcq); - set_bit(MLX5E_CQ_HAS_CQES, &cq->flags); set_bit(MLX5E_CHANNEL_NAPI_SCHED, &cq->channel->flags); barrier(); napi_schedule(cq->napi); --- 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/micrel/ks8842.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/micrel/ks8842.c @@ -561,8 +561,8 @@ sg_init_table(sg, 1); sg_dma_address(sg) = dma_map_single(adapter->dev, ctl->skb->data, DMA_BUFFER_SIZE, DMA_FROM_DEVICE); - err = dma_mapping_error(adapter->dev, sg_dma_address(sg)); - if (unlikely(err)) { + if (dma_mapping_error(adapter->dev, sg_dma_address(sg))) { + err = -ENOMEM; sg_dma_address(sg) = 0; goto out; } @@ -572,8 +572,10 @@ ctl->adesc = dmaengine_prep_slave_sg(ctl->chan, sg, 1, DMA_DEV_TO_MEM, DMA_PREP_INTERRUPT); - if (!ctl->adesc) + if (!ctl->adesc) { + err = -ENOMEM; goto out; + } ctl->adesc->callback_param = netdev; ctl->adesc->callback = ks8842_dma_rx_cb; @@ -584,7 +586,7 @@ goto out; } - return err; + return 0; out: if (sg_dma_address(sg)) dma_unmap_single(adapter->dev, sg_dma_address(sg), --- 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/moxa/moxart_ether.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/moxa/moxart_ether.c @@ -460,9 +460,9 @@ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ndev->base_addr = res->start; priv->base = devm_ioremap_resource(p_dev, res); - ret = IS_ERR(priv->base); - if (ret) { + if (IS_ERR(priv->base)) { dev_err(p_dev, "devm_ioremap_resource failed\n"); + ret = PTR_ERR(priv->base); goto init_fail; } --- 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/qlogic/qlcnic/qlcnic_83xx_vnic.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c @@ -246,7 +246,8 @@ u32 state; state = QLCRDX(ahw, QLC_83XX_VNIC_STATE); - while (state != QLCNIC_DEV_NPAR_OPER && idc->vnic_wait_limit--) { + while (state != QLCNIC_DEV_NPAR_OPER && idc->vnic_wait_limit) { + idc->vnic_wait_limit--; msleep(1000); state = QLCRDX(ahw, QLC_83XX_VNIC_STATE); } --- 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 @@ -812,7 +811,6 @@ dev->netdev_ops = &qcaspi_netdev_ops; qcaspi_set_ethtool_ops(dev); dev->watchdog_timeo = QCASPI_TX_TIMEOUT; - dev->flags = IFF_MULTICAST; dev->tx_queue_len = 100; qca = netdev_priv(dev); --- 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); @@ -2393,8 +2393,7 @@ txdesc = &mdp->tx_ring[entry]; /* soft swap. */ if (!mdp->cd->hw_swap) - sh_eth_soft_swap(phys_to_virt(ALIGN(txdesc->addr, 4)), - skb->len + 2); + sh_eth_soft_swap(PTR_ALIGN(skb->data, 4), skb->len + 2); txdesc->addr = dma_map_single(&ndev->dev, skb->data, skb->len, DMA_TO_DEVICE); if (dma_mapping_error(&ndev->dev, txdesc->addr)) { --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/rocker/rocker.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/rocker/rocker.c @@ -3493,12 +3493,14 @@ info.addr = lw->addr; info.vid = lw->vid; + rtnl_lock(); if (learned && removing) call_switchdev_notifiers(SWITCHDEV_FDB_DEL, lw->rocker_port->dev, &info.info); else if (learned && !removing) call_switchdev_notifiers(SWITCHDEV_FDB_ADD, lw->rocker_port->dev, &info.info); + rtnl_unlock(); rocker_port_kfree(lw->trans, work); } --- 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/dwmac-ipq806x.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c @@ -320,11 +320,11 @@ QSGMII_PHY_RX_SIGNAL_DETECT_EN | QSGMII_PHY_TX_DRIVER_EN | QSGMII_PHY_QSGMII_EN | - 0x4 << QSGMII_PHY_PHASE_LOOP_GAIN_OFFSET | - 0x3 << QSGMII_PHY_RX_DC_BIAS_OFFSET | - 0x1 << QSGMII_PHY_RX_INPUT_EQU_OFFSET | - 0x2 << QSGMII_PHY_CDR_PI_SLEW_OFFSET | - 0xC << QSGMII_PHY_TX_DRV_AMP_OFFSET); + 0x4ul << QSGMII_PHY_PHASE_LOOP_GAIN_OFFSET | + 0x3ul << QSGMII_PHY_RX_DC_BIAS_OFFSET | + 0x1ul << QSGMII_PHY_RX_INPUT_EQU_OFFSET | + 0x2ul << QSGMII_PHY_CDR_PI_SLEW_OFFSET | + 0xCul << QSGMII_PHY_TX_DRV_AMP_OFFSET); } return gmac; --- 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/ipvlan/ipvlan_core.c +++ linux-raspi2-4.2.0/drivers/net/ipvlan/ipvlan_core.c @@ -254,7 +254,7 @@ } } -static int ipvlan_rcv_frame(struct ipvl_addr *addr, struct sk_buff *skb, +static int ipvlan_rcv_frame(struct ipvl_addr *addr, struct sk_buff **pskb, bool local) { struct ipvl_dev *ipvlan = addr->master; @@ -262,6 +262,7 @@ unsigned int len; rx_handler_result_t ret = RX_HANDLER_CONSUMED; bool success = false; + struct sk_buff *skb = *pskb; len = skb->len + ETH_HLEN; if (unlikely(!(dev->flags & IFF_UP))) { @@ -273,6 +274,7 @@ if (!skb) goto out; + *pskb = skb; skb->dev = dev; skb->pkt_type = PACKET_HOST; @@ -484,7 +486,7 @@ addr = ipvlan_addr_lookup(ipvlan->port, lyr3h, addr_type, true); if (addr) - return ipvlan_rcv_frame(addr, skb, true); + return ipvlan_rcv_frame(addr, &skb, true); out: skb->dev = ipvlan->phy_dev; @@ -504,7 +506,7 @@ if (lyr3h) { addr = ipvlan_addr_lookup(ipvlan->port, lyr3h, addr_type, true); if (addr) - return ipvlan_rcv_frame(addr, skb, true); + return ipvlan_rcv_frame(addr, &skb, true); } skb = skb_share_check(skb, GFP_ATOMIC); if (!skb) @@ -587,7 +589,7 @@ addr = ipvlan_addr_lookup(port, lyr3h, addr_type, true); if (addr) - ret = ipvlan_rcv_frame(addr, skb, false); + ret = ipvlan_rcv_frame(addr, pskb, false); out: return ret; @@ -624,7 +626,7 @@ addr = ipvlan_addr_lookup(port, lyr3h, addr_type, true); if (addr) - ret = ipvlan_rcv_frame(addr, skb, false); + ret = ipvlan_rcv_frame(addr, pskb, false); } return ret; @@ -649,5 +651,5 @@ WARN_ONCE(true, "ipvlan_handle_frame() called for mode = [%hx]\n", port->mode); kfree_skb(skb); - return NET_RX_DROP; + return RX_HANDLER_CONSUMED; } --- linux-raspi2-4.2.0.orig/drivers/net/irda/irtty-sir.c +++ linux-raspi2-4.2.0/drivers/net/irda/irtty-sir.c @@ -430,16 +430,6 @@ /* Module stuff handled via irda_ldisc.owner - Jean II */ - /* First make sure we're not already connected. */ - if (tty->disc_data != NULL) { - priv = tty->disc_data; - if (priv && priv->magic == IRTTY_MAGIC) { - ret = -EEXIST; - goto out; - } - tty->disc_data = NULL; /* ### */ - } - /* stop the underlying driver */ irtty_stop_receiver(tty, TRUE); if (tty->ops->stop) --- linux-raspi2-4.2.0.orig/drivers/net/macvlan.c +++ linux-raspi2-4.2.0/drivers/net/macvlan.c @@ -415,6 +415,7 @@ skb = ip_check_defrag(skb, IP_DEFRAG_MACVLAN); if (!skb) return RX_HANDLER_CONSUMED; + *pskb = skb; eth = eth_hdr(skb); macvlan_forward_source(skb, port, eth->h_source); src = macvlan_hash_lookup(port, eth->h_source); @@ -456,6 +457,7 @@ goto out; } + *pskb = skb; skb->dev = dev; skb->pkt_type = PACKET_HOST; --- 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/at803x.c +++ linux-raspi2-4.2.0/drivers/net/phy/at803x.c @@ -198,12 +198,16 @@ if (!priv) return -ENOMEM; - gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH); + if (phydev->drv->phy_id != ATH8030_PHY_ID) + goto does_not_require_reset_workaround; + + gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); if (IS_ERR(gpiod_reset)) return PTR_ERR(gpiod_reset); priv->gpiod_reset = gpiod_reset; +does_not_require_reset_workaround: phydev->priv = priv; return 0; @@ -274,10 +278,10 @@ at803x_context_save(phydev, &context); - gpiod_set_value(priv->gpiod_reset, 0); - msleep(1); gpiod_set_value(priv->gpiod_reset, 1); msleep(1); + gpiod_set_value(priv->gpiod_reset, 0); + msleep(1); at803x_context_restore(phydev, &context); --- linux-raspi2-4.2.0.orig/drivers/net/phy/bcm7xxx.c +++ linux-raspi2-4.2.0/drivers/net/phy/bcm7xxx.c @@ -324,10 +324,6 @@ phy_write(phydev, MII_BCM7XXX_AUX_MODE, MII_BCM7XX_64CLK_MDIO); phy_read(phydev, MII_BCM7XXX_AUX_MODE); - /* Workaround only required for 100Mbits/sec capable PHYs */ - if (phydev->supported & PHY_GBIT_FEATURES) - return 0; - /* set shadow mode 2 */ ret = phy_set_clr_bits(phydev, MII_BCM7XXX_TEST, MII_BCM7XXX_SHD_MODE_2, MII_BCM7XXX_SHD_MODE_2); @@ -344,7 +340,7 @@ phy_write(phydev, MII_BCM7XXX_100TX_FALSE_CAR, 0x7555); /* reset shadow mode 2 */ - ret = phy_set_clr_bits(phydev, MII_BCM7XXX_TEST, MII_BCM7XXX_SHD_MODE_2, 0); + ret = phy_set_clr_bits(phydev, MII_BCM7XXX_TEST, 0, MII_BCM7XXX_SHD_MODE_2); if (ret < 0) return ret; @@ -412,7 +408,7 @@ .phy_id = PHY_ID_BCM7425, .phy_id_mask = 0xfffffff0, .name = "Broadcom BCM7425", - .features = PHY_GBIT_FEATURES | + .features = PHY_BASIC_FEATURES | SUPPORTED_Pause | SUPPORTED_Asym_Pause, .flags = PHY_IS_INTERNAL, .config_init = bcm7xxx_config_init, @@ -425,7 +421,7 @@ .phy_id = PHY_ID_BCM7429, .phy_id_mask = 0xfffffff0, .name = "Broadcom BCM7429", - .features = PHY_GBIT_FEATURES | + .features = PHY_BASIC_FEATURES | SUPPORTED_Pause | SUPPORTED_Asym_Pause, .flags = PHY_IS_INTERNAL, .config_init = bcm7xxx_config_init, --- 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/dp83640.c +++ linux-raspi2-4.2.0/drivers/net/phy/dp83640.c @@ -833,6 +833,11 @@ struct skb_shared_hwtstamps *shhwtstamps = NULL; struct sk_buff *skb; unsigned long flags; + u8 overflow; + + overflow = (phy_rxts->ns_hi >> 14) & 0x3; + if (overflow) + pr_debug("rx timestamp queue overflow, count %d\n", overflow); spin_lock_irqsave(&dp83640->rx_lock, flags); @@ -875,6 +880,7 @@ struct skb_shared_hwtstamps shhwtstamps; struct sk_buff *skb; u64 ns; + u8 overflow; /* We must already have the skb that triggered this. */ @@ -884,6 +890,17 @@ pr_debug("have timestamp but tx_queue empty\n"); return; } + + overflow = (phy_txts->ns_hi >> 14) & 0x3; + if (overflow) { + pr_debug("tx timestamp queue overflow, count %d\n", overflow); + while (skb) { + skb_complete_tx_timestamp(skb, NULL); + skb = skb_dequeue(&dp83640->tx_queue); + } + return; + } + ns = phy2txts(phy_txts); memset(&shhwtstamps, 0, sizeof(shhwtstamps)); shhwtstamps.hwtstamp = ns_to_ktime(ns); --- 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-mux.c +++ linux-raspi2-4.2.0/drivers/net/phy/mdio-mux.c @@ -148,9 +148,14 @@ } cb->bus_number = v; cb->parent = pb; + cb->mii_bus = mdiobus_alloc(); + if (!cb->mii_bus) { + ret_val = -ENOMEM; + of_node_put(child_bus_node); + break; + } cb->mii_bus->priv = cb; - cb->mii_bus->irq = cb->phy_irq; cb->mii_bus->name = "mdio_mux"; snprintf(cb->mii_bus->id, MII_BUS_ID_SIZE, "%x.%x", --- 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-sun4i.c +++ linux-raspi2-4.2.0/drivers/net/phy/mdio-sun4i.c @@ -132,6 +132,7 @@ return -EPROBE_DEFER; dev_info(&pdev->dev, "no regulator found\n"); + data->regulator = NULL; } else { ret = regulator_enable(data->regulator); if (ret) @@ -147,7 +148,8 @@ return 0; err_out_disable_regulator: - regulator_disable(data->regulator); + if (data->regulator) + regulator_disable(data->regulator); err_out_free_mdiobus: mdiobus_free(bus); return ret; --- 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, @@ -461,9 +470,17 @@ "txd2-skew-ps", "txd3-skew-ps" }; static const char *control_skews[2] = {"txen-skew-ps", "rxdv-skew-ps"}; + 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) { ksz9031_of_load_skew_values(phydev, of_node, --- linux-raspi2-4.2.0.orig/drivers/net/phy/phy.c +++ linux-raspi2-4.2.0/drivers/net/phy/phy.c @@ -687,25 +687,29 @@ struct phy_device *phydev = container_of(work, struct phy_device, phy_queue); - if (phydev->drv->did_interrupt && - !phydev->drv->did_interrupt(phydev)) - goto ignore; + if (phy_interrupt_is_valid(phydev)) { + if (phydev->drv->did_interrupt && + !phydev->drv->did_interrupt(phydev)) + goto ignore; - if (phy_disable_interrupts(phydev)) - goto phy_err; + if (phy_disable_interrupts(phydev)) + goto phy_err; + } mutex_lock(&phydev->lock); if ((PHY_RUNNING == phydev->state) || (PHY_NOLINK == phydev->state)) phydev->state = PHY_CHANGELINK; mutex_unlock(&phydev->lock); - atomic_dec(&phydev->irq_disable); - enable_irq(phydev->irq); + if (phy_interrupt_is_valid(phydev)) { + atomic_dec(&phydev->irq_disable); + enable_irq(phydev->irq); - /* Reenable interrupts */ - if (PHY_HALTED != phydev->state && - phy_config_interrupt(phydev, PHY_INTERRUPT_ENABLED)) - goto irq_enable_err; + /* Reenable interrupts */ + if (PHY_HALTED != phydev->state && + phy_config_interrupt(phydev, PHY_INTERRUPT_ENABLED)) + goto irq_enable_err; + } /* reschedule state queue work to run as soon as possible */ cancel_delayed_work_sync(&phydev->state_queue); @@ -897,10 +901,10 @@ phydev->adjust_link(phydev->attached_dev); break; case PHY_RUNNING: - /* Only register a CHANGE if we are polling or ignoring - * interrupts and link changed since latest checking. + /* Only register a CHANGE if we are polling and link changed + * since latest checking. */ - if (!phy_interrupt_is_valid(phydev)) { + if (phydev->irq == PHY_POLL) { old_link = phydev->link; err = phy_read_status(phydev); if (err) @@ -991,15 +995,21 @@ dev_dbg(&phydev->dev, "PHY state change %s -> %s\n", phy_state_to_str(old_state), phy_state_to_str(phydev->state)); - queue_delayed_work(system_power_efficient_wq, &phydev->state_queue, - PHY_STATE_TIME * HZ); + /* Only re-schedule a PHY state machine change if we are polling the + * PHY, if PHY_IGNORE_INTERRUPT is set, then we will be moving + * between states from phy_mac_interrupt() + */ + if (phydev->irq == PHY_POLL) + queue_delayed_work(system_power_efficient_wq, &phydev->state_queue, + PHY_STATE_TIME * HZ); } void phy_mac_interrupt(struct phy_device *phydev, int new_link) { - cancel_work_sync(&phydev->phy_queue); phydev->link = new_link; - schedule_work(&phydev->phy_queue); + + /* Trigger a state machine change */ + queue_work(system_power_efficient_wq, &phydev->phy_queue); } EXPORT_SYMBOL(phy_mac_interrupt); --- 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 @@ -565,7 +565,7 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { - struct ppp_file *pf = file->private_data; + struct ppp_file *pf; struct ppp *ppp; int err = -EFAULT, val, val2, i; struct ppp_idle idle; @@ -575,9 +575,14 @@ void __user *argp = (void __user *)arg; int __user *p = argp; - if (!pf) - return ppp_unattached_ioctl(current->nsproxy->net_ns, - pf, file, cmd, arg); + mutex_lock(&ppp_mutex); + + pf = file->private_data; + if (!pf) { + err = ppp_unattached_ioctl(current->nsproxy->net_ns, + pf, file, cmd, arg); + goto out; + } if (cmd == PPPIOCDETACH) { /* @@ -592,7 +597,6 @@ * this fd and reopening /dev/ppp. */ err = -EINVAL; - mutex_lock(&ppp_mutex); if (pf->kind == INTERFACE) { ppp = PF_TO_PPP(pf); rtnl_lock(); @@ -606,15 +610,13 @@ } else pr_warn("PPPIOCDETACH file->f_count=%ld\n", atomic_long_read(&file->f_count)); - mutex_unlock(&ppp_mutex); - return err; + goto out; } if (pf->kind == CHANNEL) { struct channel *pch; struct ppp_channel *chan; - mutex_lock(&ppp_mutex); pch = PF_TO_CHANNEL(pf); switch (cmd) { @@ -636,17 +638,16 @@ err = chan->ops->ioctl(chan, cmd, arg); up_read(&pch->chan_sem); } - mutex_unlock(&ppp_mutex); - return err; + goto out; } if (pf->kind != INTERFACE) { /* can't happen */ pr_err("PPP: not interface or channel??\n"); - return -EINVAL; + err = -EINVAL; + goto out; } - mutex_lock(&ppp_mutex); ppp = PF_TO_PPP(pf); switch (cmd) { case PPPIOCSMRU: @@ -719,10 +720,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); @@ -823,7 +822,10 @@ default: err = -ENOTTY; } + +out: mutex_unlock(&ppp_mutex); + return err; } @@ -836,7 +838,6 @@ struct ppp_net *pn; int __user *p = (int __user *)arg; - mutex_lock(&ppp_mutex); switch (cmd) { case PPPIOCNEWUNIT: /* Create a new ppp unit */ @@ -886,7 +887,7 @@ default: err = -ENOTTY; } - mutex_unlock(&ppp_mutex); + return err; } @@ -2279,7 +2280,7 @@ pch->ppp = NULL; pch->chan = chan; - pch->chan_net = net; + pch->chan_net = get_net(net); chan->ppp = pch; init_ppp_file(&pch->file, CHANNEL); pch->file.hdrlen = chan->hdrlen; @@ -2376,6 +2377,8 @@ spin_lock_bh(&pn->all_channels_lock); list_del(&pch->list); spin_unlock_bh(&pn->all_channels_lock); + put_net(pch->chan_net); + pch->chan_net = NULL; pch->file.dead = 1; wake_up_interruptible(&pch->file.rwait); @@ -2742,6 +2745,7 @@ */ dev_net_set(dev, net); + rtnl_lock(); mutex_lock(&pn->all_ppp_mutex); if (unit < 0) { @@ -2772,7 +2776,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,12 +2788,14 @@ atomic_inc(&ppp_unit_count); mutex_unlock(&pn->all_ppp_mutex); + rtnl_unlock(); *retp = 0; return ppp; out2: mutex_unlock(&pn->all_ppp_mutex); + rtnl_unlock(); free_netdev(dev); out1: *retp = ret; --- 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); @@ -396,6 +395,8 @@ if (!__pppoe_xmit(sk_pppox(relay_po), skb)) goto abort_put; + + sock_put(sk_pppox(relay_po)); } else { if (sock_queue_rcv_skb(sk, skb)) goto abort_kfree; @@ -569,6 +570,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 +594,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 +637,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 +666,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 @@ -129,24 +129,27 @@ return i < MAX_CALLID; } -static int add_chan(struct pppox_sock *sock) +static int add_chan(struct pppox_sock *sock, + struct pptp_addr *sa) { static int call_id; spin_lock(&chan_lock); - if (!sock->proto.pptp.src_addr.call_id) { + if (!sa->call_id) { call_id = find_next_zero_bit(callid_bitmap, MAX_CALLID, call_id + 1); if (call_id == MAX_CALLID) { call_id = find_next_zero_bit(callid_bitmap, MAX_CALLID, 1); if (call_id == MAX_CALLID) goto out_err; } - sock->proto.pptp.src_addr.call_id = call_id; - } else if (test_bit(sock->proto.pptp.src_addr.call_id, callid_bitmap)) + sa->call_id = call_id; + } else if (test_bit(sa->call_id, callid_bitmap)) { goto out_err; + } - set_bit(sock->proto.pptp.src_addr.call_id, callid_bitmap); - rcu_assign_pointer(callid_sock[sock->proto.pptp.src_addr.call_id], sock); + sock->proto.pptp.src_addr = *sa; + set_bit(sa->call_id, callid_bitmap); + rcu_assign_pointer(callid_sock[sa->call_id], sock); spin_unlock(&chan_lock); return 0; @@ -415,15 +418,29 @@ struct sock *sk = sock->sk; struct sockaddr_pppox *sp = (struct sockaddr_pppox *) uservaddr; struct pppox_sock *po = pppox_sk(sk); - 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; - if (add_chan(po)) + if (sk->sk_state & PPPOX_DEAD) { + error = -EALREADY; + goto out; + } + + if (sk->sk_state & PPPOX_BOUND) { error = -EBUSY; + goto out; + } + if (add_chan(po, &sp->sa_addr.pptp)) + error = -EBUSY; + else + sk->sk_state |= PPPOX_BOUND; + +out: release_sock(sk); return error; } @@ -439,6 +456,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; @@ -491,7 +511,7 @@ } opt->dst_addr = sp->sa_addr.pptp; - sk->sk_state = PPPOX_CONNECTED; + sk->sk_state |= PPPOX_CONNECTED; end: release_sock(sk); --- linux-raspi2-4.2.0.orig/drivers/net/rionet.c +++ linux-raspi2-4.2.0/drivers/net/rionet.c @@ -280,7 +280,7 @@ struct net_device *ndev = dev_id; struct rionet_private *rnet = netdev_priv(ndev); - spin_lock(&rnet->lock); + spin_lock(&rnet->tx_lock); if (netif_msg_intr(rnet)) printk(KERN_INFO @@ -299,7 +299,7 @@ if (rnet->tx_cnt < RIONET_TX_RING_SIZE) netif_wake_queue(ndev); - spin_unlock(&rnet->lock); + spin_unlock(&rnet->tx_lock); } static int rionet_open(struct net_device *ndev) --- 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/team/team.c +++ linux-raspi2-4.2.0/drivers/net/team/team.c @@ -1845,10 +1845,10 @@ struct team *team = netdev_priv(dev); struct team_port *port; - rcu_read_lock(); - list_for_each_entry_rcu(port, &team->port_list, list) + mutex_lock(&team->lock); + list_for_each_entry(port, &team->port_list, list) vlan_vid_del(port->dev, proto, vid); - rcu_read_unlock(); + mutex_unlock(&team->lock); return 0; } --- 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 @@ -100,7 +100,7 @@ .ndo_stop = usbnet_stop, .ndo_start_xmit = usbnet_start_xmit, .ndo_tx_timeout = usbnet_tx_timeout, - .ndo_change_mtu = usbnet_change_mtu, + .ndo_change_mtu = cdc_ncm_change_mtu, .ndo_set_mac_address = eth_mac_addr, .ndo_validate_addr = eth_validate_addr, .ndo_vlan_rx_add_vid = cdc_mbim_rx_add_vid, @@ -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 @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -689,6 +690,33 @@ kfree(ctx); } +/* we need to override the usbnet change_mtu ndo for two reasons: + * - respect the negotiated maximum datagram size + * - avoid unwanted changes to rx and tx buffers + */ +int cdc_ncm_change_mtu(struct net_device *net, int new_mtu) +{ + struct usbnet *dev = netdev_priv(net); + struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0]; + int maxmtu = ctx->max_datagram_size - cdc_ncm_eth_hlen(dev); + + if (new_mtu <= 0 || new_mtu > maxmtu) + return -EINVAL; + net->mtu = new_mtu; + return 0; +} +EXPORT_SYMBOL_GPL(cdc_ncm_change_mtu); + +static const struct net_device_ops cdc_ncm_netdev_ops = { + .ndo_open = usbnet_open, + .ndo_stop = usbnet_stop, + .ndo_start_xmit = usbnet_start_xmit, + .ndo_tx_timeout = usbnet_tx_timeout, + .ndo_change_mtu = cdc_ncm_change_mtu, + .ndo_set_mac_address = eth_mac_addr, + .ndo_validate_addr = eth_validate_addr, +}; + int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_altsetting, int drvflags) { const struct usb_cdc_union_desc *union_desc = NULL; @@ -874,6 +902,9 @@ /* add our sysfs attrs */ dev->net->sysfs_groups[0] = &cdc_ncm_sysfs_attr_group; + /* must handle MTU changes */ + dev->net->netdev_ops = &cdc_ncm_netdev_ops; + return 0; error2: @@ -961,8 +992,6 @@ static int cdc_ncm_bind(struct usbnet *dev, struct usb_interface *intf) { - int ret; - /* MBIM backwards compatible function? */ if (cdc_ncm_select_altsetting(intf) != CDC_NCM_COMM_ALTSETTING_NCM) return -ENODEV; @@ -971,16 +1000,7 @@ * Additionally, generic NCM devices are assumed to accept arbitrarily * placed NDP. */ - ret = cdc_ncm_bind_common(dev, intf, CDC_NCM_DATA_ALTSETTING_NCM, 0); - - /* - * We should get an event when network connection is "connected" or - * "disconnected". Set network connection in "disconnected" state - * (carrier is OFF) during attach, so the IP network stack does not - * start IPv6 negotiation and more. - */ - usbnet_link_change(dev, 0, 0); - return ret; + return cdc_ncm_bind_common(dev, intf, CDC_NCM_DATA_ALTSETTING_NCM, 0); } static void cdc_ncm_align_tail(struct sk_buff *skb, size_t modulus, size_t remainder, size_t max) @@ -1006,10 +1026,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); @@ -1555,7 +1583,8 @@ static const struct driver_info cdc_ncm_info = { .description = "CDC NCM", - .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET, + .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET + | FLAG_LINK_INTR, .bind = cdc_ncm_bind, .unbind = cdc_ncm_unbind, .manage_power = usbnet_manage_power, @@ -1568,7 +1597,7 @@ static const struct driver_info wwan_info = { .description = "Mobile Broadband Network Device", .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET - | FLAG_WWAN, + | FLAG_LINK_INTR | FLAG_WWAN, .bind = cdc_ncm_bind, .unbind = cdc_ncm_unbind, .manage_power = usbnet_manage_power, @@ -1581,7 +1610,7 @@ static const struct driver_info wwan_noarp_info = { .description = "Mobile Broadband Network Device (NO ARP)", .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET - | FLAG_WWAN | FLAG_NOARP, + | FLAG_LINK_INTR | FLAG_WWAN | FLAG_NOARP, .bind = cdc_ncm_bind, .unbind = cdc_ncm_unbind, .manage_power = usbnet_manage_power, @@ -1601,6 +1630,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,9 +539,14 @@ 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 */ + {QMI_FIXED_INTF(0x05c6, 0x6001, 3)}, /* 4G LTE usb-modem U901 */ {QMI_FIXED_INTF(0x05c6, 0x7000, 0)}, {QMI_FIXED_INTF(0x05c6, 0x7001, 1)}, {QMI_FIXED_INTF(0x05c6, 0x7002, 1)}, @@ -765,12 +770,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 +796,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/veth.c +++ linux-raspi2-4.2.0/drivers/net/veth.c @@ -117,12 +117,6 @@ kfree_skb(skb); goto drop; } - /* don't change ip_summed == CHECKSUM_PARTIAL, as that - * will cause bad checksum on forwarded packets - */ - if (skb->ip_summed == CHECKSUM_NONE && - rcv->features & NETIF_F_RXCSUM) - skb->ip_summed = CHECKSUM_UNNECESSARY; if (likely(dev_forward_skb(rcv, skb) == NET_RX_SUCCESS)) { struct pcpu_vstats *stats = this_cpu_ptr(dev->vstats); --- 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; @@ -2585,7 +2581,7 @@ struct nlattr *tb[], struct nlattr *data[]) { struct vxlan_net *vn = net_generic(src_net, vxlan_net_id); - struct vxlan_dev *vxlan = netdev_priv(dev); + struct vxlan_dev *vxlan = netdev_priv(dev), *tmp; struct vxlan_rdst *dst = &vxlan->default_dst; __u32 vni; int err; @@ -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]); @@ -2718,9 +2718,13 @@ if (data[IFLA_VXLAN_REMCSUM_NOPARTIAL]) vxlan->flags |= VXLAN_F_REMCSUM_NOPARTIAL; - if (vxlan_find_vni(src_net, vni, use_ipv6 ? AF_INET6 : AF_INET, - vxlan->dst_port, vxlan->flags)) { - pr_info("duplicate VNI %u\n", vni); + list_for_each_entry(tmp, &vn->vxlan_list, next) { + if (tmp->default_dst.remote_vni == vni && + (tmp->default_dst.remote_ip.sa.sa_family == AF_INET6 || + tmp->saddr.sa.sa_family == AF_INET6) == use_ipv6 && + tmp->dst_port == vxlan->dst_port && + (tmp->flags & VXLAN_F_RCV_FLAGS) == + (vxlan->flags & VXLAN_F_RCV_FLAGS)) return -EEXIST; } --- linux-raspi2-4.2.0.orig/drivers/net/wan/x25_asy.c +++ linux-raspi2-4.2.0/drivers/net/wan/x25_asy.c @@ -549,16 +549,12 @@ static int x25_asy_open_tty(struct tty_struct *tty) { - struct x25_asy *sl = tty->disc_data; + struct x25_asy *sl; int err; if (tty->ops->write == NULL) return -EOPNOTSUPP; - /* First make sure we're not already connected. */ - if (sl && sl->magic == X25_ASY_MAGIC) - return -EEXIST; - /* OK. Find a free X.25 channel to use. */ sl = x25_asy_alloc(); if (sl == NULL) --- 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/eeprom.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath9k/eeprom.c @@ -403,10 +403,9 @@ if (match) { if (AR_SREV_9287(ah)) { - /* FIXME: array overrun? */ for (i = 0; i < numXpdGains; i++) { minPwrT4[i] = data_9287[idxL].pwrPdg[i][0]; - maxPwrT4[i] = data_9287[idxL].pwrPdg[i][4]; + maxPwrT4[i] = data_9287[idxL].pwrPdg[i][intercepts - 1]; ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i], data_9287[idxL].pwrPdg[i], data_9287[idxL].vpdPdg[i], @@ -416,7 +415,7 @@ } else if (eeprom_4k) { for (i = 0; i < numXpdGains; i++) { minPwrT4[i] = data_4k[idxL].pwrPdg[i][0]; - maxPwrT4[i] = data_4k[idxL].pwrPdg[i][4]; + maxPwrT4[i] = data_4k[idxL].pwrPdg[i][intercepts - 1]; ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i], data_4k[idxL].pwrPdg[i], data_4k[idxL].vpdPdg[i], @@ -426,7 +425,7 @@ } else { for (i = 0; i < numXpdGains; i++) { minPwrT4[i] = data_def[idxL].pwrPdg[i][0]; - maxPwrT4[i] = data_def[idxL].pwrPdg[i][4]; + maxPwrT4[i] = data_def[idxL].pwrPdg[i][intercepts - 1]; ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i], data_def[idxL].pwrPdg[i], data_def[idxL].vpdPdg[i], --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath9k/htc_hst.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath9k/htc_hst.c @@ -411,7 +411,7 @@ return; } - if (epid >= ENDPOINT_MAX) { + if (epid < 0 || epid >= ENDPOINT_MAX) { if (pipe_id != USB_REG_IN_PIPE) dev_kfree_skb_any(skb); else --- 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 @@ -855,8 +855,8 @@ BIT(NL80211_IFTYPE_MESH_POINT) | BIT(NL80211_IFTYPE_WDS); - hw->wiphy->iface_combinations = if_comb; - hw->wiphy->n_iface_combinations = ARRAY_SIZE(if_comb); + hw->wiphy->iface_combinations = if_comb; + hw->wiphy->n_iface_combinations = ARRAY_SIZE(if_comb); } hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; @@ -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; @@ -314,9 +309,9 @@ * to transmit packets to the AP, i.e. the PTK. */ if (key->flags & IEEE80211_KEY_FLAG_PAIRWISE) { - key->hw_key_idx = 0; mvm->ptk_ivlen = key->iv_len; mvm->ptk_icvlen = key->icv_len; + ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, 0); } else { /* * firmware only supports TSC/RSC for a single key, @@ -324,12 +319,11 @@ * with new ones -- this relies on mac80211 doing * list_add_tail(). */ - key->hw_key_idx = 1; mvm->gtk_ivlen = key->iv_len; mvm->gtk_icvlen = key->icv_len; + ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, 1); } - ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, true); data->error = ret != 0; out_unlock: mutex_unlock(&mvm->mutex); @@ -777,9 +771,6 @@ */ set_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status); - /* We reprogram keys and shouldn't allocate new key indices */ - memset(mvm->fw_key_table, 0, sizeof(mvm->fw_key_table)); - mvm->ptk_ivlen = 0; mvm->ptk_icvlen = 0; mvm->ptk_ivlen = 0; @@ -1446,15 +1437,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) { @@ -2871,6 +2872,7 @@ { struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); int ret; + u8 key_offset; if (iwlwifi_mod_params.sw_crypto) { IWL_DEBUG_MAC80211(mvm, "leave - hwcrypto disabled\n"); @@ -2935,10 +2937,14 @@ break; } + /* in HW restart reuse the index, otherwise request a new one */ + if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) + key_offset = key->hw_key_idx; + else + key_offset = STA_KEY_IDX_INVALID; + IWL_DEBUG_MAC80211(mvm, "set hwcrypto key\n"); - ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, - test_bit(IWL_MVM_STATUS_IN_HW_RESTART, - &mvm->status)); + ret = iwl_mvm_set_sta_key(mvm, vif, sta, key, key_offset); if (ret) { IWL_WARN(mvm, "set key failed\n"); /* --- 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/mvm/scan.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/scan.c @@ -1290,6 +1290,10 @@ return -EBUSY; } + /* we don't support "match all" in the firmware */ + if (!req->n_match_sets) + return -EOPNOTSUPP; + ret = iwl_mvm_check_running_scans(mvm, type); if (ret) return ret; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/mvm/sta.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/sta.c @@ -1188,7 +1188,8 @@ static int iwl_mvm_send_sta_key(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvm_sta, struct ieee80211_key_conf *keyconf, bool mcast, - u32 tkip_iv32, u16 *tkip_p1k, u32 cmd_flags) + u32 tkip_iv32, u16 *tkip_p1k, u32 cmd_flags, + u8 key_offset) { struct iwl_mvm_add_sta_key_cmd cmd = {}; __le16 key_flags; @@ -1230,7 +1231,7 @@ if (mcast) key_flags |= cpu_to_le16(STA_KEY_MULTICAST); - cmd.key_offset = keyconf->hw_key_idx; + cmd.key_offset = key_offset; cmd.key_flags = key_flags; cmd.sta_id = sta_id; @@ -1323,6 +1324,7 @@ struct ieee80211_vif *vif, struct ieee80211_sta *sta, struct ieee80211_key_conf *keyconf, + u8 key_offset, bool mcast) { struct iwl_mvm_sta *mvm_sta = iwl_mvm_sta_from_mac80211(sta); @@ -1338,17 +1340,17 @@ ieee80211_get_key_rx_seq(keyconf, 0, &seq); ieee80211_get_tkip_rx_p1k(keyconf, addr, seq.tkip.iv32, p1k); ret = iwl_mvm_send_sta_key(mvm, mvm_sta, keyconf, mcast, - seq.tkip.iv32, p1k, 0); + seq.tkip.iv32, p1k, 0, key_offset); break; case WLAN_CIPHER_SUITE_CCMP: case WLAN_CIPHER_SUITE_WEP40: case WLAN_CIPHER_SUITE_WEP104: ret = iwl_mvm_send_sta_key(mvm, mvm_sta, keyconf, mcast, - 0, NULL, 0); + 0, NULL, 0, key_offset); break; default: ret = iwl_mvm_send_sta_key(mvm, mvm_sta, keyconf, mcast, - 0, NULL, 0); + 0, NULL, 0, key_offset); } return ret; @@ -1396,7 +1398,7 @@ struct ieee80211_vif *vif, struct ieee80211_sta *sta, struct ieee80211_key_conf *keyconf, - bool have_key_offset) + u8 key_offset) { bool mcast = !(keyconf->flags & IEEE80211_KEY_FLAG_PAIRWISE); u8 sta_id; @@ -1433,18 +1435,25 @@ if (WARN_ON_ONCE(iwl_mvm_sta_from_mac80211(sta)->vif != vif)) return -EINVAL; - if (!have_key_offset) { - /* - * The D3 firmware hardcodes the PTK offset to 0, so we have to - * configure it there. As a result, this workaround exists to - * let the caller set the key offset (hw_key_idx), see d3.c. - */ - keyconf->hw_key_idx = iwl_mvm_set_fw_key_idx(mvm); - if (keyconf->hw_key_idx == STA_KEY_IDX_INVALID) + /* If the key_offset is not pre-assigned, we need to find a + * new offset to use. In normal cases, the offset is not + * pre-assigned, but during HW_RESTART we want to reuse the + * same indices, so we pass them when this function is called. + * + * In D3 entry, we need to hardcoded the indices (because the + * firmware hardcodes the PTK offset to 0). In this case, we + * need to make sure we don't overwrite the hw_key_idx in the + * keyconf structure, because otherwise we cannot configure + * the original ones back when resuming. + */ + if (key_offset == STA_KEY_IDX_INVALID) { + key_offset = iwl_mvm_set_fw_key_idx(mvm); + if (key_offset == STA_KEY_IDX_INVALID) return -ENOSPC; + keyconf->hw_key_idx = key_offset; } - ret = __iwl_mvm_set_sta_key(mvm, vif, sta, keyconf, mcast); + ret = __iwl_mvm_set_sta_key(mvm, vif, sta, keyconf, key_offset, mcast); if (ret) { __clear_bit(keyconf->hw_key_idx, mvm->fw_key_table); goto end; @@ -1458,7 +1467,8 @@ */ if (keyconf->cipher == WLAN_CIPHER_SUITE_WEP40 || keyconf->cipher == WLAN_CIPHER_SUITE_WEP104) { - ret = __iwl_mvm_set_sta_key(mvm, vif, sta, keyconf, !mcast); + ret = __iwl_mvm_set_sta_key(mvm, vif, sta, keyconf, + key_offset, !mcast); if (ret) { __clear_bit(keyconf->hw_key_idx, mvm->fw_key_table); __iwl_mvm_remove_sta_key(mvm, sta_id, keyconf, mcast); @@ -1558,7 +1568,7 @@ mvm_sta = iwl_mvm_sta_from_mac80211(sta); iwl_mvm_send_sta_key(mvm, mvm_sta, keyconf, mcast, - iv32, phase1key, CMD_ASYNC); + iv32, phase1key, CMD_ASYNC, keyconf->hw_key_idx); rcu_read_unlock(); } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/mvm/sta.h +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/sta.h @@ -365,8 +365,8 @@ int iwl_mvm_set_sta_key(struct iwl_mvm *mvm, struct ieee80211_vif *vif, struct ieee80211_sta *sta, - struct ieee80211_key_conf *key, - bool have_key_offset); + struct ieee80211_key_conf *keyconf, + u8 key_offset); int iwl_mvm_remove_sta_key(struct iwl_mvm *mvm, struct ieee80211_vif *vif, struct ieee80211_sta *sta, --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/mvm/tx.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/tx.c @@ -397,6 +397,15 @@ return -1; } + /* + * Increase the pending frames counter, so that later when a reply comes + * in and the counter is decreased - we don't start getting negative + * values. + * Note that we don't need to make sure it isn't agg'd, since we're + * TXing non-sta + */ + atomic_inc(&mvm->pending_frames[sta_id]); + return 0; } --- 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 @@ -384,6 +384,7 @@ {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095B, 0x5302, iwl7265_n_cfg)}, {IWL_PCI_DEVICE(0x095B, 0x5210, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5C10, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5012, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7265_2ac_cfg)}, @@ -401,10 +402,10 @@ {IWL_PCI_DEVICE(0x095A, 0x900A, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x9112, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9210, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x9210, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x9510, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9310, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x9310, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x9410, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5020, iwl7265_2n_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x502A, iwl7265_2n_cfg)}, @@ -414,18 +415,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 +446,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 @@ -7,6 +7,7 @@ * * Copyright(c) 2007 - 2015 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH + * Copyright(c) 2016 Intel Deutschland GmbH * * 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 @@ -33,6 +34,7 @@ * * Copyright(c) 2005 - 2015 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH + * Copyright(c) 2016 Intel Deutschland GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -592,10 +594,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 +605,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; } @@ -907,9 +903,16 @@ if (dest->monitor_mode == EXTERNAL_MODE && trans_pcie->fw_mon_size) { iwl_write_prph(trans, le32_to_cpu(dest->base_reg), trans_pcie->fw_mon_phys >> dest->base_shift); - iwl_write_prph(trans, le32_to_cpu(dest->end_reg), - (trans_pcie->fw_mon_phys + - trans_pcie->fw_mon_size) >> dest->end_shift); + if (trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) + iwl_write_prph(trans, le32_to_cpu(dest->end_reg), + (trans_pcie->fw_mon_phys + + trans_pcie->fw_mon_size - 256) >> + dest->end_shift); + else + iwl_write_prph(trans, le32_to_cpu(dest->end_reg), + (trans_pcie->fw_mon_phys + + trans_pcie->fw_mon_size) >> + dest->end_shift); } } --- 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/Kconfig +++ linux-raspi2-4.2.0/drivers/net/wireless/mwifiex/Kconfig @@ -33,12 +33,12 @@ mwifiex_pcie. config MWIFIEX_USB - tristate "Marvell WiFi-Ex Driver for USB8766/8797/8897" + tristate "Marvell WiFi-Ex Driver for USB8766/8797" depends on MWIFIEX && USB select FW_LOADER ---help--- This adds support for wireless adapters based on Marvell - 8797/8897 chipset with USB interface. + 8797 chipset with USB interface. If you choose to build it as a module, it will be called mwifiex_usb. --- 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/mwifiex/sta_ioctl.c +++ linux-raspi2-4.2.0/drivers/net/wireless/mwifiex/sta_ioctl.c @@ -313,6 +313,7 @@ mwifiex_dbg(adapter, ERROR, "Attempt to reconnect on csa closed chan(%d)\n", bss_desc->channel); + ret = -1; goto done; } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mwifiex/usb.c +++ linux-raspi2-4.2.0/drivers/net/wireless/mwifiex/usb.c @@ -42,11 +42,6 @@ {USB_DEVICE_AND_INTERFACE_INFO(USB8XXX_VID, USB8801_PID_2, USB_CLASS_VENDOR_SPEC, USB_SUBCLASS_VENDOR_SPEC, 0xff)}, - /* 8897 */ - {USB_DEVICE(USB8XXX_VID, USB8897_PID_1)}, - {USB_DEVICE_AND_INTERFACE_INFO(USB8XXX_VID, USB8897_PID_2, - USB_CLASS_VENDOR_SPEC, - USB_SUBCLASS_VENDOR_SPEC, 0xff)}, { } /* Terminating entry */ }; @@ -379,13 +374,11 @@ case USB8766_PID_1: case USB8797_PID_1: case USB8801_PID_1: - case USB8897_PID_1: card->usb_boot_state = USB8XXX_FW_DNLD; break; case USB8766_PID_2: case USB8797_PID_2: case USB8801_PID_2: - case USB8897_PID_2: card->usb_boot_state = USB8XXX_FW_READY; break; default: @@ -812,12 +805,6 @@ adapter->dev = &card->udev->dev; switch (le16_to_cpu(card->udev->descriptor.idProduct)) { - case USB8897_PID_1: - case USB8897_PID_2: - adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K; - strcpy(adapter->fw_name, USB8897_DEFAULT_FW_NAME); - adapter->ext_scan = true; - break; case USB8766_PID_1: case USB8766_PID_2: adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K; @@ -1118,4 +1105,3 @@ MODULE_FIRMWARE(USB8766_DEFAULT_FW_NAME); MODULE_FIRMWARE(USB8797_DEFAULT_FW_NAME); MODULE_FIRMWARE(USB8801_DEFAULT_FW_NAME); -MODULE_FIRMWARE(USB8897_DEFAULT_FW_NAME); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mwifiex/usb.h +++ linux-raspi2-4.2.0/drivers/net/wireless/mwifiex/usb.h @@ -28,8 +28,6 @@ #define USB8766_PID_2 0x2042 #define USB8797_PID_1 0x2043 #define USB8797_PID_2 0x2044 -#define USB8897_PID_1 0x2045 -#define USB8897_PID_2 0x2046 #define USB8801_PID_1 0x2049 #define USB8801_PID_2 0x204a @@ -45,7 +43,6 @@ #define USB8766_DEFAULT_FW_NAME "mrvl/usb8766_uapsta.bin" #define USB8797_DEFAULT_FW_NAME "mrvl/usb8797_uapsta.bin" #define USB8801_DEFAULT_FW_NAME "mrvl/usb8801_uapsta.bin" -#define USB8897_DEFAULT_FW_NAME "mrvl/usb8897_uapsta.bin" #define FW_DNLD_TX_BUF_SIZE 620 #define FW_DNLD_RX_BUF_SIZE 2048 --- 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/rt2x00/rt2800usb.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rt2x00/rt2800usb.c @@ -1026,6 +1026,7 @@ { USB_DEVICE(0x0411, 0x01a2) }, { USB_DEVICE(0x0411, 0x01ee) }, { USB_DEVICE(0x0411, 0x01a8) }, + { USB_DEVICE(0x0411, 0x01fd) }, /* Corega */ { USB_DEVICE(0x07aa, 0x002f) }, { USB_DEVICE(0x07aa, 0x003c) }, --- 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.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/pci.c @@ -801,7 +801,9 @@ hw_queue); if (rx_remained_cnt == 0) return; - + buffer_desc = &rtlpci->rx_ring[rxring_idx].buffer_desc[ + rtlpci->rx_ring[rxring_idx].idx]; + pdesc = (struct rtl_rx_desc *)skb->data; } else { /* rx descriptor */ pdesc = &rtlpci->rx_ring[rxring_idx].desc[ rtlpci->rx_ring[rxring_idx].idx]; @@ -824,13 +826,6 @@ new_skb = dev_alloc_skb(rtlpci->rxbuffersize); if (unlikely(!new_skb)) goto no_new; - if (rtlpriv->use_new_trx_flow) { - buffer_desc = - &rtlpci->rx_ring[rxring_idx].buffer_desc - [rtlpci->rx_ring[rxring_idx].idx]; - /*means rx wifi info*/ - pdesc = (struct rtl_rx_desc *)skb->data; - } memset(&rx_status , 0 , sizeof(rx_status)); rtlpriv->cfg->ops->query_rx_desc(hw, &stats, &rx_status, (u8 *)pdesc, skb); --- 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/regd.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/regd.c @@ -351,7 +351,6 @@ case COUNTRY_CODE_SPAIN: case COUNTRY_CODE_FRANCE: case COUNTRY_CODE_ISRAEL: - case COUNTRY_CODE_WORLD_WIDE_13: return &rtl_regdom_12_13; case COUNTRY_CODE_MKK: case COUNTRY_CODE_MKK1: @@ -360,6 +359,7 @@ return &rtl_regdom_14_60_64; case COUNTRY_CODE_GLOBAL_DOMAIN: return &rtl_regdom_14; + case COUNTRY_CODE_WORLD_WIDE_13: case COUNTRY_CODE_WORLD_WIDE_13_5G_ALL: return &rtl_regdom_12_13_5g_all; default: --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8188ee/sw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8188ee/sw.c @@ -88,8 +88,6 @@ u8 tid; rtl8188ee_bt_reg_init(hw); - rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support; - rtlpriv->dm.dm_initialgain_enable = 1; rtlpriv->dm.dm_flag = 0; rtlpriv->dm.disable_framebursting = 0; @@ -138,6 +136,11 @@ rtlpriv->psc.inactiveps = rtlpriv->cfg->mod_params->inactiveps; 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; + rtlpriv->cfg->mod_params->sw_crypto = + rtlpriv->cfg->mod_params->sw_crypto; + rtlpriv->cfg->mod_params->disable_watchdog = + rtlpriv->cfg->mod_params->disable_watchdog; if (rtlpriv->cfg->mod_params->disable_watchdog) pr_info("watchdog disabled\n"); if (!rtlpriv->psc.inactiveps) --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c @@ -139,6 +139,8 @@ rtlpriv->psc.inactiveps = rtlpriv->cfg->mod_params->inactiveps; rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps; rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps; + rtlpriv->cfg->mod_params->sw_crypto = + rtlpriv->cfg->mod_params->sw_crypto; if (!rtlpriv->psc.inactiveps) pr_info("rtl8192ce: Power Save off (module option)\n"); if (!rtlpriv->psc.fwctrl_lps) --- 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 @@ -65,6 +65,8 @@ rtlpriv->dm.disable_framebursting = false; rtlpriv->dm.thermalvalue = 0; rtlpriv->dbg.global_debuglevel = rtlpriv->cfg->mod_params->debug; + rtlpriv->cfg->mod_params->sw_crypto = + rtlpriv->cfg->mod_params->sw_crypto; /* for firmware buf */ rtlpriv->rtlhal.pfirmware = vzalloc(0x4000); @@ -321,6 +323,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/rtl8192de/sw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8192de/sw.c @@ -376,8 +376,8 @@ module_param_named(fwlps, rtl92de_mod_params.fwctrl_lps, 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"); -MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n"); +MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 1)\n"); +MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 0)\n"); MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8192se/sw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8192se/sw.c @@ -187,6 +187,8 @@ rtlpriv->psc.inactiveps = rtlpriv->cfg->mod_params->inactiveps; rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps; rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps; + rtlpriv->cfg->mod_params->sw_crypto = + rtlpriv->cfg->mod_params->sw_crypto; if (!rtlpriv->psc.inactiveps) pr_info("Power Save off (module option)\n"); if (!rtlpriv->psc.fwctrl_lps) @@ -425,8 +427,8 @@ module_param_named(fwlps, rtl92se_mod_params.fwctrl_lps, 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"); -MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n"); +MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 1)\n"); +MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 0)\n"); MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c @@ -150,6 +150,11 @@ rtlpriv->psc.inactiveps = rtlpriv->cfg->mod_params->inactiveps; 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; + rtlpriv->cfg->mod_params->sw_crypto = + rtlpriv->cfg->mod_params->sw_crypto; + rtlpriv->cfg->mod_params->disable_watchdog = + rtlpriv->cfg->mod_params->disable_watchdog; if (rtlpriv->cfg->mod_params->disable_watchdog) pr_info("watchdog disabled\n"); rtlpriv->psc.reg_fwctrl_lps = 3; @@ -267,6 +272,8 @@ .swctrl_lps = false, .fwctrl_lps = true, .debug = DBG_EMERG, + .msi_support = false, + .disable_watchdog = false, }; static struct rtl_hal_cfg rtl8723e_hal_cfg = { @@ -383,12 +390,14 @@ module_param_named(ips, rtl8723e_mod_params.inactiveps, bool, 0444); module_param_named(swlps, rtl8723e_mod_params.swctrl_lps, bool, 0444); module_param_named(fwlps, rtl8723e_mod_params.fwctrl_lps, bool, 0444); +module_param_named(msi, rtl8723e_mod_params.msi_support, bool, 0444); module_param_named(disable_watchdog, rtl8723e_mod_params.disable_watchdog, 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"); MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n"); +MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 0)\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"); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8723be/sw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8723be/sw.c @@ -93,7 +93,6 @@ struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); rtl8723be_bt_reg_init(hw); - rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support; rtlpriv->btcoexist.btc_ops = rtl_btc_get_ops_pointer(); rtlpriv->dm.dm_initialgain_enable = 1; @@ -151,6 +150,10 @@ 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; + rtlpriv->cfg->mod_params->sw_crypto = + rtlpriv->cfg->mod_params->sw_crypto; + rtlpriv->cfg->mod_params->disable_watchdog = + rtlpriv->cfg->mod_params->disable_watchdog; if (rtlpriv->cfg->mod_params->disable_watchdog) pr_info("watchdog disabled\n"); rtlpriv->psc.reg_fwctrl_lps = 3; @@ -267,6 +270,9 @@ .inactiveps = true, .swctrl_lps = false, .fwctrl_lps = true, + .msi_support = false, + .disable_watchdog = false, + .debug = DBG_EMERG, }; static struct rtl_hal_cfg rtl8723be_hal_cfg = { --- 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 @@ -95,7 +95,6 @@ struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); rtl8821ae_bt_reg_init(hw); - rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support; rtlpriv->btcoexist.btc_ops = rtl_btc_get_ops_pointer(); rtlpriv->dm.dm_initialgain_enable = 1; @@ -167,11 +166,15 @@ 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->int_clear = rtlpriv->cfg->mod_params->int_clear; + rtlpriv->cfg->mod_params->sw_crypto = + rtlpriv->cfg->mod_params->sw_crypto; + rtlpriv->cfg->mod_params->disable_watchdog = + rtlpriv->cfg->mod_params->disable_watchdog; if (rtlpriv->cfg->mod_params->disable_watchdog) pr_info("watchdog disabled\n"); rtlpriv->psc.reg_fwctrl_lps = 3; rtlpriv->psc.reg_max_lps_awakeintvl = 5; - rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support; /* for ASPM, you can close aspm through * set const_support_pciaspm = 0 @@ -308,6 +311,7 @@ .swctrl_lps = false, .fwctrl_lps = true, .msi_support = true, + .int_clear = true, .debug = DBG_EMERG, .disable_watchdog = 0, }; @@ -437,6 +441,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 +449,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 0 to disable interrupt clear before set (default 1)\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/usb.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/usb.c @@ -531,6 +531,8 @@ ieee80211_rx(hw, skb); else dev_kfree_skb_any(skb); + } else { + dev_kfree_skb_any(skb); } } --- 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/wireless/ti/wlcore/io.h +++ linux-raspi2-4.2.0/drivers/net/wireless/ti/wlcore/io.h @@ -207,19 +207,23 @@ static inline void wl1271_power_off(struct wl1271 *wl) { - int ret; + int ret = 0; if (!test_bit(WL1271_FLAG_GPIO_POWER, &wl->flags)) return; - ret = wl->if_ops->power(wl->dev, false); + if (wl->if_ops->power) + ret = wl->if_ops->power(wl->dev, false); if (!ret) clear_bit(WL1271_FLAG_GPIO_POWER, &wl->flags); } static inline int wl1271_power_on(struct wl1271 *wl) { - int ret = wl->if_ops->power(wl->dev, true); + int ret = 0; + + if (wl->if_ops->power) + ret = wl->if_ops->power(wl->dev, true); if (ret == 0) set_bit(WL1271_FLAG_GPIO_POWER, &wl->flags); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ti/wlcore/spi.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ti/wlcore/spi.c @@ -73,7 +73,10 @@ */ #define SPI_AGGR_BUFFER_SIZE (4 * PAGE_SIZE) -#define WSPI_MAX_NUM_OF_CHUNKS (SPI_AGGR_BUFFER_SIZE / WSPI_MAX_CHUNK_SIZE) +/* Maximum number of SPI write chunks */ +#define WSPI_MAX_NUM_OF_CHUNKS \ + ((SPI_AGGR_BUFFER_SIZE / WSPI_MAX_CHUNK_SIZE) + 1) + struct wl12xx_spi_glue { struct device *dev; @@ -268,9 +271,10 @@ void *buf, size_t len, bool fixed) { struct wl12xx_spi_glue *glue = dev_get_drvdata(child->parent); - struct spi_transfer t[2 * (WSPI_MAX_NUM_OF_CHUNKS + 1)]; + /* SPI write buffers - 2 for each chunk */ + struct spi_transfer t[2 * WSPI_MAX_NUM_OF_CHUNKS]; struct spi_message m; - u32 commands[WSPI_MAX_NUM_OF_CHUNKS]; + u32 commands[WSPI_MAX_NUM_OF_CHUNKS]; /* 1 command per chunk */ u32 *cmd; u32 chunk_len; int i; --- 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 && @@ -2006,8 +2002,11 @@ if (!xen_domain()) return -ENODEV; - /* Allow as many queues as there are CPUs, by default */ - xenvif_max_queues = num_online_cpus(); + /* Allow as many queues as there are CPUs if user has not + * specified a value. + */ + if (xenvif_max_queues == 0) + xenvif_max_queues = num_online_cpus(); if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) { pr_info("fatal_skb_slots too small (%d), bump it to XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n", --- 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); @@ -1703,19 +1704,19 @@ } static int xennet_create_queues(struct netfront_info *info, - unsigned int num_queues) + unsigned int *num_queues) { unsigned int i; int ret; - info->queues = kcalloc(num_queues, sizeof(struct netfront_queue), + info->queues = kcalloc(*num_queues, sizeof(struct netfront_queue), GFP_KERNEL); if (!info->queues) return -ENOMEM; rtnl_lock(); - for (i = 0; i < num_queues; i++) { + for (i = 0; i < *num_queues; i++) { struct netfront_queue *queue = &info->queues[i]; queue->id = i; @@ -1725,7 +1726,7 @@ if (ret < 0) { dev_warn(&info->netdev->dev, "only created %d queues\n", i); - num_queues = i; + *num_queues = i; break; } @@ -1735,11 +1736,11 @@ napi_enable(&queue->napi); } - netif_set_real_num_tx_queues(info->netdev, num_queues); + netif_set_real_num_tx_queues(info->netdev, *num_queues); rtnl_unlock(); - if (num_queues == 0) { + if (*num_queues == 0) { dev_err(&info->netdev->dev, "no queues\n"); return -EINVAL; } @@ -1785,7 +1786,7 @@ if (info->queues) xennet_destroy_queues(info); - err = xennet_create_queues(info, num_queues); + err = xennet_create_queues(info, &num_queues); if (err < 0) goto destroy_ring; @@ -2130,8 +2131,11 @@ pr_info("Initialising Xen virtual ethernet driver\n"); - /* Allow as many queues as there are CPUs, by default */ - xennet_max_queues = num_online_cpus(); + /* Allow as many queues as there are CPUs if user has not + * specified a value. + */ + if (xennet_max_queues == 0) + xennet_max_queues = num_online_cpus(); return xenbus_register_frontend(&netfront_driver); } --- 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/bus.c +++ linux-raspi2-4.2.0/drivers/nvdimm/bus.c @@ -335,7 +335,7 @@ [ND_CMD_IMPLEMENTED] = { }, [ND_CMD_SMART] = { .out_num = 2, - .out_sizes = { 4, 8, }, + .out_sizes = { 4, 128, }, }, [ND_CMD_SMART_THRESHOLD] = { .out_num = 2, @@ -513,10 +513,10 @@ /* fail write commands (when read-only) */ if (read_only) - switch (ioctl_cmd) { - case ND_IOCTL_VENDOR: - case ND_IOCTL_SET_CONFIG_DATA: - case ND_IOCTL_ARS_START: + switch (cmd) { + case ND_CMD_VENDOR: + case ND_CMD_SET_CONFIG_DATA: + case ND_CMD_ARS_START: dev_dbg(&nvdimm_bus->dev, "'%s' command while read-only.\n", nvdimm ? nvdimm_cmd_name(cmd) : nvdimm_bus_cmd_name(cmd)); --- 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 @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -436,6 +437,8 @@ return kzalloc(size, GFP_KERNEL); } +static DEFINE_MUTEX(of_fdt_unflatten_mutex); + /** * of_fdt_unflatten_tree - create tree of device_nodes from flat blob * @@ -447,7 +450,9 @@ void of_fdt_unflatten_tree(const unsigned long *blob, struct device_node **mynodes) { + mutex_lock(&of_fdt_unflatten_mutex); __unflatten_device_tree(blob, mynodes, &kernel_tree_alloc); + mutex_unlock(&of_fdt_unflatten_mutex); } EXPORT_SYMBOL_GPL(of_fdt_unflatten_tree); @@ -819,14 +824,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 +951,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 +992,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 +1011,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 @@ -31,11 +31,13 @@ phys_addr_t align, phys_addr_t start, phys_addr_t end, bool nomap, phys_addr_t *res_base) { + phys_addr_t base; /* * We use __memblock_alloc_base() because memblock_alloc_base() * panic()s on allocation failure. */ - phys_addr_t base = __memblock_alloc_base(size, align, end); + end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end; + base = __memblock_alloc_base(size, align, end); if (!base) return -ENOMEM; @@ -123,6 +125,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/iommu-helpers.h +++ linux-raspi2-4.2.0/drivers/parisc/iommu-helpers.h @@ -104,7 +104,11 @@ struct scatterlist *contig_sg; /* contig chunk head */ unsigned long dma_offset, dma_len; /* start/len of DMA stream */ unsigned int n_mappings = 0; - unsigned int max_seg_size = dma_get_max_seg_size(dev); + unsigned int max_seg_size = min(dma_get_max_seg_size(dev), + (unsigned)DMA_CHUNK_SIZE); + unsigned int max_seg_boundary = dma_get_seg_boundary(dev) + 1; + if (max_seg_boundary) /* check if the addition above didn't overflow */ + max_seg_size = min(max_seg_size, max_seg_boundary); while (nents > 0) { @@ -138,14 +142,11 @@ /* ** First make sure current dma stream won't - ** exceed DMA_CHUNK_SIZE if we coalesce the + ** exceed max_seg_size if we coalesce the ** next entry. */ - if(unlikely(ALIGN(dma_len + dma_offset + startsg->length, - IOVP_SIZE) > DMA_CHUNK_SIZE)) - break; - - if (startsg->length + dma_len > max_seg_size) + if (unlikely(ALIGN(dma_len + dma_offset + startsg->length, IOVP_SIZE) > + max_seg_size)) break; /* --- 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 @@ -140,6 +140,8 @@ type_mask |= IORESOURCE_TYPE_BITS; pci_bus_for_each_resource(bus, r, i) { + resource_size_t min_used = min; + if (!r) continue; @@ -163,12 +165,12 @@ * overrides "min". */ if (avail.start) - min = avail.start; + min_used = avail.start; max = avail.end; /* Ok, try it out.. */ - ret = allocate_resource(r, res, size, min, max, + ret = allocate_resource(r, res, size, min_used, max, align, alignf, alignf_data); if (ret == 0) return 0; @@ -256,6 +258,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-dra7xx.c +++ linux-raspi2-4.2.0/drivers/pci/host/pci-dra7xx.c @@ -284,7 +284,8 @@ } ret = devm_request_irq(&pdev->dev, pp->irq, - dra7xx_pcie_msi_irq_handler, IRQF_SHARED, + dra7xx_pcie_msi_irq_handler, + IRQF_SHARED | IRQF_NO_THREAD, "dra7-pcie-msi", pp); if (ret) { dev_err(&pdev->dev, "failed to request irq\n"); --- linux-raspi2-4.2.0.orig/drivers/pci/host/pci-exynos.c +++ linux-raspi2-4.2.0/drivers/pci/host/pci-exynos.c @@ -523,7 +523,8 @@ ret = devm_request_irq(&pdev->dev, pp->msi_irq, exynos_pcie_msi_irq_handler, - IRQF_SHARED, "exynos-pcie", pp); + IRQF_SHARED | IRQF_NO_THREAD, + "exynos-pcie", pp); if (ret) { dev_err(&pdev->dev, "failed to request msi irq\n"); return ret; --- 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/pci-imx6.c +++ linux-raspi2-4.2.0/drivers/pci/host/pci-imx6.c @@ -544,7 +544,8 @@ ret = devm_request_irq(&pdev->dev, pp->msi_irq, imx6_pcie_msi_handler, - IRQF_SHARED, "mx6-pcie-msi", pp); + IRQF_SHARED | IRQF_NO_THREAD, + "mx6-pcie-msi", pp); if (ret) { dev_err(&pdev->dev, "failed to request MSI irq\n"); return -ENODEV; --- linux-raspi2-4.2.0.orig/drivers/pci/host/pci-tegra.c +++ linux-raspi2-4.2.0/drivers/pci/host/pci-tegra.c @@ -1289,7 +1289,7 @@ msi->irq = err; - err = request_irq(msi->irq, tegra_pcie_msi_irq, 0, + err = request_irq(msi->irq, tegra_pcie_msi_irq, IRQF_NO_THREAD, tegra_msi_irq_chip.name, pcie); if (err < 0) { dev_err(&pdev->dev, "failed to request IRQ: %d\n", err); --- linux-raspi2-4.2.0.orig/drivers/pci/host/pcie-rcar.c +++ linux-raspi2-4.2.0/drivers/pci/host/pcie-rcar.c @@ -695,14 +695,16 @@ /* Two irqs are for MSI, but they are also used for non-MSI irqs */ err = devm_request_irq(&pdev->dev, msi->irq1, rcar_pcie_msi_irq, - IRQF_SHARED, rcar_msi_irq_chip.name, pcie); + IRQF_SHARED | IRQF_NO_THREAD, + rcar_msi_irq_chip.name, pcie); if (err < 0) { dev_err(&pdev->dev, "failed to request IRQ: %d\n", err); goto err; } err = devm_request_irq(&pdev->dev, msi->irq2, rcar_pcie_msi_irq, - IRQF_SHARED, rcar_msi_irq_chip.name, pcie); + IRQF_SHARED | IRQF_NO_THREAD, + rcar_msi_irq_chip.name, pcie); if (err < 0) { dev_err(&pdev->dev, "failed to request IRQ: %d\n", err); goto err; --- 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); } } @@ -280,7 +282,8 @@ return -ENODEV; } ret = devm_request_irq(dev, pp->irq, spear13xx_pcie_irq_handler, - IRQF_SHARED, "spear1340-pcie", pp); + IRQF_SHARED | IRQF_NO_THREAD, + "spear1340-pcie", pp); if (ret) { dev_err(dev, "failed to request irq %d\n", pp->irq); return ret; --- linux-raspi2-4.2.0.orig/drivers/pci/host/pcie-xilinx.c +++ linux-raspi2-4.2.0/drivers/pci/host/pcie-xilinx.c @@ -776,7 +776,8 @@ port->irq = irq_of_parse_and_map(node, 0); err = devm_request_irq(dev, port->irq, xilinx_pcie_intr_handler, - IRQF_SHARED, "xilinx-pcie", port); + IRQF_SHARED | IRQF_NO_THREAD, + "xilinx-pcie", port); if (err) { dev_err(dev, "unable to request irq %d\n", port->irq); return err; --- linux-raspi2-4.2.0.orig/drivers/pci/hotplug/acpiphp_glue.c +++ linux-raspi2-4.2.0/drivers/pci/hotplug/acpiphp_glue.c @@ -953,8 +953,10 @@ { pci_lock_rescan_remove(); - if (slot->flags & SLOT_IS_GOING_AWAY) + if (slot->flags & SLOT_IS_GOING_AWAY) { + pci_unlock_rescan_remove(); return -ENODEV; + } /* configure all functions */ if (!(slot->flags & SLOT_ENABLED)) --- 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,10 @@ if (ret) return ret; - if (!node_online(node)) + if ((node < 0 && node != NUMA_NO_NODE) || node >= MAX_NUMNODES) + return -EINVAL; + + if (node != NUMA_NO_NODE && !node_online(node)) return -EINVAL; add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK); --- linux-raspi2-4.2.0.orig/drivers/pci/pci.c +++ linux-raspi2-4.2.0/drivers/pci/pci.c @@ -4487,8 +4487,10 @@ void pci_bus_assign_domain_nr(struct pci_bus *bus, struct device *parent) { static int use_dt_domains = -1; - int domain = of_get_pci_domain_nr(parent->of_node); + int domain = -1; + if (parent) + domain = of_get_pci_domain_nr(parent->of_node); /* * Check DT domain and use_dt_domains values. * --- linux-raspi2-4.2.0.orig/drivers/pci/pcie/aer/aerdrv.c +++ linux-raspi2-4.2.0/drivers/pci/pcie/aer/aerdrv.c @@ -262,7 +262,6 @@ rpc->rpd = dev; INIT_WORK(&rpc->dpc_handler, aer_isr); mutex_init(&rpc->rpc_mutex); - init_waitqueue_head(&rpc->wait_release); /* Use PCIe bus function to store rpc into PCIe device */ set_service_data(dev, rpc); @@ -285,8 +284,7 @@ if (rpc->isr) free_irq(dev->irq, dev); - wait_event(rpc->wait_release, rpc->prod_idx == rpc->cons_idx); - + flush_work(&rpc->dpc_handler); aer_disable_rootport(rpc); kfree(rpc); set_service_data(dev, NULL); --- linux-raspi2-4.2.0.orig/drivers/pci/pcie/aer/aerdrv.h +++ linux-raspi2-4.2.0/drivers/pci/pcie/aer/aerdrv.h @@ -72,7 +72,6 @@ * recovery on the same * root port hierarchy */ - wait_queue_head_t wait_release; }; struct aer_broadcast_data { --- linux-raspi2-4.2.0.orig/drivers/pci/pcie/aer/aerdrv_core.c +++ linux-raspi2-4.2.0/drivers/pci/pcie/aer/aerdrv_core.c @@ -783,8 +783,6 @@ while (get_e_source(rpc, &e_src)) aer_isr_one_error(p_device, &e_src); mutex_unlock(&rpc->rpc_mutex); - - wake_up(&rpc->wait_release); } /** --- linux-raspi2-4.2.0.orig/drivers/pci/probe.c +++ linux-raspi2-4.2.0/drivers/pci/probe.c @@ -176,6 +176,9 @@ u16 orig_cmd; struct pci_bus_region region, inverted_region; + if (dev->non_compliant_bars) + return 0; + mask = type ? PCI_ROM_ADDRESS_MASK : ~0; /* No printks while decoding is disabled! */ @@ -1108,7 +1111,7 @@ #define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED) -void pci_msi_setup_pci_dev(struct pci_dev *dev) +static void pci_msi_setup_pci_dev(struct pci_dev *dev) { /* * Disable the MSI hardware to avoid screaming interrupts @@ -1137,6 +1140,7 @@ int pci_setup_device(struct pci_dev *dev) { u32 class; + u16 cmd; u8 hdr_type; struct pci_slot *slot; int pos = 0; @@ -1179,13 +1183,21 @@ /* "Unknown power state" */ dev->current_state = PCI_UNKNOWN; - pci_msi_setup_pci_dev(dev); - /* Early fixups, before probing the BARs */ pci_fixup_device(pci_fixup_early, dev); /* device class may be changed after fixup */ class = dev->class >> 8; + if (dev->non_compliant_bars) { + pci_read_config_word(dev, PCI_COMMAND, &cmd); + if (cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) { + dev_info(&dev->dev, "device has non-compliant BARs; disabling IO/MEM decoding\n"); + cmd &= ~PCI_COMMAND_IO; + cmd &= ~PCI_COMMAND_MEMORY; + pci_write_config_word(dev, PCI_COMMAND, cmd); + } + } + switch (dev->hdr_type) { /* header type */ case PCI_HEADER_TYPE_NORMAL: /* standard header */ if (class == PCI_CLASS_BRIDGE_PCI) @@ -1530,6 +1542,9 @@ /* MSI/MSI-X list */ pci_msi_init_pci_dev(dev); + /* Setup MSI caps & disable MSI/MSI-X interrupts */ + pci_msi_setup_pci_dev(dev); + /* Buffers for saving PCIe and PCI-X capabilities */ pci_allocate_cap_save_buffers(dev); --- 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/pci/xen-pcifront.c +++ linux-raspi2-4.2.0/drivers/pci/xen-pcifront.c @@ -53,7 +53,7 @@ }; struct pcifront_sd { - int domain; + struct pci_sysdata sd; struct pcifront_device *pdev; }; @@ -67,7 +67,9 @@ unsigned int domain, unsigned int bus, struct pcifront_device *pdev) { - sd->domain = domain; + /* Because we do not expose that information via XenBus. */ + sd->sd.node = first_online_node; + sd->sd.domain = domain; sd->pdev = pdev; } @@ -468,8 +470,8 @@ dev_info(&pdev->xdev->dev, "Creating PCI Frontend Bus %04x:%02x\n", domain, bus); - bus_entry = kmalloc(sizeof(*bus_entry), GFP_KERNEL); - sd = kmalloc(sizeof(*sd), GFP_KERNEL); + bus_entry = kzalloc(sizeof(*bus_entry), GFP_KERNEL); + sd = kzalloc(sizeof(*sd), GFP_KERNEL); if (!bus_entry || !sd) { err = -ENOMEM; goto err_out; --- 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/phy/Kconfig +++ linux-raspi2-4.2.0/drivers/phy/Kconfig @@ -211,6 +211,7 @@ tristate "Allwinner sun9i SoC USB PHY driver" depends on ARCH_SUNXI && HAS_IOMEM && OF depends on RESET_CONTROLLER + depends on USB_COMMON select GENERIC_PHY help Enable this to support the transceiver that is part of Allwinner --- linux-raspi2-4.2.0.orig/drivers/phy/phy-core.c +++ linux-raspi2-4.2.0/drivers/phy/phy-core.c @@ -275,20 +275,21 @@ int phy_power_on(struct phy *phy) { - int ret; + int ret = 0; if (!phy) - return 0; + goto out; if (phy->pwr) { ret = regulator_enable(phy->pwr); if (ret) - return ret; + goto out; } ret = phy_pm_runtime_get_sync(phy); if (ret < 0 && ret != -ENOTSUPP) - return ret; + goto err_pm_sync; + ret = 0; /* Override possible ret == -ENOTSUPP */ mutex_lock(&phy->mutex); @@ -296,19 +297,20 @@ ret = phy->ops->power_on(phy); if (ret < 0) { dev_err(&phy->dev, "phy poweron failed --> %d\n", ret); - goto out; + goto err_pwr_on; } } ++phy->power_count; mutex_unlock(&phy->mutex); return 0; -out: +err_pwr_on: mutex_unlock(&phy->mutex); phy_pm_runtime_put_sync(phy); +err_pm_sync: if (phy->pwr) regulator_disable(phy->pwr); - +out: return ret; } EXPORT_SYMBOL_GPL(phy_power_on); --- linux-raspi2-4.2.0.orig/drivers/phy/phy-twl4030-usb.c +++ linux-raspi2-4.2.0/drivers/phy/phy-twl4030-usb.c @@ -715,6 +715,7 @@ pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, 2000); pm_runtime_enable(&pdev->dev); + pm_runtime_get_sync(&pdev->dev); /* Our job is to use irqs and status from the power module * to keep the transceiver disabled when nothing's connected. @@ -750,6 +751,7 @@ struct twl4030_usb *twl = platform_get_drvdata(pdev); int val; + usb_remove_phy(&twl->phy); pm_runtime_get_sync(twl->dev); cancel_delayed_work(&twl->id_workaround_work); device_remove_file(twl->dev, &dev_attr_vbus); @@ -757,6 +759,13 @@ /* set transceiver mode to power on defaults */ twl4030_usb_set_mode(twl, -1); + /* idle ulpi before powering off */ + if (cable_present(twl->linkstat)) + pm_runtime_put_noidle(twl->dev); + pm_runtime_mark_last_busy(twl->dev); + pm_runtime_put_sync_suspend(twl->dev); + pm_runtime_disable(twl->dev); + /* autogate 60MHz ULPI clock, * clear dpll clock request for i2c access, * disable 32KHz @@ -771,11 +780,6 @@ /* disable complete OTG block */ twl4030_usb_clear_bits(twl, POWER_CTRL, POWER_CTRL_OTG_ENAB); - if (cable_present(twl->linkstat)) - pm_runtime_put_noidle(twl->dev); - pm_runtime_mark_last_busy(twl->dev); - pm_runtime_put(twl->dev); - return 0; } --- 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]; }; @@ -352,12 +353,6 @@ return bcm2835_gpio_get_bit(pc, GPLEV0, offset); } -static int bcm2835_gpio_direction_output(struct gpio_chip *chip, - unsigned offset, int value) -{ - return pinctrl_gpio_direction_output(chip->base + offset); -} - static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value) { struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev); @@ -365,6 +360,13 @@ bcm2835_gpio_set_bit(pc, value ? GPSET0 : GPCLR0, offset); } +static int bcm2835_gpio_direction_output(struct gpio_chip *chip, + unsigned offset, int value) +{ + bcm2835_gpio_set(chip, offset, value); + return pinctrl_gpio_direction_output(chip->base + offset); +} + static int bcm2835_gpio_to_irq(struct gpio_chip *chip, unsigned offset) { struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev); @@ -382,22 +384,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 +406,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, @@ -788,7 +812,7 @@ } if (num_pulls) { err = of_property_read_u32_index(np, "brcm,pull", - (num_funcs > 1) ? i : 0, &pull); + (num_pulls > 1) ? i : 0, &pull); if (err) goto out; err = bcm2835_pctl_dt_node_to_map_pull(pc, np, pin, @@ -804,7 +828,7 @@ return 0; out: - kfree(maps); + bcm2835_pctl_dt_free_map(pctldev, maps, num_pins * maps_per_pin); return err; } @@ -995,8 +1019,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 +1033,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 +1101,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/nomadik/pinctrl-nomadik.c +++ linux-raspi2-4.2.0/drivers/pinctrl/nomadik/pinctrl-nomadik.c @@ -1014,7 +1014,7 @@ int pullidx = 0; if (pull) - pullidx = data_out ? 1 : 2; + pullidx = data_out ? 2 : 1; seq_printf(s, " gpio-%-3d (%-20.20s) in %s %s", gpio, --- 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-pistachio.c +++ linux-raspi2-4.2.0/drivers/pinctrl/pinctrl-pistachio.c @@ -469,27 +469,27 @@ "mfio83", }; -static const char * const pistachio_sys_pll_lock_groups[] = { +static const char * const pistachio_audio_pll_lock_groups[] = { "mfio84", }; -static const char * const pistachio_wifi_pll_lock_groups[] = { +static const char * const pistachio_rpu_v_pll_lock_groups[] = { "mfio85", }; -static const char * const pistachio_bt_pll_lock_groups[] = { +static const char * const pistachio_rpu_l_pll_lock_groups[] = { "mfio86", }; -static const char * const pistachio_rpu_v_pll_lock_groups[] = { +static const char * const pistachio_sys_pll_lock_groups[] = { "mfio87", }; -static const char * const pistachio_rpu_l_pll_lock_groups[] = { +static const char * const pistachio_wifi_pll_lock_groups[] = { "mfio88", }; -static const char * const pistachio_audio_pll_lock_groups[] = { +static const char * const pistachio_bt_pll_lock_groups[] = { "mfio89", }; @@ -559,12 +559,12 @@ PISTACHIO_FUNCTION_DREQ4, PISTACHIO_FUNCTION_DREQ5, PISTACHIO_FUNCTION_MIPS_PLL_LOCK, + PISTACHIO_FUNCTION_AUDIO_PLL_LOCK, + PISTACHIO_FUNCTION_RPU_V_PLL_LOCK, + PISTACHIO_FUNCTION_RPU_L_PLL_LOCK, PISTACHIO_FUNCTION_SYS_PLL_LOCK, PISTACHIO_FUNCTION_WIFI_PLL_LOCK, PISTACHIO_FUNCTION_BT_PLL_LOCK, - PISTACHIO_FUNCTION_RPU_V_PLL_LOCK, - PISTACHIO_FUNCTION_RPU_L_PLL_LOCK, - PISTACHIO_FUNCTION_AUDIO_PLL_LOCK, PISTACHIO_FUNCTION_DEBUG_RAW_CCA_IND, PISTACHIO_FUNCTION_DEBUG_ED_SEC20_CCA_IND, PISTACHIO_FUNCTION_DEBUG_ED_SEC40_CCA_IND, @@ -620,12 +620,12 @@ FUNCTION(dreq4), FUNCTION(dreq5), FUNCTION(mips_pll_lock), + FUNCTION(audio_pll_lock), + FUNCTION(rpu_v_pll_lock), + FUNCTION(rpu_l_pll_lock), FUNCTION(sys_pll_lock), FUNCTION(wifi_pll_lock), FUNCTION(bt_pll_lock), - FUNCTION(rpu_v_pll_lock), - FUNCTION(rpu_l_pll_lock), - FUNCTION(audio_pll_lock), FUNCTION(debug_raw_cca_ind), FUNCTION(debug_ed_sec20_cca_ind), FUNCTION(debug_ed_sec40_cca_ind), --- 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/pinctrl/sunxi/pinctrl-sun8i-a33.c +++ linux-raspi2-4.2.0/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c @@ -485,6 +485,7 @@ .pins = sun8i_a33_pins, .npins = ARRAY_SIZE(sun8i_a33_pins), .irq_banks = 2, + .irq_bank_base = 1, }; static int sun8i_a33_pinctrl_probe(struct platform_device *pdev) --- linux-raspi2-4.2.0.orig/drivers/pinctrl/sunxi/pinctrl-sunxi.c +++ linux-raspi2-4.2.0/drivers/pinctrl/sunxi/pinctrl-sunxi.c @@ -589,7 +589,7 @@ { struct sunxi_pinctrl *pctl = irq_data_get_irq_chip_data(d); struct irq_desc *desc = container_of(d, struct irq_desc, irq_data); - u32 reg = sunxi_irq_cfg_reg(d->hwirq); + u32 reg = sunxi_irq_cfg_reg(d->hwirq, pctl->desc->irq_bank_base); u8 index = sunxi_irq_cfg_offset(d->hwirq); unsigned long flags; u32 regval; @@ -637,7 +637,8 @@ static void sunxi_pinctrl_irq_ack(struct irq_data *d) { struct sunxi_pinctrl *pctl = irq_data_get_irq_chip_data(d); - u32 status_reg = sunxi_irq_status_reg(d->hwirq); + u32 status_reg = sunxi_irq_status_reg(d->hwirq, + pctl->desc->irq_bank_base); u8 status_idx = sunxi_irq_status_offset(d->hwirq); /* Clear the IRQ */ @@ -647,7 +648,7 @@ static void sunxi_pinctrl_irq_mask(struct irq_data *d) { struct sunxi_pinctrl *pctl = irq_data_get_irq_chip_data(d); - u32 reg = sunxi_irq_ctrl_reg(d->hwirq); + u32 reg = sunxi_irq_ctrl_reg(d->hwirq, pctl->desc->irq_bank_base); u8 idx = sunxi_irq_ctrl_offset(d->hwirq); unsigned long flags; u32 val; @@ -664,7 +665,7 @@ static void sunxi_pinctrl_irq_unmask(struct irq_data *d) { struct sunxi_pinctrl *pctl = irq_data_get_irq_chip_data(d); - u32 reg = sunxi_irq_ctrl_reg(d->hwirq); + u32 reg = sunxi_irq_ctrl_reg(d->hwirq, pctl->desc->irq_bank_base); u8 idx = sunxi_irq_ctrl_offset(d->hwirq); unsigned long flags; u32 val; @@ -722,7 +723,7 @@ if (bank == pctl->desc->irq_banks) return; - reg = sunxi_irq_status_reg_from_bank(bank); + reg = sunxi_irq_status_reg_from_bank(bank, pctl->desc->irq_bank_base); val = readl(pctl->membase + reg); if (val) { @@ -1001,9 +1002,11 @@ for (i = 0; i < pctl->desc->irq_banks; i++) { /* Mask and clear all IRQs before registering a handler */ - writel(0, pctl->membase + sunxi_irq_ctrl_reg_from_bank(i)); + writel(0, pctl->membase + sunxi_irq_ctrl_reg_from_bank(i, + pctl->desc->irq_bank_base)); writel(0xffffffff, - pctl->membase + sunxi_irq_status_reg_from_bank(i)); + pctl->membase + sunxi_irq_status_reg_from_bank(i, + pctl->desc->irq_bank_base)); irq_set_chained_handler_and_data(pctl->irq[i], sunxi_pinctrl_irq_handler, --- linux-raspi2-4.2.0.orig/drivers/pinctrl/sunxi/pinctrl-sunxi.h +++ linux-raspi2-4.2.0/drivers/pinctrl/sunxi/pinctrl-sunxi.h @@ -97,6 +97,7 @@ int npins; unsigned pin_base; unsigned irq_banks; + unsigned irq_bank_base; bool irq_read_needs_mux; }; @@ -233,12 +234,12 @@ return pin_num * PULL_PINS_BITS; } -static inline u32 sunxi_irq_cfg_reg(u16 irq) +static inline u32 sunxi_irq_cfg_reg(u16 irq, unsigned bank_base) { u8 bank = irq / IRQ_PER_BANK; u8 reg = (irq % IRQ_PER_BANK) / IRQ_CFG_IRQ_PER_REG * 0x04; - return IRQ_CFG_REG + bank * IRQ_MEM_SIZE + reg; + return IRQ_CFG_REG + (bank_base + bank) * IRQ_MEM_SIZE + reg; } static inline u32 sunxi_irq_cfg_offset(u16 irq) @@ -247,16 +248,16 @@ return irq_num * IRQ_CFG_IRQ_BITS; } -static inline u32 sunxi_irq_ctrl_reg_from_bank(u8 bank) +static inline u32 sunxi_irq_ctrl_reg_from_bank(u8 bank, unsigned bank_base) { - return IRQ_CTRL_REG + bank * IRQ_MEM_SIZE; + return IRQ_CTRL_REG + (bank_base + bank) * IRQ_MEM_SIZE; } -static inline u32 sunxi_irq_ctrl_reg(u16 irq) +static inline u32 sunxi_irq_ctrl_reg(u16 irq, unsigned bank_base) { u8 bank = irq / IRQ_PER_BANK; - return sunxi_irq_ctrl_reg_from_bank(bank); + return sunxi_irq_ctrl_reg_from_bank(bank, bank_base); } static inline u32 sunxi_irq_ctrl_offset(u16 irq) @@ -265,16 +266,16 @@ return irq_num * IRQ_CTRL_IRQ_BITS; } -static inline u32 sunxi_irq_status_reg_from_bank(u8 bank) +static inline u32 sunxi_irq_status_reg_from_bank(u8 bank, unsigned bank_base) { - return IRQ_STATUS_REG + bank * IRQ_MEM_SIZE; + return IRQ_STATUS_REG + (bank_base + bank) * IRQ_MEM_SIZE; } -static inline u32 sunxi_irq_status_reg(u16 irq) +static inline u32 sunxi_irq_status_reg(u16 irq, unsigned bank_base) { u8 bank = irq / IRQ_PER_BANK; - return sunxi_irq_status_reg_from_bank(bank); + return sunxi_irq_status_reg_from_bank(bank, bank_base); } static inline u32 sunxi_irq_status_offset(u16 irq) --- 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 @@ -846,6 +846,27 @@ }, }, { + .ident = "Lenovo ideapad Y700-15ISK", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad Y700-15ISK"), + }, + }, + { + .ident = "Lenovo ideapad Y700 Touch-15ISK", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad Y700 Touch-15ISK"), + }, + }, + { + .ident = "Lenovo ideapad Y700-17ISK", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad Y700-17ISK"), + }, + }, + { .ident = "Lenovo Yoga 2 11 / 13 / Pro", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), @@ -853,12 +874,33 @@ }, }, { + .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 700", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 700"), + }, + }, + { + .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/intel_scu_ipcutil.c +++ linux-raspi2-4.2.0/drivers/platform/x86/intel_scu_ipcutil.c @@ -49,7 +49,7 @@ static int scu_reg_access(u32 cmd, struct scu_ipc_data *data) { - int count = data->count; + unsigned int count = data->count; if (count == 0 || count == 3 || count > 4) return -EINVAL; --- 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/test_power.c +++ linux-raspi2-4.2.0/drivers/power/test_power.c @@ -301,6 +301,8 @@ buf[MAX_KEYLENGTH-1] = '\0'; cr = strnlen(buf, MAX_KEYLENGTH) - 1; + if (cr < 0) + return def_val; if (buf[cr] == '\n') buf[cr] = '\0'; --- 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; @@ -1336,10 +1340,13 @@ for (rd = rp->domains; rd < rp->domains + rp->nr_domains; rd++) { /* check if the domain is locked by BIOS */ - if (rapl_read_data_raw(rd, FW_LOCK, false, &locked)) { + ret = rapl_read_data_raw(rd, FW_LOCK, false, &locked); + if (ret) + return ret; + if (locked) { pr_info("RAPL package %d domain %s locked by BIOS\n", rp->id, rd->name); - rd->state |= DOMAIN_STATE_BIOS_LOCKED; + rd->state |= DOMAIN_STATE_BIOS_LOCKED; } } --- 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 @@ -27,8 +27,8 @@ #define AXP20X_IO_ENABLED 0x03 #define AXP20X_IO_DISABLED 0x07 -#define AXP22X_IO_ENABLED 0x04 -#define AXP22X_IO_DISABLED 0x03 +#define AXP22X_IO_ENABLED 0x03 +#define AXP22X_IO_DISABLED 0x04 #define AXP20X_WORKMODE_DCDC2_MASK BIT(2) #define AXP20X_WORKMODE_DCDC3_MASK BIT(1) @@ -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/regulator/s5m8767.c +++ linux-raspi2-4.2.0/drivers/regulator/s5m8767.c @@ -202,9 +202,10 @@ } } - if (i < s5m8767->num_regulators) - *enable_ctrl = - s5m8767_opmode_reg[reg_id][mode] << S5M8767_ENCTRL_SHIFT; + if (i >= s5m8767->num_regulators) + return -EINVAL; + + *enable_ctrl = s5m8767_opmode_reg[reg_id][mode] << S5M8767_ENCTRL_SHIFT; return 0; } @@ -937,8 +938,12 @@ else regulators[id].vsel_mask = 0xff; - s5m8767_get_register(s5m8767, id, &enable_reg, + ret = s5m8767_get_register(s5m8767, id, &enable_reg, &enable_val); + if (ret) { + dev_err(s5m8767->dev, "error reading registers\n"); + return ret; + } regulators[id].enable_reg = enable_reg; regulators[id].enable_mask = S5M8767_ENCTRL_MASK; regulators[id].enable_val = enable_val; --- linux-raspi2-4.2.0.orig/drivers/remoteproc/remoteproc_debugfs.c +++ linux-raspi2-4.2.0/drivers/remoteproc/remoteproc_debugfs.c @@ -156,7 +156,7 @@ char buf[10]; int ret; - if (count > sizeof(buf)) + if (count < 1 || count > sizeof(buf)) return count; ret = copy_from_user(buf, user_buf, count); --- 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-ds1685.c +++ linux-raspi2-4.2.0/drivers/rtc/rtc-ds1685.c @@ -187,9 +187,9 @@ * Only use this where you are certain another lock will not be held. */ static inline void -ds1685_rtc_begin_ctrl_access(struct ds1685_priv *rtc, unsigned long flags) +ds1685_rtc_begin_ctrl_access(struct ds1685_priv *rtc, unsigned long *flags) { - spin_lock_irqsave(&rtc->lock, flags); + spin_lock_irqsave(&rtc->lock, *flags); ds1685_rtc_switch_to_bank1(rtc); } @@ -1304,7 +1304,7 @@ { struct ds1685_priv *rtc = dev_get_drvdata(dev); u8 reg = 0, bit = 0, tmp; - unsigned long flags = 0; + unsigned long flags; long int val = 0; const struct ds1685_rtc_ctrl_regs *reg_info = ds1685_rtc_sysfs_ctrl_regs_lookup(attr->attr.name); @@ -1325,7 +1325,7 @@ bit = reg_info->bit; /* Safe to spinlock during a write. */ - ds1685_rtc_begin_ctrl_access(rtc, flags); + ds1685_rtc_begin_ctrl_access(rtc, &flags); tmp = rtc->read(rtc, reg); rtc->write(rtc, reg, (val ? (tmp | bit) : (tmp & ~(bit)))); ds1685_rtc_end_ctrl_access(rtc, flags); --- linux-raspi2-4.2.0.orig/drivers/rtc/rtc-hym8563.c +++ linux-raspi2-4.2.0/drivers/rtc/rtc-hym8563.c @@ -144,7 +144,7 @@ * it does not seem to carry it over a subsequent write/read. * So we'll limit ourself to 100 years, starting at 2000 for now. */ - buf[6] = tm->tm_year - 100; + buf[6] = bin2bcd(tm->tm_year - 100); /* * CTL1 only contains TEST-mode bits apart from stop, --- linux-raspi2-4.2.0.orig/drivers/rtc/rtc-max77686.c +++ linux-raspi2-4.2.0/drivers/rtc/rtc-max77686.c @@ -465,7 +465,7 @@ info->virq = regmap_irq_get_virq(max77686->rtc_irq_data, MAX77686_RTCIRQ_RTCA1); - if (!info->virq) { + if (info->virq <= 0) { ret = -ENXIO; goto err_rtc; } --- 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/rtc/rtc-vr41xx.c +++ linux-raspi2-4.2.0/drivers/rtc/rtc-vr41xx.c @@ -272,12 +272,13 @@ } static const struct rtc_class_ops vr41xx_rtc_ops = { - .release = vr41xx_rtc_release, - .ioctl = vr41xx_rtc_ioctl, - .read_time = vr41xx_rtc_read_time, - .set_time = vr41xx_rtc_set_time, - .read_alarm = vr41xx_rtc_read_alarm, - .set_alarm = vr41xx_rtc_set_alarm, + .release = vr41xx_rtc_release, + .ioctl = vr41xx_rtc_ioctl, + .read_time = vr41xx_rtc_read_time, + .set_time = vr41xx_rtc_set_time, + .read_alarm = vr41xx_rtc_read_alarm, + .set_alarm = vr41xx_rtc_set_alarm, + .alarm_irq_enable = vr41xx_rtc_alarm_irq_enable, }; static int rtc_probe(struct platform_device *pdev) --- linux-raspi2-4.2.0.orig/drivers/s390/block/dasd_alias.c +++ linux-raspi2-4.2.0/drivers/s390/block/dasd_alias.c @@ -264,8 +264,10 @@ spin_unlock_irqrestore(&lcu->lock, flags); cancel_work_sync(&lcu->suc_data.worker); spin_lock_irqsave(&lcu->lock, flags); - if (device == lcu->suc_data.device) + if (device == lcu->suc_data.device) { + dasd_put_device(device); lcu->suc_data.device = NULL; + } } was_pending = 0; if (device == lcu->ruac_data.device) { @@ -273,8 +275,10 @@ was_pending = 1; cancel_delayed_work_sync(&lcu->ruac_data.dwork); spin_lock_irqsave(&lcu->lock, flags); - if (device == lcu->ruac_data.device) + if (device == lcu->ruac_data.device) { + dasd_put_device(device); lcu->ruac_data.device = NULL; + } } private->lcu = NULL; spin_unlock_irqrestore(&lcu->lock, flags); @@ -549,8 +553,10 @@ if ((rc && (rc != -EOPNOTSUPP)) || (lcu->flags & NEED_UAC_UPDATE)) { DBF_DEV_EVENT(DBF_WARNING, device, "could not update" " alias data in lcu (rc = %d), retry later", rc); - schedule_delayed_work(&lcu->ruac_data.dwork, 30*HZ); + if (!schedule_delayed_work(&lcu->ruac_data.dwork, 30*HZ)) + dasd_put_device(device); } else { + dasd_put_device(device); lcu->ruac_data.device = NULL; lcu->flags &= ~UPDATE_PENDING; } @@ -593,8 +599,10 @@ */ if (!usedev) return -EINVAL; + dasd_get_device(usedev); lcu->ruac_data.device = usedev; - schedule_delayed_work(&lcu->ruac_data.dwork, 0); + if (!schedule_delayed_work(&lcu->ruac_data.dwork, 0)) + dasd_put_device(usedev); return 0; } @@ -723,7 +731,7 @@ ASCEBC((char *) &cqr->magic, 4); ccw = cqr->cpaddr; ccw->cmd_code = DASD_ECKD_CCW_RSCK; - ccw->flags = 0 ; + ccw->flags = CCW_FLAG_SLI; ccw->count = 16; ccw->cda = (__u32)(addr_t) cqr->data; ((char *)cqr->data)[0] = reason; @@ -927,6 +935,7 @@ /* 3. read new alias configuration */ _schedule_lcu_update(lcu, device); lcu->suc_data.device = NULL; + dasd_put_device(device); spin_unlock_irqrestore(&lcu->lock, flags); } @@ -986,6 +995,8 @@ } lcu->suc_data.reason = reason; lcu->suc_data.device = device; + dasd_get_device(device); spin_unlock(&lcu->lock); - schedule_work(&lcu->suc_data.worker); + if (!schedule_work(&lcu->suc_data.worker)) + dasd_put_device(device); }; --- linux-raspi2-4.2.0.orig/drivers/s390/net/qeth_l2_main.c +++ linux-raspi2-4.2.0/drivers/s390/net/qeth_l2_main.c @@ -1004,6 +1004,7 @@ qeth_l2_request_initial_mac(card); SET_NETDEV_DEV(card->dev, &card->gdev->dev); netif_napi_add(card->dev, &card->napi, qeth_l2_poll, QETH_NAPI_WEIGHT); + netif_carrier_off(card->dev); return register_netdev(card->dev); } --- linux-raspi2-4.2.0.orig/drivers/s390/net/qeth_l3_main.c +++ linux-raspi2-4.2.0/drivers/s390/net/qeth_l3_main.c @@ -3331,6 +3331,7 @@ SET_NETDEV_DEV(card->dev, &card->gdev->dev); netif_napi_add(card->dev, &card->napi, qeth_l3_poll, QETH_NAPI_WEIGHT); + netif_carrier_off(card->dev); return register_netdev(card->dev); } --- 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/aacraid/aacraid.h +++ linux-raspi2-4.2.0/drivers/scsi/aacraid/aacraid.h @@ -939,6 +939,7 @@ */ struct list_head fiblink; void *data; + u32 vector_no; struct hw_fib *hw_fib_va; /* Actual shared object */ dma_addr_t hw_fib_pa; /* physical address of hw_fib*/ }; @@ -2098,6 +2099,7 @@ #define AAC_OWNER_FIRMWARE 0x106 const char *aac_driverinfo(struct Scsi_Host *); +void aac_fib_vector_assign(struct aac_dev *dev); struct fib *aac_fib_alloc(struct aac_dev *dev); int aac_fib_setup(struct aac_dev *dev); void aac_fib_map_free(struct aac_dev *dev); --- linux-raspi2-4.2.0.orig/drivers/scsi/aacraid/commsup.c +++ linux-raspi2-4.2.0/drivers/scsi/aacraid/commsup.c @@ -83,13 +83,38 @@ void aac_fib_map_free(struct aac_dev *dev) { - pci_free_consistent(dev->pdev, - dev->max_fib_size * (dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB), - dev->hw_fib_va, dev->hw_fib_pa); + if (dev->hw_fib_va && dev->max_fib_size) { + pci_free_consistent(dev->pdev, + (dev->max_fib_size * + (dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB)), + dev->hw_fib_va, dev->hw_fib_pa); + } dev->hw_fib_va = NULL; dev->hw_fib_pa = 0; } +void aac_fib_vector_assign(struct aac_dev *dev) +{ + u32 i = 0; + u32 vector = 1; + struct fib *fibptr = NULL; + + for (i = 0, fibptr = &dev->fibs[i]; + i < (dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB); + i++, fibptr++) { + if ((dev->max_msix == 1) || + (i > ((dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB - 1) + - dev->vector_cap))) { + fibptr->vector_no = 0; + } else { + fibptr->vector_no = vector; + vector++; + if (vector == dev->max_msix) + vector = 1; + } + } +} + /** * aac_fib_setup - setup the fibs * @dev: Adapter to set up @@ -151,6 +176,12 @@ hw_fib_pa = hw_fib_pa + dev->max_fib_size + sizeof(struct aac_fib_xporthdr); } + + /* + *Assign vector numbers to fibs + */ + aac_fib_vector_assign(dev); + /* * Add the fib chain to the free list */ --- linux-raspi2-4.2.0.orig/drivers/scsi/aacraid/src.c +++ linux-raspi2-4.2.0/drivers/scsi/aacraid/src.c @@ -156,8 +156,8 @@ break; if (dev->msi_enabled && dev->max_msix > 1) atomic_dec(&dev->rrq_outstanding[vector_no]); - aac_intr_normal(dev, handle-1, 0, isFastResponse, NULL); dev->host_rrq[index++] = 0; + aac_intr_normal(dev, handle-1, 0, isFastResponse, NULL); if (index == (vector_no + 1) * dev->vector_cap) index = vector_no * dev->vector_cap; dev->host_rrq_idx[vector_no] = index; @@ -448,36 +448,20 @@ dma_addr_t address; struct aac_fib_xporthdr *pFibX; u16 hdr_size = le16_to_cpu(fib->hw_fib_va->header.Size); + u16 vector_no; atomic_inc(&q->numpending); if (dev->msi_enabled && fib->hw_fib_va->header.Command != AifRequest && dev->max_msix > 1) { - u_int16_t vector_no, first_choice = 0xffff; - - vector_no = dev->fibs_pushed_no % dev->max_msix; - do { - vector_no += 1; - if (vector_no == dev->max_msix) - vector_no = 1; - if (atomic_read(&dev->rrq_outstanding[vector_no]) < - dev->vector_cap) - break; - if (0xffff == first_choice) - first_choice = vector_no; - else if (vector_no == first_choice) - break; - } while (1); - if (vector_no == first_choice) - vector_no = 0; - atomic_inc(&dev->rrq_outstanding[vector_no]); - if (dev->fibs_pushed_no == 0xffffffff) - dev->fibs_pushed_no = 0; - else - dev->fibs_pushed_no++; + vector_no = fib->vector_no; fib->hw_fib_va->header.Handle += (vector_no << 16); + } else { + vector_no = 0; } + atomic_inc(&dev->rrq_outstanding[vector_no]); + if (dev->comm_interface == AAC_COMM_MESSAGE_TYPE2) { /* Calculate the amount to the fibsize bits */ fibsize = (hdr_size + 127) / 128 - 1; --- linux-raspi2-4.2.0.orig/drivers/scsi/advansys.c +++ linux-raspi2-4.2.0/drivers/scsi/advansys.c @@ -7803,7 +7803,7 @@ return ASC_BUSY; } scsiqp->sense_addr = cpu_to_le32(sense_addr); - scsiqp->sense_len = cpu_to_le32(SCSI_SENSE_BUFFERSIZE); + scsiqp->sense_len = SCSI_SENSE_BUFFERSIZE; /* Build ADV_SCSI_REQ_Q */ --- linux-raspi2-4.2.0.orig/drivers/scsi/aic7xxx/aic7xxx_osm.c +++ linux-raspi2-4.2.0/drivers/scsi/aic7xxx/aic7xxx_osm.c @@ -1337,6 +1337,7 @@ case AHC_DEV_Q_TAGGED: scsi_change_queue_depth(sdev, dev->openings + dev->active); + break; default: /* * We allow the OS to queue 2 untagged transactions to --- 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 @@ -4468,6 +4468,7 @@ scsi_host_put(phba->shost); free_kset: iscsi_boot_destroy_kset(phba->boot_kset); + phba->boot_kset = NULL; return -ENOMEM; } @@ -4688,9 +4689,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,206 @@ +/* + * 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 */ + + struct kref mapcount; + + 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,2643 @@ +/* + * 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; + kref_get(&cfg->afu->mapcount); + 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; +} + +static void afu_unmap(struct kref *ref) +{ + struct afu *afu = container_of(ref, struct afu, mapcount); + + if (likely(afu->afu_map)) { + cxl_psa_unmap((void __iomem *)afu->afu_map); + afu->afu_map = NULL; + } +} + +/** + * 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; + int kref_got = 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; + } + + kref_get(&cfg->afu->mapcount); + kref_got = 1; + + 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: + if (kref_got) + kref_put(&afu->mapcount, afu_unmap); + 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. + * + * Cleans up all state associated with the command queue, and unmaps + * the MMIO space. + * + * - complete() will take care of commands we initiated (they'll be checked + * in as part of the cleanup that occurs after the completion) + * + * - cmd_checkin() will take care of entries that we did not initiate and that + * have not (and will not) complete because they are sitting on a [now stale] + * hardware queue + */ +static void stop_afu(struct cxlflash_cfg *cfg) +{ + int i; + struct afu *afu = cfg->afu; + struct afu_cmd *cmd; + + if (likely(afu)) { + for (i = 0; i < CXLFLASH_NUM_CMDS; i++) { + cmd = &afu->cmd[i]; + complete(&cmd->cevent); + if (!atomic_read(&cmd->free)) + cmd_checkin(cmd); + } + + if (likely(afu->afu_map)) { + cxl_psa_unmap((void __iomem *)afu->afu_map); + afu->afu_map = NULL; + } + kref_put(&afu->mapcount, afu_unmap); + } +} + +/** + * 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: + cancel_work_sync(&cfg->work_q); + term_afu(cfg); + 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; + kref_get(&cfg->afu->mapcount); + 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); + kref_get(&cfg->afu->mapcount); + 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; + } + kref_init(&afu->mapcount); + + /* 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: + kref_put(&afu->mapcount, afu_unmap); +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); + kref_put(&afu->mapcount, afu_unmap); +} + +/** + * 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: %s\n", __func__, CXLFLASH_ADAPTER_NAME); + + 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,108 @@ +/* + * 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 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 (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 (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/device_handler/scsi_dh_rdac.c +++ linux-raspi2-4.2.0/drivers/scsi/device_handler/scsi_dh_rdac.c @@ -568,7 +568,7 @@ /* * Command Lock contention */ - err = SCSI_DH_RETRY; + err = SCSI_DH_IMM_RETRY; break; default: break; @@ -618,6 +618,8 @@ err = mode_select_handle_sense(sdev, h->sense); if (err == SCSI_DH_RETRY && retry_cnt--) goto retry; + if (err == SCSI_DH_IMM_RETRY) + goto retry; } if (err == SCSI_DH_OK) { h->state = RDAC_STATE_ACTIVE; --- 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/hosts.c +++ linux-raspi2-4.2.0/drivers/scsi/hosts.c @@ -326,6 +326,17 @@ kfree(queuedata); } + if (shost->shost_state == SHOST_CREATED) { + /* + * Free the shost_dev device name here if scsi_host_alloc() + * and scsi_host_put() have been called but neither + * scsi_host_add() nor scsi_host_remove() has been called. + * This avoids that the memory allocated for the shost_dev + * name is leaked. + */ + kfree(dev_name(&shost->shost_dev)); + } + scsi_destroy_command_freelist(shost); if (shost_use_blk_mq(shost)) { if (shost->tag_set.tags) --- 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/initio.c +++ linux-raspi2-4.2.0/drivers/scsi/initio.c @@ -110,11 +110,6 @@ #define i91u_MAXQUEUE 2 #define i91u_REVID "Initio INI-9X00U/UW SCSI device driver; Revision: 1.04a" -#define I950_DEVICE_ID 0x9500 /* Initio's inic-950 product ID */ -#define I940_DEVICE_ID 0x9400 /* Initio's inic-940 product ID */ -#define I935_DEVICE_ID 0x9401 /* Initio's inic-935 product ID */ -#define I920_DEVICE_ID 0x0002 /* Initio's other product ID */ - #ifdef DEBUG_i91u static unsigned int i91u_debug = DEBUG_DEFAULT; #endif @@ -127,17 +122,6 @@ static void i91uSCBPost(u8 * pHcb, u8 * pScb); -/* PCI Devices supported by this driver */ -static struct pci_device_id i91u_pci_devices[] = { - { PCI_VENDOR_ID_INIT, I950_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - { PCI_VENDOR_ID_INIT, I940_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - { PCI_VENDOR_ID_INIT, I935_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - { PCI_VENDOR_ID_INIT, I920_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - { PCI_VENDOR_ID_DOMEX, I920_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - { } -}; -MODULE_DEVICE_TABLE(pci, i91u_pci_devices); - #define DEBUG_INTERRUPT 0 #define DEBUG_QUEUE 0 #define DEBUG_STATE 0 --- linux-raspi2-4.2.0.orig/drivers/scsi/ipr.c +++ linux-raspi2-4.2.0/drivers/scsi/ipr.c @@ -4002,13 +4002,17 @@ struct ipr_sglist *sglist; char fname[100]; char *src; - int len, result, dnld_size; + char *endline; + int result, dnld_size; if (!capable(CAP_SYS_ADMIN)) return -EACCES; - len = snprintf(fname, 99, "%s", buf); - fname[len-1] = '\0'; + snprintf(fname, sizeof(fname), "%s", buf); + + endline = strchr(fname, '\n'); + if (endline) + *endline = '\0'; if (request_firmware(&fw_entry, fname, &ioa_cfg->pdev->dev)) { dev_err(&ioa_cfg->pdev->dev, "Firmware file %s not found\n", fname); @@ -4455,7 +4459,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 +4558,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/lpfc/lpfc_init.c +++ linux-raspi2-4.2.0/drivers/scsi/lpfc/lpfc_init.c @@ -2848,7 +2848,7 @@ } vports = lpfc_create_vport_work_array(phba); - if (vports != NULL) + if (vports != NULL) { for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) { struct Scsi_Host *shost; shost = lpfc_shost_from_vport(vports[i]); @@ -2865,7 +2865,8 @@ } spin_unlock_irq(shost->host_lock); } - lpfc_destroy_vport_work_array(phba, vports); + } + lpfc_destroy_vport_work_array(phba, vports); lpfc_unblock_mgmt_io(phba); 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; @@ -6131,12 +6146,13 @@ } for (i = 0; i < ioc->sge_count; i++) { - if (kbuff_arr[i]) + if (kbuff_arr[i]) { dma_free_coherent(&instance->pdev->dev, le32_to_cpu(kern_sge32[i].length), kbuff_arr[i], le32_to_cpu(kern_sge32[i].phys_addr)); kbuff_arr[i] = NULL; + } } megasas_return_cmd(instance, cmd); @@ -6325,6 +6341,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 +6361,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/qla2xxx/qla_init.c +++ linux-raspi2-4.2.0/drivers/scsi/qla2xxx/qla_init.c @@ -2194,7 +2194,7 @@ /* Clear outstanding commands array. */ for (que = 0; que < ha->max_req_queues; que++) { req = ha->req_q_map[que]; - if (!req) + if (!req || !test_bit(que, ha->req_qid_map)) continue; req->out_ptr = (void *)(req->ring + req->length); *req->out_ptr = 0; @@ -2211,7 +2211,7 @@ for (que = 0; que < ha->max_rsp_queues; que++) { rsp = ha->rsp_q_map[que]; - if (!rsp) + if (!rsp || !test_bit(que, ha->rsp_qid_map)) continue; rsp->in_ptr = (void *)(rsp->ring + rsp->length); *rsp->in_ptr = 0; @@ -4965,7 +4965,7 @@ for (i = 1; i < ha->max_rsp_queues; i++) { rsp = ha->rsp_q_map[i]; - if (rsp) { + if (rsp && test_bit(i, ha->rsp_qid_map)) { rsp->options &= ~BIT_0; ret = qla25xx_init_rsp_que(base_vha, rsp); if (ret != QLA_SUCCESS) @@ -4980,8 +4980,8 @@ } for (i = 1; i < ha->max_req_queues; i++) { req = ha->req_q_map[i]; - if (req) { - /* Clear outstanding commands array. */ + if (req && test_bit(i, ha->req_qid_map)) { + /* Clear outstanding commands array. */ req->options &= ~BIT_0; ret = qla25xx_init_req_que(base_vha, req); if (ret != QLA_SUCCESS) --- linux-raspi2-4.2.0.orig/drivers/scsi/qla2xxx/qla_isr.c +++ linux-raspi2-4.2.0/drivers/scsi/qla2xxx/qla_isr.c @@ -2992,9 +2992,9 @@ "MSI-X: Failed to enable support " "-- %d/%d\n Retry with %d vectors.\n", ha->msix_count, ret, ret); + ha->msix_count = ret; + ha->max_rsp_queues = ha->msix_count - 1; } - ha->msix_count = ret; - ha->max_rsp_queues = ha->msix_count - 1; ha->msix_entries = kzalloc(sizeof(struct qla_msix_entry) * ha->msix_count, GFP_KERNEL); if (!ha->msix_entries) { --- linux-raspi2-4.2.0.orig/drivers/scsi/qla2xxx/qla_mid.c +++ linux-raspi2-4.2.0/drivers/scsi/qla2xxx/qla_mid.c @@ -601,7 +601,7 @@ /* Delete request queues */ for (cnt = 1; cnt < ha->max_req_queues; cnt++) { req = ha->req_q_map[cnt]; - if (req) { + if (req && test_bit(cnt, ha->req_qid_map)) { ret = qla25xx_delete_req_que(vha, req); if (ret != QLA_SUCCESS) { ql_log(ql_log_warn, vha, 0x00ea, @@ -615,7 +615,7 @@ /* Delete response queues */ for (cnt = 1; cnt < ha->max_rsp_queues; cnt++) { rsp = ha->rsp_q_map[cnt]; - if (rsp) { + if (rsp && test_bit(cnt, ha->rsp_qid_map)) { ret = qla25xx_delete_rsp_que(vha, rsp); if (ret != QLA_SUCCESS) { ql_log(ql_log_warn, vha, 0x00eb, --- linux-raspi2-4.2.0.orig/drivers/scsi/qla2xxx/qla_os.c +++ linux-raspi2-4.2.0/drivers/scsi/qla2xxx/qla_os.c @@ -398,6 +398,9 @@ int cnt; for (cnt = 0; cnt < ha->max_req_queues; cnt++) { + if (!test_bit(cnt, ha->req_qid_map)) + continue; + req = ha->req_q_map[cnt]; qla2x00_free_req_que(ha, req); } @@ -405,6 +408,9 @@ ha->req_q_map = NULL; for (cnt = 0; cnt < ha->max_rsp_queues; cnt++) { + if (!test_bit(cnt, ha->rsp_qid_map)) + continue; + rsp = ha->rsp_q_map[cnt]; qla2x00_free_rsp_que(ha, rsp); } --- linux-raspi2-4.2.0.orig/drivers/scsi/qla2xxx/qla_tmpl.c +++ linux-raspi2-4.2.0/drivers/scsi/qla2xxx/qla_tmpl.c @@ -395,6 +395,10 @@ if (ent->t263.queue_type == T263_QUEUE_TYPE_REQ) { for (i = 0; i < vha->hw->max_req_queues; i++) { struct req_que *req = vha->hw->req_q_map[i]; + + if (!test_bit(i, vha->hw->req_qid_map)) + continue; + if (req || !buf) { length = req ? req->length : REQUEST_ENTRY_CNT_24XX; @@ -408,6 +412,10 @@ } else if (ent->t263.queue_type == T263_QUEUE_TYPE_RSP) { for (i = 0; i < vha->hw->max_rsp_queues; i++) { struct rsp_que *rsp = vha->hw->rsp_q_map[i]; + + if (!test_bit(i, vha->hw->rsp_qid_map)) + continue; + if (rsp || !buf) { length = rsp ? rsp->length : RESPONSE_ENTRY_CNT_MQ; @@ -634,6 +642,10 @@ if (ent->t274.queue_type == T274_QUEUE_TYPE_REQ_SHAD) { for (i = 0; i < vha->hw->max_req_queues; i++) { struct req_que *req = vha->hw->req_q_map[i]; + + if (!test_bit(i, vha->hw->req_qid_map)) + continue; + if (req || !buf) { qla27xx_insert16(i, buf, len); qla27xx_insert16(1, buf, len); @@ -645,6 +657,10 @@ } else if (ent->t274.queue_type == T274_QUEUE_TYPE_RSP_SHAD) { for (i = 0; i < vha->hw->max_rsp_queues; i++) { struct rsp_que *rsp = vha->hw->rsp_q_map[i]; + + if (!test_bit(i, vha->hw->rsp_qid_map)) + continue; + if (rsp || !buf) { qla27xx_insert16(i, buf, len); qla27xx_insert16(1, buf, len); --- 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_devinfo.c +++ linux-raspi2-4.2.0/drivers/scsi/scsi_devinfo.c @@ -205,6 +205,7 @@ {"Intel", "Multi-Flex", NULL, BLIST_NO_RSOC}, {"iRiver", "iFP Mass Driver", NULL, BLIST_NOT_LOCKABLE | BLIST_INQUIRY_36}, {"LASOUND", "CDX7405", "3.10", BLIST_MAX5LUN | BLIST_SINGLELUN}, + {"Marvell", "Console", NULL, BLIST_SKIP_VPD_PAGES}, {"MATSHITA", "PD-1", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, {"MATSHITA", "DMC-LC5", NULL, BLIST_NOT_LOCKABLE | BLIST_INQUIRY_36}, {"MATSHITA", "DMC-LC40", NULL, BLIST_NOT_LOCKABLE | BLIST_INQUIRY_36}, @@ -227,6 +228,7 @@ {"Promise", "VTrak E610f", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC}, {"Promise", "", NULL, BLIST_SPARSELUN}, {"QNAP", "iSCSI Storage", NULL, BLIST_MAX_1024}, + {"SYNOLOGY", "iSCSI Storage", NULL, BLIST_MAX_1024}, {"QUANTUM", "XP34301", "1071", BLIST_NOTQ}, {"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN}, {"SanDisk", "ImageMate CF-SD1", NULL, BLIST_FORCELUN}, --- 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_pm.c +++ linux-raspi2-4.2.0/drivers/scsi/scsi_pm.c @@ -219,13 +219,13 @@ struct scsi_device *sdev = to_scsi_device(dev); int err = 0; - if (pm && pm->runtime_suspend) { - err = blk_pre_runtime_suspend(sdev->request_queue); - if (err) - return err; + err = blk_pre_runtime_suspend(sdev->request_queue); + if (err) + return err; + if (pm && pm->runtime_suspend) err = pm->runtime_suspend(dev); - blk_post_runtime_suspend(sdev->request_queue, err); - } + blk_post_runtime_suspend(sdev->request_queue, err); + return err; } @@ -248,11 +248,11 @@ const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; int err = 0; - if (pm && pm->runtime_resume) { - blk_pre_runtime_resume(sdev->request_queue); + blk_pre_runtime_resume(sdev->request_queue); + if (pm && pm->runtime_resume) err = pm->runtime_resume(dev); - blk_post_runtime_resume(sdev->request_queue, err); - } + blk_post_runtime_resume(sdev->request_queue, err); + return err; } --- 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,25 @@ 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, *last_target = NULL; 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) + if (starget->state == STARGET_DEL || + starget == last_target) continue; if (starget->dev.parent == dev || &starget->dev == dev) { - /* assuming new targets arrive at the end */ kref_get(&starget->reap_ref); + last_target = starget; 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/sd.c +++ linux-raspi2-4.2.0/drivers/scsi/sd.c @@ -1260,18 +1260,19 @@ struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk); struct scsi_device *sdp = sdkp->device; struct Scsi_Host *host = sdp->host; + sector_t capacity = logical_to_sectors(sdp, sdkp->capacity); int diskinfo[4]; /* default to most commonly used values */ - diskinfo[0] = 0x40; /* 1 << 6 */ - diskinfo[1] = 0x20; /* 1 << 5 */ - diskinfo[2] = sdkp->capacity >> 11; - + diskinfo[0] = 0x40; /* 1 << 6 */ + diskinfo[1] = 0x20; /* 1 << 5 */ + diskinfo[2] = capacity >> 11; + /* override with calculated, extended default, or driver values */ if (host->hostt->bios_param) - host->hostt->bios_param(sdp, bdev, sdkp->capacity, diskinfo); + host->hostt->bios_param(sdp, bdev, capacity, diskinfo); else - scsicam_bios_param(bdev, sdkp->capacity, diskinfo); + scsicam_bios_param(bdev, capacity, diskinfo); geo->heads = diskinfo[0]; geo->sectors = diskinfo[1]; @@ -2230,14 +2231,6 @@ } else sdkp->max_xfer_blocks = SD_DEF_XFER_BLOCKS; - /* Rescale capacity to 512-byte units */ - if (sector_size == 4096) - sdkp->capacity <<= 3; - else if (sector_size == 2048) - sdkp->capacity <<= 2; - else if (sector_size == 1024) - sdkp->capacity <<= 1; - blk_queue_physical_block_size(sdp->request_queue, sdkp->physical_block_size); sdkp->device->sector_size = sector_size; @@ -2773,7 +2766,7 @@ sdkp->disk->queue->limits.max_sectors = min_not_zero(queue_max_hw_sectors(sdkp->disk->queue), max_xfer); - set_capacity(disk, sdkp->capacity); + set_capacity(disk, logical_to_sectors(sdp, sdkp->capacity)); sd_config_write_same(sdkp); kfree(buffer); @@ -3142,8 +3135,8 @@ struct scsi_disk *sdkp = dev_get_drvdata(dev); int ret = 0; - if (!sdkp) - return 0; /* this can happen */ + if (!sdkp) /* E.g.: runtime suspend following sd_remove() */ + return 0; if (sdkp->WCE && sdkp->media_present) { sd_printk(KERN_NOTICE, sdkp, "Synchronizing SCSI cache\n"); @@ -3182,6 +3175,9 @@ { struct scsi_disk *sdkp = dev_get_drvdata(dev); + if (!sdkp) /* E.g.: runtime resume at the start of sd_probe() */ + return 0; + if (!sdkp->device->manage_start_stop) return 0; --- linux-raspi2-4.2.0.orig/drivers/scsi/sd.h +++ linux-raspi2-4.2.0/drivers/scsi/sd.h @@ -65,7 +65,7 @@ struct device dev; struct gendisk *disk; atomic_t openers; - sector_t capacity; /* size in 512-byte sectors */ + sector_t capacity; /* size in logical blocks */ u32 max_xfer_blocks; u32 max_ws_blocks; u32 max_unmap_blocks; @@ -145,6 +145,11 @@ return 0; } +static inline sector_t logical_to_sectors(struct scsi_device *sdev, sector_t blocks) +{ + return blocks << (ilog2(sdev->sector_size) - 9); +} + /* * A DIF-capable target device can be formatted with different * protection schemes. Currently 0 through 3 are defined: --- linux-raspi2-4.2.0.orig/drivers/scsi/ses.c +++ linux-raspi2-4.2.0/drivers/scsi/ses.c @@ -84,6 +84,7 @@ static int ses_recv_diag(struct scsi_device *sdev, int page_code, void *buf, int bufflen) { + int ret; unsigned char cmd[] = { RECEIVE_DIAGNOSTIC, 1, /* Set PCV bit */ @@ -92,9 +93,26 @@ bufflen & 0xff, 0 }; + unsigned char recv_page_code; - return scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, bufflen, + ret = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, bufflen, NULL, SES_TIMEOUT, SES_RETRIES, NULL); + if (unlikely(!ret)) + return ret; + + recv_page_code = ((unsigned char *)buf)[0]; + + if (likely(recv_page_code == page_code)) + return ret; + + /* successful diagnostic but wrong page code. This happens to some + * USB devices, just print a message and pretend there was an error */ + + sdev_printk(KERN_ERR, sdev, + "Wrong diagnostic page; asked for %d got %u\n", + page_code, recv_page_code); + + return -EINVAL; } static int ses_send_diag(struct scsi_device *sdev, int page_code, @@ -541,7 +559,15 @@ if (desc_ptr) desc_ptr += len; - if (addl_desc_ptr) + if (addl_desc_ptr && + /* only find additional descriptions for specific devices */ + (type_ptr[0] == ENCLOSURE_COMPONENT_DEVICE || + type_ptr[0] == ENCLOSURE_COMPONENT_ARRAY_DEVICE || + type_ptr[0] == ENCLOSURE_COMPONENT_SAS_EXPANDER || + /* these elements are optional */ + type_ptr[0] == ENCLOSURE_COMPONENT_SCSI_TARGET_PORT || + type_ptr[0] == ENCLOSURE_COMPONENT_SCSI_INITIATOR_PORT || + type_ptr[0] == ENCLOSURE_COMPONENT_CONTROLLER_ELECTRONICS)) addl_desc_ptr += addl_desc_ptr[1] + 2; } --- linux-raspi2-4.2.0.orig/drivers/scsi/sg.c +++ linux-raspi2-4.2.0/drivers/scsi/sg.c @@ -652,7 +652,8 @@ else hp->dxfer_direction = (mxsize > 0) ? SG_DXFER_FROM_DEV : SG_DXFER_NONE; hp->dxfer_len = mxsize; - if (hp->dxfer_direction == SG_DXFER_TO_DEV) + if ((hp->dxfer_direction == SG_DXFER_TO_DEV) || + (hp->dxfer_direction == SG_DXFER_TO_FROM_DEV)) hp->dxferp = (char __user *)buf + cmd_size; else hp->dxferp = NULL; @@ -1255,7 +1256,7 @@ } sfp->mmap_called = 1; - vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; + vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP; vma->vm_private_data = sfp; vma->vm_ops = &sg_mmap_vm_ops; return 0; --- linux-raspi2-4.2.0.orig/drivers/scsi/sr.c +++ linux-raspi2-4.2.0/drivers/scsi/sr.c @@ -144,6 +144,9 @@ { struct scsi_cd *cd = dev_get_drvdata(dev); + if (!cd) /* E.g.: runtime suspend following sr_remove() */ + return 0; + if (cd->media_present) return -EBUSY; else @@ -985,6 +988,7 @@ scsi_autopm_get_device(cd->device); del_gendisk(cd->disk); + dev_set_drvdata(dev, NULL); mutex_lock(&sr_ref_mutex); kref_put(&cd->kref, sr_kref_release); --- 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 */ @@ -1580,6 +1581,7 @@ as->use_cs_gpios = true; if (atmel_spi_is_v2(as) && + pdev->dev.of_node && !of_get_property(pdev->dev.of_node, "cs-gpios", NULL)) { as->use_cs_gpios = false; master->num_chipselect = 4; --- 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-rockchip.c +++ linux-raspi2-4.2.0/drivers/spi/spi-rockchip.c @@ -265,7 +265,10 @@ static void rockchip_spi_set_cs(struct spi_device *spi, bool enable) { u32 ser; - struct rockchip_spi *rs = spi_master_get_devdata(spi->master); + struct spi_master *master = spi->master; + struct rockchip_spi *rs = spi_master_get_devdata(master); + + pm_runtime_get_sync(rs->dev); ser = readl_relaxed(rs->regs + ROCKCHIP_SPI_SER) & SER_MASK; @@ -290,6 +293,8 @@ ser &= ~(1 << spi->chip_select); writel_relaxed(ser, rs->regs + ROCKCHIP_SPI_SER); + + pm_runtime_put_sync(rs->dev); } static int rockchip_spi_prepare_message(struct spi_master *master, --- 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) { @@ -1455,7 +1454,7 @@ master->bus_num = -1; master->num_chipselect = 1; master->dev.class = &spi_master_class; - master->dev.parent = get_device(dev); + master->dev.parent = dev; spi_master_set_devdata(master, &master[1]); return master; --- 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/android/ion/ion_test.c +++ linux-raspi2-4.2.0/drivers/staging/android/ion/ion_test.c @@ -284,8 +284,8 @@ { ion_test_pdev = platform_device_register_simple("ion-test", -1, NULL, 0); - if (!ion_test_pdev) - return -ENODEV; + if (IS_ERR(ion_test_pdev)) + return PTR_ERR(ion_test_pdev); return platform_driver_probe(&ion_test_platform_driver, ion_test_probe); } --- 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/ni_mio_common.c +++ linux-raspi2-4.2.0/drivers/staging/comedi/drivers/ni_mio_common.c @@ -246,24 +246,24 @@ { if (dev->mmio) writel(data, dev->mmio + reg); - - outl(data, dev->iobase + reg); + else + outl(data, dev->iobase + reg); } static void ni_writew(struct comedi_device *dev, uint16_t data, int reg) { if (dev->mmio) writew(data, dev->mmio + reg); - - outw(data, dev->iobase + reg); + else + outw(data, dev->iobase + reg); } static void ni_writeb(struct comedi_device *dev, uint8_t data, int reg) { if (dev->mmio) writeb(data, dev->mmio + reg); - - outb(data, dev->iobase + reg); + else + outb(data, dev->iobase + reg); } static uint32_t ni_readl(struct comedi_device *dev, int reg) --- linux-raspi2-4.2.0.orig/drivers/staging/comedi/drivers/ni_tiocmd.c +++ linux-raspi2-4.2.0/drivers/staging/comedi/drivers/ni_tiocmd.c @@ -92,7 +92,7 @@ unsigned long flags; int ret = 0; - if (trig_num != cmd->start_src) + if (trig_num != cmd->start_arg) return -EINVAL; spin_lock_irqsave(&counter->lock, flags); --- 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/lpc32xx_adc.c +++ linux-raspi2-4.2.0/drivers/staging/iio/adc/lpc32xx_adc.c @@ -76,7 +76,7 @@ if (mask == IIO_CHAN_INFO_RAW) { mutex_lock(&indio_dev->mlock); - clk_enable(info->clk); + clk_prepare_enable(info->clk); /* Measurement setup */ __raw_writel(AD_INTERNAL | (chan->address) | AD_REFp | AD_REFm, LPC32XX_ADC_SELECT(info->adc_base)); @@ -84,7 +84,7 @@ __raw_writel(AD_PDN_CTRL | AD_STROBE, LPC32XX_ADC_CTRL(info->adc_base)); wait_for_completion(&info->completion); /* set by ISR */ - clk_disable(info->clk); + clk_disable_unprepare(info->clk); *val = info->value; mutex_unlock(&indio_dev->mlock); --- 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/lustre/lustre/obdecho/echo_client.c +++ linux-raspi2-4.2.0/drivers/staging/lustre/lustre/obdecho/echo_client.c @@ -1268,6 +1268,7 @@ echo_copyout_lsm(struct lov_stripe_md *lsm, void *_ulsm, int ulsm_nob) { struct lov_stripe_md *ulsm = _ulsm; + struct lov_oinfo **p; int nob, i; nob = offsetof(struct lov_stripe_md, lsm_oinfo[lsm->lsm_stripe_count]); @@ -1277,9 +1278,10 @@ if (copy_to_user(ulsm, lsm, sizeof(*ulsm))) return -EFAULT; - for (i = 0; i < lsm->lsm_stripe_count; i++) { - if (copy_to_user(ulsm->lsm_oinfo[i], lsm->lsm_oinfo[i], - sizeof(lsm->lsm_oinfo[0]))) + for (i = 0, p = lsm->lsm_oinfo; i < lsm->lsm_stripe_count; i++, p++) { + struct lov_oinfo __user *up; + if (get_user(up, ulsm->lsm_oinfo + i) || + copy_to_user(up, *p, sizeof(struct lov_oinfo))) return -EFAULT; } return 0; @@ -1287,9 +1289,10 @@ static int echo_copyin_lsm(struct echo_device *ed, struct lov_stripe_md *lsm, - void *ulsm, int ulsm_nob) + struct lov_stripe_md __user *ulsm, int ulsm_nob) { struct echo_client_obd *ec = ed->ed_ec; + struct lov_oinfo **p; int i; if (ulsm_nob < sizeof(*lsm)) @@ -1304,12 +1307,10 @@ ((__u64)lsm->lsm_stripe_size * lsm->lsm_stripe_count > ~0UL)) return -EINVAL; - - for (i = 0; i < lsm->lsm_stripe_count; i++) { - if (copy_from_user(lsm->lsm_oinfo[i], - ((struct lov_stripe_md *)ulsm)-> \ - lsm_oinfo[i], - sizeof(lsm->lsm_oinfo[0]))) + for (i = 0, p = lsm->lsm_oinfo; i < lsm->lsm_stripe_count; i++, p++) { + struct lov_oinfo __user *up; + if (get_user(up, ulsm->lsm_oinfo + i) || + copy_from_user(*p, up, sizeof(struct lov_oinfo))) return -EFAULT; } return 0; --- 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_imon.c +++ linux-raspi2-4.2.0/drivers/staging/media/lirc/lirc_imon.c @@ -885,12 +885,14 @@ vendor, product, ifnum, usbdev->bus->busnum, usbdev->devnum); /* Everything went fine. Just unlock and return retval (with is 0) */ + mutex_unlock(&context->ctx_lock); goto driver_unlock; unregister_lirc: lirc_unregister_driver(driver->minor); free_tx_urb: + mutex_unlock(&context->ctx_lock); usb_free_urb(tx_urb); free_rx_urb: --- 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/speakup/selection.c +++ linux-raspi2-4.2.0/drivers/staging/speakup/selection.c @@ -141,7 +141,9 @@ struct tty_ldisc *ld; DECLARE_WAITQUEUE(wait, current); - ld = tty_ldisc_ref_wait(tty); + ld = tty_ldisc_ref(tty); + if (!ld) + goto tty_unref; tty_buffer_lock_exclusive(&vc->port); add_wait_queue(&vc->paste_wait, &wait); @@ -161,6 +163,7 @@ tty_buffer_unlock_exclusive(&vc->port); tty_ldisc_deref(ld); +tty_unref: tty_kref_put(tty); } --- linux-raspi2-4.2.0.orig/drivers/staging/speakup/serialio.c +++ linux-raspi2-4.2.0/drivers/staging/speakup/serialio.c @@ -6,6 +6,11 @@ #include "spk_priv.h" #include "serialio.h" +#include +/* WARNING: Do not change this to without testing that + * SERIAL_PORT_DFNS does get defined to the appropriate value. */ +#include + #ifndef SERIAL_PORT_DFNS #define SERIAL_PORT_DFNS #endif @@ -23,9 +28,15 @@ int baud = 9600, quot = 0; unsigned int cval = 0; int cflag = CREAD | HUPCL | CLOCAL | B9600 | CS8; - const struct old_serial_port *ser = rs_table + index; + const struct old_serial_port *ser; int err; + if (index >= ARRAY_SIZE(rs_table)) { + pr_info("no port info for ttyS%d\n", index); + return NULL; + } + ser = rs_table + index; + /* Divisor, bytesize and parity */ quot = ser->baud_base / baud; cval = cflag & (CSIZE | CSTOPB); --- 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) { @@ -4086,6 +4085,17 @@ return iscsit_add_reject(conn, ISCSI_REASON_BOOKMARK_NO_RESOURCES, buf); } +static bool iscsi_target_check_conn_state(struct iscsi_conn *conn) +{ + bool ret; + + spin_lock_bh(&conn->state_lock); + ret = (conn->conn_state != TARG_CONN_STATE_LOGGED_IN); + spin_unlock_bh(&conn->state_lock); + + return ret; +} + int iscsi_target_rx_thread(void *arg) { int ret, rc; @@ -4103,7 +4113,7 @@ * incoming iscsi/tcp socket I/O, and/or failing the connection. */ rc = wait_for_completion_interruptible(&conn->rx_login_comp); - if (rc < 0) + if (rc < 0 || iscsi_target_check_conn_state(conn)) return 0; if (conn->conn_transport->transport_type == ISCSI_INFINIBAND) { --- 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) @@ -1834,7 +1834,8 @@ } /* - * Called with spin_lock_bh(struct se_portal_group->session_lock) held.. + * Called with spin_lock_irq(struct se_portal_group->session_lock) held + * or not held. * * Also, this function calls iscsit_inc_session_usage_count() on the * struct iscsi_session in question. @@ -1842,19 +1843,32 @@ static int lio_tpg_shutdown_session(struct se_session *se_sess) { struct iscsi_session *sess = se_sess->fabric_sess_ptr; + struct se_portal_group *se_tpg = se_sess->se_tpg; + bool local_lock = false; + + if (!spin_is_locked(&se_tpg->session_lock)) { + spin_lock_irq(&se_tpg->session_lock); + local_lock = true; + } spin_lock(&sess->conn_lock); if (atomic_read(&sess->session_fall_back_to_erl0) || atomic_read(&sess->session_logout) || (sess->time2retain_timer_flags & ISCSI_TF_EXPIRED)) { spin_unlock(&sess->conn_lock); + if (local_lock) + spin_unlock_irq(&sess->conn_lock); return 0; } atomic_set(&sess->session_reinstatement, 1); spin_unlock(&sess->conn_lock); iscsit_stop_time2retain_timer(sess); + spin_unlock_irq(&se_tpg->session_lock); + iscsit_stop_session(sess, 1, 1); + if (!local_lock) + spin_lock_irq(&se_tpg->session_lock); return 1; } --- 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_nego.c +++ linux-raspi2-4.2.0/drivers/target/iscsi/iscsi_target_nego.c @@ -393,6 +393,7 @@ if (login->login_complete) { if (conn->rx_thread && conn->rx_thread_active) { send_sig(SIGINT, conn->rx_thread, 1); + complete(&conn->rx_login_comp); kthread_stop(conn->rx_thread); } if (conn->tx_thread && conn->tx_thread_active) { --- 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_configfs.c +++ linux-raspi2-4.2.0/drivers/target/target_core_configfs.c @@ -2137,14 +2137,14 @@ struct se_device *dev = p; struct t10_alua_lba_map *lba_map = NULL; struct list_head lba_list; - char *map_entries, *ptr; + char *map_entries, *orig, *ptr; char state; int pg_num = -1, pg; int ret = 0, num = 0, pg_id, alua_state; unsigned long start_lba = -1, end_lba = -1; unsigned long segment_size = -1, segment_mult = -1; - map_entries = kstrdup(page, GFP_KERNEL); + orig = map_entries = kstrdup(page, GFP_KERNEL); if (!map_entries) return -ENOMEM; @@ -2242,7 +2242,7 @@ } else core_alua_set_lba_map(dev, &lba_list, segment_size, segment_mult); - kfree(map_entries); + kfree(orig); return count; } --- 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); @@ -822,6 +823,49 @@ return dev; } +/* + * Check if the underlying struct block_device request_queue supports + * the QUEUE_FLAG_DISCARD bit for UNMAP/WRITE_SAME in SCSI + TRIM + * in ATA and we need to set TPE=1 + */ +bool target_configure_unmap_from_queue(struct se_dev_attrib *attrib, + struct request_queue *q, int block_size) +{ + if (!blk_queue_discard(q)) + return false; + + attrib->max_unmap_lba_count = (q->limits.max_discard_sectors << 9) / + block_size; + /* + * Currently hardcoded to 1 in Linux/SCSI code.. + */ + attrib->max_unmap_block_desc_count = 1; + attrib->unmap_granularity = q->limits.discard_granularity / block_size; + attrib->unmap_granularity_alignment = q->limits.discard_alignment / + block_size; + return true; +} +EXPORT_SYMBOL(target_configure_unmap_from_queue); + +/* + * Convert from blocksize advertised to the initiator to the 512 byte + * units unconditionally used by the Linux block layer. + */ +sector_t target_to_linux_sector(struct se_device *dev, sector_t lb) +{ + switch (dev->dev_attrib.block_size) { + case 4096: + return lb << 3; + case 2048: + return lb << 2; + case 1024: + return lb << 1; + default: + return lb; + } +} +EXPORT_SYMBOL(target_to_linux_sector); + int target_configure_device(struct se_device *dev) { struct se_hba *hba = dev->se_hba; --- linux-raspi2-4.2.0.orig/drivers/target/target_core_file.c +++ linux-raspi2-4.2.0/drivers/target/target_core_file.c @@ -160,25 +160,11 @@ " block_device blocks: %llu logical_block_size: %d\n", dev_size, div_u64(dev_size, fd_dev->fd_block_size), fd_dev->fd_block_size); - /* - * Check if the underlying struct block_device request_queue supports - * the QUEUE_FLAG_DISCARD bit for UNMAP/WRITE_SAME in SCSI + TRIM - * in ATA and we need to set TPE=1 - */ - if (blk_queue_discard(q)) { - dev->dev_attrib.max_unmap_lba_count = - q->limits.max_discard_sectors; - /* - * Currently hardcoded to 1 in Linux/SCSI code.. - */ - dev->dev_attrib.max_unmap_block_desc_count = 1; - dev->dev_attrib.unmap_granularity = - q->limits.discard_granularity >> 9; - dev->dev_attrib.unmap_granularity_alignment = - q->limits.discard_alignment; + + if (target_configure_unmap_from_queue(&dev->dev_attrib, q, + fd_dev->fd_block_size)) pr_debug("IFILE: BLOCK Discard support available," - " disabled by default\n"); - } + " disabled by default\n"); /* * Enable write same emulation for IBLOCK and use 0xFFFF as * the smaller WRITE_SAME(10) only has a two-byte block count. @@ -490,9 +476,12 @@ if (S_ISBLK(inode->i_mode)) { /* The backend is block device, use discard */ struct block_device *bdev = inode->i_bdev; + struct se_device *dev = cmd->se_dev; - ret = blkdev_issue_discard(bdev, lba, - nolb, GFP_KERNEL, 0); + ret = blkdev_issue_discard(bdev, + target_to_linux_sector(dev, lba), + target_to_linux_sector(dev, nolb), + GFP_KERNEL, 0); if (ret < 0) { pr_warn("FILEIO: blkdev_issue_discard() failed: %d\n", ret); --- linux-raspi2-4.2.0.orig/drivers/target/target_core_iblock.c +++ linux-raspi2-4.2.0/drivers/target/target_core_iblock.c @@ -119,27 +119,11 @@ dev->dev_attrib.hw_max_sectors = queue_max_hw_sectors(q); dev->dev_attrib.hw_queue_depth = q->nr_requests; - /* - * Check if the underlying struct block_device request_queue supports - * the QUEUE_FLAG_DISCARD bit for UNMAP/WRITE_SAME in SCSI + TRIM - * in ATA and we need to set TPE=1 - */ - if (blk_queue_discard(q)) { - dev->dev_attrib.max_unmap_lba_count = - q->limits.max_discard_sectors; - - /* - * Currently hardcoded to 1 in Linux/SCSI code.. - */ - dev->dev_attrib.max_unmap_block_desc_count = 1; - dev->dev_attrib.unmap_granularity = - q->limits.discard_granularity >> 9; - dev->dev_attrib.unmap_granularity_alignment = - q->limits.discard_alignment; - + if (target_configure_unmap_from_queue(&dev->dev_attrib, q, + dev->dev_attrib.hw_block_size)) pr_debug("IBLOCK: BLOCK Discard support available," - " disabled by default\n"); - } + " disabled by default\n"); + /* * Enable write same emulation for IBLOCK and use 0xFFFF as * the smaller WRITE_SAME(10) only has a two-byte block count. @@ -418,9 +402,13 @@ iblock_execute_unmap(struct se_cmd *cmd, sector_t lba, sector_t nolb) { struct block_device *bdev = IBLOCK_DEV(cmd->se_dev)->ibd_bd; + struct se_device *dev = cmd->se_dev; int ret; - ret = blkdev_issue_discard(bdev, lba, nolb, GFP_KERNEL, 0); + ret = blkdev_issue_discard(bdev, + target_to_linux_sector(dev, lba), + target_to_linux_sector(dev, nolb), + GFP_KERNEL, 0); if (ret < 0) { pr_err("blkdev_issue_discard() failed: %d\n", ret); return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; @@ -436,8 +424,10 @@ struct scatterlist *sg; struct bio *bio; struct bio_list list; - sector_t block_lba = cmd->t_task_lba; - sector_t sectors = sbc_get_write_same_sectors(cmd); + struct se_device *dev = cmd->se_dev; + sector_t block_lba = target_to_linux_sector(dev, cmd->t_task_lba); + sector_t sectors = target_to_linux_sector(dev, + sbc_get_write_same_sectors(cmd)); if (cmd->prot_op) { pr_err("WRITE_SAME: Protection information with IBLOCK" @@ -651,12 +641,12 @@ enum dma_data_direction data_direction) { struct se_device *dev = cmd->se_dev; + sector_t block_lba = target_to_linux_sector(dev, cmd->t_task_lba); struct iblock_req *ibr; struct bio *bio, *bio_start; struct bio_list list; struct scatterlist *sg; u32 sg_num = sgl_nents; - sector_t block_lba; unsigned bio_cnt; int rw = 0; int i; @@ -682,24 +672,6 @@ rw = READ; } - /* - * Convert the blocksize advertised to the initiator to the 512 byte - * units unconditionally used by the Linux block layer. - */ - if (dev->dev_attrib.block_size == 4096) - block_lba = (cmd->t_task_lba << 3); - else if (dev->dev_attrib.block_size == 2048) - block_lba = (cmd->t_task_lba << 2); - else if (dev->dev_attrib.block_size == 1024) - block_lba = (cmd->t_task_lba << 1); - else if (dev->dev_attrib.block_size == 512) - block_lba = cmd->t_task_lba; - else { - pr_err("Unsupported SCSI -> BLOCK LBA conversion:" - " %u\n", dev->dev_attrib.block_size); - return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; - } - ibr = kzalloc(sizeof(struct iblock_req), GFP_KERNEL); if (!ibr) goto fail; --- 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_sbc.c +++ linux-raspi2-4.2.0/drivers/target/target_core_sbc.c @@ -339,7 +339,8 @@ return 0; } -static sense_reason_t xdreadwrite_callback(struct se_cmd *cmd, bool success) +static sense_reason_t xdreadwrite_callback(struct se_cmd *cmd, bool success, + int *post_ret) { unsigned char *buf, *addr; struct scatterlist *sg; @@ -405,7 +406,8 @@ cmd->data_direction); } -static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success) +static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success, + int *post_ret) { struct se_device *dev = cmd->se_dev; @@ -415,8 +417,10 @@ * sent to the backend driver. */ spin_lock_irq(&cmd->t_state_lock); - if ((cmd->transport_state & CMD_T_SENT) && !cmd->scsi_status) + if ((cmd->transport_state & CMD_T_SENT) && !cmd->scsi_status) { cmd->se_cmd_flags |= SCF_COMPARE_AND_WRITE_POST; + *post_ret = 1; + } spin_unlock_irq(&cmd->t_state_lock); /* @@ -428,7 +432,8 @@ return TCM_NO_SENSE; } -static sense_reason_t compare_and_write_callback(struct se_cmd *cmd, bool success) +static sense_reason_t compare_and_write_callback(struct se_cmd *cmd, bool success, + int *post_ret) { struct se_device *dev = cmd->se_dev; struct scatterlist *write_sg = NULL, *sg; @@ -524,11 +529,11 @@ if (block_size < PAGE_SIZE) { sg_set_page(&write_sg[i], m.page, block_size, - block_size); + m.piter.sg->offset + block_size); } else { sg_miter_next(&m); sg_set_page(&write_sg[i], m.page, block_size, - 0); + m.piter.sg->offset); } len -= block_size; i++; --- linux-raspi2-4.2.0.orig/drivers/target/target_core_tmr.c +++ linux-raspi2-4.2.0/drivers/target/target_core_tmr.c @@ -68,23 +68,25 @@ if (dev) { spin_lock_irqsave(&dev->se_tmr_lock, flags); - list_del(&tmr->tmr_list); + list_del_init(&tmr->tmr_list); spin_unlock_irqrestore(&dev->se_tmr_lock, flags); } kfree(tmr); } -static void core_tmr_handle_tas_abort( - struct se_node_acl *tmr_nacl, - struct se_cmd *cmd, - int tas) +static void core_tmr_handle_tas_abort(struct se_cmd *cmd, int tas) { - bool remove = true; + unsigned long flags; + bool remove = true, send_tas; /* * TASK ABORTED status (TAS) bit support */ - if ((tmr_nacl && (tmr_nacl != cmd->se_sess->se_node_acl)) && tas) { + spin_lock_irqsave(&cmd->t_state_lock, flags); + send_tas = (cmd->transport_state & CMD_T_TAS); + spin_unlock_irqrestore(&cmd->t_state_lock, flags); + + if (send_tas) { remove = false; transport_send_task_abort(cmd); } @@ -107,6 +109,46 @@ return 1; } +static bool __target_check_io_state(struct se_cmd *se_cmd, + struct se_session *tmr_sess, int tas) +{ + struct se_session *sess = se_cmd->se_sess; + + assert_spin_locked(&sess->sess_cmd_lock); + WARN_ON_ONCE(!irqs_disabled()); + /* + * If command already reached CMD_T_COMPLETE state within + * target_complete_cmd() or CMD_T_FABRIC_STOP due to shutdown, + * this se_cmd has been passed to fabric driver and will + * not be aborted. + * + * Otherwise, obtain a local se_cmd->cmd_kref now for TMR + * ABORT_TASK + LUN_RESET for CMD_T_ABORTED processing as + * long as se_cmd->cmd_kref is still active unless zero. + */ + spin_lock(&se_cmd->t_state_lock); + if (se_cmd->transport_state & (CMD_T_COMPLETE | CMD_T_FABRIC_STOP)) { + pr_debug("Attempted to abort io tag: %llu already complete or" + " fabric stop, skipping\n", se_cmd->tag); + spin_unlock(&se_cmd->t_state_lock); + return false; + } + if (sess->sess_tearing_down || se_cmd->cmd_wait_set) { + pr_debug("Attempted to abort io tag: %llu already shutdown," + " skipping\n", se_cmd->tag); + spin_unlock(&se_cmd->t_state_lock); + return false; + } + se_cmd->transport_state |= CMD_T_ABORTED; + + if ((tmr_sess != se_cmd->se_sess) && tas) + se_cmd->transport_state |= CMD_T_TAS; + + spin_unlock(&se_cmd->t_state_lock); + + return kref_get_unless_zero(&se_cmd->cmd_kref); +} + void core_tmr_abort_task( struct se_device *dev, struct se_tmr_req *tmr, @@ -133,26 +175,18 @@ printk("ABORT_TASK: Found referenced %s task_tag: %llu\n", se_cmd->se_tfo->get_fabric_name(), ref_tag); - spin_lock(&se_cmd->t_state_lock); - if (se_cmd->transport_state & CMD_T_COMPLETE) { - printk("ABORT_TASK: ref_tag: %llu already complete," - " skipping\n", ref_tag); - spin_unlock(&se_cmd->t_state_lock); + if (!__target_check_io_state(se_cmd, se_sess, 0)) { spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); goto out; } - se_cmd->transport_state |= CMD_T_ABORTED; - spin_unlock(&se_cmd->t_state_lock); - list_del_init(&se_cmd->se_cmd_list); - kref_get(&se_cmd->cmd_kref); spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); cancel_work_sync(&se_cmd->work); transport_wait_for_tasks(se_cmd); - target_put_sess_cmd(se_cmd); transport_cmd_finish_abort(se_cmd, true); + target_put_sess_cmd(se_cmd); printk("ABORT_TASK: Sending TMR_FUNCTION_COMPLETE for" " ref_tag: %llu\n", ref_tag); @@ -173,9 +207,11 @@ struct list_head *preempt_and_abort_list) { LIST_HEAD(drain_tmr_list); + struct se_session *sess; struct se_tmr_req *tmr_p, *tmr_pp; struct se_cmd *cmd; unsigned long flags; + bool rc; /* * Release all pending and outgoing TMRs aside from the received * LUN_RESET tmr.. @@ -201,17 +237,39 @@ if (target_check_cdb_and_preempt(preempt_and_abort_list, cmd)) continue; + sess = cmd->se_sess; + if (WARN_ON_ONCE(!sess)) + continue; + + spin_lock(&sess->sess_cmd_lock); spin_lock(&cmd->t_state_lock); - if (!(cmd->transport_state & CMD_T_ACTIVE)) { + if (!(cmd->transport_state & CMD_T_ACTIVE) || + (cmd->transport_state & CMD_T_FABRIC_STOP)) { spin_unlock(&cmd->t_state_lock); + spin_unlock(&sess->sess_cmd_lock); continue; } if (cmd->t_state == TRANSPORT_ISTATE_PROCESSING) { spin_unlock(&cmd->t_state_lock); + spin_unlock(&sess->sess_cmd_lock); continue; } + if (sess->sess_tearing_down || cmd->cmd_wait_set) { + spin_unlock(&cmd->t_state_lock); + spin_unlock(&sess->sess_cmd_lock); + continue; + } + cmd->transport_state |= CMD_T_ABORTED; spin_unlock(&cmd->t_state_lock); + rc = kref_get_unless_zero(&cmd->cmd_kref); + if (!rc) { + printk("LUN_RESET TMR: non-zero kref_get_unless_zero\n"); + spin_unlock(&sess->sess_cmd_lock); + continue; + } + spin_unlock(&sess->sess_cmd_lock); + list_move_tail(&tmr_p->tmr_list, &drain_tmr_list); } spin_unlock_irqrestore(&dev->se_tmr_lock, flags); @@ -225,20 +283,26 @@ (preempt_and_abort_list) ? "Preempt" : "", tmr_p, tmr_p->function, tmr_p->response, cmd->t_state); + cancel_work_sync(&cmd->work); + transport_wait_for_tasks(cmd); + transport_cmd_finish_abort(cmd, 1); + target_put_sess_cmd(cmd); } } static void core_tmr_drain_state_list( struct se_device *dev, struct se_cmd *prout_cmd, - struct se_node_acl *tmr_nacl, + struct se_session *tmr_sess, int tas, struct list_head *preempt_and_abort_list) { LIST_HEAD(drain_task_list); + struct se_session *sess; struct se_cmd *cmd, *next; unsigned long flags; + int rc; /* * Complete outstanding commands with TASK_ABORTED SAM status. @@ -277,6 +341,16 @@ if (prout_cmd == cmd) continue; + sess = cmd->se_sess; + if (WARN_ON_ONCE(!sess)) + continue; + + spin_lock(&sess->sess_cmd_lock); + rc = __target_check_io_state(cmd, tmr_sess, tas); + spin_unlock(&sess->sess_cmd_lock); + if (!rc) + continue; + list_move_tail(&cmd->state_list, &drain_task_list); cmd->state_active = false; } @@ -284,7 +358,7 @@ while (!list_empty(&drain_task_list)) { cmd = list_entry(drain_task_list.next, struct se_cmd, state_list); - list_del(&cmd->state_list); + list_del_init(&cmd->state_list); pr_debug("LUN_RESET: %s cmd: %p" " ITT/CmdSN: 0x%08llx/0x%08x, i_state: %d, t_state: %d" @@ -308,16 +382,11 @@ * loop above, but we do it down here given that * cancel_work_sync may block. */ - if (cmd->t_state == TRANSPORT_COMPLETE) - cancel_work_sync(&cmd->work); - - spin_lock_irqsave(&cmd->t_state_lock, flags); - target_stop_cmd(cmd, &flags); - - cmd->transport_state |= CMD_T_ABORTED; - spin_unlock_irqrestore(&cmd->t_state_lock, flags); + cancel_work_sync(&cmd->work); + transport_wait_for_tasks(cmd); - core_tmr_handle_tas_abort(tmr_nacl, cmd, tas); + core_tmr_handle_tas_abort(cmd, tas); + target_put_sess_cmd(cmd); } } @@ -329,6 +398,7 @@ { struct se_node_acl *tmr_nacl = NULL; struct se_portal_group *tmr_tpg = NULL; + struct se_session *tmr_sess = NULL; int tas; /* * TASK_ABORTED status bit, this is configurable via ConfigFS @@ -347,8 +417,9 @@ * or struct se_device passthrough.. */ if (tmr && tmr->task_cmd && tmr->task_cmd->se_sess) { - tmr_nacl = tmr->task_cmd->se_sess->se_node_acl; - tmr_tpg = tmr->task_cmd->se_sess->se_tpg; + tmr_sess = tmr->task_cmd->se_sess; + tmr_nacl = tmr_sess->se_node_acl; + tmr_tpg = tmr_sess->se_tpg; if (tmr_nacl && tmr_tpg) { pr_debug("LUN_RESET: TMR caller fabric: %s" " initiator port %s\n", @@ -361,7 +432,7 @@ dev->transport->name, tas); core_tmr_drain_tmr_list(dev, tmr, preempt_and_abort_list); - core_tmr_drain_state_list(dev, prout_cmd, tmr_nacl, tas, + core_tmr_drain_state_list(dev, prout_cmd, tmr_sess, tas, preempt_and_abort_list); /* --- linux-raspi2-4.2.0.orig/drivers/target/target_core_transport.c +++ linux-raspi2-4.2.0/drivers/target/target_core_transport.c @@ -527,9 +527,6 @@ } EXPORT_SYMBOL(transport_deregister_session); -/* - * Called with cmd->t_state_lock held. - */ static void target_remove_from_state_list(struct se_cmd *cmd) { struct se_device *dev = cmd->se_dev; @@ -554,10 +551,6 @@ { unsigned long flags; - spin_lock_irqsave(&cmd->t_state_lock, flags); - if (write_pending) - cmd->t_state = TRANSPORT_WRITE_PENDING; - if (remove_from_lists) { target_remove_from_state_list(cmd); @@ -567,6 +560,10 @@ cmd->se_lun = NULL; } + spin_lock_irqsave(&cmd->t_state_lock, flags); + if (write_pending) + cmd->t_state = TRANSPORT_WRITE_PENDING; + /* * Determine if frontend context caller is requesting the stopping of * this command for frontend exceptions. @@ -620,6 +617,8 @@ void transport_cmd_finish_abort(struct se_cmd *cmd, int remove) { + bool ack_kref = (cmd->se_cmd_flags & SCF_ACK_KREF); + if (cmd->se_cmd_flags & SCF_SE_LUN_CMD) transport_lun_remove_cmd(cmd); /* @@ -631,7 +630,7 @@ if (transport_cmd_check_stop_to_fabric(cmd)) return; - if (remove) + if (remove && ack_kref) transport_put_cmd(cmd); } @@ -699,7 +698,7 @@ * Check for case where an explicit ABORT_TASK has been received * and transport_wait_for_tasks() will be waiting for completion.. */ - if (cmd->transport_state & CMD_T_ABORTED && + if (cmd->transport_state & CMD_T_ABORTED || cmd->transport_state & CMD_T_STOP) { spin_unlock_irqrestore(&cmd->t_state_lock, flags); complete_all(&cmd->t_transport_stop_comp); @@ -1610,7 +1609,7 @@ void transport_generic_request_failure(struct se_cmd *cmd, sense_reason_t sense_reason) { - int ret = 0; + int ret = 0, post_ret = 0; pr_debug("-----[ Storage Engine Exception for cmd: %p ITT: 0x%08llx" " CDB: 0x%02x\n", cmd, cmd->tag, cmd->t_task_cdb[0]); @@ -1632,7 +1631,7 @@ */ if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) && cmd->transport_complete_callback) - cmd->transport_complete_callback(cmd, false); + cmd->transport_complete_callback(cmd, false, &post_ret); switch (sense_reason) { case TCM_NON_EXISTENT_LUN: @@ -1807,19 +1806,21 @@ return true; } +static int __transport_check_aborted_status(struct se_cmd *, int); + void target_execute_cmd(struct se_cmd *cmd) { /* - * If the received CDB has aleady been aborted stop processing it here. - */ - if (transport_check_aborted_status(cmd, 1)) - return; - - /* * Determine if frontend context caller is requesting the stopping of * this command for frontend exceptions. + * + * If the received CDB has aleady been aborted stop processing it here. */ spin_lock_irq(&cmd->t_state_lock); + if (__transport_check_aborted_status(cmd, 1)) { + spin_unlock_irq(&cmd->t_state_lock); + return; + } if (cmd->transport_state & CMD_T_STOP) { pr_debug("%s:%d CMD_T_STOP for ITT: 0x%08llx\n", __func__, __LINE__, cmd->tag); @@ -2027,11 +2028,13 @@ */ if (cmd->transport_complete_callback) { sense_reason_t rc; - - rc = cmd->transport_complete_callback(cmd, true); - if (!rc && !(cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE_POST)) { - if ((cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE) && - !cmd->data_length) + bool caw = (cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE); + bool zero_dl = !(cmd->data_length); + int post_ret = 0; + + rc = cmd->transport_complete_callback(cmd, true, &post_ret); + if (!rc && !post_ret) { + if (caw && zero_dl) goto queue_rsp; return; @@ -2170,20 +2173,14 @@ } /** - * transport_release_cmd - free a command - * @cmd: command to free + * transport_put_cmd - release a reference to a command + * @cmd: command to release * - * This routine unconditionally frees a command, and reference counting - * or list removal must be done in the caller. + * This routine releases our reference to the command and frees it if possible. */ -static int transport_release_cmd(struct se_cmd *cmd) +static int transport_put_cmd(struct se_cmd *cmd) { BUG_ON(!cmd->se_tfo); - - if (cmd->se_cmd_flags & SCF_SCSI_TMR_CDB) - core_tmr_release_req(cmd->se_tmr_req); - if (cmd->t_task_cdb != cmd->__t_task_cdb) - kfree(cmd->t_task_cdb); /* * If this cmd has been setup with target_get_sess_cmd(), drop * the kref and call ->release_cmd() in kref callback. @@ -2191,18 +2188,6 @@ return target_put_sess_cmd(cmd); } -/** - * transport_put_cmd - release a reference to a command - * @cmd: command to release - * - * This routine releases our reference to the command and frees it if possible. - */ -static int transport_put_cmd(struct se_cmd *cmd) -{ - transport_free_pages(cmd); - return transport_release_cmd(cmd); -} - void *transport_kmap_data_sg(struct se_cmd *cmd) { struct scatterlist *sg = cmd->t_data_sg; @@ -2398,34 +2383,58 @@ } } -int transport_generic_free_cmd(struct se_cmd *cmd, int wait_for_tasks) +static bool +__transport_wait_for_tasks(struct se_cmd *, bool, bool *, bool *, + unsigned long *flags); + +static void target_wait_free_cmd(struct se_cmd *cmd, bool *aborted, bool *tas) { unsigned long flags; + + spin_lock_irqsave(&cmd->t_state_lock, flags); + __transport_wait_for_tasks(cmd, true, aborted, tas, &flags); + spin_unlock_irqrestore(&cmd->t_state_lock, flags); +} + +int transport_generic_free_cmd(struct se_cmd *cmd, int wait_for_tasks) +{ int ret = 0; + bool aborted = false, tas = false; if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD)) { if (wait_for_tasks && (cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)) - transport_wait_for_tasks(cmd); + target_wait_free_cmd(cmd, &aborted, &tas); - ret = transport_release_cmd(cmd); + if (!aborted || tas) + ret = transport_put_cmd(cmd); } else { if (wait_for_tasks) - transport_wait_for_tasks(cmd); + target_wait_free_cmd(cmd, &aborted, &tas); /* * Handle WRITE failure case where transport_generic_new_cmd() * has already added se_cmd to state_list, but fabric has * failed command before I/O submission. */ - if (cmd->state_active) { - spin_lock_irqsave(&cmd->t_state_lock, flags); + if (cmd->state_active) target_remove_from_state_list(cmd); - spin_unlock_irqrestore(&cmd->t_state_lock, flags); - } if (cmd->se_lun) transport_lun_remove_cmd(cmd); - ret = transport_put_cmd(cmd); + if (!aborted || tas) + ret = transport_put_cmd(cmd); + } + /* + * If the task has been internally aborted due to TMR ABORT_TASK + * or LUN_RESET, target_core_tmr.c is responsible for performing + * the remaining calls to target_put_sess_cmd(), and not the + * callers of this function. + */ + if (aborted) { + pr_debug("Detected CMD_T_ABORTED for ITT: %llu\n", cmd->tag); + wait_for_completion(&cmd->cmd_wait_comp); + cmd->se_tfo->release_cmd(cmd); + ret = 1; } return ret; } @@ -2465,25 +2474,46 @@ } EXPORT_SYMBOL(target_get_sess_cmd); +static void target_free_cmd_mem(struct se_cmd *cmd) +{ + transport_free_pages(cmd); + + if (cmd->se_cmd_flags & SCF_SCSI_TMR_CDB) + core_tmr_release_req(cmd->se_tmr_req); + if (cmd->t_task_cdb != cmd->__t_task_cdb) + kfree(cmd->t_task_cdb); +} + static void target_release_cmd_kref(struct kref *kref) - __releases(&se_cmd->se_sess->sess_cmd_lock) { struct se_cmd *se_cmd = container_of(kref, struct se_cmd, cmd_kref); struct se_session *se_sess = se_cmd->se_sess; + unsigned long flags; + bool fabric_stop; + spin_lock_irqsave(&se_sess->sess_cmd_lock, flags); if (list_empty(&se_cmd->se_cmd_list)) { - spin_unlock(&se_sess->sess_cmd_lock); + spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); + target_free_cmd_mem(se_cmd); se_cmd->se_tfo->release_cmd(se_cmd); return; } - if (se_sess->sess_tearing_down && se_cmd->cmd_wait_set) { - spin_unlock(&se_sess->sess_cmd_lock); + + spin_lock(&se_cmd->t_state_lock); + fabric_stop = (se_cmd->transport_state & CMD_T_FABRIC_STOP); + spin_unlock(&se_cmd->t_state_lock); + + if (se_cmd->cmd_wait_set || fabric_stop) { + list_del_init(&se_cmd->se_cmd_list); + spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); + target_free_cmd_mem(se_cmd); complete(&se_cmd->cmd_wait_comp); return; } - list_del(&se_cmd->se_cmd_list); - spin_unlock(&se_sess->sess_cmd_lock); + list_del_init(&se_cmd->se_cmd_list); + spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); + target_free_cmd_mem(se_cmd); se_cmd->se_tfo->release_cmd(se_cmd); } @@ -2495,11 +2525,11 @@ struct se_session *se_sess = se_cmd->se_sess; if (!se_sess) { + target_free_cmd_mem(se_cmd); se_cmd->se_tfo->release_cmd(se_cmd); return 1; } - return kref_put_spinlock_irqsave(&se_cmd->cmd_kref, target_release_cmd_kref, - &se_sess->sess_cmd_lock); + return kref_put(&se_cmd->cmd_kref, target_release_cmd_kref); } EXPORT_SYMBOL(target_put_sess_cmd); @@ -2512,6 +2542,7 @@ { struct se_cmd *se_cmd; unsigned long flags; + int rc; spin_lock_irqsave(&se_sess->sess_cmd_lock, flags); if (se_sess->sess_tearing_down) { @@ -2521,8 +2552,15 @@ se_sess->sess_tearing_down = 1; list_splice_init(&se_sess->sess_cmd_list, &se_sess->sess_wait_list); - list_for_each_entry(se_cmd, &se_sess->sess_wait_list, se_cmd_list) - se_cmd->cmd_wait_set = 1; + list_for_each_entry(se_cmd, &se_sess->sess_wait_list, se_cmd_list) { + rc = kref_get_unless_zero(&se_cmd->cmd_kref); + if (rc) { + se_cmd->cmd_wait_set = 1; + spin_lock(&se_cmd->t_state_lock); + se_cmd->transport_state |= CMD_T_FABRIC_STOP; + spin_unlock(&se_cmd->t_state_lock); + } + } spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); } @@ -2535,15 +2573,23 @@ { struct se_cmd *se_cmd, *tmp_cmd; unsigned long flags; + bool tas; list_for_each_entry_safe(se_cmd, tmp_cmd, &se_sess->sess_wait_list, se_cmd_list) { - list_del(&se_cmd->se_cmd_list); - pr_debug("Waiting for se_cmd: %p t_state: %d, fabric state:" " %d\n", se_cmd, se_cmd->t_state, se_cmd->se_tfo->get_cmd_state(se_cmd)); + spin_lock_irqsave(&se_cmd->t_state_lock, flags); + tas = (se_cmd->transport_state & CMD_T_TAS); + spin_unlock_irqrestore(&se_cmd->t_state_lock, flags); + + if (!target_put_sess_cmd(se_cmd)) { + if (tas) + target_put_sess_cmd(se_cmd); + } + wait_for_completion(&se_cmd->cmd_wait_comp); pr_debug("After cmd_wait_comp: se_cmd: %p t_state: %d" " fabric state: %d\n", se_cmd, se_cmd->t_state, @@ -2565,53 +2611,75 @@ wait_for_completion(&lun->lun_ref_comp); } -/** - * transport_wait_for_tasks - wait for completion to occur - * @cmd: command to wait - * - * Called from frontend fabric context to wait for storage engine - * to pause and/or release frontend generated struct se_cmd. - */ -bool transport_wait_for_tasks(struct se_cmd *cmd) +static bool +__transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop, + bool *aborted, bool *tas, unsigned long *flags) + __releases(&cmd->t_state_lock) + __acquires(&cmd->t_state_lock) { - unsigned long flags; - spin_lock_irqsave(&cmd->t_state_lock, flags); + assert_spin_locked(&cmd->t_state_lock); + WARN_ON_ONCE(!irqs_disabled()); + + if (fabric_stop) + cmd->transport_state |= CMD_T_FABRIC_STOP; + + if (cmd->transport_state & CMD_T_ABORTED) + *aborted = true; + + if (cmd->transport_state & CMD_T_TAS) + *tas = true; + if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD) && - !(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)) { - spin_unlock_irqrestore(&cmd->t_state_lock, flags); + !(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)) return false; - } if (!(cmd->se_cmd_flags & SCF_SUPPORTED_SAM_OPCODE) && - !(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)) { - spin_unlock_irqrestore(&cmd->t_state_lock, flags); + !(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)) return false; - } - if (!(cmd->transport_state & CMD_T_ACTIVE)) { - spin_unlock_irqrestore(&cmd->t_state_lock, flags); + if (!(cmd->transport_state & CMD_T_ACTIVE)) + return false; + + if (fabric_stop && *aborted) return false; - } cmd->transport_state |= CMD_T_STOP; - pr_debug("wait_for_tasks: Stopping %p ITT: 0x%08llx i_state: %d, t_state: %d, CMD_T_STOP\n", - cmd, cmd->tag, cmd->se_tfo->get_cmd_state(cmd), cmd->t_state); + pr_debug("wait_for_tasks: Stopping %p ITT: 0x%08llx i_state: %d," + " t_state: %d, CMD_T_STOP\n", cmd, cmd->tag, + cmd->se_tfo->get_cmd_state(cmd), cmd->t_state); - spin_unlock_irqrestore(&cmd->t_state_lock, flags); + spin_unlock_irqrestore(&cmd->t_state_lock, *flags); wait_for_completion(&cmd->t_transport_stop_comp); - spin_lock_irqsave(&cmd->t_state_lock, flags); + spin_lock_irqsave(&cmd->t_state_lock, *flags); cmd->transport_state &= ~(CMD_T_ACTIVE | CMD_T_STOP); - pr_debug("wait_for_tasks: Stopped wait_for_completion(&cmd->t_transport_stop_comp) for ITT: 0x%08llx\n", - cmd->tag); + pr_debug("wait_for_tasks: Stopped wait_for_completion(&cmd->" + "t_transport_stop_comp) for ITT: 0x%08llx\n", cmd->tag); + + return true; +} + +/** + * transport_wait_for_tasks - wait for completion to occur + * @cmd: command to wait + * + * Called from frontend fabric context to wait for storage engine + * to pause and/or release frontend generated struct se_cmd. + */ +bool transport_wait_for_tasks(struct se_cmd *cmd) +{ + unsigned long flags; + bool ret, aborted = false, tas = false; + spin_lock_irqsave(&cmd->t_state_lock, flags); + ret = __transport_wait_for_tasks(cmd, false, &aborted, &tas, &flags); spin_unlock_irqrestore(&cmd->t_state_lock, flags); - return true; + return ret; } EXPORT_SYMBOL(transport_wait_for_tasks); @@ -2897,28 +2965,49 @@ } EXPORT_SYMBOL(transport_send_check_condition_and_sense); -int transport_check_aborted_status(struct se_cmd *cmd, int send_status) +static int __transport_check_aborted_status(struct se_cmd *cmd, int send_status) + __releases(&cmd->t_state_lock) + __acquires(&cmd->t_state_lock) { + assert_spin_locked(&cmd->t_state_lock); + WARN_ON_ONCE(!irqs_disabled()); + if (!(cmd->transport_state & CMD_T_ABORTED)) return 0; - /* * If cmd has been aborted but either no status is to be sent or it has * already been sent, just return */ - if (!send_status || !(cmd->se_cmd_flags & SCF_SEND_DELAYED_TAS)) + if (!send_status || !(cmd->se_cmd_flags & SCF_SEND_DELAYED_TAS)) { + if (send_status) + cmd->se_cmd_flags |= SCF_SEND_DELAYED_TAS; return 1; + } - pr_debug("Sending delayed SAM_STAT_TASK_ABORTED status for CDB: 0x%02x ITT: 0x%08llx\n", - cmd->t_task_cdb[0], cmd->tag); + pr_debug("Sending delayed SAM_STAT_TASK_ABORTED status for CDB:" + " 0x%02x ITT: 0x%08llx\n", cmd->t_task_cdb[0], cmd->tag); cmd->se_cmd_flags &= ~SCF_SEND_DELAYED_TAS; cmd->scsi_status = SAM_STAT_TASK_ABORTED; trace_target_cmd_complete(cmd); + + spin_unlock_irq(&cmd->t_state_lock); cmd->se_tfo->queue_status(cmd); + spin_lock_irq(&cmd->t_state_lock); return 1; } + +int transport_check_aborted_status(struct se_cmd *cmd, int send_status) +{ + int ret; + + spin_lock_irq(&cmd->t_state_lock); + ret = __transport_check_aborted_status(cmd, send_status); + spin_unlock_irq(&cmd->t_state_lock); + + return ret; +} EXPORT_SYMBOL(transport_check_aborted_status); void transport_send_task_abort(struct se_cmd *cmd) @@ -2940,11 +3029,17 @@ */ if (cmd->data_direction == DMA_TO_DEVICE) { if (cmd->se_tfo->write_pending_status(cmd) != 0) { - cmd->transport_state |= CMD_T_ABORTED; + spin_lock_irqsave(&cmd->t_state_lock, flags); + if (cmd->se_cmd_flags & SCF_SEND_DELAYED_TAS) { + spin_unlock_irqrestore(&cmd->t_state_lock, flags); + goto send_abort; + } cmd->se_cmd_flags |= SCF_SEND_DELAYED_TAS; + spin_unlock_irqrestore(&cmd->t_state_lock, flags); return; } } +send_abort: cmd->scsi_status = SAM_STAT_TASK_ABORTED; transport_lun_remove_cmd(cmd); @@ -2961,8 +3056,17 @@ struct se_cmd *cmd = container_of(work, struct se_cmd, work); struct se_device *dev = cmd->se_dev; struct se_tmr_req *tmr = cmd->se_tmr_req; + unsigned long flags; int ret; + spin_lock_irqsave(&cmd->t_state_lock, flags); + if (cmd->transport_state & CMD_T_ABORTED) { + tmr->response = TMR_FUNCTION_REJECTED; + spin_unlock_irqrestore(&cmd->t_state_lock, flags); + goto check_stop; + } + spin_unlock_irqrestore(&cmd->t_state_lock, flags); + switch (tmr->function) { case TMR_ABORT_TASK: core_tmr_abort_task(dev, tmr, cmd->se_sess); @@ -2995,9 +3099,17 @@ break; } + spin_lock_irqsave(&cmd->t_state_lock, flags); + if (cmd->transport_state & CMD_T_ABORTED) { + spin_unlock_irqrestore(&cmd->t_state_lock, flags); + goto check_stop; + } cmd->t_state = TRANSPORT_ISTATE_PROCESSING; + spin_unlock_irqrestore(&cmd->t_state_lock, flags); + cmd->se_tfo->queue_tm_rsp(cmd); +check_stop: transport_cmd_check_stop_to_fabric(cmd); } --- 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/thermal/step_wise.c +++ linux-raspi2-4.2.0/drivers/thermal/step_wise.c @@ -63,6 +63,19 @@ next_target = instance->target; dev_dbg(&cdev->device, "cur_state=%ld\n", cur_state); + if (!instance->initialized) { + if (throttle) { + next_target = (cur_state + 1) >= instance->upper ? + instance->upper : + ((cur_state + 1) < instance->lower ? + instance->lower : (cur_state + 1)); + } else { + next_target = THERMAL_NO_TARGET; + } + + return next_target; + } + switch (trend) { case THERMAL_TREND_RAISING: if (throttle) { @@ -149,7 +162,7 @@ dev_dbg(&instance->cdev->device, "old_target=%d, target=%d\n", old_target, (int)instance->target); - if (old_target == instance->target) + if (instance->initialized && old_target == instance->target) continue; /* Activate a passive thermal instance */ @@ -161,7 +174,7 @@ instance->target == THERMAL_NO_TARGET) update_passive_instance(tz, trip_type, -1); - + instance->initialized = true; instance->cdev->updated = false; /* cdev needs update */ } --- linux-raspi2-4.2.0.orig/drivers/thermal/thermal_core.c +++ linux-raspi2-4.2.0/drivers/thermal/thermal_core.c @@ -37,6 +37,7 @@ #include #include #include +#include #define CREATE_TRACE_POINTS #include @@ -59,6 +60,8 @@ static DEFINE_MUTEX(thermal_list_lock); static DEFINE_MUTEX(thermal_governor_lock); +static atomic_t in_suspend; + static struct thermal_governor *def_governor; static struct thermal_governor *__find_governor(const char *name) @@ -534,14 +537,31 @@ mutex_unlock(&tz->lock); trace_thermal_temperature(tz); - dev_dbg(&tz->device, "last_temperature=%d, current_temperature=%d\n", - tz->last_temperature, tz->temperature); + if (tz->last_temperature == THERMAL_TEMP_INVALID) + dev_dbg(&tz->device, "last_temperature N/A, current_temperature=%d\n", + tz->temperature); + else + dev_dbg(&tz->device, "last_temperature=%d, current_temperature=%d\n", + tz->last_temperature, tz->temperature); +} + +static void thermal_zone_device_reset(struct thermal_zone_device *tz) +{ + struct thermal_instance *pos; + + tz->temperature = THERMAL_TEMP_INVALID; + tz->passive = 0; + list_for_each_entry(pos, &tz->thermal_instances, tz_node) + pos->initialized = false; } void thermal_zone_device_update(struct thermal_zone_device *tz) { int count; + if (atomic_read(&in_suspend)) + return; + if (!tz->ops->get_temp) return; @@ -1276,6 +1296,7 @@ if (!result) { list_add_tail(&dev->tz_node, &tz->thermal_instances); list_add_tail(&dev->cdev_node, &cdev->thermal_instances); + atomic_set(&tz->need_update, 1); } mutex_unlock(&cdev->lock); mutex_unlock(&tz->lock); @@ -1385,6 +1406,7 @@ const struct thermal_cooling_device_ops *ops) { struct thermal_cooling_device *cdev; + struct thermal_zone_device *pos = NULL; int result; if (type && strlen(type) >= THERMAL_NAME_LENGTH) @@ -1429,6 +1451,12 @@ /* Update binding information for 'this' new cdev */ bind_cdev(cdev); + mutex_lock(&thermal_list_lock); + list_for_each_entry(pos, &thermal_tz_list, node) + if (atomic_cmpxchg(&pos->need_update, 1, 0)) + thermal_zone_device_update(pos); + mutex_unlock(&thermal_list_lock); + return cdev; } @@ -1761,6 +1789,8 @@ tz->trips = trips; tz->passive_delay = passive_delay; tz->polling_delay = polling_delay; + /* A new thermal zone needs to be updated anyway. */ + atomic_set(&tz->need_update, 1); dev_set_name(&tz->device, "thermal_zone%d", tz->id); result = device_register(&tz->device); @@ -1852,7 +1882,10 @@ if (!tz->ops->get_temp) thermal_zone_device_set_polling(tz, 0); - thermal_zone_device_update(tz); + thermal_zone_device_reset(tz); + /* Update the new thermal zone and mark it as already updated. */ + if (atomic_cmpxchg(&tz->need_update, 1, 0)) + thermal_zone_device_update(tz); return tz; @@ -2091,6 +2124,36 @@ thermal_gov_power_allocator_unregister(); } +static int thermal_pm_notify(struct notifier_block *nb, + unsigned long mode, void *_unused) +{ + struct thermal_zone_device *tz; + + switch (mode) { + case PM_HIBERNATION_PREPARE: + case PM_RESTORE_PREPARE: + case PM_SUSPEND_PREPARE: + atomic_set(&in_suspend, 1); + break; + case PM_POST_HIBERNATION: + case PM_POST_RESTORE: + case PM_POST_SUSPEND: + atomic_set(&in_suspend, 0); + list_for_each_entry(tz, &thermal_tz_list, node) { + thermal_zone_device_reset(tz); + thermal_zone_device_update(tz); + } + break; + default: + break; + } + return 0; +} + +static struct notifier_block thermal_pm_nb = { + .notifier_call = thermal_pm_notify, +}; + static int __init thermal_init(void) { int result; @@ -2111,6 +2174,11 @@ if (result) goto exit_netlink; + result = register_pm_notifier(&thermal_pm_nb); + if (result) + pr_warn("Thermal: Can not register suspend notifier, return %d\n", + result); + return 0; exit_netlink: @@ -2130,6 +2198,7 @@ static void __exit thermal_exit(void) { + unregister_pm_notifier(&thermal_pm_nb); of_thermal_destroy_zones(); genetlink_exit(); class_unregister(&thermal_class); --- linux-raspi2-4.2.0.orig/drivers/thermal/thermal_core.h +++ linux-raspi2-4.2.0/drivers/thermal/thermal_core.h @@ -41,6 +41,7 @@ struct thermal_zone_device *tz; struct thermal_cooling_device *cdev; int trip; + bool initialized; unsigned long upper; /* Highest cooling state for this trip point */ unsigned long lower; /* Lowest cooling state for this trip point */ unsigned long target; /* expected cooling state */ --- 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); } @@ -258,16 +258,13 @@ static void n_tty_check_unthrottle(struct tty_struct *tty) { - if (tty->driver->type == TTY_DRIVER_TYPE_PTY && - tty->link->ldisc->ops->write_wakeup == n_tty_write_wakeup) { + if (tty->driver->type == TTY_DRIVER_TYPE_PTY) { if (chars_in_buffer(tty) > TTY_THRESHOLD_UNTHROTTLE) return; if (!tty->count) return; n_tty_kick_worker(tty); - n_tty_write_wakeup(tty->link); - if (waitqueue_active(&tty->link->write_wait)) - wake_up_interruptible_poll(&tty->link->write_wait, POLLOUT); + tty_wakeup(tty->link); return; } @@ -343,8 +340,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 +1378,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 +1662,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 +1881,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); } /** @@ -2063,13 +2055,13 @@ size_t eol; size_t tail; int ret, found = 0; - bool eof_push = 0; /* N.B. avoid overrun if nr == 0 */ - n = min(*nr, smp_load_acquire(&ldata->canon_head) - ldata->read_tail); - if (!n) + if (!*nr) return 0; + n = min(*nr + 1, smp_load_acquire(&ldata->canon_head) - ldata->read_tail); + tail = ldata->read_tail & (N_TTY_BUF_SIZE - 1); size = min_t(size_t, tail + n, N_TTY_BUF_SIZE); @@ -2090,12 +2082,11 @@ n = eol - tail; if (n > N_TTY_BUF_SIZE) n += N_TTY_BUF_SIZE; - n += found; - c = n; + c = n + found; - if (found && !ldata->push && read_buf(ldata, eol) == __DISABLED_CHAR) { - n--; - eof_push = !n && ldata->read_tail != ldata->line_start; + if (!found || read_buf(ldata, eol) != __DISABLED_CHAR) { + c = min(*nr, c); + n = c; } n_tty_trace("%s: eol:%zu found:%d n:%zu c:%zu size:%zu more:%zu\n", @@ -2125,7 +2116,7 @@ ldata->push = 0; tty_audit_push(tty); } - return eof_push ? -EAGAIN : 0; + return 0; } extern ssize_t redirected_tty_write(struct file *, const char __user *, @@ -2295,10 +2286,7 @@ if (ldata->icanon && !L_EXTPROC(tty)) { retval = canon_copy_from_read_buf(tty, &b, &nr); - if (retval == -EAGAIN) { - retval = 0; - continue; - } else if (retval) + if (retval) break; } else { int uncopied; --- linux-raspi2-4.2.0.orig/drivers/tty/pty.c +++ linux-raspi2-4.2.0/drivers/tty/pty.c @@ -672,7 +672,14 @@ /* this is called once with whichever end is closed last */ static void pty_unix98_shutdown(struct tty_struct *tty) { - devpts_kill_index(tty->driver_data, tty->index); + struct inode *ptmx_inode; + + if (tty->driver->subtype == PTY_TYPE_MASTER) + ptmx_inode = tty->driver_data; + else + ptmx_inode = tty->link->driver_data; + devpts_kill_index(ptmx_inode, tty->index); + devpts_del_ref(ptmx_inode); } static const struct tty_operations ptm_unix98_ops = { @@ -764,6 +771,18 @@ set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */ tty->driver_data = inode; + /* + * In the case where all references to ptmx inode are dropped and we + * still have /dev/tty opened pointing to the master/slave pair (ptmx + * is closed/released before /dev/tty), we must make sure that the inode + * is still valid when we call the final pty_unix98_shutdown, thus we + * hold an additional reference to the ptmx inode. For the same /dev/tty + * last close case, we also need to make sure the super_block isn't + * destroyed (devpts instance unmounted), before /dev/tty is closed and + * on its release devpts_kill_index is called. + */ + devpts_add_ref(inode); + tty_add_file(tty, filp); slave_inode = devpts_pty_new(inode, --- 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 */ @@ -770,22 +778,16 @@ */ static unsigned int autoconfig_read_divisor_id(struct uart_8250_port *p) { - unsigned char old_dll, old_dlm, old_lcr; - unsigned int id; + unsigned char old_lcr; + unsigned int id, old_dl; old_lcr = serial_in(p, UART_LCR); serial_out(p, UART_LCR, UART_LCR_CONF_MODE_A); + old_dl = serial_dl_read(p); + serial_dl_write(p, 0); + id = serial_dl_read(p); + serial_dl_write(p, old_dl); - old_dll = serial_in(p, UART_DLL); - old_dlm = serial_in(p, UART_DLM); - - serial_out(p, UART_DLL, 0); - serial_out(p, UART_DLM, 0); - - id = serial_in(p, UART_DLL) | serial_in(p, UART_DLM) << 8; - - serial_out(p, UART_DLL, old_dll); - serial_out(p, UART_DLM, old_dlm); serial_out(p, UART_LCR, old_lcr); return id; @@ -3250,6 +3252,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 @@ -1380,6 +1380,9 @@ #define PCI_DEVICE_ID_INTEL_BSW_UART1 0x228a #define PCI_DEVICE_ID_INTEL_BSW_UART2 0x228c +#define PCI_DEVICE_ID_INTEL_BDW_UART1 0x9ce3 +#define PCI_DEVICE_ID_INTEL_BDW_UART2 0x9ce4 + #define BYT_PRV_CLK 0x800 #define BYT_PRV_CLK_EN (1 << 0) #define BYT_PRV_CLK_M_VAL_SHIFT 1 @@ -1458,11 +1461,13 @@ switch (pdev->device) { case PCI_DEVICE_ID_INTEL_BYT_UART1: case PCI_DEVICE_ID_INTEL_BSW_UART1: + case PCI_DEVICE_ID_INTEL_BDW_UART1: rx_param->src_id = 3; tx_param->dst_id = 2; break; case PCI_DEVICE_ID_INTEL_BYT_UART2: case PCI_DEVICE_ID_INTEL_BSW_UART2: + case PCI_DEVICE_ID_INTEL_BDW_UART2: rx_param->src_id = 5; tx_param->dst_id = 4; break; @@ -2016,6 +2021,13 @@ #define PCIE_VENDOR_ID_WCH 0x1c00 #define PCIE_DEVICE_ID_WCH_CH382_2S1P 0x3250 #define PCIE_DEVICE_ID_WCH_CH384_4S 0x3470 +#define PCIE_DEVICE_ID_WCH_CH382_2S 0x3253 + +#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 @@ -2164,6 +2176,20 @@ .subdevice = PCI_ANY_ID, .setup = byt_serial_setup, }, + { + .vendor = PCI_VENDOR_ID_INTEL, + .device = PCI_DEVICE_ID_INTEL_BDW_UART1, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = byt_serial_setup, + }, + { + .vendor = PCI_VENDOR_ID_INTEL, + .device = PCI_DEVICE_ID_INTEL_BDW_UART2, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = byt_serial_setup, + }, /* * ITE */ @@ -2331,27 +2357,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 */ @@ -2735,6 +2746,14 @@ .subdevice = PCI_ANY_ID, .setup = pci_wch_ch353_setup, }, + /* WCH CH382 2S card (16850 clone) */ + { + .vendor = PCIE_VENDOR_ID_WCH, + .device = PCIE_DEVICE_ID_WCH_CH382_2S, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_wch_ch38x_setup, + }, /* WCH CH382 2S1P card (16850 clone) */ { .vendor = PCIE_VENDOR_ID_WCH, @@ -3055,7 +3074,12 @@ pbn_fintek_4, pbn_fintek_8, pbn_fintek_12, + pbn_wch382_2, pbn_wch384_4, + pbn_pericom_PI7C9X7951, + pbn_pericom_PI7C9X7952, + pbn_pericom_PI7C9X7954, + pbn_pericom_PI7C9X7958, }; /* @@ -3881,7 +3905,13 @@ .base_baud = 115200, .first_offset = 0x40, }, - + [pbn_wch382_2] = { + .flags = FL_BASE0, + .num_ports = 2, + .base_baud = 115200, + .uart_offset = 8, + .first_offset = 0xC0, + }, [pbn_wch384_4] = { .flags = FL_BASE0, .num_ports = 4, @@ -3889,6 +3919,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 +5211,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, @@ -5579,6 +5655,16 @@ PCI_CLASS_COMMUNICATION_SERIAL << 8, 0xff0000, pbn_byt }, + /* Intel Broadwell */ + { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BDW_UART1, + PCI_ANY_ID, PCI_ANY_ID, + PCI_CLASS_COMMUNICATION_SERIAL << 8, 0xff0000, + pbn_byt }, + { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BDW_UART2, + PCI_ANY_ID, PCI_ANY_ID, + PCI_CLASS_COMMUNICATION_SERIAL << 8, 0xff0000, + pbn_byt }, + /* * Intel Penwell */ @@ -5638,6 +5724,10 @@ PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b0_bt_2_115200 }, + { PCIE_VENDOR_ID_WCH, PCIE_DEVICE_ID_WCH_CH382_2S, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, pbn_wch382_2 }, + { PCIE_VENDOR_ID_WCH, PCIE_DEVICE_ID_WCH_CH384_4S, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_wch384_4 }, --- 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 @@ -115,12 +115,16 @@ */ static int uniphier_serial_dl_read(struct uart_8250_port *up) { - return readl(up->port.membase + UNIPHIER_UART_DLR); + int offset = UNIPHIER_UART_DLR << up->port.regshift; + + return readl(up->port.membase + offset); } static void uniphier_serial_dl_write(struct uart_8250_port *up, int value) { - writel(value, up->port.membase + UNIPHIER_UART_DLR); + int offset = UNIPHIER_UART_DLR << up->port.regshift; + + writel(value, up->port.membase + offset); } static int uniphier_of_serial_setup(struct device *dev, struct uart_port *port, @@ -218,6 +222,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/omap-serial.c +++ linux-raspi2-4.2.0/drivers/tty/serial/omap-serial.c @@ -1341,7 +1341,7 @@ /* Enable or disable the rs485 support */ static int -serial_omap_config_rs485(struct uart_port *port, struct serial_rs485 *rs485conf) +serial_omap_config_rs485(struct uart_port *port, struct serial_rs485 *rs485) { struct uart_omap_port *up = to_uart_omap_port(port); unsigned int mode; @@ -1354,8 +1354,12 @@ up->ier = 0; serial_out(up, UART_IER, 0); + /* Clamp the delays to [0, 100ms] */ + rs485->delay_rts_before_send = min(rs485->delay_rts_before_send, 100U); + rs485->delay_rts_after_send = min(rs485->delay_rts_after_send, 100U); + /* store new config */ - port->rs485 = *rs485conf; + port->rs485 = *rs485; /* * Just as a precaution, only allow rs485 --- 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/sysrq.c +++ linux-raspi2-4.2.0/drivers/tty/sysrq.c @@ -133,6 +133,12 @@ { char *killer = NULL; + /* we need to release the RCU read lock here, + * otherwise we get an annoying + * 'BUG: sleeping function called from invalid context' + * complaint from the kernel before the panic. + */ + rcu_read_unlock(); panic_on_oops = 1; /* force panic */ wmb(); *killer = 1; --- 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_buffer.c +++ linux-raspi2-4.2.0/drivers/tty/tty_buffer.c @@ -442,7 +442,7 @@ count = disc->ops->receive_buf2(tty, p, f, count); else { count = min_t(int, count, tty->receive_room); - if (count) + if (count && disc->ops->receive_buf) disc->ops->receive_buf(tty, p, f, count); } head->read += count; --- 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); @@ -2635,6 +2662,28 @@ } /** + * tiocgetd - get line discipline + * @tty: tty device + * @p: pointer to user data + * + * Retrieves the line discipline id directly from the ldisc. + * + * Locking: waits for ldisc reference (in case the line discipline + * is changing or the tty is being hungup) + */ + +static int tiocgetd(struct tty_struct *tty, int __user *p) +{ + struct tty_ldisc *ld; + int ret; + + ld = tty_ldisc_ref_wait(tty); + ret = put_user(ld->ops->num, p); + tty_ldisc_deref(ld); + return ret; +} + +/** * send_break - performed time break * @tty: device to break on * @duration: timeout in mS @@ -2852,7 +2901,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: @@ -2860,7 +2909,7 @@ case TIOCGSID: return tiocgsid(tty, real_tty, p); case TIOCGETD: - return put_user(tty->ldisc->ops->num, (int __user *)p); + return tiocgetd(tty, p); case TIOCSETD: return tiocsetd(tty, p); case TIOCVHANGUP: --- 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/debug.c +++ linux-raspi2-4.2.0/drivers/usb/chipidea/debug.c @@ -316,8 +316,10 @@ if (role == CI_ROLE_END || role == ci->role) return -EINVAL; + disable_irq(ci->irq); ci_role_stop(ci); ret = ci_role_start(ci, role); + enable_irq(ci->irq); return ret ? ret : count; } --- linux-raspi2-4.2.0.orig/drivers/usb/chipidea/otg.c +++ linux-raspi2-4.2.0/drivers/usb/chipidea/otg.c @@ -118,7 +118,7 @@ int ci_hdrc_otg_init(struct ci_hdrc *ci) { INIT_WORK(&ci->work, ci_otg_work); - ci->wq = create_singlethread_workqueue("ci_otg"); + ci->wq = create_freezable_workqueue("ci_otg"); if (!ci->wq) { dev_err(ci->dev, "can't create workqueue\n"); return -ENODEV; --- 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/cdc-acm.c +++ linux-raspi2-4.2.0/drivers/usb/class/cdc-acm.c @@ -428,7 +428,8 @@ set_bit(rb->index, &acm->read_urbs_free); dev_dbg(&acm->data->dev, "%s - non-zero urb status: %d\n", __func__, status); - return; + if ((status != -ENOENT) || (urb->actual_length == 0)) + return; } usb_mark_last_busy(acm->dev); @@ -1113,6 +1114,9 @@ if (quirks == NO_UNION_NORMAL) { data_interface = usb_ifnum_to_if(usb_dev, 1); control_interface = usb_ifnum_to_if(usb_dev, 0); + /* we would crash */ + if (!data_interface || !control_interface) + return -ENODEV; goto skip_normal_probe; } @@ -1404,6 +1408,8 @@ usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress), NULL, acm->writesize, acm_write_bulk, snd); snd->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + if (quirks & SEND_ZERO_PACKET) + snd->urb->transfer_flags |= URB_ZERO_PACKET; snd->instance = acm; } @@ -1838,6 +1844,16 @@ }, #endif + /*Samsung phone in firmware update mode */ + { USB_DEVICE(0x04e8, 0x685d), + .driver_info = IGNORE_DEVICE, + }, + + /* Exclude Infineon Flash Loader utility */ + { USB_DEVICE(0x058b, 0x0041), + .driver_info = IGNORE_DEVICE, + }, + /* control interfaces without any protocol set */ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM, USB_CDC_PROTO_NONE) }, @@ -1856,6 +1872,10 @@ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM, USB_CDC_ACM_PROTO_AT_CDMA) }, + { USB_DEVICE(0x1519, 0x0452), /* Intel 7260 modem */ + .driver_info = SEND_ZERO_PACKET, + }, + { } }; --- linux-raspi2-4.2.0.orig/drivers/usb/class/cdc-acm.h +++ linux-raspi2-4.2.0/drivers/usb/class/cdc-acm.h @@ -134,3 +134,4 @@ #define IGNORE_DEVICE BIT(5) #define QUIRK_CONTROL_LINE_STATE BIT(6) #define CLEAR_HALT_CONDITIONS BIT(7) +#define SEND_ZERO_PACKET BIT(8) --- 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,16 +112,18 @@ 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, + "setting to 3\n", + USB_SS_MULT(desc->bmAttributes), cfgno, inum, asnum, ep->desc.bEndpointAddress); ep->ss_ep_comp.bmAttributes = 2; } 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/driver.c +++ linux-raspi2-4.2.0/drivers/usb/core/driver.c @@ -499,11 +499,15 @@ int usb_driver_claim_interface(struct usb_driver *driver, struct usb_interface *iface, void *priv) { - struct device *dev = &iface->dev; + struct device *dev; struct usb_device *udev; int retval = 0; int lpm_disable_error; + if (!iface) + return -ENODEV; + + dev = &iface->dev; if (dev->driver) return -EBUSY; --- 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 @@ -124,6 +124,10 @@ int usb_device_supports_lpm(struct usb_device *udev) { + /* Some devices have trouble with LPM */ + if (udev->quirks & USB_QUIRK_NO_LPM) + return 0; + /* USB 2.1 (and greater) devices indicate LPM support through * their USB 2.0 Extended Capabilities BOS descriptor. */ @@ -1031,10 +1035,20 @@ unsigned delay; /* Continue a partial initialization */ - if (type == HUB_INIT2) - goto init2; - if (type == HUB_INIT3) + if (type == HUB_INIT2 || type == HUB_INIT3) { + device_lock(hub->intfdev); + + /* Was the hub disconnected while we were waiting? */ + if (hub->disconnected) { + device_unlock(hub->intfdev); + kref_put(&hub->kref, hub_release); + return; + } + if (type == HUB_INIT2) + goto init2; goto init3; + } + kref_get(&hub->kref); /* The superspeed hub except for root hub has to use Hub Depth * value as an offset into the route string to locate the bits @@ -1232,6 +1246,7 @@ queue_delayed_work(system_power_efficient_wq, &hub->init_work, msecs_to_jiffies(delay)); + device_unlock(hub->intfdev); return; /* Continues at init3: below */ } else { msleep(delay); @@ -1253,6 +1268,11 @@ /* Allow autosuspend if it was suppressed */ if (type <= HUB_INIT3) usb_autopm_put_interface_async(to_usb_interface(hub->intfdev)); + + if (type == HUB_INIT2 || type == HUB_INIT3) + device_unlock(hub->intfdev); + + kref_put(&hub->kref, hub_release); } /* Implement the continuations for the delays above */ @@ -4223,7 +4243,7 @@ { struct usb_device *hdev = hub->hdev; struct usb_hcd *hcd = bus_to_hcd(hdev->bus); - int i, j, retval; + int retries, operations, retval, i; unsigned delay = HUB_SHORT_RESET_TIME; enum usb_device_speed oldspeed = udev->speed; const char *speed; @@ -4325,7 +4345,7 @@ * first 8 bytes of the device descriptor to get the ep0 maxpacket * value. */ - for (i = 0; i < GET_DESCRIPTOR_TRIES; (++i, msleep(100))) { + for (retries = 0; retries < GET_DESCRIPTOR_TRIES; (++retries, msleep(100))) { bool did_new_scheme = false; if (use_new_scheme(udev, retry_counter)) { @@ -4352,7 +4372,7 @@ * 255 is for WUSB devices, we actually need to use * 512 (WUSB1.0[4.8.1]). */ - for (j = 0; j < 3; ++j) { + for (operations = 0; operations < 3; ++operations) { buf->bMaxPacketSize0 = 0; r = usb_control_msg(udev, usb_rcvaddr0pipe(), USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, @@ -4372,7 +4392,13 @@ r = -EPROTO; break; } - if (r == 0) + /* + * Some devices time out if they are powered on + * when already connected. They need a second + * reset. But only on the first attempt, + * lest we get into a time out/reset loop + */ + if (r == 0 || (r == -ETIMEDOUT && retries == 0)) break; } udev->descriptor.bMaxPacketSize0 = @@ -4404,7 +4430,7 @@ * authorization will assign the final address. */ if (udev->wusb == 0) { - for (j = 0; j < SET_ADDRESS_TRIES; ++j) { + for (operations = 0; operations < SET_ADDRESS_TRIES; ++operations) { retval = hub_set_address(udev, devnum); if (retval >= 0) break; @@ -4499,6 +4525,8 @@ goto fail; } + usb_detect_quirks(udev); + if (udev->wusb == 0 && le16_to_cpu(udev->descriptor.bcdUSB) >= 0x0201) { retval = usb_get_bos_descriptor(udev); if (!retval) { @@ -4697,7 +4725,6 @@ if (status < 0) goto loop; - usb_detect_quirks(udev); if (udev->quirks & USB_QUIRK_DELAY_INIT) msleep(1000); @@ -4912,7 +4939,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 */ @@ -5313,9 +5340,6 @@ if (udev->usb2_hw_lpm_enabled == 1) usb_set_usb2_hardware_lpm(udev, 0); - bos = udev->bos; - udev->bos = NULL; - /* Disable LPM and LTM while we reset the device and reinstall the alt * settings. Device-initiated LPM settings, and system exit latency * settings are cleared when the device is reset, so we have to set @@ -5324,15 +5348,17 @@ ret = usb_unlocked_disable_lpm(udev); if (ret) { dev_err(&udev->dev, "%s Failed to disable LPM\n.", __func__); - goto re_enumerate; + goto re_enumerate_no_bos; } ret = usb_disable_ltm(udev); if (ret) { dev_err(&udev->dev, "%s Failed to disable LTM\n.", __func__); - goto re_enumerate; + goto re_enumerate_no_bos; } + bos = udev->bos; + for (i = 0; i < SET_CONFIG_TRIES; ++i) { /* ep0 maxpacket size may change; let the HCD know about it. @@ -5424,15 +5450,19 @@ usb_set_usb2_hardware_lpm(udev, 1); usb_unlocked_enable_lpm(udev); usb_enable_ltm(udev); - usb_release_bos_descriptor(udev); - udev->bos = bos; + /* release the new BOS descriptor allocated by hub_port_init() */ + if (udev->bos != bos) { + usb_release_bos_descriptor(udev); + udev->bos = bos; + } return 0; re_enumerate: - /* LPM state doesn't matter when we're about to destroy the device. */ - hub_port_logical_disconnect(parent_hub, port1); usb_release_bos_descriptor(udev); udev->bos = bos; +re_enumerate_no_bos: + /* LPM state doesn't matter when we're about to destroy the device. */ + hub_port_logical_disconnect(parent_hub, port1); return -ENODEV; } --- 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 }, @@ -186,6 +199,12 @@ { USB_DEVICE(0x1a0a, 0x0200), .driver_info = USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL }, + /* Blackmagic Design Intensity Shuttle */ + { USB_DEVICE(0x1edb, 0xbd3b), .driver_info = USB_QUIRK_NO_LPM }, + + /* Blackmagic Design UltraStudio SDI */ + { USB_DEVICE(0x1edb, 0xbd4f), .driver_info = USB_QUIRK_NO_LPM }, + { } /* terminating entry must be last */ }; --- 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; @@ -827,7 +848,6 @@ unsigned pullups_connected:1; unsigned resize_fifos:1; unsigned setup_packet_pending:1; - unsigned start_config_issued:1; unsigned three_stage_setup:1; unsigned usb3_lpm_capable:1; @@ -841,6 +861,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 @@ -545,7 +545,6 @@ int ret; u32 reg; - dwc->start_config_issued = false; cfg = le16_to_cpu(ctrl->wValue); switch (state) { @@ -727,10 +726,6 @@ dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_ISOCH_DELAY"); ret = dwc3_ep0_set_isoch_delay(dwc, ctrl); break; - case USB_REQ_SET_INTERFACE: - dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_INTERFACE"); - dwc->start_config_issued = false; - /* Fall through */ default: dwc3_trace(trace_dwc3_ep0, "Forwarding to gadget driver"); ret = dwc3_ep0_delegate_req(dwc, ctrl); @@ -820,6 +815,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 +941,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 @@ -388,24 +388,66 @@ dep->trb_pool_dma = 0; } +static int dwc3_gadget_set_xfer_resource(struct dwc3 *dwc, struct dwc3_ep *dep); + +/** + * dwc3_gadget_start_config - Configure EP resources + * @dwc: pointer to our controller context structure + * @dep: endpoint that is being enabled + * + * The assignment of transfer resources cannot perfectly follow the + * data book due to the fact that the controller driver does not have + * all knowledge of the configuration in advance. It is given this + * information piecemeal by the composite gadget framework after every + * SET_CONFIGURATION and SET_INTERFACE. Trying to follow the databook + * programming model in this scenario can cause errors. For two + * reasons: + * + * 1) The databook says to do DEPSTARTCFG for every SET_CONFIGURATION + * and SET_INTERFACE (8.1.5). This is incorrect in the scenario of + * multiple interfaces. + * + * 2) The databook does not mention doing more DEPXFERCFG for new + * endpoint on alt setting (8.1.6). + * + * The following simplified method is used instead: + * + * All hardware endpoints can be assigned a transfer resource and this + * setting will stay persistent until either a core reset or + * hibernation. So whenever we do a DEPSTARTCFG(0) we can go ahead and + * do DEPXFERCFG for every hardware endpoint as well. We are + * guaranteed that there are as many transfer resources as endpoints. + * + * This function is called for each endpoint when it is being enabled + * but is triggered only when called for EP0-out, which always happens + * first, and which should only happen in one of the above conditions. + */ static int dwc3_gadget_start_config(struct dwc3 *dwc, struct dwc3_ep *dep) { struct dwc3_gadget_ep_cmd_params params; u32 cmd; + int i; + int ret; + + if (dep->number) + return 0; memset(¶ms, 0x00, sizeof(params)); + cmd = DWC3_DEPCMD_DEPSTARTCFG; - if (dep->number != 1) { - cmd = DWC3_DEPCMD_DEPSTARTCFG; - /* XferRscIdx == 0 for ep0 and 2 for the remaining */ - if (dep->number > 1) { - if (dwc->start_config_issued) - return 0; - dwc->start_config_issued = true; - cmd |= DWC3_DEPCMD_PARAM(2); - } + ret = dwc3_send_gadget_ep_cmd(dwc, 0, cmd, ¶ms); + if (ret) + return ret; + + for (i = 0; i < DWC3_ENDPOINTS_NUM; i++) { + struct dwc3_ep *dep = dwc->eps[i]; - return dwc3_send_gadget_ep_cmd(dwc, 0, cmd, ¶ms); + if (!dep) + continue; + + ret = dwc3_gadget_set_xfer_resource(dwc, dep); + if (ret) + return ret; } return 0; @@ -519,10 +561,6 @@ struct dwc3_trb *trb_st_hw; struct dwc3_trb *trb_link; - ret = dwc3_gadget_set_xfer_resource(dwc, dep); - if (ret) - return ret; - dep->endpoint.desc = desc; dep->comp_desc = comp_desc; dep->type = usb_endpoint_type(desc); @@ -1589,8 +1627,6 @@ } dwc3_writel(dwc->regs, DWC3_DCFG, reg); - dwc->start_config_issued = false; - /* Start with SuperSpeed Default */ dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512); @@ -1859,27 +1895,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)) { @@ -2162,7 +2203,6 @@ dwc3_writel(dwc->regs, DWC3_DCTL, reg); dwc3_disconnect_gadget(dwc); - dwc->start_config_issued = false; dwc->gadget.speed = USB_SPEED_UNKNOWN; dwc->setup_packet_pending = false; @@ -2213,7 +2253,6 @@ dwc3_stop_active_transfers(dwc); dwc3_clear_stall_all_ep(dwc); - dwc->start_config_issued = false; /* Reset device address to zero */ reg = dwc3_readl(dwc->regs, DWC3_DCFG); @@ -2709,12 +2748,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/gadget/udc/pxa27x_udc.c +++ linux-raspi2-4.2.0/drivers/usb/gadget/udc/pxa27x_udc.c @@ -2535,6 +2535,9 @@ udc->pullup_resume = udc->pullup_on; dplus_pullup(udc, 0); + if (udc->driver) + udc->driver->disconnect(&udc->gadget); + return 0; } --- 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/whci/qset.c +++ linux-raspi2-4.2.0/drivers/usb/host/whci/qset.c @@ -377,6 +377,10 @@ if (std->pl_virt == NULL) return -ENOMEM; std->dma_addr = dma_map_single(whc->wusbhc.dev, std->pl_virt, pl_len, DMA_TO_DEVICE); + if (dma_mapping_error(whc->wusbhc.dev, std->dma_addr)) { + kfree(std->pl_virt); + return -EFAULT; + } for (p = 0; p < std->num_pointers; p++) { std->pl_virt[p].buf_ptr = cpu_to_le64(dma_addr); --- linux-raspi2-4.2.0.orig/drivers/usb/host/xhci-hub.c +++ linux-raspi2-4.2.0/drivers/usb/host/xhci-hub.c @@ -616,8 +616,30 @@ if ((raw_port_status & PORT_RESET) || !(raw_port_status & PORT_PE)) return 0xffffffff; - if (time_after_eq(jiffies, - bus_state->resume_done[wIndex])) { + /* did port event handler already start resume timing? */ + if (!bus_state->resume_done[wIndex]) { + /* If not, maybe we are in a host initated resume? */ + if (test_bit(wIndex, &bus_state->resuming_ports)) { + /* Host initated resume doesn't time the resume + * signalling using resume_done[]. + * It manually sets RESUME state, sleeps 20ms + * and sets U0 state. This should probably be + * changed, but not right now. + */ + } else { + /* port resume was discovered now and here, + * start resume timing + */ + unsigned long timeout = jiffies + + msecs_to_jiffies(USB_RESUME_TIMEOUT); + + set_bit(wIndex, &bus_state->resuming_ports); + bus_state->resume_done[wIndex] = timeout; + mod_timer(&hcd->rh_timer, timeout); + } + /* Has resume been signalled for USB_RESUME_TIME yet? */ + } else if (time_after_eq(jiffies, + bus_state->resume_done[wIndex])) { int time_left; xhci_dbg(xhci, "Resume USB2 port %d\n", @@ -658,19 +680,35 @@ } else { /* * The resume has been signaling for less than - * 20ms. Report the port status as SUSPEND, - * let the usbcore check port status again - * and clear resume signaling later. + * USB_RESUME_TIME. Report the port status as SUSPEND, + * let the usbcore check port status again and clear + * resume signaling later. */ status |= USB_PORT_STAT_SUSPEND; } } - if ((raw_port_status & PORT_PLS_MASK) == XDEV_U0 - && (raw_port_status & PORT_POWER) - && (bus_state->suspended_ports & (1 << wIndex))) { - bus_state->suspended_ports &= ~(1 << wIndex); - if (hcd->speed != HCD_USB3) - bus_state->port_c_suspend |= 1 << wIndex; + /* + * Clear stale usb2 resume signalling variables in case port changed + * state during resume signalling. For example on error + */ + if ((bus_state->resume_done[wIndex] || + test_bit(wIndex, &bus_state->resuming_ports)) && + (raw_port_status & PORT_PLS_MASK) != XDEV_U3 && + (raw_port_status & PORT_PLS_MASK) != XDEV_RESUME) { + bus_state->resume_done[wIndex] = 0; + clear_bit(wIndex, &bus_state->resuming_ports); + } + + + if ((raw_port_status & PORT_PLS_MASK) == XDEV_U0 && + (raw_port_status & PORT_POWER)) { + if (bus_state->suspended_ports & (1 << wIndex)) { + bus_state->suspended_ports &= ~(1 << wIndex); + if (hcd->speed != HCD_USB3) + bus_state->port_c_suspend |= 1 << wIndex; + } + bus_state->resume_done[wIndex] = 0; + clear_bit(wIndex, &bus_state->resuming_ports); } if (raw_port_status & PORT_CONNECT) { status |= USB_PORT_STAT_CONNECTION; @@ -995,6 +1033,7 @@ if ((temp & PORT_PE) == 0) goto error; + set_bit(wIndex, &bus_state->resuming_ports); xhci_set_link_state(xhci, port_array, wIndex, XDEV_RESUME); spin_unlock_irqrestore(&xhci->lock, flags); @@ -1002,6 +1041,7 @@ spin_lock_irqsave(&xhci->lock, flags); xhci_set_link_state(xhci, port_array, wIndex, XDEV_U0); + clear_bit(wIndex, &bus_state->resuming_ports); } bus_state->port_c_suspend |= 1 << wIndex; --- 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 @@ -28,7 +28,9 @@ #include "xhci.h" #include "xhci-trace.h" -#define PORT2_SSIC_CONFIG_REG2 0x883c +#define SSIC_PORT_NUM 2 +#define SSIC_PORT_CFG2 0x880c +#define SSIC_PORT_CFG2_OFFSET 0x30 #define PROG_DONE (1 << 30) #define SSIC_PORT_UNUSED (1 << 31) @@ -45,6 +47,7 @@ #define PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI 0x22b5 #define PCI_DEVICE_ID_INTEL_SUNRISEPOINT_H_XHCI 0xa12f #define PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_XHCI 0x9d2f +#define PCI_DEVICE_ID_INTEL_BROXTON_M_XHCI 0x0aa8 static const char hcd_name[] = "xhci_hcd"; @@ -147,13 +150,19 @@ 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 || pdev->device == PCI_DEVICE_ID_INTEL_SUNRISEPOINT_H_XHCI || - pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI)) { + pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI || + pdev->device == PCI_DEVICE_ID_INTEL_BROXTON_M_XHCI)) { xhci->quirks |= XHCI_PME_STUCK_QUIRK; } + if (pdev->vendor == PCI_VENDOR_ID_INTEL && + pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI) { + xhci->quirks |= XHCI_SSIC_PORT_UNUSED; + } if (pdev->vendor == PCI_VENDOR_ID_ETRON && pdev->device == PCI_DEVICE_ID_EJ168) { xhci->quirks |= XHCI_RESET_ON_RESUME; @@ -180,51 +189,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) { @@ -232,10 +196,14 @@ 0xb7, 0x0c, 0x34, 0xac, 0x01, 0xe9, 0xbf, 0x45, 0xb7, 0xe6, 0x2b, 0x34, 0xec, 0x93, 0x1e, 0x23, }; - acpi_evaluate_dsm(ACPI_HANDLE(&dev->dev), intel_dsm_uuid, 3, 1, NULL); + union acpi_object *obj; + + obj = acpi_evaluate_dsm(ACPI_HANDLE(&dev->dev), intel_dsm_uuid, 3, 1, + NULL); + ACPI_FREE(obj); } #else - static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { } +static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { } #endif /* CONFIG_ACPI */ /* called during probe() after chip reset completes */ @@ -345,10 +313,65 @@ } #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. + */ +static void xhci_ssic_port_unused_quirk(struct usb_hcd *hcd, bool suspend) +{ + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + u32 val; + void __iomem *reg; + int i; + + for (i = 0; i < SSIC_PORT_NUM; i++) { + reg = (void __iomem *) xhci->cap_regs + + SSIC_PORT_CFG2 + + i * SSIC_PORT_CFG2_OFFSET; + + /* 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); + } +} + +/* + * 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) +{ + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + void __iomem *reg; + u32 val; + + 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); struct pci_dev *pdev = to_pci_dev(hcd->self.controller); + int ret; /* * Systems with the TI redriver that loses port status change events @@ -358,9 +381,16 @@ pdev->no_d3cold = true; if (xhci->quirks & XHCI_PME_STUCK_QUIRK) - xhci_pme_quirk(hcd, true); + xhci_pme_quirk(hcd); + + if (xhci->quirks & XHCI_SSIC_PORT_UNUSED) + xhci_ssic_port_unused_quirk(hcd, true); - return xhci_suspend(xhci, do_wakeup); + ret = xhci_suspend(xhci, do_wakeup); + if (ret && (xhci->quirks & XHCI_SSIC_PORT_UNUSED)) + xhci_ssic_port_unused_quirk(hcd, false); + + return ret; } static int xhci_pci_resume(struct usb_hcd *hcd, bool hibernated) @@ -390,8 +420,11 @@ if (pdev->vendor == PCI_VENDOR_ID_INTEL) usb_enable_intel_xhci_ports(pdev); + if (xhci->quirks & XHCI_SSIC_PORT_UNUSED) + xhci_ssic_port_unused_quirk(hcd, false); + if (xhci->quirks & XHCI_PME_STUCK_QUIRK) - xhci_pme_quirk(hcd, false); + xhci_pme_quirk(hcd); retval = xhci_resume(xhci, hibernated); return retval; --- 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; @@ -1574,7 +1583,8 @@ */ bogus_port_status = true; goto cleanup; - } else { + } else if (!test_bit(faked_port_index, + &bus_state->resuming_ports)) { xhci_dbg(xhci, "resume HS port %d\n", port_id); bus_state->resume_done[faked_port_index] = jiffies + msecs_to_jiffies(USB_RESUME_TIMEOUT); @@ -2230,6 +2240,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 +2374,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 +2514,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 +2560,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 +3061,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 +3081,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 +3131,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 +3149,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 +3219,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 +3237,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 +3270,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 +3278,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 +3313,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 +3330,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 +3376,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 +3443,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; @@ -1539,7 +1549,9 @@ xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, "HW died, freeing TD."); urb_priv = urb->hcpriv; - for (i = urb_priv->td_cnt; i < urb_priv->length; i++) { + for (i = urb_priv->td_cnt; + i < urb_priv->length && xhci->devs[urb->dev->slot_id]; + i++) { td = urb_priv->td[i]; if (!list_empty(&td->td_list)) list_del_init(&td->td_list); @@ -3788,6 +3800,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); @@ -4769,8 +4784,16 @@ ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG); slot_ctx = xhci_get_slot_ctx(xhci, config_cmd->in_ctx); slot_ctx->dev_info |= cpu_to_le32(DEV_HUB); + /* + * refer to section 6.2.2: MTT should be 0 for full speed hub, + * but it may be already set to 1 when setup an xHCI virtual + * device, so clear it anyway. + */ if (tt->multi) slot_ctx->dev_info |= cpu_to_le32(DEV_MTT); + else if (hdev->speed == USB_SPEED_FULL) + slot_ctx->dev_info &= cpu_to_le32(~DEV_MTT); + if (xhci->hci_version > 0x95) { xhci_dbg(xhci, "xHCI version %x needs hub " "TT think time and number of ports\n", @@ -5025,6 +5048,10 @@ BUILD_BUG_ON(sizeof(struct xhci_intr_reg) != 8*32/8); /* xhci_run_regs has eight fields and embeds 128 xhci_intr_regs */ BUILD_BUG_ON(sizeof(struct xhci_run_regs) != (8+8*128)*32/8); + + if (usb_disabled()) + return -ENODEV; + return 0; } --- linux-raspi2-4.2.0.orig/drivers/usb/host/xhci.h +++ linux-raspi2-4.2.0/drivers/usb/host/xhci.h @@ -1568,6 +1568,7 @@ /* For controllers with a broken beyond repair streams implementation */ #define XHCI_BROKEN_STREAMS (1 << 19) #define XHCI_PME_STUCK_QUIRK (1 << 20) +#define XHCI_SSIC_PORT_UNUSED (1 << 22) unsigned int num_active_eps; unsigned int limit_active_eps; /* There are two roothubs to keep track of bus suspend info for */ --- 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/misc/iowarrior.c +++ linux-raspi2-4.2.0/drivers/usb/misc/iowarrior.c @@ -787,6 +787,12 @@ iface_desc = interface->cur_altsetting; dev->product_id = le16_to_cpu(udev->descriptor.idProduct); + if (iface_desc->desc.bNumEndpoints < 1) { + dev_err(&interface->dev, "Invalid number of endpoints\n"); + retval = -EINVAL; + goto error; + } + /* set up the endpoint information */ for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { endpoint = &iface_desc->endpoint[i].desc; --- linux-raspi2-4.2.0.orig/drivers/usb/musb/Kconfig +++ linux-raspi2-4.2.0/drivers/usb/musb/Kconfig @@ -147,7 +147,7 @@ config USB_TI_CPPI41_DMA bool 'TI CPPI 4.1 (AM335x)' - depends on ARCH_OMAP + depends on ARCH_OMAP && DMADEVICES select TI_CPPI41 config USB_TUSB_OMAP_DMA --- 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/renesas_usbhs/fifo.c +++ linux-raspi2-4.2.0/drivers/usb/renesas_usbhs/fifo.c @@ -190,7 +190,8 @@ goto __usbhs_pkt_handler_end; } - ret = func(pkt, &is_done); + if (likely(func)) + ret = func(pkt, &is_done); if (is_done) __usbhsf_pkt_del(pkt); @@ -889,6 +890,7 @@ pkt->trans = len; + usbhsf_tx_irq_ctrl(pipe, 0); INIT_WORK(&pkt->work, xfer_work); schedule_work(&pkt->work); --- linux-raspi2-4.2.0.orig/drivers/usb/renesas_usbhs/mod_gadget.c +++ linux-raspi2-4.2.0/drivers/usb/renesas_usbhs/mod_gadget.c @@ -154,10 +154,14 @@ struct usbhs_pipe *pipe = pkt->pipe; struct usbhsg_uep *uep = usbhsg_pipe_to_uep(pipe); struct usbhsg_request *ureq = usbhsg_pkt_to_ureq(pkt); + unsigned long flags; ureq->req.actual = pkt->actual; - usbhsg_queue_pop(uep, ureq, 0); + usbhs_lock(priv, flags); + if (uep) + __usbhsg_queue_pop(uep, ureq, 0); + usbhs_unlock(priv, flags); } static void usbhsg_queue_push(struct usbhsg_uep *uep, --- linux-raspi2-4.2.0.orig/drivers/usb/serial/cp210x.c +++ linux-raspi2-4.2.0/drivers/usb/serial/cp210x.c @@ -98,6 +98,7 @@ { USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */ { USB_DEVICE(0x10C4, 0x81AD) }, /* INSYS USB Modem */ { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */ + { USB_DEVICE(0x10C4, 0x81D7) }, /* IAI Corp. RCB-CV-USB USB to RS485 Adaptor */ { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */ { USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */ { USB_DEVICE(0x10C4, 0x81E8) }, /* Zephyr Bioharness */ @@ -132,7 +133,6 @@ { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */ - { USB_DEVICE(0x10C4, 0xEA80) }, /* Silicon Labs factory default */ { USB_DEVICE(0x10C4, 0xEA71) }, /* Infinity GPS-MIC-1 Radio Monophone */ { USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */ { USB_DEVICE(0x10C4, 0xF002) }, /* Elan Digital Systems USBwave12 */ @@ -161,6 +161,11 @@ { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */ { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */ { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */ + { USB_DEVICE(0x18EF, 0xE025) }, /* ELV Marble Sound Board 1 */ + { USB_DEVICE(0x1901, 0x0190) }, /* GE B850 CP2105 Recorder interface */ + { USB_DEVICE(0x1901, 0x0193) }, /* GE B650 CP2104 PMC interface */ + { USB_DEVICE(0x1901, 0x0194) }, /* GE Healthcare Remote Alarm Box */ + { USB_DEVICE(0x19CF, 0x3000) }, /* Parrot NMEA GPS Flight Recorder */ { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */ { USB_DEVICE(0x1B1C, 0x1C00) }, /* Corsair USB Dongle */ { USB_DEVICE(0x1BA4, 0x0002) }, /* Silicon Labs 358x factory default */ --- linux-raspi2-4.2.0.orig/drivers/usb/serial/cypress_m8.c +++ linux-raspi2-4.2.0/drivers/usb/serial/cypress_m8.c @@ -447,6 +447,11 @@ struct usb_serial *serial = port->serial; struct cypress_private *priv; + if (!port->interrupt_out_urb || !port->interrupt_in_urb) { + dev_err(&port->dev, "required endpoint is missing\n"); + return -ENODEV; + } + priv = kzalloc(sizeof(struct cypress_private), GFP_KERNEL); if (!priv) return -ENOMEM; @@ -606,12 +611,6 @@ cypress_set_termios(tty, port, &priv->tmp_termios); /* setup the port and start reading from the device */ - if (!port->interrupt_in_urb) { - dev_err(&port->dev, "%s - interrupt_in_urb is empty!\n", - __func__); - return -1; - } - usb_fill_int_urb(port->interrupt_in_urb, serial->dev, usb_rcvintpipe(serial->dev, port->interrupt_in_endpointAddress), port->interrupt_in_urb->transfer_buffer, --- linux-raspi2-4.2.0.orig/drivers/usb/serial/digi_acceleport.c +++ linux-raspi2-4.2.0/drivers/usb/serial/digi_acceleport.c @@ -1251,8 +1251,27 @@ static int digi_startup(struct usb_serial *serial) { + struct device *dev = &serial->interface->dev; struct digi_serial *serial_priv; int ret; + int i; + + /* check whether the device has the expected number of endpoints */ + if (serial->num_port_pointers < serial->type->num_ports + 1) { + dev_err(dev, "OOB endpoints missing\n"); + return -ENODEV; + } + + for (i = 0; i < serial->type->num_ports + 1 ; i++) { + if (!serial->port[i]->read_urb) { + dev_err(dev, "bulk-in endpoint missing\n"); + return -ENODEV; + } + if (!serial->port[i]->write_urb) { + dev_err(dev, "bulk-out endpoint missing\n"); + return -ENODEV; + } + } serial_priv = kzalloc(sizeof(*serial_priv), GFP_KERNEL); if (!serial_priv) --- 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: */ @@ -820,6 +824,7 @@ { USB_DEVICE(FTDI_VID, FTDI_TURTELIZER_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) }, + { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_SCU18) }, { USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) }, /* Papouch devices based on FTDI chip */ @@ -999,6 +1004,10 @@ { USB_DEVICE(FTDI_VID, CHETCO_SEASMART_DISPLAY_PID) }, { USB_DEVICE(FTDI_VID, CHETCO_SEASMART_LITE_PID) }, { USB_DEVICE(FTDI_VID, CHETCO_SEASMART_ANALOG_PID) }, + /* ICP DAS I-756xU devices */ + { USB_DEVICE(ICPDAS_VID, ICPDAS_I7560U_PID) }, + { USB_DEVICE(ICPDAS_VID, ICPDAS_I7561U_PID) }, + { USB_DEVICE(ICPDAS_VID, ICPDAS_I7563U_PID) }, { } /* Terminating entry */ }; --- 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 **/ @@ -607,6 +615,7 @@ */ #define RATOC_VENDOR_ID 0x0584 #define RATOC_PRODUCT_ID_USB60F 0xb020 +#define RATOC_PRODUCT_ID_SCU18 0xb03a /* * Infineon Technologies @@ -863,6 +872,14 @@ #define NOVITUS_BONO_E_PID 0x6010 /* + * ICPDAS I-756*U devices + */ +#define ICPDAS_VID 0x1b5c +#define ICPDAS_I7560U_PID 0x0103 +#define ICPDAS_I7561U_PID 0x0104 +#define ICPDAS_I7563U_PID 0x0105 + +/* * RT Systems programming cables for various ham radios */ #define RTSYSTEMS_VID 0x2100 /* Vendor ID */ --- linux-raspi2-4.2.0.orig/drivers/usb/serial/ipaq.c +++ linux-raspi2-4.2.0/drivers/usb/serial/ipaq.c @@ -531,7 +531,8 @@ * through. Since this has a reasonably high failure rate, we retry * several times. */ - while (retries--) { + while (retries) { + retries--; result = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), 0x22, 0x21, 0x1, 0, NULL, 0, 100); --- linux-raspi2-4.2.0.orig/drivers/usb/serial/mct_u232.c +++ linux-raspi2-4.2.0/drivers/usb/serial/mct_u232.c @@ -376,14 +376,21 @@ static int mct_u232_port_probe(struct usb_serial_port *port) { + struct usb_serial *serial = port->serial; struct mct_u232_private *priv; + /* check first to simplify error handling */ + if (!serial->port[1] || !serial->port[1]->interrupt_in_urb) { + dev_err(&port->dev, "expected endpoint missing\n"); + return -ENODEV; + } + priv = kzalloc(sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; /* Use second interrupt-in endpoint for reading. */ - priv->read_urb = port->serial->port[1]->interrupt_in_urb; + priv->read_urb = serial->port[1]->interrupt_in_urb; priv->read_urb->context = port; spin_lock_init(&priv->lock); --- 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 @@ -270,6 +271,9 @@ #define TELIT_PRODUCT_CC864_SINGLE 0x1006 #define TELIT_PRODUCT_DE910_DUAL 0x1010 #define TELIT_PRODUCT_UE910_V2 0x1012 +#define TELIT_PRODUCT_LE922_USBCFG0 0x1042 +#define TELIT_PRODUCT_LE922_USBCFG3 0x1043 +#define TELIT_PRODUCT_LE922_USBCFG5 0x1045 #define TELIT_PRODUCT_LE920 0x1200 #define TELIT_PRODUCT_LE910 0x1201 @@ -278,6 +282,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 @@ -311,6 +319,7 @@ #define TOSHIBA_PRODUCT_G450 0x0d45 #define ALINK_VENDOR_ID 0x1e0e +#define SIMCOM_PRODUCT_SIM7100E 0x9001 /* Yes, ALINK_VENDOR_ID */ #define ALINK_PRODUCT_PH300 0x9100 #define ALINK_PRODUCT_3GU 0x9200 @@ -353,6 +362,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 +528,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 +559,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), }; @@ -585,6 +612,10 @@ .reserved = BIT(3) | BIT(4), }; +static const struct option_blacklist_info simcom_sim7100e_blacklist = { + .reserved = BIT(5) | BIT(6), +}; + static const struct option_blacklist_info telit_le910_blacklist = { .sendsetup = BIT(0), .reserved = BIT(1) | BIT(2), @@ -600,6 +631,16 @@ .reserved = BIT(8) | BIT(10) | BIT(11), }; +static const struct option_blacklist_info telit_le922_blacklist_usbcfg0 = { + .sendsetup = BIT(2), + .reserved = BIT(0) | BIT(1) | BIT(3), +}; + +static const struct option_blacklist_info telit_le922_blacklist_usbcfg3 = { + .sendsetup = BIT(0), + .reserved = BIT(1) | BIT(2) | BIT(3), +}; + static const struct usb_device_id option_ids[] = { { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, @@ -1044,6 +1085,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) }, @@ -1094,6 +1136,8 @@ { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC650) }, { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */ + { USB_DEVICE_AND_INTERFACE_INFO(QUALCOMM_VENDOR_ID, 0x6001, 0xff, 0xff, 0xff), /* 4G LTE usb-modem U901 */ + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ @@ -1101,6 +1145,8 @@ .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC73xx */ { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x9041, 0xff), .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC7305/MC7355 */ + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9003), /* Quectel UC20 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003), @@ -1148,6 +1194,12 @@ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UE910_V2) }, + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE922_USBCFG0), + .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg0 }, + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE922_USBCFG3), + .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg3 }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE922_USBCFG5, 0xff), + .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg0 }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910), .driver_info = (kernel_ulong_t)&telit_le910_blacklist }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920), @@ -1591,6 +1643,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) }, @@ -1609,6 +1669,8 @@ { USB_DEVICE(ALINK_VENDOR_ID, 0x9000) }, { USB_DEVICE(ALINK_VENDOR_ID, ALINK_PRODUCT_PH300) }, { USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) }, + { USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E), + .driver_info = (kernel_ulong_t)&simcom_sim7100e_blacklist }, { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), .driver_info = (kernel_ulong_t)&alcatel_x200_blacklist }, @@ -1629,6 +1691,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) }, @@ -1656,7 +1721,7 @@ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_P) }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, - { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX) }, + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX, 0xff) }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLXX), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, @@ -1765,6 +1830,8 @@ { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d02, 0xff, 0x00, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x02, 0x01) }, { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x00, 0x00) }, + { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e19, 0xff), /* D-Link DWM-221 B1 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */ { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */ { USB_DEVICE_INTERFACE_CLASS(0x2020, 0x4000, 0xff) }, /* OLICARD300 - MT6225 */ --- 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,12 +155,17 @@ {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 */ + {DEVICE_SWI(0x1199, 0x9071)}, /* Sierra Wireless MC74xx */ + {DEVICE_SWI(0x1199, 0x9078)}, /* Sierra Wireless EM74xx */ + {DEVICE_SWI(0x1199, 0x9079)}, /* Sierra Wireless 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 */ {DEVICE_SWI(0x413c, 0x81a8)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card */ {DEVICE_SWI(0x413c, 0x81a9)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card */ {DEVICE_SWI(0x413c, 0x81b1)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card */ + {DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */ /* Huawei devices */ {DEVICE_HWI(0x03f0, 0x581d)}, /* HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei me906e) */ @@ -166,6 +174,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 +215,14 @@ __u8 ifnum; int altsetting = -1; + /* we only support vendor specific functions */ + if (intf->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC) + goto done; + + /* 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 +282,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 +348,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/usb-serial-simple.c +++ linux-raspi2-4.2.0/drivers/usb/serial/usb-serial-simple.c @@ -53,6 +53,7 @@ /* Infineon Flashloader driver */ #define FLASHLOADER_IDS() \ + { USB_DEVICE_INTERFACE_CLASS(0x058b, 0x0041, USB_CLASS_CDC_DATA) }, \ { USB_DEVICE(0x8087, 0x0716) } DEVICE(flashloader, FLASHLOADER_IDS); --- linux-raspi2-4.2.0.orig/drivers/usb/serial/visor.c +++ linux-raspi2-4.2.0/drivers/usb/serial/visor.c @@ -544,6 +544,11 @@ (serial->num_interrupt_in == 0)) return 0; + if (serial->num_bulk_in < 2 || serial->num_interrupt_in < 2) { + dev_err(&serial->interface->dev, "missing endpoints\n"); + return -ENODEV; + } + /* * It appears that Treos and Kyoceras want to use the * 1st bulk in endpoint to communicate with the 2nd bulk out endpoint, @@ -597,8 +602,10 @@ */ /* some sanity check */ - if (serial->num_ports < 2) - return -1; + if (serial->num_bulk_out < 2) { + dev_err(&serial->interface->dev, "missing bulk out endpoints\n"); + return -ENODEV; + } /* port 0 now uses the modified endpoint Address */ port = serial->port[0]; --- 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/uas.c +++ linux-raspi2-4.2.0/drivers/usb/storage/uas.c @@ -796,6 +796,10 @@ if (devinfo->flags & US_FL_NO_REPORT_OPCODES) sdev->no_report_opcodes = 1; + /* A few buggy USB-ATA bridges don't understand FUA */ + if (devinfo->flags & US_FL_BROKEN_FUA) + sdev->broken_fua = 1; + scsi_change_queue_depth(sdev, devinfo->qdepth - 2); return 0; } @@ -808,7 +812,7 @@ .slave_configure = uas_slave_configure, .eh_abort_handler = uas_eh_abort_handler, .eh_bus_reset_handler = uas_eh_bus_reset_handler, - .can_queue = 65536, /* Is there a limit on the _host_ ? */ + .can_queue = MAX_CMNDS, .this_id = -1, .sg_tablesize = SG_NONE, .skip_settle_delay = 1, --- 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 @@ -1987,7 +1994,7 @@ US_FL_IGNORE_RESIDUE ), /* Reported by Michael Büsch */ -UNUSUAL_DEV( 0x152d, 0x0567, 0x0114, 0x0114, +UNUSUAL_DEV( 0x152d, 0x0567, 0x0114, 0x0116, "JMicron", "USB to ATA/ATAPI Bridge", USB_SC_DEVICE, USB_PR_DEVICE, NULL, --- linux-raspi2-4.2.0.orig/drivers/usb/storage/unusual_uas.h +++ linux-raspi2-4.2.0/drivers/usb/storage/unusual_uas.h @@ -132,7 +132,7 @@ "JMicron", "JMS567", USB_SC_DEVICE, USB_PR_DEVICE, NULL, - US_FL_NO_REPORT_OPCODES), + US_FL_BROKEN_FUA | US_FL_NO_REPORT_OPCODES), /* Reported-by: Hans de Goede */ UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999, --- linux-raspi2-4.2.0.orig/drivers/vfio/pci/vfio_pci.c +++ linux-raspi2-4.2.0/drivers/vfio/pci/vfio_pci.c @@ -446,7 +446,8 @@ info.num_regions = VFIO_PCI_NUM_REGIONS; info.num_irqs = VFIO_PCI_NUM_IRQS; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? + -EFAULT : 0; } else if (cmd == VFIO_DEVICE_GET_REGION_INFO) { struct pci_dev *pdev = vdev->pdev; @@ -520,7 +521,8 @@ return -EINVAL; } - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? + -EFAULT : 0; } else if (cmd == VFIO_DEVICE_GET_IRQ_INFO) { struct vfio_irq_info info; @@ -555,7 +557,8 @@ else info.flags |= VFIO_IRQ_INFO_NORESIZE; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? + -EFAULT : 0; } else if (cmd == VFIO_DEVICE_SET_IRQS) { struct vfio_irq_set hdr; --- 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 @@ -208,7 +208,8 @@ info.num_regions = vdev->num_regions; info.num_irqs = vdev->num_irqs; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? + -EFAULT : 0; } else if (cmd == VFIO_DEVICE_GET_REGION_INFO) { struct vfio_region_info info; @@ -229,7 +230,8 @@ info.size = vdev->regions[info.index].size; info.flags = vdev->regions[info.index].flags; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? + -EFAULT : 0; } else if (cmd == VFIO_DEVICE_GET_IRQ_INFO) { struct vfio_irq_info info; @@ -248,7 +250,8 @@ info.flags = vdev->irqs[info.index].flags; info.count = vdev->irqs[info.index].count; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? + -EFAULT : 0; } else if (cmd == VFIO_DEVICE_SET_IRQS) { struct vfio_irq_set hdr; @@ -307,17 +310,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 +330,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 +338,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 +346,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 +379,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 +387,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 +409,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 +417,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 +425,7 @@ if (copy_from_user(&val, buf, 1)) goto err; - iowrite8(val, reg.ioaddr + off); + iowrite8(val, reg->ioaddr + off); filled = 1; } @@ -452,7 +455,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/vfio/vfio_iommu_type1.c +++ linux-raspi2-4.2.0/drivers/vfio/vfio_iommu_type1.c @@ -986,7 +986,8 @@ info.iova_pgsizes = vfio_pgsize_bitmap(iommu); - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? + -EFAULT : 0; } else if (cmd == VFIO_IOMMU_MAP_DMA) { struct vfio_iommu_type1_dma_map map; @@ -1019,7 +1020,8 @@ if (ret) return ret; - return copy_to_user((void __user *)arg, &unmap, minsz); + return copy_to_user((void __user *)arg, &unmap, minsz) ? + -EFAULT : 0; } return -ENOTTY; --- linux-raspi2-4.2.0.orig/drivers/vhost/vhost.c +++ linux-raspi2-4.2.0/drivers/vhost/vhost.c @@ -819,7 +819,7 @@ BUILD_BUG_ON(__alignof__ *vq->used > VRING_USED_ALIGN_SIZE); if ((a.avail_user_addr & (VRING_AVAIL_ALIGN_SIZE - 1)) || (a.used_user_addr & (VRING_USED_ALIGN_SIZE - 1)) || - (a.log_guest_addr & (sizeof(u64) - 1))) { + (a.log_guest_addr & (VRING_USED_ALIGN_SIZE - 1))) { r = -EINVAL; break; } --- linux-raspi2-4.2.0.orig/drivers/video/console/fbcon.c +++ linux-raspi2-4.2.0/drivers/video/console/fbcon.c @@ -709,6 +709,7 @@ } if (!err) { + ops->cur_blink_jiffies = HZ / 5; info->fbcon_par = ops; if (vc) @@ -956,6 +957,7 @@ ops->currcon = -1; ops->graphics = 1; ops->cur_rotate = -1; + ops->cur_blink_jiffies = HZ / 5; info->fbcon_par = ops; p->con_rotate = initial_rotation; set_blitting_type(vc, info); @@ -1093,6 +1095,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 @@ -2246,7 +2260,6 @@ select FB_SYS_IMAGEBLIT select FB_SYS_FOPS select FB_DEFERRED_IO - select INPUT_XEN_KBDDEV_FRONTEND if INPUT_MISC select XEN_XENBUS_FRONTEND default y help @@ -2475,3 +2488,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/da8xx-fb.c +++ linux-raspi2-4.2.0/drivers/video/fbdev/da8xx-fb.c @@ -209,8 +209,7 @@ .lower_margin = 2, .hsync_len = 0, .vsync_len = 0, - .sync = FB_SYNC_CLK_INVERT | - FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .sync = FB_SYNC_CLK_INVERT, }, /* Sharp LK043T1DG01 */ [1] = { @@ -224,7 +223,7 @@ .lower_margin = 2, .hsync_len = 41, .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .sync = 0, .flag = 0, }, [2] = { @@ -239,7 +238,7 @@ .lower_margin = 10, .hsync_len = 10, .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .sync = 0, .flag = 0, }, [3] = { --- linux-raspi2-4.2.0.orig/drivers/video/fbdev/fsl-diu-fb.c +++ linux-raspi2-4.2.0/drivers/video/fbdev/fsl-diu-fb.c @@ -479,7 +479,10 @@ port = FSL_DIU_PORT_DLVDS; } - return diu_ops.valid_monitor_port(port); + if (diu_ops.valid_monitor_port) + port = diu_ops.valid_monitor_port(port); + + return port; } /* @@ -1908,6 +1911,14 @@ #else monitor_port = fsl_diu_name_to_port(monitor_string); #endif + + /* + * Must to verify set_pixel_clock. If not implement on platform, + * then that means that there is no platform support for the DIU. + */ + if (!diu_ops.set_pixel_clock) + return -ENODEV; + pr_info("Freescale Display Interface Unit (DIU) framebuffer driver\n"); #ifdef CONFIG_NOT_COHERENT_CACHE --- 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/virtio/virtio.c +++ linux-raspi2-4.2.0/drivers/virtio/virtio.c @@ -412,6 +412,7 @@ static void __exit virtio_exit(void) { bus_unregister(&virtio_bus); + ida_destroy(&virtio_index_ida); } core_initcall(virtio_init); module_exit(virtio_exit); --- linux-raspi2-4.2.0.orig/drivers/virtio/virtio_balloon.c +++ linux-raspi2-4.2.0/drivers/virtio/virtio_balloon.c @@ -205,8 +205,8 @@ */ if (vb->num_pfns != 0) tell_host(vb, vb->deflate_vq); - mutex_unlock(&vb->balloon_lock); release_pages_by_pfn(vb->pfns, vb->num_pfns); + mutex_unlock(&vb->balloon_lock); return num_freed_pages; } --- linux-raspi2-4.2.0.orig/drivers/virtio/virtio_pci_common.c +++ linux-raspi2-4.2.0/drivers/virtio/virtio_pci_common.c @@ -545,6 +545,7 @@ static void virtio_pci_remove(struct pci_dev *pci_dev) { struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev); + struct device *dev = get_device(&vp_dev->vdev.dev); unregister_virtio_device(&vp_dev->vdev); @@ -554,6 +555,7 @@ virtio_pci_modern_remove(vp_dev); pci_disable_device(pci_dev); + put_device(dev); } static struct pci_driver virtio_pci_driver = { --- linux-raspi2-4.2.0.orig/drivers/virtio/virtio_pci_modern.c +++ linux-raspi2-4.2.0/drivers/virtio/virtio_pci_modern.c @@ -17,6 +17,7 @@ * */ +#include #define VIRTIO_PCI_NO_LEGACY #include "virtio_pci_common.h" @@ -271,9 +272,13 @@ struct virtio_pci_device *vp_dev = to_vp_device(vdev); /* 0 status means a reset. */ vp_iowrite8(0, &vp_dev->common->device_status); - /* Flush out the status write, and flush in device writes, - * including MSI-X interrupts, if any. */ - vp_ioread8(&vp_dev->common->device_status); + /* After writing 0 to device_status, the driver MUST wait for a read of + * device_status to return 0 before reinitializing the device. + * This will flush out the status write, and flush in device writes, + * including MSI-X interrupts, if any. + */ + while (vp_ioread8(&vp_dev->common->device_status)) + msleep(1); /* Flush pending VQ/configuration callbacks. */ vp_synchronize_vectors(vdev); } --- 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/omap_wdt.c +++ linux-raspi2-4.2.0/drivers/watchdog/omap_wdt.c @@ -205,7 +205,7 @@ static unsigned int omap_wdt_get_timeleft(struct watchdog_device *wdog) { - struct omap_wdt_dev *wdev = watchdog_get_drvdata(wdog); + struct omap_wdt_dev *wdev = to_omap_wdt_dev(wdog); void __iomem *base = wdev->base; u32 value; --- linux-raspi2-4.2.0.orig/drivers/watchdog/rc32434_wdt.c +++ linux-raspi2-4.2.0/drivers/watchdog/rc32434_wdt.c @@ -237,7 +237,7 @@ return -EINVAL; /* Fall through */ case WDIOC_GETTIMEOUT: - return copy_to_user(argp, &timeout, sizeof(int)); + return copy_to_user(argp, &timeout, sizeof(int)) ? -EFAULT : 0; default: return -ENOTTY; } --- 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); @@ -483,9 +484,19 @@ struct physdev_eoi eoi = { .irq = pirq_from_irq(data->irq) }; int rc = 0; - irq_move_irq(data); + if (!VALID_EVTCHN(evtchn)) + return; - if (VALID_EVTCHN(evtchn)) + if (unlikely(irqd_is_setaffinity_pending(data))) { + int masked = test_and_set_mask(evtchn); + + clear_evtchn(evtchn); + + irq_move_masked_irq(data); + + if (!masked) + unmask_evtchn(evtchn); + } else clear_evtchn(evtchn); if (pirq_needs_eoi(data->irq)) { @@ -1360,9 +1371,19 @@ { int evtchn = evtchn_from_irq(data->irq); - irq_move_irq(data); + if (!VALID_EVTCHN(evtchn)) + return; - if (VALID_EVTCHN(evtchn)) + if (unlikely(irqd_is_setaffinity_pending(data))) { + int masked = test_and_set_mask(evtchn); + + clear_evtchn(evtchn); + + irq_move_masked_irq(data); + + if (!masked) + unmask_evtchn(evtchn); + } else clear_evtchn(evtchn); } --- linux-raspi2-4.2.0.orig/drivers/xen/events/events_fifo.c +++ linux-raspi2-4.2.0/drivers/xen/events/events_fifo.c @@ -281,7 +281,8 @@ static void consume_one_event(unsigned cpu, struct evtchn_fifo_control_block *control_block, - unsigned priority, unsigned long *ready) + unsigned priority, unsigned long *ready, + bool drop) { struct evtchn_fifo_queue *q = &per_cpu(cpu_queue, cpu); uint32_t head; @@ -313,13 +314,17 @@ if (head == 0) clear_bit(priority, ready); - if (evtchn_fifo_is_pending(port) && !evtchn_fifo_is_masked(port)) - handle_irq_for_port(port); + if (evtchn_fifo_is_pending(port) && !evtchn_fifo_is_masked(port)) { + if (unlikely(drop)) + pr_warn("Dropping pending event for port %u\n", port); + else + handle_irq_for_port(port); + } q->head[priority] = head; } -static void evtchn_fifo_handle_events(unsigned cpu) +static void __evtchn_fifo_handle_events(unsigned cpu, bool drop) { struct evtchn_fifo_control_block *control_block; unsigned long ready; @@ -331,11 +336,16 @@ while (ready) { q = find_first_bit(&ready, EVTCHN_FIFO_MAX_QUEUES); - consume_one_event(cpu, control_block, q, &ready); + consume_one_event(cpu, control_block, q, &ready, drop); ready |= xchg(&control_block->ready, 0); } } +static void evtchn_fifo_handle_events(unsigned cpu) +{ + __evtchn_fifo_handle_events(cpu, false); +} + static void evtchn_fifo_resume(void) { unsigned cpu; @@ -420,6 +430,9 @@ if (!per_cpu(cpu_control_block, cpu)) ret = evtchn_fifo_alloc_control_block(cpu); break; + case CPU_DEAD: + __evtchn_fifo_handle_events(cpu, true); + break; default: break; } --- linux-raspi2-4.2.0.orig/drivers/xen/gntdev.c +++ linux-raspi2-4.2.0/drivers/xen/gntdev.c @@ -804,7 +804,7 @@ vma->vm_ops = &gntdev_vmops; - vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; + vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP | VM_IO; if (use_ptemod) vma->vm_flags |= VM_DONTCOPY; --- 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,27 @@ 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. + * But VF devices are unique in which the PF needs to be checked. + */ + pci_read_config_word(pci_physfn(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 +274,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 +331,14 @@ 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; +#ifdef CONFIG_PCI_MSI + unsigned int nr = 0; +#endif + *op = pdev->sh_info->op; + barrier(); dev = xen_pcibk_get_pci_dev(pdev, op->domain, op->bus, op->devfn); if (dev == NULL) @@ -326,6 +364,7 @@ op->err = xen_pcibk_disable_msi(pdev, dev, op); break; case XEN_PCI_OP_enable_msix: + nr = op->value; op->err = xen_pcibk_enable_msix(pdev, dev, op); break; case XEN_PCI_OP_disable_msix: @@ -342,6 +381,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 < nr; 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); @@ -940,12 +940,12 @@ spin_unlock_irqrestore(&info->v2p_lock, flags); out_free: - mutex_lock(&tpg->tv_tpg_mutex); - tpg->tv_tpg_fe_count--; - mutex_unlock(&tpg->tv_tpg_mutex); - - if (err) + if (err) { + mutex_lock(&tpg->tv_tpg_mutex); + tpg->tv_tpg_fe_count--; + mutex_unlock(&tpg->tv_tpg_mutex); kfree(new); + } return err; } --- 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/9p/vfs_inode.c +++ linux-raspi2-4.2.0/fs/9p/vfs_inode.c @@ -451,9 +451,9 @@ { struct v9fs_inode *v9inode = V9FS_I(inode); - truncate_inode_pages_final(inode->i_mapping); + truncate_inode_pages_final(&inode->i_data); clear_inode(inode); - filemap_fdatawrite(inode->i_mapping); + filemap_fdatawrite(&inode->i_data); v9fs_cache_inode_put_cookie(inode); /* clunk the fid stashed in writeback_fid */ --- 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,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 . + */ + +/* + * 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 xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos); + +static ssize_t do_xino_fwrite(vfs_writef_t func, struct file *file, void *kbuf, + size_t size, loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + int i; + const int prevent_endless = 10; + + i = 0; + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + err = func(file, buf.u, size, pos); + if (err == -EINTR + && !au_wkq_test() + && fatal_signal_pending(current)) { + set_fs(oldfs); + err = xino_fwrite_wkq(func, file, kbuf, size, pos); + BUG_ON(err == -EINTR); + oldfs = get_fs(); + set_fs(KERNEL_DS); + } + } while (i++ < prevent_endless + && (err == -EAGAIN || err == -EINTR)); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_modify(file->f_path.dentry); +#endif + + return err; +} + +struct do_xino_fwrite_args { + ssize_t *errp; + vfs_writef_t func; + struct file *file; + void *buf; + size_t size; + loff_t *pos; +}; + +static void call_do_xino_fwrite(void *args) +{ + struct do_xino_fwrite_args *a = args; + *a->errp = do_xino_fwrite(a->func, a->file, a->buf, a->size, a->pos); +} + +static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + int wkq_err; + struct do_xino_fwrite_args args = { + .errp = &err, + .func = func, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + /* + * it breaks RLIMIT_FSIZE and normal user's limit, + * users should care about quota and real 'filesystem full.' + */ + wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +ssize_t xino_fwrite(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(func, file, buf, size, pos); + lockdep_on(); + } else + err = xino_fwrite_wkq(func, file, buf, size, pos); + + 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) { @@ -1492,11 +1499,14 @@ WARN_ON_ONCE(bdev->bd_holders); sync_blockdev(bdev); kill_bdev(bdev); + + bdev_write_inode(bdev->bd_inode); /* - * ->release can cause the queue to disappear, so flush all - * dirty data before. + * Detaching bdev inode from its wb in __destroy_inode() + * is too late: the queue which embeds its bdi (along with + * root wb) can be gone as soon as we put_disk() below. */ - bdev_write_inode(bdev->bd_inode); + inode_detach_wb(bdev->bd_inode); } if (bdev->bd_contains == bdev) { if (disk->fops->release) --- linux-raspi2-4.2.0.orig/fs/btrfs/backref.c +++ linux-raspi2-4.2.0/fs/btrfs/backref.c @@ -1392,7 +1392,8 @@ read_extent_buffer(eb, dest + bytes_left, name_off, name_len); if (eb != eb_in) { - btrfs_tree_read_unlock_blocking(eb); + if (!path->skip_locking) + btrfs_tree_read_unlock_blocking(eb); free_extent_buffer(eb); } ret = btrfs_find_item(fs_root, path, parent, 0, @@ -1412,9 +1413,10 @@ eb = path->nodes[0]; /* make sure we can use eb after releasing the path */ if (eb != eb_in) { - atomic_inc(&eb->refs); - btrfs_tree_read_lock(eb); - btrfs_set_lock_blocking_rw(eb, BTRFS_READ_LOCK); + if (!path->skip_locking) + btrfs_set_lock_blocking_rw(eb, BTRFS_READ_LOCK); + path->nodes[0] = NULL; + path->locks[0] = 0; } btrfs_release_path(path); iref = btrfs_item_ptr(eb, slot, struct btrfs_inode_ref); @@ -1809,7 +1811,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 +1838,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 +1853,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 @@ -1544,7 +1544,7 @@ spinlock_t delayed_iput_lock; struct list_head delayed_iputs; - struct rw_semaphore delayed_iput_sem; + struct mutex cleaner_delayed_iput_mutex; /* this protects tree_mod_seq_list */ spinlock_t tree_mod_seq_lock; @@ -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-inode.c +++ linux-raspi2-4.2.0/fs/btrfs/delayed-inode.c @@ -1690,7 +1690,7 @@ * */ int btrfs_readdir_delayed_dir_index(struct dir_context *ctx, - struct list_head *ins_list) + struct list_head *ins_list, bool *emitted) { struct btrfs_dir_item *di; struct btrfs_delayed_item *curr, *next; @@ -1734,6 +1734,7 @@ if (over) return 1; + *emitted = true; } return 0; } --- linux-raspi2-4.2.0.orig/fs/btrfs/delayed-inode.h +++ linux-raspi2-4.2.0/fs/btrfs/delayed-inode.h @@ -144,7 +144,7 @@ int btrfs_should_delete_dir_index(struct list_head *del_list, u64 index); int btrfs_readdir_delayed_dir_index(struct dir_context *ctx, - struct list_head *ins_list); + struct list_head *ins_list, bool *emitted); /* for init */ int __init btrfs_delayed_inode_init(void); --- 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/disk-io.c +++ linux-raspi2-4.2.0/fs/btrfs/disk-io.c @@ -1772,7 +1772,10 @@ goto sleep; } + mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex); btrfs_run_delayed_iputs(root); + mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex); + again = btrfs_clean_one_deleted_snapshot(root); mutex_unlock(&root->fs_info->cleaner_mutex); @@ -2533,8 +2536,8 @@ mutex_init(&fs_info->delete_unused_bgs_mutex); mutex_init(&fs_info->reloc_mutex); mutex_init(&fs_info->delalloc_root_mutex); + mutex_init(&fs_info->cleaner_delayed_iput_mutex); seqlock_init(&fs_info->profiles_lock); - init_rwsem(&fs_info->delayed_iput_sem); INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots); INIT_LIST_HEAD(&fs_info->space_info); --- 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; } @@ -3944,11 +3950,12 @@ if (ret) return ret; /* - * make sure that all running delayed iput are - * done + * The cleaner kthread might still be doing iput + * operations. Wait for it to finish so that + * more space is released. */ - down_write(&root->fs_info->delayed_iput_sem); - up_write(&root->fs_info->delayed_iput_sem); + mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex); + mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex); goto again; } else { btrfs_end_transaction(trans, root); @@ -6137,7 +6144,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 +6152,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 +6477,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 +6525,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 +6548,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 +7336,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 +7426,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 +7643,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 +8191,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); @@ -10034,7 +10036,7 @@ disk_super = fs_info->super_copy; if (!btrfs_super_root(disk_super)) - return 1; + return -EINVAL; features = btrfs_super_incompat_flags(disk_super); if (features & BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS) --- 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) { @@ -1861,15 +1869,20 @@ */ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) { - struct dentry *dentry = file->f_path.dentry; + struct dentry *dentry = file_dentry(file); struct inode *inode = d_inode(dentry); struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_trans_handle *trans; 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; @@ -3110,8 +3116,6 @@ if (empty) return; - down_read(&fs_info->delayed_iput_sem); - spin_lock(&fs_info->delayed_iput_lock); list_splice_init(&fs_info->delayed_iputs, &list); spin_unlock(&fs_info->delayed_iput_lock); @@ -3122,8 +3126,6 @@ iput(delayed->inode); kfree(delayed); } - - up_read(&root->fs_info->delayed_iput_sem); } /* @@ -4184,6 +4186,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 +4421,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 +4484,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 +5107,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); @@ -5631,6 +5688,7 @@ char *name_ptr; int name_len; int is_curr = 0; /* ctx->pos points to the current index? */ + bool emitted; /* FIXME, use a real flag for deciding about the key type */ if (root->fs_info->tree_root == root) @@ -5659,6 +5717,7 @@ if (ret < 0) goto err; + emitted = false; while (1) { leaf = path->nodes[0]; slot = path->slots[0]; @@ -5738,6 +5797,7 @@ if (over) goto nopos; + emitted = true; di_len = btrfs_dir_name_len(leaf, di) + btrfs_dir_data_len(leaf, di) + sizeof(*di); di_cur += di_len; @@ -5750,11 +5810,20 @@ if (key_type == BTRFS_DIR_INDEX_KEY) { if (is_curr) ctx->pos++; - ret = btrfs_readdir_delayed_dir_index(ctx, &ins_list); + ret = btrfs_readdir_delayed_dir_index(ctx, &ins_list, &emitted); if (ret) goto nopos; } + /* + * If we haven't emitted any dir entry, we must not touch ctx->pos as + * it was was set to the termination value in previous call. We assume + * that "." and ".." were emitted if we reach this point and set the + * termination value as well for an empty directory. + */ + if (ctx->pos > 2 && !emitted) + goto nopos; + /* Reached end of directory/root. Bump pos past the last item. */ ctx->pos++; --- linux-raspi2-4.2.0.orig/fs/btrfs/ioctl.c +++ linux-raspi2-4.2.0/fs/btrfs/ioctl.c @@ -2769,24 +2769,29 @@ static struct page *extent_same_get_page(struct inode *inode, pgoff_t index) { struct page *page; - struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree; page = grab_cache_page(inode->i_mapping, index); if (!page) - return NULL; + return ERR_PTR(-ENOMEM); if (!PageUptodate(page)) { - if (extent_read_full_page_nolock(tree, page, btrfs_get_extent, - 0)) - return NULL; + int ret; + + ret = btrfs_readpage(NULL, page); + if (ret) + return ERR_PTR(ret); lock_page(page); if (!PageUptodate(page)) { unlock_page(page); page_cache_release(page); - return NULL; + return ERR_PTR(-EIO); + } + if (page->mapping != inode->i_mapping) { + unlock_page(page); + page_cache_release(page); + return ERR_PTR(-EAGAIN); } } - unlock_page(page); return page; } @@ -2798,17 +2803,31 @@ pgoff_t index = off >> PAGE_CACHE_SHIFT; for (i = 0; i < num_pages; i++) { +again: pages[i] = extent_same_get_page(inode, index + i); - if (!pages[i]) - return -ENOMEM; + if (IS_ERR(pages[i])) { + int err = PTR_ERR(pages[i]); + + if (err == -EAGAIN) + goto again; + pages[i] = NULL; + return err; + } } return 0; } -static inline void lock_extent_range(struct inode *inode, u64 off, u64 len) +static int lock_extent_range(struct inode *inode, u64 off, u64 len, + bool retry_range_locking) { - /* do any pending delalloc/csum calc on src, one way or - another, and lock file content */ + /* + * Do any pending delalloc/csum calculations on inode, one way or + * another, and lock file content. + * The locking order is: + * + * 1) pages + * 2) range in the inode's io tree + */ while (1) { struct btrfs_ordered_extent *ordered; lock_extent(&BTRFS_I(inode)->io_tree, off, off + len - 1); @@ -2826,8 +2845,11 @@ unlock_extent(&BTRFS_I(inode)->io_tree, off, off + len - 1); if (ordered) btrfs_put_ordered_extent(ordered); + if (!retry_range_locking) + return -EAGAIN; btrfs_wait_ordered_range(inode, off, len); } + return 0; } static void btrfs_double_inode_unlock(struct inode *inode1, struct inode *inode2) @@ -2842,8 +2864,7 @@ swap(inode1, inode2); mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT); - if (inode1 != inode2) - mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD); + mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD); } static void btrfs_double_extent_unlock(struct inode *inode1, u64 loff1, @@ -2853,16 +2874,24 @@ unlock_extent(&BTRFS_I(inode2)->io_tree, loff2, loff2 + len - 1); } -static void btrfs_double_extent_lock(struct inode *inode1, u64 loff1, - struct inode *inode2, u64 loff2, u64 len) +static int btrfs_double_extent_lock(struct inode *inode1, u64 loff1, + struct inode *inode2, u64 loff2, u64 len, + bool retry_range_locking) { + int ret; + if (inode1 < inode2) { swap(inode1, inode2); swap(loff1, loff2); } - lock_extent_range(inode1, loff1, len); - if (inode1 != inode2) - lock_extent_range(inode2, loff2, len); + ret = lock_extent_range(inode1, loff1, len, retry_range_locking); + if (ret) + return ret; + ret = lock_extent_range(inode2, loff2, len, retry_range_locking); + if (ret) + unlock_extent(&BTRFS_I(inode1)->io_tree, loff1, + loff1 + len - 1); + return ret; } struct cmp_pages { @@ -2878,11 +2907,15 @@ for (i = 0; i < cmp->num_pages; i++) { pg = cmp->src_pages[i]; - if (pg) + if (pg) { + unlock_page(pg); page_cache_release(pg); + } pg = cmp->dst_pages[i]; - if (pg) + if (pg) { + unlock_page(pg); page_cache_release(pg); + } } kfree(cmp->src_pages); kfree(cmp->dst_pages); @@ -2943,6 +2976,8 @@ src_page = cmp->src_pages[i]; dst_page = cmp->dst_pages[i]; + ASSERT(PageLocked(src_page)); + ASSERT(PageLocked(dst_page)); addr = kmap_atomic(src_page); dst_addr = kmap_atomic(dst_page); @@ -3055,14 +3090,46 @@ goto out_unlock; } +again: ret = btrfs_cmp_data_prepare(src, loff, dst, dst_loff, olen, &cmp); if (ret) goto out_unlock; if (same_inode) - lock_extent_range(src, same_lock_start, same_lock_len); + ret = lock_extent_range(src, same_lock_start, same_lock_len, + false); else - btrfs_double_extent_lock(src, loff, dst, dst_loff, len); + ret = btrfs_double_extent_lock(src, loff, dst, dst_loff, len, + false); + /* + * If one of the inodes has dirty pages in the respective range or + * ordered extents, we need to flush dellaloc and wait for all ordered + * extents in the range. We must unlock the pages and the ranges in the + * io trees to avoid deadlocks when flushing delalloc (requires locking + * pages) and when waiting for ordered extents to complete (they require + * range locking). + */ + if (ret == -EAGAIN) { + /* + * Ranges in the io trees already unlocked. Now unlock all + * pages before waiting for all IO to complete. + */ + btrfs_cmp_data_free(&cmp); + if (same_inode) { + btrfs_wait_ordered_range(src, same_lock_start, + same_lock_len); + } else { + btrfs_wait_ordered_range(src, loff, len); + btrfs_wait_ordered_range(dst, dst_loff, len); + } + goto again; + } + ASSERT(ret == 0); + if (WARN_ON(ret)) { + /* ranges in the io trees already unlocked */ + btrfs_cmp_data_free(&cmp); + return ret; + } /* pass original length for comparison so we stay within i_size */ ret = btrfs_cmp_data(src, loff, dst, dst_loff, olen, &cmp); @@ -3195,41 +3262,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 +3352,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 +3520,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 +3566,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 +3717,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 +3737,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 +3754,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). */ @@ -3787,13 +3903,7 @@ goto out_fput; if (!same_inode) { - if (inode < src) { - mutex_lock_nested(&inode->i_mutex, I_MUTEX_PARENT); - mutex_lock_nested(&src->i_mutex, I_MUTEX_CHILD); - } else { - mutex_lock_nested(&src->i_mutex, I_MUTEX_PARENT); - mutex_lock_nested(&inode->i_mutex, I_MUTEX_CHILD); - } + btrfs_double_inode_lock(src, inode); } else { mutex_lock(&src->i_mutex); } @@ -3841,10 +3951,15 @@ u64 lock_start = min_t(u64, off, destoff); u64 lock_len = max_t(u64, off, destoff) + len - lock_start; - lock_extent_range(src, lock_start, lock_len); + ret = lock_extent_range(src, lock_start, lock_len, true); } else { - lock_extent_range(src, off, len); - lock_extent_range(inode, destoff, len); + ret = btrfs_double_extent_lock(src, off, inode, destoff, len, + true); + } + ASSERT(ret == 0); + if (WARN_ON(ret)) { + /* ranges in the io trees already unlocked */ + goto out_unlock; } ret = btrfs_clone(src, inode, off, olen, len, destoff, 0); @@ -3855,9 +3970,7 @@ unlock_extent(&BTRFS_I(src)->io_tree, lock_start, lock_end); } else { - unlock_extent(&BTRFS_I(src)->io_tree, off, off + len - 1); - unlock_extent(&BTRFS_I(inode)->io_tree, destoff, - destoff + len - 1); + btrfs_double_extent_unlock(src, off, inode, destoff, len); } /* * Truncate page cache pages so that future reads will see the cloned @@ -3866,17 +3979,10 @@ truncate_inode_pages_range(&inode->i_data, destoff, PAGE_CACHE_ALIGN(destoff + len) - 1); out_unlock: - if (!same_inode) { - if (inode < src) { - mutex_unlock(&src->i_mutex); - mutex_unlock(&inode->i_mutex); - } else { - mutex_unlock(&inode->i_mutex); - mutex_unlock(&src->i_mutex); - } - } else { + if (!same_inode) + btrfs_double_inode_unlock(src, inode); + else mutex_unlock(&src->i_mutex); - } out_fput: fdput(src_file); out_drop_write: @@ -4647,6 +4753,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 +4769,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 { @@ -4298,6 +4298,127 @@ return ret; } +/* + * When we are logging a new inode X, check if it doesn't have a reference that + * matches the reference from some other inode Y created in a past transaction + * and that was renamed in the current transaction. If we don't do this, then at + * log replay time we can lose inode Y (and all its files if it's a directory): + * + * mkdir /mnt/x + * echo "hello world" > /mnt/x/foobar + * sync + * mv /mnt/x /mnt/y + * mkdir /mnt/x # or touch /mnt/x + * xfs_io -c fsync /mnt/x + * + * mount fs, trigger log replay + * + * After the log replay procedure, we would lose the first directory and all its + * files (file foobar). + * For the case where inode Y is not a directory we simply end up losing it: + * + * echo "123" > /mnt/foo + * sync + * mv /mnt/foo /mnt/bar + * echo "abc" > /mnt/foo + * xfs_io -c fsync /mnt/foo + * + * + * We also need this for cases where a snapshot entry is replaced by some other + * entry (file or directory) otherwise we end up with an unreplayable log due to + * attempts to delete the snapshot entry (entry of type BTRFS_ROOT_ITEM_KEY) as + * if it were a regular entry: + * + * mkdir /mnt/x + * btrfs subvolume snapshot /mnt /mnt/x/snap + * btrfs subvolume delete /mnt/x/snap + * rmdir /mnt/x + * mkdir /mnt/x + * fsync /mnt/x or fsync some new file inside it + * + * + * The snapshot delete, rmdir of x, mkdir of a new x and the fsync all happen in + * the same transaction. + */ +static int btrfs_check_ref_name_override(struct extent_buffer *eb, + const int slot, + const struct btrfs_key *key, + struct inode *inode) +{ + int ret; + struct btrfs_path *search_path; + char *name = NULL; + u32 name_len = 0; + u32 item_size = btrfs_item_size_nr(eb, slot); + u32 cur_offset = 0; + unsigned long ptr = btrfs_item_ptr_offset(eb, slot); + + search_path = btrfs_alloc_path(); + if (!search_path) + return -ENOMEM; + search_path->search_commit_root = 1; + search_path->skip_locking = 1; + + while (cur_offset < item_size) { + u64 parent; + u32 this_name_len; + u32 this_len; + unsigned long name_ptr; + struct btrfs_dir_item *di; + + if (key->type == BTRFS_INODE_REF_KEY) { + struct btrfs_inode_ref *iref; + + iref = (struct btrfs_inode_ref *)(ptr + cur_offset); + parent = key->offset; + this_name_len = btrfs_inode_ref_name_len(eb, iref); + name_ptr = (unsigned long)(iref + 1); + this_len = sizeof(*iref) + this_name_len; + } else { + struct btrfs_inode_extref *extref; + + extref = (struct btrfs_inode_extref *)(ptr + + cur_offset); + parent = btrfs_inode_extref_parent(eb, extref); + this_name_len = btrfs_inode_extref_name_len(eb, extref); + name_ptr = (unsigned long)&extref->name; + this_len = sizeof(*extref) + this_name_len; + } + + if (this_name_len > name_len) { + char *new_name; + + new_name = krealloc(name, this_name_len, GFP_NOFS); + if (!new_name) { + ret = -ENOMEM; + goto out; + } + name_len = this_name_len; + name = new_name; + } + + read_extent_buffer(eb, name, name_ptr, this_name_len); + di = btrfs_lookup_dir_item(NULL, BTRFS_I(inode)->root, + search_path, parent, + name, this_name_len, 0); + if (di && !IS_ERR(di)) { + ret = 1; + goto out; + } else if (IS_ERR(di)) { + ret = PTR_ERR(di); + goto out; + } + btrfs_release_path(search_path); + + cur_offset += this_len; + } + ret = 0; +out: + btrfs_free_path(search_path); + kfree(name); + return ret; +} + /* log a single inode in the tree log. * At least one parent directory for this inode must exist in the tree * or be logged already. @@ -4470,6 +4591,22 @@ if (min_key.type == BTRFS_INODE_ITEM_KEY) need_log_inode_item = false; + if ((min_key.type == BTRFS_INODE_REF_KEY || + min_key.type == BTRFS_INODE_EXTREF_KEY) && + BTRFS_I(inode)->generation == trans->transid) { + ret = btrfs_check_ref_name_override(path->nodes[0], + path->slots[0], + &min_key, inode); + if (ret < 0) { + err = ret; + goto out_unlock; + } else if (ret > 0) { + err = 1; + btrfs_set_log_full_commit(root->fs_info, trans); + goto out_unlock; + } + } + /* Skip xattrs, we log them later with btrfs_log_all_xattrs() */ if (min_key.type == BTRFS_XATTR_ITEM_KEY) { if (ins_nr == 0) --- linux-raspi2-4.2.0.orig/fs/btrfs/volumes.c +++ linux-raspi2-4.2.0/fs/btrfs/volumes.c @@ -156,6 +156,7 @@ spin_lock_init(&dev->reada_lock); atomic_set(&dev->reada_in_flight, 0); atomic_set(&dev->dev_stats_ccnt, 0); + btrfs_device_data_ordered_init(dev); INIT_RADIX_TREE(&dev->reada_zones, GFP_NOFS & ~__GFP_WAIT); INIT_RADIX_TREE(&dev->reada_extents, GFP_NOFS & ~__GFP_WAIT); @@ -6476,6 +6477,14 @@ goto out_short_read; num_stripes = btrfs_chunk_num_stripes(sb, chunk); + if (!num_stripes) { + printk(KERN_ERR + "BTRFS: invalid number of stripes %u in sys_array at offset %u\n", + num_stripes, cur_offset); + ret = -EIO; + break; + } + len = btrfs_chunk_item_size(num_stripes); if (cur_offset + len > array_size) goto out_short_read; --- 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 @@ -885,7 +885,7 @@ loff_t pos, eof; size_t len; void *data; - int ret; + int ret = -ENOBUFS; ASSERT(op != NULL); ASSERT(page != NULL); @@ -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/cifs_debug.c +++ linux-raspi2-4.2.0/fs/cifs/cifs_debug.c @@ -50,7 +50,7 @@ vaf.fmt = fmt; vaf.va = &args; - pr_err("CIFS VFS: %pV", &vaf); + pr_err_ratelimited("CIFS VFS: %pV", &vaf); va_end(args); } --- linux-raspi2-4.2.0.orig/fs/cifs/cifs_debug.h +++ linux-raspi2-4.2.0/fs/cifs/cifs_debug.h @@ -51,14 +51,13 @@ /* information message: e.g., configuration, major event */ #define cifs_dbg(type, fmt, ...) \ do { \ - if (type == FYI) { \ - if (cifsFYI & CIFS_INFO) { \ - pr_debug("%s: " fmt, __FILE__, ##__VA_ARGS__); \ - } \ + if (type == FYI && cifsFYI & CIFS_INFO) { \ + pr_debug_ratelimited("%s: " \ + fmt, __FILE__, ##__VA_ARGS__); \ } else if (type == VFS) { \ cifs_vfs_err(fmt, ##__VA_ARGS__); \ } else if (type == NOISY && type != 0) { \ - pr_debug(fmt, ##__VA_ARGS__); \ + pr_debug_ratelimited(fmt, ##__VA_ARGS__); \ } \ } while (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,13 +702,19 @@ } } + /* 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; ses->auth_key.response = kmalloc(baselen + tilen, GFP_KERNEL); if (!ses->auth_key.response) { - rc = ENOMEM; + rc = -ENOMEM; ses->auth_key.len = 0; goto setup_ntlmv2_rsp_ret; } @@ -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/cifsfs.h +++ linux-raspi2-4.2.0/fs/cifs/cifsfs.h @@ -31,19 +31,15 @@ * so that it will fit. We use hash_64 to convert the value to 31 bits, and * then add 1, to ensure that we don't end up with a 0 as the value. */ -#if BITS_PER_LONG == 64 static inline ino_t cifs_uniqueid_to_ino_t(u64 fileid) { + if ((sizeof(ino_t)) < (sizeof(u64))) + return (ino_t)hash_64(fileid, (sizeof(ino_t) * 8) - 1) + 1; + return (ino_t)fileid; + } -#else -static inline ino_t -cifs_uniqueid_to_ino_t(u64 fileid) -{ - return (ino_t)hash_64(fileid, (sizeof(ino_t) * 8) - 1) + 1; -} -#endif extern struct file_system_type cifs_fs_type; extern const struct address_space_operations cifs_addr_ops; --- linux-raspi2-4.2.0.orig/fs/cifs/cifssmb.c +++ linux-raspi2-4.2.0/fs/cifs/cifssmb.c @@ -1394,11 +1394,10 @@ * current bigbuf. */ static int -cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid) +discard_remaining_data(struct TCP_Server_Info *server) { unsigned int rfclen = get_rfc1002_length(server->smallbuf); int remaining = rfclen + 4 - server->total_read; - struct cifs_readdata *rdata = mid->callback_data; while (remaining > 0) { int length; @@ -1412,10 +1411,20 @@ remaining -= length; } - dequeue_mid(mid, rdata->result); return 0; } +static int +cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid) +{ + int length; + struct cifs_readdata *rdata = mid->callback_data; + + length = discard_remaining_data(server); + dequeue_mid(mid, rdata->result); + return length; +} + int cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid) { @@ -1444,6 +1453,12 @@ return length; server->total_read += length; + if (server->ops->is_status_pending && + server->ops->is_status_pending(buf, server, 0)) { + discard_remaining_data(server); + return -1; + } + /* Was the SMB read successful? */ rdata->result = server->ops->map_error(buf, false); if (rdata->result != 0) { --- linux-raspi2-4.2.0.orig/fs/cifs/connect.c +++ linux-raspi2-4.2.0/fs/cifs/connect.c @@ -362,7 +362,6 @@ server->session_key.response = NULL; server->session_key.len = 0; server->lstrp = jiffies; - mutex_unlock(&server->srv_mutex); /* mark submitted MIDs for retry and issue callback */ INIT_LIST_HEAD(&retry_list); @@ -375,6 +374,7 @@ list_move(&mid_entry->qhead, &retry_list); } spin_unlock(&GlobalMid_Lock); + mutex_unlock(&server->srv_mutex); cifs_dbg(FYI, "%s: issuing mid callbacks\n", __func__); list_for_each_safe(tmp, tmp2, &retry_list) { --- linux-raspi2-4.2.0.orig/fs/cifs/inode.c +++ linux-raspi2-4.2.0/fs/cifs/inode.c @@ -1831,11 +1831,11 @@ * @word: long word containing the bit lock */ static int -cifs_wait_bit_killable(struct wait_bit_key *key) +cifs_wait_bit_killable(struct wait_bit_key *key, int mode) { - if (fatal_signal_pending(current)) - return -ERESTARTSYS; freezable_schedule_unsafe(); + if (signal_pending_state(mode, current)) + return -ERESTARTSYS; return 0; } @@ -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/readdir.c +++ linux-raspi2-4.2.0/fs/cifs/readdir.c @@ -847,6 +847,7 @@ * if buggy server returns . and .. late do we want to * check for that here? */ + *tmp_buf = 0; rc = cifs_filldir(current_entry, file, ctx, tmp_buf, max_len); if (rc) { --- 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; @@ -1055,21 +1101,25 @@ { char *data_offset; struct create_context *cc; - unsigned int next = 0; + unsigned int next; + unsigned int remaining; char *name; data_offset = (char *)rsp + 4 + le32_to_cpu(rsp->CreateContextsOffset); + remaining = le32_to_cpu(rsp->CreateContextsLength); cc = (struct create_context *)data_offset; - do { - cc = (struct create_context *)((char *)cc + next); + while (remaining >= sizeof(struct create_context)) { name = le16_to_cpu(cc->NameOffset) + (char *)cc; - if (le16_to_cpu(cc->NameLength) != 4 || - strncmp(name, "RqLs", 4)) { - next = le32_to_cpu(cc->Next); - continue; - } - return server->ops->parse_lease_buf(cc, epoch); - } while (next != 0); + if (le16_to_cpu(cc->NameLength) == 4 && + strncmp(name, "RqLs", 4) == 0) + return server->ops->parse_lease_buf(cc, epoch); + + next = le32_to_cpu(cc->Next); + if (!next) + break; + remaining -= next; + cc = (struct create_context *)((char *)cc + next); + } return 0; } --- linux-raspi2-4.2.0.orig/fs/cifs/transport.c +++ linux-raspi2-4.2.0/fs/cifs/transport.c @@ -576,14 +576,16 @@ cifs_in_send_dec(server); cifs_save_when_sent(mid); - if (rc < 0) + if (rc < 0) { server->sequence_number -= 2; + cifs_delete_mid(mid); + } + mutex_unlock(&server->srv_mutex); if (rc == 0) return 0; - cifs_delete_mid(mid); add_credits_and_wake_if(server, credits, optype); return rc; } --- linux-raspi2-4.2.0.orig/fs/coredump.c +++ linux-raspi2-4.2.0/fs/coredump.c @@ -32,6 +32,9 @@ #include #include #include +#include +#include +#include #include #include @@ -513,10 +516,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 +553,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); @@ -629,11 +631,13 @@ } } else { struct inode *inode; + int open_flags = O_CREAT | O_RDWR | O_NOFOLLOW | + O_LARGEFILE | O_EXCL; 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,9 +645,53 @@ goto fail_unlock; } - cprm.file = filp_open(cn.corename, - O_CREAT | 2 | O_NOFOLLOW | O_LARGEFILE | flag, - 0600); + /* + * 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. + */ + if (need_suid_safe) { + /* + * Using user namespaces, normal user tasks can change + * their current->fs->root to point to arbitrary + * directories. Since the intention of the "only dump + * with a fully qualified path" rule is to control where + * coredumps may be placed using root privileges, + * current->fs->root must not be used. Instead, use the + * root directory of init_task. + */ + struct path root; + + task_lock(&init_task); + get_fs_root(init_task.fs, &root); + task_unlock(&init_task); + cprm.file = file_open_root(root.dentry, root.mnt, + cn.corename, open_flags, 0600); + path_put(&root); + } else { + cprm.file = filp_open(cn.corename, open_flags, 0600); + } if (IS_ERR(cprm.file)) goto fail_unlock; @@ -659,11 +707,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 @@ -269,9 +269,6 @@ return dentry->d_name.name != dentry->d_iname; } -/* - * Make sure other CPUs see the inode attached before the type is set. - */ static inline void __d_set_inode_and_type(struct dentry *dentry, struct inode *inode, unsigned type_flags) @@ -279,28 +276,18 @@ unsigned flags; dentry->d_inode = inode; - smp_wmb(); flags = READ_ONCE(dentry->d_flags); flags &= ~(DCACHE_ENTRY_TYPE | DCACHE_FALLTHRU); flags |= type_flags; WRITE_ONCE(dentry->d_flags, flags); } -/* - * Ideally, we want to make sure that other CPUs see the flags cleared before - * the inode is detached, but this is really a violation of RCU principles - * since the ordering suggests we should always set inode before flags. - * - * We should instead replace or discard the entire dentry - but that sucks - * performancewise on mass deletion/rename. - */ static inline void __d_clear_type_and_inode(struct dentry *dentry) { unsigned flags = READ_ONCE(dentry->d_flags); flags &= ~(DCACHE_ENTRY_TYPE | DCACHE_FALLTHRU); WRITE_ONCE(dentry->d_flags, flags); - smp_wmb(); dentry->d_inode = NULL; } @@ -370,9 +357,11 @@ __releases(dentry->d_inode->i_lock) { struct inode *inode = dentry->d_inode; + + raw_write_seqcount_begin(&dentry->d_seq); __d_clear_type_and_inode(dentry); hlist_del_init(&dentry->d_u.d_alias); - dentry_rcuwalk_invalidate(dentry); + raw_write_seqcount_end(&dentry->d_seq); spin_unlock(&dentry->d_lock); spin_unlock(&inode->i_lock); if (!inode->i_nlink) @@ -1167,7 +1156,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 +1261,7 @@ seq = 1; goto again; } +EXPORT_SYMBOL(d_walk); /* * Search for at least 1 mount point in the dentry's subdirs. @@ -1677,7 +1667,8 @@ DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE | DCACHE_OP_DELETE | - DCACHE_OP_SELECT_INODE)); + DCACHE_OP_SELECT_INODE | + DCACHE_OP_REAL)); dentry->d_op = op; if (!op) return; @@ -1695,6 +1686,8 @@ dentry->d_flags |= DCACHE_OP_PRUNE; if (op->d_select_inode) dentry->d_flags |= DCACHE_OP_SELECT_INODE; + if (op->d_real) + dentry->d_flags |= DCACHE_OP_REAL; } EXPORT_SYMBOL(d_set_d_op); @@ -1757,8 +1750,9 @@ spin_lock(&dentry->d_lock); if (inode) hlist_add_head(&dentry->d_u.d_alias, &inode->i_dentry); + raw_write_seqcount_begin(&dentry->d_seq); __d_set_inode_and_type(dentry, inode, add_flags); - dentry_rcuwalk_invalidate(dentry); + raw_write_seqcount_end(&dentry->d_seq); spin_unlock(&dentry->d_lock); fsnotify_d_instantiate(dentry, inode); } @@ -2926,6 +2920,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/devpts/inode.c +++ linux-raspi2-4.2.0/fs/devpts/inode.c @@ -575,6 +575,26 @@ mutex_unlock(&allocated_ptys_lock); } +/* + * pty code needs to hold extra references in case of last /dev/tty close + */ + +void devpts_add_ref(struct inode *ptmx_inode) +{ + struct super_block *sb = pts_sb_from_inode(ptmx_inode); + + atomic_inc(&sb->s_active); + ihold(ptmx_inode); +} + +void devpts_del_ref(struct inode *ptmx_inode) +{ + struct super_block *sb = pts_sb_from_inode(ptmx_inode); + + iput(ptmx_inode); + deactivate_super(sb); +} + /** * devpts_pty_new -- create a new inode in /dev/pts/ * @ptmx_inode: inode of the master --- linux-raspi2-4.2.0.orig/fs/direct-io.c +++ linux-raspi2-4.2.0/fs/direct-io.c @@ -1159,6 +1159,16 @@ } } + /* Once we sampled i_size check for reads beyond EOF */ + dio->i_size = i_size_read(inode); + if (iov_iter_rw(iter) == READ && offset >= dio->i_size) { + if (dio->flags & DIO_LOCKING) + mutex_unlock(&inode->i_mutex); + kmem_cache_free(dio_cache, dio); + retval = 0; + goto out; + } + /* * For file extending writes updating i_size before data writeouts * complete can expose uninitialized blocks in dumb filesystems. @@ -1212,7 +1222,6 @@ sdio.next_block_for_io = -1; dio->iocb = iocb; - dio->i_size = i_size_read(inode); spin_lock_init(&dio->bio_lock); dio->refcount = 1; --- 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/efivarfs/file.c +++ linux-raspi2-4.2.0/fs/efivarfs/file.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "internal.h" @@ -103,9 +104,78 @@ return size; } +static int +efivarfs_ioc_getxflags(struct file *file, void __user *arg) +{ + struct inode *inode = file->f_mapping->host; + unsigned int i_flags; + unsigned int flags = 0; + + i_flags = inode->i_flags; + if (i_flags & S_IMMUTABLE) + flags |= FS_IMMUTABLE_FL; + + if (copy_to_user(arg, &flags, sizeof(flags))) + return -EFAULT; + return 0; +} + +static int +efivarfs_ioc_setxflags(struct file *file, void __user *arg) +{ + struct inode *inode = file->f_mapping->host; + unsigned int flags; + unsigned int i_flags = 0; + int error; + + if (!inode_owner_or_capable(inode)) + return -EACCES; + + if (copy_from_user(&flags, arg, sizeof(flags))) + return -EFAULT; + + if (flags & ~FS_IMMUTABLE_FL) + return -EOPNOTSUPP; + + if (!capable(CAP_LINUX_IMMUTABLE)) + return -EPERM; + + if (flags & FS_IMMUTABLE_FL) + i_flags |= S_IMMUTABLE; + + + error = mnt_want_write_file(file); + if (error) + return error; + + mutex_lock(&inode->i_mutex); + inode_set_flags(inode, i_flags, S_IMMUTABLE); + mutex_unlock(&inode->i_mutex); + + mnt_drop_write_file(file); + + return 0; +} + +long +efivarfs_file_ioctl(struct file *file, unsigned int cmd, unsigned long p) +{ + void __user *arg = (void __user *)p; + + switch (cmd) { + case FS_IOC_GETFLAGS: + return efivarfs_ioc_getxflags(file, arg); + case FS_IOC_SETFLAGS: + return efivarfs_ioc_setxflags(file, arg); + } + + return -ENOTTY; +} + const struct file_operations efivarfs_file_operations = { .open = simple_open, .read = efivarfs_file_read, .write = efivarfs_file_write, .llseek = no_llseek, + .unlocked_ioctl = efivarfs_file_ioctl, }; --- linux-raspi2-4.2.0.orig/fs/efivarfs/inode.c +++ linux-raspi2-4.2.0/fs/efivarfs/inode.c @@ -15,7 +15,8 @@ #include "internal.h" struct inode *efivarfs_get_inode(struct super_block *sb, - const struct inode *dir, int mode, dev_t dev) + const struct inode *dir, int mode, + dev_t dev, bool is_removable) { struct inode *inode = new_inode(sb); @@ -23,6 +24,7 @@ inode->i_ino = get_next_ino(); inode->i_mode = mode; inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; + inode->i_flags = is_removable ? 0 : S_IMMUTABLE; switch (mode & S_IFMT) { case S_IFREG: inode->i_fop = &efivarfs_file_operations; @@ -102,22 +104,17 @@ static int efivarfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) { - struct inode *inode; + struct inode *inode = NULL; struct efivar_entry *var; int namelen, i = 0, err = 0; + bool is_removable = false; if (!efivarfs_valid_name(dentry->d_name.name, dentry->d_name.len)) return -EINVAL; - inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); - if (!inode) - return -ENOMEM; - var = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL); - if (!var) { - err = -ENOMEM; - goto out; - } + if (!var) + return -ENOMEM; /* length of the variable name itself: remove GUID and separator */ namelen = dentry->d_name.len - EFI_VARIABLE_GUID_LEN - 1; @@ -125,6 +122,16 @@ efivarfs_hex_to_guid(dentry->d_name.name + namelen + 1, &var->var.VendorGuid); + if (efivar_variable_is_removable(var->var.VendorGuid, + dentry->d_name.name, namelen)) + is_removable = true; + + inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0, is_removable); + if (!inode) { + err = -ENOMEM; + goto out; + } + for (i = 0; i < namelen; i++) var->var.VariableName[i] = dentry->d_name.name[i]; @@ -138,7 +145,8 @@ out: if (err) { kfree(var); - iput(inode); + if (inode) + iput(inode); } return err; } --- linux-raspi2-4.2.0.orig/fs/efivarfs/internal.h +++ linux-raspi2-4.2.0/fs/efivarfs/internal.h @@ -15,7 +15,8 @@ extern const struct inode_operations efivarfs_dir_inode_operations; extern bool efivarfs_valid_name(const char *str, int len); extern struct inode *efivarfs_get_inode(struct super_block *sb, - const struct inode *dir, int mode, dev_t dev); + const struct inode *dir, int mode, dev_t dev, + bool is_removable); extern struct list_head efivarfs_list; --- linux-raspi2-4.2.0.orig/fs/efivarfs/super.c +++ linux-raspi2-4.2.0/fs/efivarfs/super.c @@ -118,8 +118,9 @@ struct dentry *dentry, *root = sb->s_root; unsigned long size = 0; char *name; - int len, i; + int len; int err = -ENOMEM; + bool is_removable = false; entry = kzalloc(sizeof(*entry), GFP_KERNEL); if (!entry) @@ -128,15 +129,17 @@ memcpy(entry->var.VariableName, name16, name_size); memcpy(&(entry->var.VendorGuid), &vendor, sizeof(efi_guid_t)); - len = ucs2_strlen(entry->var.VariableName); + len = ucs2_utf8size(entry->var.VariableName); /* name, plus '-', plus GUID, plus NUL*/ name = kmalloc(len + 1 + EFI_VARIABLE_GUID_LEN + 1, GFP_KERNEL); if (!name) goto fail; - for (i = 0; i < len; i++) - name[i] = entry->var.VariableName[i] & 0xFF; + ucs2_as_utf8(name, entry->var.VariableName, len); + + if (efivar_variable_is_removable(entry->var.VendorGuid, name, len)) + is_removable = true; name[len] = '-'; @@ -144,7 +147,8 @@ name[len + EFI_VARIABLE_GUID_LEN+1] = '\0'; - inode = efivarfs_get_inode(sb, d_inode(root), S_IFREG | 0644, 0); + inode = efivarfs_get_inode(sb, d_inode(root), S_IFREG | 0644, 0, + is_removable); if (!inode) goto fail_name; @@ -200,7 +204,7 @@ sb->s_d_op = &efivarfs_d_ops; sb->s_time_gran = 1; - inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0); + inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0, true); if (!inode) return -ENOMEM; inode->i_op = &efivarfs_dir_inode_operations; --- 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 @@ -98,6 +100,13 @@ module_put(fmt->module); } +bool path_nosuid(const struct path *path) +{ + return (path->mnt->mnt_flags & MNT_NOSUID) || + (path->mnt->mnt_sb->s_iflags & SB_I_NOSUID); +} +EXPORT_SYMBOL(path_nosuid); + #ifdef CONFIG_USELIB /* * Note that a shared library must be both readable and executable due to @@ -787,6 +796,8 @@ if (name->name[0] != '\0') fsnotify_open(file); + trace_open_exec(name->name); + out: return file; @@ -1289,7 +1300,7 @@ bprm->cred->euid = current_euid(); bprm->cred->egid = current_egid(); - if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID) + if (path_nosuid(&bprm->file->f_path)) return; if (task_no_new_privs(current)) --- linux-raspi2-4.2.0.orig/fs/ext2/super.c +++ linux-raspi2-4.2.0/fs/ext2/super.c @@ -566,6 +566,8 @@ /* Fall through */ case Opt_dax: #ifdef CONFIG_FS_DAX + ext2_msg(sb, KERN_WARNING, + "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); set_opt(sbi->s_mount_opt, DAX); #else ext2_msg(sb, KERN_INFO, "dax option not supported"); --- 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; } @@ -408,7 +407,7 @@ struct ext4_crypto_ctx *ctx; struct page *ciphertext_page = NULL; struct bio *bio; - ext4_lblk_t lblk = ex->ee_block; + ext4_lblk_t lblk = le32_to_cpu(ex->ee_block); ext4_fsblk_t pblk = ext4_ext_pblock(ex); unsigned int len = ext4_ext_get_actual_len(ex); int err = 0; --- 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,18 +207,35 @@ 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; + } + down_read(&keyring_key->sem); ukp = ((struct user_key_payload *)keyring_key->payload.data); if (ukp->datalen != sizeof(struct ext4_encryption_key)) { res = -EINVAL; + up_read(&keyring_key->sem); goto out; } 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; + up_read(&keyring_key->sem); + goto out; + } res = ext4_derive_key_aes(ctx.nonce, master_key->raw, raw_key); + up_read(&keyring_key->sem); + if (res) + goto out; got_key: ctfm = crypto_alloc_ablkcipher(cipher_str, 0, 0); if (!ctfm || IS_ERR(ctfm)) { --- 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.h +++ linux-raspi2-4.2.0/fs/ext4/ext4.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -723,19 +724,55 @@ <= (EXT4_GOOD_OLD_INODE_SIZE + \ (einode)->i_extra_isize)) \ +/* + * We use an encoding that preserves the times for extra epoch "00": + * + * extra msb of adjust for signed + * epoch 32-bit 32-bit tv_sec to + * bits time decoded 64-bit tv_sec 64-bit tv_sec valid time range + * 0 0 1 -0x80000000..-0x00000001 0x000000000 1901-12-13..1969-12-31 + * 0 0 0 0x000000000..0x07fffffff 0x000000000 1970-01-01..2038-01-19 + * 0 1 1 0x080000000..0x0ffffffff 0x100000000 2038-01-19..2106-02-07 + * 0 1 0 0x100000000..0x17fffffff 0x100000000 2106-02-07..2174-02-25 + * 1 0 1 0x180000000..0x1ffffffff 0x200000000 2174-02-25..2242-03-16 + * 1 0 0 0x200000000..0x27fffffff 0x200000000 2242-03-16..2310-04-04 + * 1 1 1 0x280000000..0x2ffffffff 0x300000000 2310-04-04..2378-04-22 + * 1 1 0 0x300000000..0x37fffffff 0x300000000 2378-04-22..2446-05-10 + * + * Note that previous versions of the kernel on 64-bit systems would + * incorrectly use extra epoch bits 1,1 for dates between 1901 and + * 1970. e2fsck will correct this, assuming that it is run on the + * affected filesystem before 2242. + */ + static inline __le32 ext4_encode_extra_time(struct timespec *time) { - return cpu_to_le32((sizeof(time->tv_sec) > 4 ? - (time->tv_sec >> 32) & EXT4_EPOCH_MASK : 0) | - ((time->tv_nsec << EXT4_EPOCH_BITS) & EXT4_NSEC_MASK)); + u32 extra = sizeof(time->tv_sec) > 4 ? + ((time->tv_sec - (s32)time->tv_sec) >> 32) & EXT4_EPOCH_MASK : 0; + return cpu_to_le32(extra | (time->tv_nsec << EXT4_EPOCH_BITS)); } static inline void ext4_decode_extra_time(struct timespec *time, __le32 extra) { - if (sizeof(time->tv_sec) > 4) - time->tv_sec |= (__u64)(le32_to_cpu(extra) & EXT4_EPOCH_MASK) - << 32; - time->tv_nsec = (le32_to_cpu(extra) & EXT4_NSEC_MASK) >> EXT4_EPOCH_BITS; + if (unlikely(sizeof(time->tv_sec) > 4 && + (extra & cpu_to_le32(EXT4_EPOCH_MASK)))) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,20,0) + /* Handle legacy encoding of pre-1970 dates with epoch + * bits 1,1. We assume that by kernel version 4.20, + * everyone will have run fsck over the affected + * filesystems to correct the problem. (This + * backwards compatibility may be removed before this + * time, at the discretion of the ext4 developers.) + */ + u64 extra_bits = le32_to_cpu(extra) & EXT4_EPOCH_MASK; + if (extra_bits == 3 && ((time->tv_sec) & 0x80000000) != 0) + extra_bits = 0; + time->tv_sec += extra_bits << 32; +#else + time->tv_sec += (u64)(le32_to_cpu(extra) & EXT4_EPOCH_MASK) << 32; +#endif + } + time->tv_nsec = (le32_to_cpu(extra) & EXT4_NSEC_MASK) >> EXT4_EPOCH_BITS; } #define EXT4_INODE_SET_XTIME(xtime, inode, raw_inode) \ @@ -809,6 +846,29 @@ #include "extents_status.h" /* + * Lock subclasses for i_data_sem in the ext4_inode_info structure. + * + * These are needed to avoid lockdep false positives when we need to + * allocate blocks to the quota inode during ext4_map_blocks(), while + * holding i_data_sem for a normal (non-quota) inode. Since we don't + * do quota tracking for the quota inode, this avoids deadlock (as + * well as infinite recursion, since it isn't turtles all the way + * down...) + * + * I_DATA_SEM_NORMAL - Used for most inodes + * I_DATA_SEM_OTHER - Used by move_inode.c for the second normal inode + * where the second inode has larger inode number + * than the first + * I_DATA_SEM_QUOTA - Used for quota inodes only + */ +enum { + I_DATA_SEM_NORMAL = 0, + I_DATA_SEM_OTHER, + I_DATA_SEM_QUOTA, +}; + + +/* * fourth extended file system inode data in memory */ struct ext4_inode_info { --- 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/inode.c +++ linux-raspi2-4.2.0/fs/ext4/inode.c @@ -656,6 +656,34 @@ return retval; } +/* + * Update EXT4_MAP_FLAGS in bh->b_state. For buffer heads attached to pages + * we have to be careful as someone else may be manipulating b_state as well. + */ +static void ext4_update_bh_state(struct buffer_head *bh, unsigned long flags) +{ + unsigned long old_state; + unsigned long new_state; + + flags &= EXT4_MAP_FLAGS; + + /* Dummy buffer_head? Set non-atomically. */ + if (!bh->b_page) { + bh->b_state = (bh->b_state & ~EXT4_MAP_FLAGS) | flags; + return; + } + /* + * Someone else may be modifying b_state. Be careful! This is ugly but + * once we get rid of using bh as a container for mapping information + * to pass to / from get_block functions, this can go away. + */ + do { + old_state = READ_ONCE(bh->b_state); + new_state = (old_state & ~EXT4_MAP_FLAGS) | flags; + } while (unlikely( + cmpxchg(&bh->b_state, old_state, new_state) != old_state)); +} + /* Maximum number of blocks we map for direct IO at once. */ #define DIO_MAX_BLOCKS 4096 @@ -692,7 +720,7 @@ ext4_io_end_t *io_end = ext4_inode_aio(inode); map_bh(bh, inode->i_sb, map.m_pblk); - bh->b_state = (bh->b_state & ~EXT4_MAP_FLAGS) | map.m_flags; + ext4_update_bh_state(bh, map.m_flags); if (IS_DAX(inode) && buffer_unwritten(bh)) { /* * dgc: I suspect unwritten conversion on ext4+DAX is @@ -1636,7 +1664,7 @@ return ret; map_bh(bh, inode->i_sb, map.m_pblk); - bh->b_state = (bh->b_state & ~EXT4_MAP_FLAGS) | map.m_flags; + ext4_update_bh_state(bh, map.m_flags); if (buffer_unwritten(bh)) { /* A delayed write to unwritten bh should be marked @@ -3114,29 +3142,29 @@ * case, we allocate an io_end structure to hook to the iocb. */ iocb->private = NULL; - ext4_inode_aio_set(inode, NULL); - if (!is_sync_kiocb(iocb)) { - io_end = ext4_init_io_end(inode, GFP_NOFS); - if (!io_end) { - ret = -ENOMEM; - goto retake_lock; - } - /* - * Grab reference for DIO. Will be dropped in ext4_end_io_dio() - */ - iocb->private = ext4_get_io_end(io_end); - /* - * we save the io structure for current async direct - * IO, so that later ext4_map_blocks() could flag the - * io structure whether there is a unwritten extents - * needs to be converted when IO is completed. - */ - ext4_inode_aio_set(inode, io_end); - } - if (overwrite) { get_block_func = ext4_get_block_write_nolock; } else { + ext4_inode_aio_set(inode, NULL); + if (!is_sync_kiocb(iocb)) { + io_end = ext4_init_io_end(inode, GFP_NOFS); + if (!io_end) { + ret = -ENOMEM; + goto retake_lock; + } + /* + * Grab reference for DIO. Will be dropped in + * ext4_end_io_dio() + */ + iocb->private = ext4_get_io_end(io_end); + /* + * we save the io structure for current async direct + * IO, so that later ext4_map_blocks() could flag the + * io structure whether there is a unwritten extents + * needs to be converted when IO is completed. + */ + ext4_inode_aio_set(inode, io_end); + } get_block_func = ext4_get_block_write; dio_flags = DIO_LOCKING; } --- linux-raspi2-4.2.0.orig/fs/ext4/move_extent.c +++ linux-raspi2-4.2.0/fs/ext4/move_extent.c @@ -60,10 +60,10 @@ { if (first < second) { down_write(&EXT4_I(first)->i_data_sem); - down_write_nested(&EXT4_I(second)->i_data_sem, SINGLE_DEPTH_NESTING); + down_write_nested(&EXT4_I(second)->i_data_sem, I_DATA_SEM_OTHER); } else { down_write(&EXT4_I(second)->i_data_sem); - down_write_nested(&EXT4_I(first)->i_data_sem, SINGLE_DEPTH_NESTING); + down_write_nested(&EXT4_I(first)->i_data_sem, I_DATA_SEM_OTHER); } } @@ -265,11 +265,12 @@ ext4_lblk_t orig_blk_offset, donor_blk_offset; unsigned long blocksize = orig_inode->i_sb->s_blocksize; unsigned int tmp_data_size, data_size, replaced_size; - int err2, jblocks, retries = 0; + int i, err2, jblocks, retries = 0; int replaced_count = 0; int from = data_offset_in_page << orig_inode->i_blkbits; int blocks_per_page = PAGE_CACHE_SIZE >> orig_inode->i_blkbits; struct super_block *sb = orig_inode->i_sb; + struct buffer_head *bh = NULL; /* * It needs twice the amount of ordinary journal buffers because @@ -380,8 +381,17 @@ } /* Perform all necessary steps similar write_begin()/write_end() * but keeping in mind that i_size will not change */ - *err = __block_write_begin(pagep[0], from, replaced_size, - ext4_get_block); + if (!page_has_buffers(pagep[0])) + create_empty_buffers(pagep[0], 1 << orig_inode->i_blkbits, 0); + bh = page_buffers(pagep[0]); + for (i = 0; i < data_offset_in_page; i++) + bh = bh->b_this_page; + for (i = 0; i < block_len_in_page; i++) { + *err = ext4_get_block(orig_inode, orig_blk_offset + i, bh, 0); + if (*err < 0) + break; + bh = bh->b_this_page; + } if (!*err) *err = block_commit_write(pagep[0], from, from + replaced_size); @@ -473,6 +483,13 @@ orig_inode->i_ino, donor_inode->i_ino); return -EBUSY; } + + if (IS_NOQUOTA(orig_inode) || IS_NOQUOTA(donor_inode)) { + ext4_debug("ext4 move extent: The argument files should " + "not be quota files [ino:orig %lu, donor %lu]\n", + orig_inode->i_ino, donor_inode->i_ino); + return -EBUSY; + } /* Ext4 move extent supports only extent based file */ if (!(ext4_test_inode_flag(orig_inode, EXT4_INODE_EXTENTS))) { --- 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 @@ -198,7 +198,7 @@ if (flex_gd == NULL) goto out3; - if (flexbg_size >= UINT_MAX / sizeof(struct ext4_new_flex_group_data)) + if (flexbg_size >= UINT_MAX / sizeof(struct ext4_new_group_data)) goto out2; flex_gd->count = flexbg_size; @@ -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, @@ -1276,9 +1300,9 @@ return -1; } if (EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_QUOTA)) { - ext4_msg(sb, KERN_ERR, "Cannot set journaled quota options " - "when QUOTA feature is enabled"); - return -1; + ext4_msg(sb, KERN_INFO, "Journaled quota options " + "ignored when QUOTA feature is enabled"); + return 1; } qname = match_strdup(args); if (!qname) { @@ -1636,15 +1660,19 @@ } if (EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_QUOTA)) { - ext4_msg(sb, KERN_ERR, - "Cannot set journaled quota options " + ext4_msg(sb, KERN_INFO, + "Quota format mount options ignored " "when QUOTA feature is enabled"); - return -1; + return 1; } sbi->s_jquota_fmt = m->mount_opt; #endif -#ifndef CONFIG_FS_DAX } else if (token == Opt_dax) { +#ifdef CONFIG_FS_DAX + ext4_msg(sb, KERN_WARNING, + "DAX enabled. Warning: EXPERIMENTAL, use at your own risk"); + sbi->s_mount_opt |= m->mount_opt; +#else ext4_msg(sb, KERN_INFO, "dax option not supported"); return -1; #endif @@ -1696,11 +1724,11 @@ #ifdef CONFIG_QUOTA if (EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_QUOTA) && (test_opt(sb, USRQUOTA) || test_opt(sb, GRPQUOTA))) { - ext4_msg(sb, KERN_ERR, "Cannot set quota options when QUOTA " - "feature is enabled"); - return 0; - } - if (sbi->s_qf_names[USRQUOTA] || sbi->s_qf_names[GRPQUOTA]) { + ext4_msg(sb, KERN_INFO, "Quota feature enabled, usrquota and grpquota " + "mount options ignored."); + clear_opt(sb, USRQUOTA); + clear_opt(sb, GRPQUOTA); + } else if (sbi->s_qf_names[USRQUOTA] || sbi->s_qf_names[GRPQUOTA]) { if (test_opt(sb, USRQUOTA) && sbi->s_qf_names[USRQUOTA]) clear_opt(sb, USRQUOTA); @@ -1763,10 +1791,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 +4645,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 +4861,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 +4883,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; } @@ -5269,6 +5301,20 @@ EXT4_SB(sb)->s_jquota_fmt, type); } +static void lockdep_set_quota_inode(struct inode *inode, int subclass) +{ + struct ext4_inode_info *ei = EXT4_I(inode); + + /* The first argument of lockdep_set_subclass has to be + * *exactly* the same as the argument to init_rwsem() --- in + * this case, in init_once() --- or lockdep gets unhappy + * because the name of the lock is set using the + * stringification of the argument to init_rwsem(). + */ + (void) ei; /* shut up clang warning if !CONFIG_LOCKDEP */ + lockdep_set_subclass(&ei->i_data_sem, subclass); +} + /* * Standard function to be called on quota_on */ @@ -5308,8 +5354,12 @@ if (err) return err; } - - return dquot_quota_on(sb, type, format_id, path); + lockdep_set_quota_inode(path->dentry->d_inode, I_DATA_SEM_QUOTA); + err = dquot_quota_on(sb, type, format_id, path); + if (err) + lockdep_set_quota_inode(path->dentry->d_inode, + I_DATA_SEM_NORMAL); + return err; } static int ext4_quota_enable(struct super_block *sb, int type, int format_id, @@ -5335,8 +5385,11 @@ /* Don't account quota for quota files to avoid recursion */ qf_inode->i_flags |= S_NOQUOTA; + lockdep_set_quota_inode(qf_inode, I_DATA_SEM_QUOTA); err = dquot_enable(qf_inode, type, format_id, flags); iput(qf_inode); + if (err) + lockdep_set_quota_inode(qf_inode, I_DATA_SEM_NORMAL); return err; } --- linux-raspi2-4.2.0.orig/fs/ext4/symlink.c +++ linux-raspi2-4.2.0/fs/ext4/symlink.c @@ -52,7 +52,7 @@ /* Symlink is encrypted */ sd = (struct ext4_encrypted_symlink_data *)caddr; cstr.name = sd->encrypted_path; - cstr.len = le32_to_cpu(sd->len); + cstr.len = le16_to_cpu(sd->len); if ((cstr.len + sizeof(struct ext4_encrypted_symlink_data) - 1) > max_size) { --- 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/fat/dir.c +++ linux-raspi2-4.2.0/fs/fat/dir.c @@ -610,9 +610,9 @@ int status = fat_parse_long(inode, &cpos, &bh, &de, &unicode, &nr_slots); if (status < 0) { - ctx->pos = cpos; + bh = NULL; ret = status; - goto out; + goto end_of_dir; } else if (status == PARSE_INVALID) goto record_end; else if (status == PARSE_NOT_LONGNAME) @@ -654,8 +654,9 @@ fill_len = short_len; start_filldir: - if (!fake_offset) - ctx->pos = cpos - (nr_slots + 1) * sizeof(struct msdos_dir_entry); + ctx->pos = cpos - (nr_slots + 1) * sizeof(struct msdos_dir_entry); + if (fake_offset && ctx->pos < 2) + ctx->pos = 2; if (!memcmp(de->name, MSDOS_DOT, MSDOS_NAME)) { if (!dir_emit_dot(file, ctx)) @@ -681,14 +682,19 @@ fake_offset = 0; ctx->pos = cpos; goto get_new; + end_of_dir: - ctx->pos = cpos; + if (fake_offset && cpos < 2) + ctx->pos = 2; + else + ctx->pos = cpos; fill_failed: brelse(bh); if (unicode) __putname(unicode); out: mutex_unlock(&sbi->s_lock); + return ret; } --- linux-raspi2-4.2.0.orig/fs/fhandle.c +++ linux-raspi2-4.2.0/fs/fhandle.c @@ -228,7 +228,7 @@ path_put(&path); return fd; } - file = file_open_root(path.dentry, path.mnt, "", open_flag); + file = file_open_root(path.dentry, path.mnt, "", open_flag, 0); if (IS_ERR(file)) { put_unused_fd(fd); retval = PTR_ERR(file); --- 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/fs-writeback.c +++ linux-raspi2-4.2.0/fs/fs-writeback.c @@ -283,13 +283,15 @@ wb_get(wb); spin_unlock(&inode->i_lock); spin_lock(&wb->list_lock); - wb_put(wb); /* not gonna deref it anymore */ /* i_wb may have changed inbetween, can't use inode_to_wb() */ - if (likely(wb == inode->i_wb)) - return wb; /* @inode already has ref */ + if (likely(wb == inode->i_wb)) { + wb_put(wb); /* @inode already has ref */ + return wb; + } spin_unlock(&wb->list_lock); + wb_put(wb); cpu_relax(); spin_lock(&inode->i_lock); } @@ -1330,10 +1332,10 @@ * we go e.g. from filesystem. Flusher thread uses __writeback_single_inode() * and does more profound writeback list handling in writeback_sb_inodes(). */ -static int -writeback_single_inode(struct inode *inode, struct bdi_writeback *wb, - struct writeback_control *wbc) +static int writeback_single_inode(struct inode *inode, + struct writeback_control *wbc) { + struct bdi_writeback *wb; int ret = 0; spin_lock(&inode->i_lock); @@ -1371,7 +1373,8 @@ ret = __writeback_single_inode(inode, wbc); wbc_detach_inode(wbc); - spin_lock(&wb->list_lock); + + wb = inode_to_wb_and_lock_list(inode); spin_lock(&inode->i_lock); /* * If inode is clean, remove it from writeback lists. Otherwise don't @@ -1442,6 +1445,7 @@ while (!list_empty(&wb->b_io)) { struct inode *inode = wb_inode(wb->b_io.prev); + struct bdi_writeback *tmp_wb; if (inode->i_sb != sb) { if (work->sb) { @@ -1518,14 +1522,37 @@ wbc_detach_inode(&wbc); work->nr_pages -= write_chunk - wbc.nr_to_write; wrote += write_chunk - wbc.nr_to_write; - spin_lock(&wb->list_lock); + + if (need_resched()) { + /* + * We're trying to balance between building up a nice + * long list of IOs to improve our merge rate, and + * getting those IOs out quickly for anyone throttling + * in balance_dirty_pages(). cond_resched() doesn't + * unplug, so get our IOs out the door before we + * give up the CPU. + */ + blk_flush_plug(current); + cond_resched(); + } + + /* + * Requeue @inode if still dirty. Be careful as @inode may + * have been switched to another wb in the meantime. + */ + tmp_wb = inode_to_wb_and_lock_list(inode); spin_lock(&inode->i_lock); if (!(inode->i_state & I_DIRTY_ALL)) wrote++; - requeue_inode(inode, wb, &wbc); + requeue_inode(inode, tmp_wb, &wbc); inode_sync_complete(inode); spin_unlock(&inode->i_lock); - cond_resched_lock(&wb->list_lock); + + if (unlikely(tmp_wb != wb)) { + spin_unlock(&tmp_wb->list_lock); + spin_lock(&wb->list_lock); + } + /* * bail out to wb_writeback() often enough to check * background threshold and other termination conditions. @@ -2303,7 +2330,6 @@ */ int write_inode_now(struct inode *inode, int sync) { - struct bdi_writeback *wb = &inode_to_bdi(inode)->wb; struct writeback_control wbc = { .nr_to_write = LONG_MAX, .sync_mode = sync ? WB_SYNC_ALL : WB_SYNC_NONE, @@ -2315,7 +2341,7 @@ wbc.nr_to_write = 0; might_sleep(); - return writeback_single_inode(inode, wb, &wbc); + return writeback_single_inode(inode, &wbc); } EXPORT_SYMBOL(write_inode_now); @@ -2332,7 +2358,7 @@ */ int sync_inode(struct inode *inode, struct writeback_control *wbc) { - return writeback_single_inode(inode, &inode_to_bdi(inode)->wb, wbc); + return writeback_single_inode(inode, wbc); } EXPORT_SYMBOL(sync_inode); --- 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/fuse/cuse.c +++ linux-raspi2-4.2.0/fs/fuse/cuse.c @@ -90,7 +90,7 @@ static ssize_t cuse_read_iter(struct kiocb *kiocb, struct iov_iter *to) { - struct fuse_io_priv io = { .async = 0, .file = kiocb->ki_filp }; + struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(kiocb->ki_filp); loff_t pos = 0; return fuse_direct_io(&io, to, &pos, FUSE_DIO_CUSE); @@ -98,7 +98,7 @@ static ssize_t cuse_write_iter(struct kiocb *kiocb, struct iov_iter *from) { - struct fuse_io_priv io = { .async = 0, .file = kiocb->ki_filp }; + struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(kiocb->ki_filp); loff_t pos = 0; /* * No locking or generic_write_checks(), the server is @@ -549,6 +549,8 @@ unregister_chrdev_region(cc->cdev->dev, 1); cdev_del(cc->cdev); } + /* Base reference is now owned by "fud" */ + fuse_conn_put(&cc->fc); rc = fuse_dev_release(inode, file); /* puts the base reference */ --- linux-raspi2-4.2.0.orig/fs/fuse/file.c +++ linux-raspi2-4.2.0/fs/fuse/file.c @@ -528,6 +528,11 @@ } } +static void fuse_io_release(struct kref *kref) +{ + kfree(container_of(kref, struct fuse_io_priv, refcnt)); +} + static ssize_t fuse_get_res_by_io(struct fuse_io_priv *io) { if (io->err) @@ -585,8 +590,9 @@ } io->iocb->ki_complete(io->iocb, res, 0); - kfree(io); } + + kref_put(&io->refcnt, fuse_io_release); } static void fuse_aio_complete_req(struct fuse_conn *fc, struct fuse_req *req) @@ -613,6 +619,7 @@ size_t num_bytes, struct fuse_io_priv *io) { spin_lock(&io->lock); + kref_get(&io->refcnt); io->size += num_bytes; io->reqs++; spin_unlock(&io->lock); @@ -691,7 +698,7 @@ static int fuse_do_readpage(struct file *file, struct page *page) { - struct fuse_io_priv io = { .async = 0, .file = file }; + struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(file); struct inode *inode = page->mapping->host; struct fuse_conn *fc = get_fuse_conn(inode); struct fuse_req *req; @@ -984,7 +991,7 @@ size_t res; unsigned offset; unsigned i; - struct fuse_io_priv io = { .async = 0, .file = file }; + struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(file); for (i = 0; i < req->num_pages; i++) fuse_wait_on_page_writeback(inode, req->pages[i]->index); @@ -1049,6 +1056,7 @@ tmp = iov_iter_copy_from_user_atomic(page, ii, offset, bytes); flush_dcache_page(page); + iov_iter_advance(ii, tmp); if (!tmp) { unlock_page(page); page_cache_release(page); @@ -1061,7 +1069,6 @@ req->page_descs[req->num_pages].length = tmp; req->num_pages++; - iov_iter_advance(ii, tmp); count += tmp; pos += tmp; offset += tmp; @@ -1398,7 +1405,7 @@ static ssize_t fuse_direct_read_iter(struct kiocb *iocb, struct iov_iter *to) { - struct fuse_io_priv io = { .async = 0, .file = iocb->ki_filp }; + struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(iocb->ki_filp); return __fuse_direct_read(&io, to, &iocb->ki_pos); } @@ -1406,7 +1413,7 @@ { struct file *file = iocb->ki_filp; struct inode *inode = file_inode(file); - struct fuse_io_priv io = { .async = 0, .file = file }; + struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(file); ssize_t res; if (is_bad_inode(inode)) @@ -2786,6 +2793,7 @@ loff_t i_size; size_t count = iov_iter_count(iter); struct fuse_io_priv *io; + bool is_sync = is_sync_kiocb(iocb); pos = offset; inode = file->f_mapping->host; @@ -2806,6 +2814,7 @@ if (!io) return -ENOMEM; spin_lock_init(&io->lock); + kref_init(&io->refcnt); io->reqs = 1; io->bytes = -1; io->size = 0; @@ -2825,12 +2834,18 @@ * to wait on real async I/O requests, so we must submit this request * synchronously. */ - if (!is_sync_kiocb(iocb) && (offset + count > i_size) && + if (!is_sync && (offset + count > i_size) && iov_iter_rw(iter) == WRITE) io->async = false; - if (io->async && is_sync_kiocb(iocb)) + if (io->async && is_sync) { + /* + * Additional reference to keep io around after + * calling fuse_aio_complete() + */ + kref_get(&io->refcnt); io->done = &wait; + } if (iov_iter_rw(iter) == WRITE) { ret = fuse_direct_io(io, iter, &pos, FUSE_DIO_WRITE); @@ -2843,14 +2858,14 @@ fuse_aio_complete(io, ret < 0 ? ret : 0, -1); /* we have a non-extending, async request, so return */ - if (!is_sync_kiocb(iocb)) + if (!is_sync) return -EIOCBQUEUED; wait_for_completion(&wait); ret = fuse_get_res_by_io(io); } - kfree(io); + kref_put(&io->refcnt, fuse_io_release); if (iov_iter_rw(iter) == WRITE) { if (ret > 0) --- linux-raspi2-4.2.0.orig/fs/fuse/fuse_i.h +++ linux-raspi2-4.2.0/fs/fuse/fuse_i.h @@ -22,6 +22,7 @@ #include #include #include +#include /** Max number of pages that can be used in a single read request */ #define FUSE_MAX_PAGES_PER_REQ 32 @@ -243,6 +244,7 @@ /** The request IO state (for asynchronous processing) */ struct fuse_io_priv { + struct kref refcnt; int async; spinlock_t lock; unsigned reqs; @@ -256,6 +258,13 @@ struct completion *done; }; +#define FUSE_IO_PRIV_SYNC(f) \ +{ \ + .refcnt = { ATOMIC_INIT(1) }, \ + .async = 0, \ + .file = f, \ +} + /** * Request flags * --- 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"); @@ -730,15 +730,13 @@ init_special_inode(inode, mode, dev); err = do_mknod(name, mode, MAJOR(dev), MINOR(dev)); - if (!err) + if (err) goto out_free; err = read_name(inode, name); __putname(name); if (err) goto out_put; - if (err) - goto out_put; d_instantiate(dentry, inode); return 0; --- 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; @@ -362,12 +377,11 @@ struct inode *inode = d_inode(dentry); dnode_secno dno; int r; - int rep = 0; int err; hpfs_lock(dir->i_sb); hpfs_adjust_length(name, &len); -again: + err = -ENOENT; de = map_dirent(dir, hpfs_i(dir)->i_dno, name, len, &dno, &qbh); if (!de) @@ -387,33 +401,9 @@ hpfs_error(dir->i_sb, "there was error when removing dirent"); err = -EFSERROR; break; - case 2: /* no space for deleting, try to truncate file */ - + case 2: /* no space for deleting */ err = -ENOSPC; - if (rep++) - break; - - dentry_unhash(dentry); - if (!d_unhashed(dentry)) { - hpfs_unlock(dir->i_sb); - return -ENOSPC; - } - if (generic_permission(inode, MAY_WRITE) || - !S_ISREG(inode->i_mode) || - get_write_access(inode)) { - d_rehash(dentry); - } else { - struct iattr newattrs; - /*pr_info("truncating file before delete.\n");*/ - newattrs.ia_size = 0; - newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME; - err = notify_change(dentry, &newattrs, NULL); - put_write_access(inode); - if (!err) - goto again; - } - hpfs_unlock(dir->i_sb); - return -ENOSPC; + break; default: drop_nlink(inode); err = 0; @@ -423,6 +413,8 @@ out1: hpfs_brelse4(&qbh); out: + if (!err) + hpfs_update_directory_times(dir); hpfs_unlock(dir->i_sb); return err; } @@ -477,6 +469,8 @@ out1: hpfs_brelse4(&qbh); out: + if (!err) + hpfs_update_directory_times(dir); hpfs_unlock(dir->i_sb); return err; } @@ -595,7 +589,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 +604,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 @@ -156,6 +157,12 @@ inode->i_rdev = 0; inode->dirtied_when = 0; +#ifdef CONFIG_CGROUP_WRITEBACK + inode->i_wb_frn_winner = 0; + inode->i_wb_frn_avg_time = 0; + inode->i_wb_frn_history = 0; +#endif + if (security_inode_alloc(inode)) goto out; spin_lock_init(&inode->i_lock); --- 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 @@ -1408,11 +1408,12 @@ /** * jbd2_mark_journal_empty() - Mark on disk journal as empty. * @journal: The journal to update. + * @write_op: With which operation should we write the journal sb * * Update a journal's dynamic superblock fields to show that journal is empty. * Write updated superblock to disk waiting for IO to complete. */ -static void jbd2_mark_journal_empty(journal_t *journal) +static void jbd2_mark_journal_empty(journal_t *journal, int write_op) { journal_superblock_t *sb = journal->j_superblock; @@ -1430,7 +1431,7 @@ sb->s_start = cpu_to_be32(0); read_unlock(&journal->j_state_lock); - jbd2_write_superblock(journal, WRITE_FUA); + jbd2_write_superblock(journal, write_op); /* Log is no longer empty */ write_lock(&journal->j_state_lock); @@ -1693,8 +1694,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); } @@ -1706,7 +1716,13 @@ if (journal->j_sb_buffer) { if (!is_journal_aborted(journal)) { mutex_lock(&journal->j_checkpoint_mutex); - jbd2_mark_journal_empty(journal); + + write_lock(&journal->j_state_lock); + journal->j_tail_sequence = + ++journal->j_transaction_sequence; + write_unlock(&journal->j_state_lock); + + jbd2_mark_journal_empty(journal, WRITE_FLUSH_FUA); mutex_unlock(&journal->j_checkpoint_mutex); } else err = -EIO; @@ -1965,7 +1981,7 @@ * the magic code for a fully-recovered superblock. Any future * commits of data to the journal will restore the current * s_start value. */ - jbd2_mark_journal_empty(journal); + jbd2_mark_journal_empty(journal, WRITE_FUA); mutex_unlock(&journal->j_checkpoint_mutex); write_lock(&journal->j_state_lock); J_ASSERT(!journal->j_running_transaction); @@ -2011,7 +2027,7 @@ if (write) { /* Lock to make assertions happy... */ mutex_lock(&journal->j_checkpoint_mutex); - jbd2_mark_journal_empty(journal); + jbd2_mark_journal_empty(journal, WRITE_FUA); mutex_unlock(&journal->j_checkpoint_mutex); } @@ -2062,8 +2078,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/jbd2/transaction.c +++ linux-raspi2-4.2.0/fs/jbd2/transaction.c @@ -991,7 +991,8 @@ } /* Fast check whether buffer is already attached to the required transaction */ -static bool jbd2_write_access_granted(handle_t *handle, struct buffer_head *bh) +static bool jbd2_write_access_granted(handle_t *handle, struct buffer_head *bh, + bool undo) { struct journal_head *jh; bool ret = false; @@ -1018,6 +1019,9 @@ jh = READ_ONCE(bh->b_private); if (!jh) goto out; + /* For undo access buffer must have data copied */ + if (undo && !jh->b_committed_data) + goto out; if (jh->b_transaction != handle->h_transaction && jh->b_next_transaction != handle->h_transaction) goto out; @@ -1055,7 +1059,7 @@ struct journal_head *jh; int rc; - if (jbd2_write_access_granted(handle, bh)) + if (jbd2_write_access_granted(handle, bh, false)) return 0; jh = jbd2_journal_add_journal_head(bh); @@ -1192,7 +1196,7 @@ char *committed_data = NULL; JBUFFER_TRACE(jh, "entry"); - if (jbd2_write_access_granted(handle, bh)) + if (jbd2_write_access_granted(handle, bh, true)) return 0; jh = jbd2_journal_add_journal_head(bh); @@ -2108,6 +2112,7 @@ if (!buffer_dirty(bh)) { /* bdflush has written it. We can drop it now */ + __jbd2_journal_remove_checkpoint(jh); goto zap_buffer; } @@ -2137,6 +2142,7 @@ /* The orphan record's transaction has * committed. We can cleanse this buffer */ clear_buffer_jbddirty(bh); + __jbd2_journal_remove_checkpoint(jh); goto zap_buffer; } } --- linux-raspi2-4.2.0.orig/fs/jffs2/README.Locking +++ linux-raspi2-4.2.0/fs/jffs2/README.Locking @@ -2,10 +2,6 @@ JFFS2 LOCKING DOCUMENTATION --------------------------- -At least theoretically, JFFS2 does not require the Big Kernel Lock -(BKL), which was always helpfully obtained for it by Linux 2.4 VFS -code. It has its own locking, as described below. - This document attempts to describe the existing locking rules for JFFS2. It is not expected to remain perfectly up to date, but ought to be fairly close. @@ -69,6 +65,7 @@ any f->sem held. 2. Never attempt to lock two file mutexes in one thread. No ordering rules have been made for doing so. + 3. Never lock a page cache page with f->sem held. erase_completion_lock spinlock --- linux-raspi2-4.2.0.orig/fs/jffs2/build.c +++ linux-raspi2-4.2.0/fs/jffs2/build.c @@ -49,7 +49,8 @@ static void jffs2_build_inode_pass1(struct jffs2_sb_info *c, - struct jffs2_inode_cache *ic) + struct jffs2_inode_cache *ic, + int *dir_hardlinks) { struct jffs2_full_dirent *fd; @@ -68,19 +69,21 @@ dbg_fsbuild("child \"%s\" (ino #%u) of dir ino #%u doesn't exist!\n", fd->name, fd->ino, ic->ino); jffs2_mark_node_obsolete(c, fd->raw); + /* Clear the ic/raw union so it doesn't cause problems later. */ + fd->ic = NULL; continue; } + /* From this point, fd->raw is no longer used so we can set fd->ic */ + fd->ic = child_ic; + child_ic->pino_nlink++; + /* If we appear (at this stage) to have hard-linked directories, + * set a flag to trigger a scan later */ if (fd->type == DT_DIR) { - if (child_ic->pino_nlink) { - JFFS2_ERROR("child dir \"%s\" (ino #%u) of dir ino #%u appears to be a hard link\n", - fd->name, fd->ino, ic->ino); - /* TODO: What do we do about it? */ - } else { - child_ic->pino_nlink = ic->ino; - } - } else - child_ic->pino_nlink++; + child_ic->flags |= INO_FLAGS_IS_DIR; + if (child_ic->pino_nlink > 1) + *dir_hardlinks = 1; + } dbg_fsbuild("increased nlink for child \"%s\" (ino #%u)\n", fd->name, fd->ino); /* Can't free scan_dents so far. We might need them in pass 2 */ @@ -94,8 +97,7 @@ */ static int jffs2_build_filesystem(struct jffs2_sb_info *c) { - int ret; - int i; + int ret, i, dir_hardlinks = 0; struct jffs2_inode_cache *ic; struct jffs2_full_dirent *fd; struct jffs2_full_dirent *dead_fds = NULL; @@ -119,7 +121,7 @@ /* Now scan the directory tree, increasing nlink according to every dirent found. */ for_each_inode(i, c, ic) { if (ic->scan_dents) { - jffs2_build_inode_pass1(c, ic); + jffs2_build_inode_pass1(c, ic, &dir_hardlinks); cond_resched(); } } @@ -155,6 +157,20 @@ } dbg_fsbuild("pass 2a complete\n"); + + if (dir_hardlinks) { + /* If we detected directory hardlinks earlier, *hopefully* + * they are gone now because some of the links were from + * dead directories which still had some old dirents lying + * around and not yet garbage-collected, but which have + * been discarded above. So clear the pino_nlink field + * in each directory, so that the final scan below can + * print appropriate warnings. */ + for_each_inode(i, c, ic) { + if (ic->flags & INO_FLAGS_IS_DIR) + ic->pino_nlink = 0; + } + } dbg_fsbuild("freeing temporary data structures\n"); /* Finally, we can scan again and free the dirent structs */ @@ -162,6 +178,33 @@ while(ic->scan_dents) { fd = ic->scan_dents; ic->scan_dents = fd->next; + /* We do use the pino_nlink field to count nlink of + * directories during fs build, so set it to the + * parent ino# now. Now that there's hopefully only + * one. */ + if (fd->type == DT_DIR) { + if (!fd->ic) { + /* We'll have complained about it and marked the coresponding + raw node obsolete already. Just skip it. */ + continue; + } + + /* We *have* to have set this in jffs2_build_inode_pass1() */ + BUG_ON(!(fd->ic->flags & INO_FLAGS_IS_DIR)); + + /* We clear ic->pino_nlink ∀ directories' ic *only* if dir_hardlinks + * is set. Otherwise, we know this should never trigger anyway, so + * we don't do the check. And ic->pino_nlink still contains the nlink + * value (which is 1). */ + if (dir_hardlinks && fd->ic->pino_nlink) { + JFFS2_ERROR("child dir \"%s\" (ino #%u) of dir ino #%u is also hard linked from dir ino #%u\n", + fd->name, fd->ino, ic->ino, fd->ic->pino_nlink); + /* Should we unlink it from its previous parent? */ + } + + /* For directories, ic->pino_nlink holds that parent inode # */ + fd->ic->pino_nlink = ic->ino; + } jffs2_free_full_dirent(fd); } ic->scan_dents = NULL; @@ -240,11 +283,7 @@ /* Reduce nlink of the child. If it's now zero, stick it on the dead_fds list to be cleaned up later. Else just free the fd */ - - if (fd->type == DT_DIR) - child_ic->pino_nlink = 0; - else - child_ic->pino_nlink--; + child_ic->pino_nlink--; if (!child_ic->pino_nlink) { dbg_fsbuild("inode #%u (\"%s\") now has no links; adding to dead_fds list.\n", --- linux-raspi2-4.2.0.orig/fs/jffs2/dir.c +++ linux-raspi2-4.2.0/fs/jffs2/dir.c @@ -846,9 +846,14 @@ pr_notice("%s(): Link succeeded, unlink failed (err %d). You now have a hard link\n", __func__, ret); - /* Might as well let the VFS know */ - d_instantiate(new_dentry, d_inode(old_dentry)); - ihold(d_inode(old_dentry)); + /* + * We can't keep the target in dcache after that. + * For one thing, we can't afford dentry aliases for directories. + * For another, if there was a victim, we _can't_ set new inode + * for that sucker and we have to trigger mount eviction - the + * caller won't do it on its own since we are returning an error. + */ + d_invalidate(new_dentry); new_dir_i->i_mtime = new_dir_i->i_ctime = ITIME(now); return ret; } --- linux-raspi2-4.2.0.orig/fs/jffs2/file.c +++ linux-raspi2-4.2.0/fs/jffs2/file.c @@ -137,39 +137,33 @@ struct page *pg; struct inode *inode = mapping->host; struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); - struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); - struct jffs2_raw_inode ri; - uint32_t alloc_len = 0; pgoff_t index = pos >> PAGE_CACHE_SHIFT; uint32_t pageofs = index << PAGE_CACHE_SHIFT; int ret = 0; - jffs2_dbg(1, "%s()\n", __func__); - - if (pageofs > inode->i_size) { - ret = jffs2_reserve_space(c, sizeof(ri), &alloc_len, - ALLOC_NORMAL, JFFS2_SUMMARY_INODE_SIZE); - if (ret) - return ret; - } - - mutex_lock(&f->sem); pg = grab_cache_page_write_begin(mapping, index, flags); - if (!pg) { - if (alloc_len) - jffs2_complete_reservation(c); - mutex_unlock(&f->sem); + if (!pg) return -ENOMEM; - } *pagep = pg; - if (alloc_len) { + jffs2_dbg(1, "%s()\n", __func__); + + if (pageofs > inode->i_size) { /* Make new hole frag from old EOF to new page */ + struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); + struct jffs2_raw_inode ri; struct jffs2_full_dnode *fn; + uint32_t alloc_len; jffs2_dbg(1, "Writing new hole frag 0x%x-0x%x between current EOF and new page\n", (unsigned int)inode->i_size, pageofs); + ret = jffs2_reserve_space(c, sizeof(ri), &alloc_len, + ALLOC_NORMAL, JFFS2_SUMMARY_INODE_SIZE); + if (ret) + goto out_page; + + mutex_lock(&f->sem); memset(&ri, 0, sizeof(ri)); ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); @@ -196,6 +190,7 @@ if (IS_ERR(fn)) { ret = PTR_ERR(fn); jffs2_complete_reservation(c); + mutex_unlock(&f->sem); goto out_page; } ret = jffs2_add_full_dnode_to_inode(c, f, fn); @@ -210,10 +205,12 @@ jffs2_mark_node_obsolete(c, fn->raw); jffs2_free_full_dnode(fn); jffs2_complete_reservation(c); + mutex_unlock(&f->sem); goto out_page; } jffs2_complete_reservation(c); inode->i_size = pageofs; + mutex_unlock(&f->sem); } /* @@ -222,18 +219,18 @@ * case of a short-copy. */ if (!PageUptodate(pg)) { + mutex_lock(&f->sem); ret = jffs2_do_readpage_nolock(inode, pg); + mutex_unlock(&f->sem); if (ret) goto out_page; } - mutex_unlock(&f->sem); jffs2_dbg(1, "end write_begin(). pg->flags %lx\n", pg->flags); return ret; out_page: unlock_page(pg); page_cache_release(pg); - mutex_unlock(&f->sem); return ret; } --- linux-raspi2-4.2.0.orig/fs/jffs2/gc.c +++ linux-raspi2-4.2.0/fs/jffs2/gc.c @@ -1296,14 +1296,17 @@ BUG_ON(start > orig_start); } - /* First, use readpage() to read the appropriate page into the page cache */ - /* Q: What happens if we actually try to GC the _same_ page for which commit_write() - * triggered garbage collection in the first place? - * A: I _think_ it's OK. read_cache_page shouldn't deadlock, we'll write out the - * page OK. We'll actually write it out again in commit_write, which is a little - * suboptimal, but at least we're correct. - */ + /* The rules state that we must obtain the page lock *before* f->sem, so + * drop f->sem temporarily. Since we also hold c->alloc_sem, nothing's + * actually going to *change* so we're safe; we only allow reading. + * + * It is important to note that jffs2_write_begin() will ensure that its + * page is marked Uptodate before allocating space. That means that if we + * end up here trying to GC the *same* page that jffs2_write_begin() is + * trying to write out, read_cache_page() will not deadlock. */ + mutex_unlock(&f->sem); pg_ptr = jffs2_gc_fetch_page(c, f, start, &pg); + mutex_lock(&f->sem); if (IS_ERR(pg_ptr)) { pr_warn("read_cache_page() returned error: %ld\n", --- linux-raspi2-4.2.0.orig/fs/jffs2/nodelist.h +++ linux-raspi2-4.2.0/fs/jffs2/nodelist.h @@ -194,6 +194,7 @@ #define INO_STATE_CLEARING 6 /* In clear_inode() */ #define INO_FLAGS_XATTR_CHECKED 0x01 /* has no duplicate xattr_ref */ +#define INO_FLAGS_IS_DIR 0x02 /* is a directory */ #define RAWNODE_CLASS_INODE_CACHE 0 #define RAWNODE_CLASS_XATTR_DATUM 1 @@ -249,7 +250,10 @@ struct jffs2_full_dirent { - struct jffs2_raw_node_ref *raw; + union { + struct jffs2_raw_node_ref *raw; + struct jffs2_inode_cache *ic; /* Just during part of build */ + }; struct jffs2_full_dirent *next; uint32_t version; uint32_t ino; /* == zero for unlink */ --- 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/locks.c +++ linux-raspi2-4.2.0/fs/locks.c @@ -2154,7 +2154,6 @@ goto out; } -again: error = flock_to_posix_lock(filp, file_lock, &flock); if (error) goto out; @@ -2196,19 +2195,22 @@ * Attempt to detect a close/fcntl race and recover by * releasing the lock that was just acquired. */ - /* - * we need that spin_lock here - it prevents reordering between - * update of i_flctx->flc_posix and check for it done in close(). - * rcu_read_lock() wouldn't do. - */ - spin_lock(¤t->files->file_lock); - f = fcheck(fd); - spin_unlock(¤t->files->file_lock); - if (!error && f != filp && flock.l_type != F_UNLCK) { - flock.l_type = F_UNLCK; - goto again; + if (!error && file_lock->fl_type != F_UNLCK) { + /* + * We need that spin_lock here - it prevents reordering between + * update of i_flctx->flc_posix and check for it done in + * close(). rcu_read_lock() wouldn't do. + */ + spin_lock(¤t->files->file_lock); + f = fcheck(fd); + spin_unlock(¤t->files->file_lock); + if (f != filp) { + file_lock->fl_type = F_UNLCK; + error = do_lock_file_wait(filp, cmd, file_lock); + WARN_ON_ONCE(error); + error = -EBADF; + } } - out: locks_free_lock(file_lock); return error; @@ -2294,7 +2296,6 @@ goto out; } -again: error = flock64_to_posix_lock(filp, file_lock, &flock); if (error) goto out; @@ -2336,14 +2337,22 @@ * Attempt to detect a close/fcntl race and recover by * releasing the lock that was just acquired. */ - spin_lock(¤t->files->file_lock); - f = fcheck(fd); - spin_unlock(¤t->files->file_lock); - if (!error && f != filp && flock.l_type != F_UNLCK) { - flock.l_type = F_UNLCK; - goto again; + if (!error && file_lock->fl_type != F_UNLCK) { + /* + * We need that spin_lock here - it prevents reordering between + * update of i_flctx->flc_posix and check for it done in + * close(). rcu_read_lock() wouldn't do. + */ + spin_lock(¤t->files->file_lock); + f = fcheck(fd); + spin_unlock(¤t->files->file_lock); + if (f != filp) { + file_lock->fl_type = F_UNLCK; + error = do_lock_file_wait(filp, cmd, file_lock); + WARN_ON_ONCE(error); + error = -EBADF; + } } - out: locks_free_lock(file_lock); return error; --- 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; } @@ -1687,6 +1711,11 @@ return 0; if (!follow) return 0; + /* make sure that d_is_symlink above matches inode */ + if (nd->flags & LOOKUP_RCU) { + if (read_seqcount_retry(&link->dentry->d_seq, seq)) + return -ECHILD; + } return pick_link(nd, link, inode, seq); } @@ -1718,11 +1747,11 @@ if (err < 0) return err; - inode = d_backing_inode(path.dentry); seq = 0; /* we are already out of RCU mode */ err = -ENOENT; if (d_is_negative(path.dentry)) goto out_path_put; + inode = d_backing_inode(path.dentry); } if (flags & WALK_PUT) @@ -1972,7 +2001,6 @@ nd->last_type = LAST_ROOT; /* if there are only slashes... */ nd->flags = flags | LOOKUP_JUMPED | LOOKUP_PARENT; nd->depth = 0; - nd->total_link_count = 0; if (flags & LOOKUP_ROOT) { struct dentry *root = nd->root.dentry; struct inode *inode = root->d_inode; @@ -3107,12 +3135,12 @@ return error; BUG_ON(nd->flags & LOOKUP_RCU); - inode = d_backing_inode(path.dentry); seq = 0; /* out of RCU mode, so the value doesn't matter */ if (unlikely(d_is_negative(path.dentry))) { path_to_nameidata(&path, nd); return -ENOENT; } + inode = d_backing_inode(path.dentry); finish_lookup: if (nd->depth) put_link(nd); @@ -3121,11 +3149,6 @@ if (unlikely(error)) return error; - if (unlikely(d_is_symlink(path.dentry)) && !(open_flag & O_PATH)) { - path_to_nameidata(&path, nd); - return -ELOOP; - } - if ((nd->flags & LOOKUP_RCU) || nd->path.mnt != path.mnt) { path_to_nameidata(&path, nd); } else { @@ -3144,6 +3167,10 @@ return error; } audit_inode(nd->name, nd->path.dentry, 0); + if (unlikely(d_is_symlink(nd->path.dentry)) && !(open_flag & O_PATH)) { + error = -ELOOP; + goto out; + } error = -EISDIR; if ((open_flag & O_CREAT) && d_is_dir(nd->path.dentry)) goto out; @@ -3187,6 +3214,10 @@ goto exit_fput; } out: + if (unlikely(error > 0)) { + WARN_ON(1); + error = -EINVAL; + } if (got_write) mnt_drop_write(nd->path.mnt); path_put(&save_parent); --- 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/ncpfs/dir.c +++ linux-raspi2-4.2.0/fs/ncpfs/dir.c @@ -633,7 +633,7 @@ d_rehash(newdent); } else { spin_lock(&dentry->d_lock); - NCP_FINFO(inode)->flags &= ~NCPI_DIR_CACHE; + NCP_FINFO(dir)->flags &= ~NCPI_DIR_CACHE; spin_unlock(&dentry->d_lock); } } else { --- 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/dir.c +++ linux-raspi2-4.2.0/fs/nfs/dir.c @@ -377,7 +377,7 @@ again: timestamp = jiffies; gencount = nfs_inc_attr_generation_counter(); - error = NFS_PROTO(inode)->readdir(file->f_path.dentry, cred, entry->cookie, pages, + error = NFS_PROTO(inode)->readdir(file_dentry(file), cred, entry->cookie, pages, NFS_SERVER(inode)->dtsize, desc->plus); if (error < 0) { /* We requested READDIRPLUS, but the server doesn't grok it */ @@ -560,7 +560,7 @@ count++; if (desc->plus != 0) - nfs_prime_dcache(desc->file->f_path.dentry, entry); + nfs_prime_dcache(file_dentry(desc->file), entry); status = nfs_readdir_add_to_array(entry, page); if (status != 0) @@ -872,7 +872,7 @@ */ static int nfs_readdir(struct file *file, struct dir_context *ctx) { - struct dentry *dentry = file->f_path.dentry; + struct dentry *dentry = file_dentry(file); struct inode *inode = d_inode(dentry); nfs_readdir_descriptor_t my_desc, *desc = &my_desc; @@ -2443,6 +2443,20 @@ } EXPORT_SYMBOL_GPL(nfs_may_open); +static int nfs_execute_ok(struct inode *inode, int mask) +{ + struct nfs_server *server = NFS_SERVER(inode); + int ret; + + if (mask & MAY_NOT_BLOCK) + ret = nfs_revalidate_inode_rcu(server, inode); + else + ret = nfs_revalidate_inode(server, inode); + if (ret == 0 && !execute_ok(inode)) + ret = -EACCES; + return ret; +} + int nfs_permission(struct inode *inode, int mask) { struct rpc_cred *cred; @@ -2460,6 +2474,9 @@ case S_IFLNK: goto out; case S_IFREG: + if ((mask & MAY_OPEN) && + nfs_server_capable(inode, NFS_CAP_ATOMIC_OPEN)) + return 0; break; case S_IFDIR: /* @@ -2492,8 +2509,8 @@ res = PTR_ERR(cred); } out: - if (!res && (mask & MAY_EXEC) && !execute_ok(inode)) - res = -EACCES; + if (!res && (mask & MAY_EXEC)) + res = nfs_execute_ok(inode, mask); dfprintk(VFS, "NFS: permission(%s/%lu), mask=0x%x, res=%d\n", inode->i_sb->s_id, inode->i_ino, mask, res); --- 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; } @@ -1678,11 +1683,9 @@ start = xdr_reserve_space(xdr, 4); BUG_ON(!start); - if (ff_layout_encode_ioerr(flo, xdr, args)) - goto out; - + ff_layout_encode_ioerr(flo, xdr, args); ff_layout_encode_iostats(flo, xdr, args); -out: + *start = cpu_to_be32((xdr->p - start - 1) * 4); dprintk("%s: Return\n", __func__); } --- 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 @@ -75,11 +75,11 @@ * nfs_wait_bit_killable - helper for functions that are sleeping on bit locks * @word: long word containing the bit lock */ -int nfs_wait_bit_killable(struct wait_bit_key *key) +int nfs_wait_bit_killable(struct wait_bit_key *key, int mode) { - if (fatal_signal_pending(current)) - return -ERESTARTSYS; freezable_schedule_unsafe(); + if (signal_pending_state(mode, current)) + return -ERESTARTSYS; return 0; } EXPORT_SYMBOL_GPL(nfs_wait_bit_killable); @@ -910,7 +910,7 @@ { struct nfs_open_context *ctx; - ctx = alloc_nfs_open_context(filp->f_path.dentry, filp->f_mode); + ctx = alloc_nfs_open_context(file_dentry(filp), filp->f_mode); if (IS_ERR(ctx)) return PTR_ERR(ctx); nfs_file_set_open_context(filp, ctx); @@ -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); @@ -1631,6 +1630,7 @@ unsigned long invalid = 0; unsigned long now = jiffies; unsigned long save_cache_validity; + bool cache_revalidated = true; dfprintk(VFS, "NFS: %s(%s/%lu fh_crc=0x%08x ct=%d info=0x%x)\n", __func__, inode->i_sb->s_id, inode->i_ino, @@ -1692,22 +1692,28 @@ nfs_force_lookup_revalidate(inode); inode->i_version = fattr->change_attr; } - } else + } else { nfsi->cache_validity |= save_cache_validity; + cache_revalidated = false; + } if (fattr->valid & NFS_ATTR_FATTR_MTIME) { memcpy(&inode->i_mtime, &fattr->mtime, sizeof(inode->i_mtime)); - } else if (server->caps & NFS_CAP_MTIME) + } else if (server->caps & NFS_CAP_MTIME) { nfsi->cache_validity |= save_cache_validity & (NFS_INO_INVALID_ATTR | NFS_INO_REVAL_FORCED); + cache_revalidated = false; + } if (fattr->valid & NFS_ATTR_FATTR_CTIME) { memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime)); - } else if (server->caps & NFS_CAP_CTIME) + } else if (server->caps & NFS_CAP_CTIME) { nfsi->cache_validity |= save_cache_validity & (NFS_INO_INVALID_ATTR | NFS_INO_REVAL_FORCED); + cache_revalidated = false; + } /* Check if our cached file size is stale */ if (fattr->valid & NFS_ATTR_FATTR_SIZE) { @@ -1727,19 +1733,23 @@ (long long)cur_isize, (long long)new_isize); } - } else + } else { nfsi->cache_validity |= save_cache_validity & (NFS_INO_INVALID_ATTR | NFS_INO_REVAL_PAGECACHE | NFS_INO_REVAL_FORCED); + cache_revalidated = false; + } if (fattr->valid & NFS_ATTR_FATTR_ATIME) memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime)); - else if (server->caps & NFS_CAP_ATIME) + else if (server->caps & NFS_CAP_ATIME) { nfsi->cache_validity |= save_cache_validity & (NFS_INO_INVALID_ATIME | NFS_INO_REVAL_FORCED); + cache_revalidated = false; + } if (fattr->valid & NFS_ATTR_FATTR_MODE) { if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { @@ -1748,36 +1758,42 @@ inode->i_mode = newmode; invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL; } - } else if (server->caps & NFS_CAP_MODE) + } else if (server->caps & NFS_CAP_MODE) { nfsi->cache_validity |= save_cache_validity & (NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL | NFS_INO_REVAL_FORCED); + cache_revalidated = false; + } if (fattr->valid & NFS_ATTR_FATTR_OWNER) { if (!uid_eq(inode->i_uid, fattr->uid)) { invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL; inode->i_uid = fattr->uid; } - } else if (server->caps & NFS_CAP_OWNER) + } else if (server->caps & NFS_CAP_OWNER) { nfsi->cache_validity |= save_cache_validity & (NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL | NFS_INO_REVAL_FORCED); + cache_revalidated = false; + } if (fattr->valid & NFS_ATTR_FATTR_GROUP) { if (!gid_eq(inode->i_gid, fattr->gid)) { invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL; inode->i_gid = fattr->gid; } - } else if (server->caps & NFS_CAP_OWNER_GROUP) + } else if (server->caps & NFS_CAP_OWNER_GROUP) { nfsi->cache_validity |= save_cache_validity & (NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL | NFS_INO_REVAL_FORCED); + cache_revalidated = false; + } if (fattr->valid & NFS_ATTR_FATTR_NLINK) { if (inode->i_nlink != fattr->nlink) { @@ -1786,19 +1802,22 @@ invalid |= NFS_INO_INVALID_DATA; set_nlink(inode, fattr->nlink); } - } else if (server->caps & NFS_CAP_NLINK) + } else if (server->caps & NFS_CAP_NLINK) { nfsi->cache_validity |= save_cache_validity & (NFS_INO_INVALID_ATTR | NFS_INO_REVAL_FORCED); + cache_revalidated = false; + } if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { /* * report the blocks in 512byte units */ inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); - } - if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) + } else if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) inode->i_blocks = fattr->du.nfs2.blocks; + else + cache_revalidated = false; /* Update attrtimeo value if we're out of the unstable period */ if (invalid & NFS_INO_INVALID_ATTR) { @@ -1808,16 +1827,24 @@ /* Set barrier to be more recent than all outstanding updates */ nfsi->attr_gencount = nfs_inc_attr_generation_counter(); } else { - if (!time_in_range_open(now, nfsi->attrtimeo_timestamp, nfsi->attrtimeo_timestamp + nfsi->attrtimeo)) { - if ((nfsi->attrtimeo <<= 1) > NFS_MAXATTRTIMEO(inode)) - nfsi->attrtimeo = NFS_MAXATTRTIMEO(inode); + if (cache_revalidated) { + if (!time_in_range_open(now, nfsi->attrtimeo_timestamp, + nfsi->attrtimeo_timestamp + nfsi->attrtimeo)) { + nfsi->attrtimeo <<= 1; + if (nfsi->attrtimeo > NFS_MAXATTRTIMEO(inode)) + nfsi->attrtimeo = NFS_MAXATTRTIMEO(inode); + } nfsi->attrtimeo_timestamp = now; } /* Set the barrier to be more recent than this fattr */ 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 (cache_revalidated) + 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 @@ -384,7 +384,7 @@ extern void nfs_clear_inode(struct inode *); extern void nfs_evict_inode(struct inode *); void nfs_zap_acl_cache(struct inode *inode); -extern int nfs_wait_bit_killable(struct wait_bit_key *key); +extern int nfs_wait_bit_killable(struct wait_bit_key *key, int mode); /* super.c */ extern const struct super_operations nfs_sops; @@ -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/nfs4file.c +++ linux-raspi2-4.2.0/fs/nfs/nfs4file.c @@ -22,7 +22,7 @@ nfs4_file_open(struct inode *inode, struct file *filp) { struct nfs_open_context *ctx; - struct dentry *dentry = filp->f_path.dentry; + struct dentry *dentry = file_dentry(filp); struct dentry *parent = NULL; struct inode *dir; unsigned openflags = filp->f_flags; @@ -54,7 +54,7 @@ parent = dget_parent(dentry); dir = d_inode(parent); - ctx = alloc_nfs_open_context(filp->f_path.dentry, filp->f_mode); + ctx = alloc_nfs_open_context(file_dentry(filp), filp->f_mode); err = PTR_ERR(ctx); if (IS_ERR(ctx)) goto out; --- 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); @@ -1282,6 +1303,7 @@ * Protect the call to nfs4_state_set_mode_locked and * serialise the stateid update */ + spin_lock(&state->owner->so_lock); write_seqlock(&state->seqlock); if (deleg_stateid != NULL) { nfs4_stateid_copy(&state->stateid, deleg_stateid); @@ -1290,7 +1312,6 @@ if (open_stateid != NULL) nfs_set_open_stateid_locked(state, open_stateid, fmode); write_sequnlock(&state->seqlock); - spin_lock(&state->owner->so_lock); update_open_stateflags(state, fmode); spin_unlock(&state->owner->so_lock); } @@ -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); } @@ -2337,9 +2356,9 @@ dentry = d_add_unique(dentry, igrab(state->inode)); if (dentry == NULL) { dentry = opendata->dentry; - } else if (dentry != ctx->dentry) { + } else { dput(ctx->dentry); - ctx->dentry = dget(dentry); + ctx->dentry = dentry; } nfs_set_verifier(dentry, nfs_save_change_attribute(d_inode(opendata->dir))); @@ -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; @@ -129,7 +129,7 @@ set_bit(NFS_IO_INPROGRESS, &c->flags); if (atomic_read(&c->io_count) == 0) break; - ret = nfs_wait_bit_killable(&q.key); + ret = nfs_wait_bit_killable(&q.key, TASK_KILLABLE); } while (atomic_read(&c->io_count) != 0 && !ret); finish_wait(wq, &q.wait); return ret; @@ -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.c +++ linux-raspi2-4.2.0/fs/nfs/pnfs.c @@ -882,28 +882,42 @@ struct nfs_server *server = NFS_SERVER(ino); struct nfs4_layoutget *lgp; struct pnfs_layout_segment *lseg; + loff_t i_size; dprintk("--> %s\n", __func__); - lgp = kzalloc(sizeof(*lgp), gfp_flags); - if (lgp == NULL) - return NULL; + /* + * Synchronously retrieve layout information from server and + * store in lseg. If we race with a concurrent seqid morphing + * op, then re-send the LAYOUTGET. + */ + do { + lgp = kzalloc(sizeof(*lgp), gfp_flags); + if (lgp == NULL) + return NULL; + + i_size = i_size_read(ino); + + lgp->args.minlength = PAGE_CACHE_SIZE; + if (lgp->args.minlength > range->length) + lgp->args.minlength = range->length; + if (range->iomode == IOMODE_READ) { + if (range->offset >= i_size) + lgp->args.minlength = 0; + else if (i_size - range->offset < lgp->args.minlength) + lgp->args.minlength = i_size - range->offset; + } + lgp->args.maxcount = PNFS_LAYOUT_MAXSIZE; + lgp->args.range = *range; + lgp->args.type = server->pnfs_curr_ld->id; + lgp->args.inode = ino; + lgp->args.ctx = get_nfs_open_context(ctx); + lgp->gfp_flags = gfp_flags; + lgp->cred = lo->plh_lc_cred; - lgp->args.minlength = PAGE_CACHE_SIZE; - if (lgp->args.minlength > range->length) - lgp->args.minlength = range->length; - lgp->args.maxcount = PNFS_LAYOUT_MAXSIZE; - lgp->args.range = *range; - lgp->args.type = server->pnfs_curr_ld->id; - lgp->args.inode = ino; - lgp->args.ctx = get_nfs_open_context(ctx); - lgp->gfp_flags = gfp_flags; - lgp->cred = lo->plh_lc_cred; + lseg = nfs4_proc_layoutget(lgp, gfp_flags); + } while (lseg == ERR_PTR(-EAGAIN)); - /* Synchronously retrieve layout information from server and - * store in lseg. - */ - lseg = nfs4_proc_layoutget(lgp, gfp_flags); if (IS_ERR(lseg)) { switch (PTR_ERR(lseg)) { case -ENOMEM: @@ -1429,11 +1443,11 @@ } /* stop waiting if someone clears NFS_LAYOUT_RETRY_LAYOUTGET bit. */ -static int pnfs_layoutget_retry_bit_wait(struct wait_bit_key *key) +static int pnfs_layoutget_retry_bit_wait(struct wait_bit_key *key, int mode) { if (!test_bit(NFS_LAYOUT_RETRY_LAYOUTGET, key->flags)) return 1; - return nfs_wait_bit_killable(key); + return nfs_wait_bit_killable(key, mode); } static bool pnfs_prepare_to_retry_layoutget(struct pnfs_layout_hdr *lo) @@ -1633,6 +1647,7 @@ /* existing state ID, make sure the sequence number matches. */ if (pnfs_layout_stateid_blocked(lo, &res->stateid)) { dprintk("%s forget reply due to sequence\n", __func__); + status = -EAGAIN; goto out_forget_reply; } pnfs_set_layout_stateid(lo, &res->stateid, false); --- 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/nfs4proc.c +++ linux-raspi2-4.2.0/fs/nfsd/nfs4proc.c @@ -879,6 +879,7 @@ &exp, &dentry); if (err) return err; + fh_unlock(&cstate->current_fh); if (d_really_is_negative(dentry)) { exp_put(exp); err = nfserr_noent; --- 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 @@ -1072,8 +1072,9 @@ READ_BUF(4); rename->rn_snamelen = be32_to_cpup(p++); - READ_BUF(rename->rn_snamelen + 4); + READ_BUF(rename->rn_snamelen); SAVEMEM(rename->rn_sname, rename->rn_snamelen); + READ_BUF(4); rename->rn_tnamelen = be32_to_cpup(p++); READ_BUF(rename->rn_tnamelen); SAVEMEM(rename->rn_tname, rename->rn_tnamelen); @@ -1155,13 +1156,14 @@ READ_BUF(8); setclientid->se_callback_prog = be32_to_cpup(p++); setclientid->se_callback_netid_len = be32_to_cpup(p++); - - READ_BUF(setclientid->se_callback_netid_len + 4); + READ_BUF(setclientid->se_callback_netid_len); SAVEMEM(setclientid->se_callback_netid_val, setclientid->se_callback_netid_len); + READ_BUF(4); setclientid->se_callback_addr_len = be32_to_cpup(p++); - READ_BUF(setclientid->se_callback_addr_len + 4); + READ_BUF(setclientid->se_callback_addr_len); SAVEMEM(setclientid->se_callback_addr_val, setclientid->se_callback_addr_len); + READ_BUF(4); setclientid->se_callback_ident = be32_to_cpup(p++); DECODE_TAIL; @@ -1815,8 +1817,9 @@ READ_BUF(4); argp->taglen = be32_to_cpup(p++); - READ_BUF(argp->taglen + 8); + READ_BUF(argp->taglen); SAVEMEM(argp->tag, argp->taglen); + READ_BUF(8); argp->minorversion = be32_to_cpup(p++); argp->opcnt = be32_to_cpup(p++); max_reply += 4 + (XDR_QUADLEN(argp->taglen) << 2); @@ -2140,6 +2143,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 +2712,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/aops.c +++ linux-raspi2-4.2.0/fs/ocfs2/aops.c @@ -934,6 +934,7 @@ tmp_ret = ocfs2_del_inode_from_orphan(osb, inode, di_bh, update_isize, end); if (tmp_ret < 0) { + ocfs2_inode_unlock(inode, 1); ret = tmp_ret; mlog_errno(ret); goto out; --- linux-raspi2-4.2.0.orig/fs/ocfs2/dlm/dlmconvert.c +++ linux-raspi2-4.2.0/fs/ocfs2/dlm/dlmconvert.c @@ -262,6 +262,7 @@ struct dlm_lock *lock, int flags, int type) { enum dlm_status status; + u8 old_owner = res->owner; mlog(0, "type=%d, convert_type=%d, busy=%d\n", lock->ml.type, lock->ml.convert_type, res->state & DLM_LOCK_RES_IN_PROGRESS); @@ -287,6 +288,19 @@ status = DLM_DENIED; goto bail; } + + if (lock->ml.type == type && lock->ml.convert_type == LKM_IVMODE) { + mlog(0, "last convert request returned DLM_RECOVERING, but " + "owner has already queued and sent ast to me. res %.*s, " + "(cookie=%u:%llu, type=%d, conv=%d)\n", + res->lockname.len, res->lockname.name, + dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)), + dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)), + lock->ml.type, lock->ml.convert_type); + status = DLM_NORMAL; + goto bail; + } + res->state |= DLM_LOCK_RES_IN_PROGRESS; /* move lock to local convert queue */ /* do not alter lock refcount. switching lists. */ @@ -316,11 +330,19 @@ spin_lock(&res->spinlock); res->state &= ~DLM_LOCK_RES_IN_PROGRESS; lock->convert_pending = 0; - /* if it failed, move it back to granted queue */ + /* if it failed, move it back to granted queue. + * if master returns DLM_NORMAL and then down before sending ast, + * it may have already been moved to granted queue, reset to + * DLM_RECOVERING and retry convert */ if (status != DLM_NORMAL) { if (status != DLM_NOTQUEUED) dlm_error(status); dlm_revert_pending_convert(res, lock); + } else if ((res->state & DLM_LOCK_RES_RECOVERING) || + (old_owner != res->owner)) { + mlog(0, "res %.*s is in recovering or has been recovered.\n", + res->lockname.len, res->lockname.name); + status = DLM_RECOVERING; } bail: spin_unlock(&res->spinlock); --- 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 */ @@ -2515,6 +2518,11 @@ spin_lock(&dlm->master_lock); ret = dlm_add_migration_mle(dlm, res, mle, &oldmle, name, namelen, target, dlm->node_num); + /* get an extra reference on the mle. + * otherwise the assert_master from the new + * master will destroy this. + */ + dlm_get_mle_inuse(mle); spin_unlock(&dlm->master_lock); spin_unlock(&dlm->spinlock); @@ -2550,6 +2558,7 @@ if (mle_added) { dlm_mle_detach_hb_events(dlm, mle); dlm_put_mle(mle); + dlm_put_mle_inuse(mle); } else if (mle) { kmem_cache_free(dlm_mle_cache, mle); mle = NULL; @@ -2567,17 +2576,6 @@ * ensure that all assert_master work is flushed. */ flush_workqueue(dlm->dlm_worker); - /* get an extra reference on the mle. - * otherwise the assert_master from the new - * master will destroy this. - * also, make sure that all callers of dlm_get_mle - * take both dlm->spinlock and dlm->master_lock */ - spin_lock(&dlm->spinlock); - spin_lock(&dlm->master_lock); - dlm_get_mle_inuse(mle); - spin_unlock(&dlm->master_lock); - spin_unlock(&dlm->spinlock); - /* notify new node and send all lock state */ /* call send_one_lockres with migration flag. * this serves as notice to the target node that a @@ -3306,6 +3304,15 @@ mle->new_master != dead_node) continue; + if (mle->new_master == dead_node && mle->inuse) { + mlog(ML_NOTICE, "%s: target %u died during " + "migration from %u, the MLE is " + "still keep used, ignore it!\n", + dlm->name, dead_node, + mle->master); + continue; + } + /* If we have reached this point, this mle needs to be * removed from the list and freed. */ dlm_clean_migration_mle(dlm, mle); --- 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; } @@ -2060,7 +2064,6 @@ dlm_lock_get(lock); if (lock->convert_pending) { /* move converting lock back to granted */ - BUG_ON(i != DLM_CONVERTING_LIST); mlog(0, "node died with convert pending " "on %.*s. move back to granted list.\n", res->lockname.len, res->lockname.name); @@ -2356,6 +2359,8 @@ break; } } + dlm_lockres_clear_refmap_bit(dlm, res, + dead_node); spin_unlock(&res->spinlock); continue; } --- linux-raspi2-4.2.0.orig/fs/ocfs2/dlmglue.c +++ linux-raspi2-4.2.0/fs/ocfs2/dlmglue.c @@ -1390,6 +1390,7 @@ unsigned int gen; int noqueue_attempted = 0; int dlm_locked = 0; + int kick_dc = 0; if (!(lockres->l_flags & OCFS2_LOCK_INITIALIZED)) { mlog_errno(-EINVAL); @@ -1524,7 +1525,12 @@ unlock: lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING); + /* ocfs2_unblock_lock reques on seeing OCFS2_LOCK_UPCONVERT_FINISHING */ + kick_dc = (lockres->l_flags & OCFS2_LOCK_BLOCKED); + spin_unlock_irqrestore(&lockres->l_lock, flags); + if (kick_dc) + ocfs2_wake_downconvert_thread(osb); out: /* * This is helping work around a lock inversion between the page lock --- 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 @@ -360,7 +360,7 @@ goto leave; } - status = posix_acl_create(dir, &mode, &default_acl, &acl); + status = posix_acl_create(dir, &inode->i_mode, &default_acl, &acl); if (status) { mlog_errno(status); goto leave; --- linux-raspi2-4.2.0.orig/fs/ocfs2/resize.c +++ linux-raspi2-4.2.0/fs/ocfs2/resize.c @@ -54,11 +54,12 @@ static u16 ocfs2_calc_new_backup_super(struct inode *inode, struct ocfs2_group_desc *gd, u16 cl_cpg, + u16 old_bg_clusters, int set) { int i; u16 backups = 0; - u32 cluster; + u32 cluster, lgd_cluster; u64 blkno, gd_blkno, lgd_blkno = le64_to_cpu(gd->bg_blkno); for (i = 0; i < OCFS2_MAX_BACKUP_SUPERBLOCKS; i++) { @@ -71,6 +72,12 @@ else if (gd_blkno > lgd_blkno) break; + /* check if already done backup super */ + lgd_cluster = ocfs2_blocks_to_clusters(inode->i_sb, lgd_blkno); + lgd_cluster += old_bg_clusters; + if (lgd_cluster >= cluster) + continue; + if (set) ocfs2_set_bit(cluster % cl_cpg, (unsigned long *)gd->bg_bitmap); @@ -99,6 +106,7 @@ u16 chain, num_bits, backups = 0; u16 cl_bpc = le16_to_cpu(cl->cl_bpc); u16 cl_cpg = le16_to_cpu(cl->cl_cpg); + u16 old_bg_clusters; trace_ocfs2_update_last_group_and_inode(new_clusters, first_new_cluster); @@ -112,6 +120,7 @@ group = (struct ocfs2_group_desc *)group_bh->b_data; + old_bg_clusters = le16_to_cpu(group->bg_bits) / cl_bpc; /* update the group first. */ num_bits = new_clusters * cl_bpc; le16_add_cpu(&group->bg_bits, num_bits); @@ -125,7 +134,7 @@ OCFS2_FEATURE_COMPAT_BACKUP_SB)) { backups = ocfs2_calc_new_backup_super(bm_inode, group, - cl_cpg, 1); + cl_cpg, old_bg_clusters, 1); le16_add_cpu(&group->bg_free_bits_count, -1 * backups); } @@ -163,7 +172,7 @@ if (ret < 0) { ocfs2_calc_new_backup_super(bm_inode, group, - cl_cpg, 0); + cl_cpg, old_bg_clusters, 0); le16_add_cpu(&group->bg_free_bits_count, backups); le16_add_cpu(&group->bg_bits, -1 * num_bits); le16_add_cpu(&group->bg_free_bits_count, -1 * num_bits); --- 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, @@ -995,14 +1000,12 @@ EXPORT_SYMBOL(filp_open); struct file *file_open_root(struct dentry *dentry, struct vfsmount *mnt, - const char *filename, int flags) + const char *filename, int flags, umode_t mode) { struct open_flags op; - int err = build_open_flags(flags, 0, &op); + int err = build_open_flags(flags, mode, &op); if (err) return ERR_PTR(err); - if (flags & O_CREAT) - return ERR_PTR(-EINVAL); return do_file_open_root(dentry, mnt, filename, &op); } EXPORT_SYMBOL(file_open_root); @@ -1029,6 +1032,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 @@ -22,9 +22,9 @@ int ovl_copy_xattr(struct dentry *old, struct dentry *new) { - ssize_t list_size, size; - char *buf, *name, *value; - int error; + ssize_t list_size, size, value_size = 0; + char *buf, *name, *value = NULL; + int uninitialized_var(error); if (!old->d_inode->i_op->getxattr || !new->d_inode->i_op->getxattr) @@ -41,29 +41,40 @@ if (!buf) return -ENOMEM; - error = -ENOMEM; - value = kmalloc(XATTR_SIZE_MAX, GFP_KERNEL); - if (!value) - goto out; - list_size = vfs_listxattr(old, buf, list_size); if (list_size <= 0) { error = list_size; - goto out_free_value; + goto out; } for (name = buf; name < (buf + list_size); name += strlen(name) + 1) { - size = vfs_getxattr(old, name, value, XATTR_SIZE_MAX); - if (size <= 0) { +retry: + size = vfs_getxattr(old, name, value, value_size); + if (size == -ERANGE) + size = vfs_getxattr(old, name, NULL, 0); + + if (size < 0) { error = size; - goto out_free_value; + break; + } + + if (size > value_size) { + void *new; + + new = krealloc(value, size, GFP_KERNEL); + if (!new) { + error = -ENOMEM; + break; + } + value = new; + value_size = size; + goto retry; } + error = vfs_setxattr(new, name, value, size, 0); if (error) - goto out_free_value; + break; } - -out_free_value: kfree(value); out: kfree(buf); @@ -81,11 +92,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; @@ -172,10 +183,19 @@ { int err = 0; + /* + * For the most part we want to set the mode bits before setting + * the user, otherwise the current context might lack permission + * for setting the mode. However for sxid/sticky bits we want + * the operation to fail if the current user isn't privileged + * towards the resulting inode. So we first set the mode but + * exclude the sxid/sticky bits, then set the user, then set the + * mode again if any of the sxid/sticky bits are set. + */ if (!S_ISLNK(stat->mode)) { struct iattr attr = { .ia_valid = ATTR_MODE, - .ia_mode = stat->mode, + .ia_mode = stat->mode & ~(S_ISUID|S_ISGID|S_ISVTX), }; err = notify_change(upperdentry, &attr, NULL); } @@ -187,6 +207,14 @@ }; err = notify_change(upperdentry, &attr, NULL); } + if (!err && !S_ISLNK(stat->mode) && + (stat->mode & (S_ISUID|S_ISGID|S_ISVTX))) { + struct iattr attr = { + .ia_valid = ATTR_MODE, + .ia_mode = stat->mode, + }; + err = notify_change(upperdentry, &attr, NULL); + } if (!err) ovl_set_timestamps(upperdentry, stat); @@ -267,7 +295,7 @@ out_cleanup: ovl_cleanup(wdir, newdentry); - goto out; + goto out2; } /* @@ -302,9 +330,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; @@ -316,26 +352,9 @@ } err = -ENOMEM; - override_cred = prepare_creds(); + override_cred = ovl_prepare_creds(dentry->d_sb); if (!override_cred) goto out_free_link; - - override_cred->fsuid = stat->uid; - override_cred->fsgid = stat->gid; - /* - * CAP_SYS_ADMIN for copying up extended attributes - * CAP_DAC_OVERRIDE for create - * CAP_FOWNER for chmod, timestamp update - * CAP_FSETID for chmod - * CAP_CHOWN for chown - * CAP_MKNOD for mknod - */ - cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); - cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); - cap_raise(override_cred->cap_effective, CAP_FOWNER); - cap_raise(override_cred->cap_effective, CAP_FSETID); - cap_raise(override_cred->cap_effective, CAP_CHOWN); - cap_raise(override_cred->cap_effective, CAP_MKNOD); old_cred = override_creds(override_cred); err = -EIO; --- linux-raspi2-4.2.0.orig/fs/overlayfs/dir.c +++ linux-raspi2-4.2.0/fs/overlayfs/dir.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "overlayfs.h" void ovl_cleanup(struct inode *wdir, struct dentry *wdentry) @@ -48,6 +49,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 = ovl_do_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 +89,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); @@ -321,6 +350,11 @@ struct inode *wdir = workdir->d_inode; struct dentry *upperdir = ovl_dentry_upper(dentry->d_parent); struct inode *udir = upperdir->d_inode; + struct iattr attr = { + .ia_valid = ATTR_UID | ATTR_GID, + .ia_uid = stat->uid, + .ia_gid = stat->gid, + }; struct dentry *upper; struct dentry *newdentry; int err; @@ -346,6 +380,11 @@ err = ovl_create_real(wdir, newdentry, stat, link, hardlink, true); if (err) goto out_dput2; + mutex_lock(&newdentry->d_inode->i_mutex); + err = notify_change(newdentry, &attr, NULL); + mutex_unlock(&newdentry->d_inode->i_mutex); + if (err) + goto out_cleanup; if (S_ISDIR(stat->mode)) { err = ovl_set_opaque(newdentry); @@ -390,6 +429,8 @@ struct kstat stat = { .mode = mode, .rdev = rdev, + .uid = current->cred->fsuid, + .gid = current->cred->fsgid, }; err = -ENOMEM; @@ -408,18 +449,9 @@ struct cred *override_cred; err = -ENOMEM; - override_cred = prepare_creds(); + override_cred = ovl_prepare_creds(dentry->d_sb); if (!override_cred) goto out_iput; - - /* - * CAP_SYS_ADMIN for setting opaque xattr - * CAP_DAC_OVERRIDE for create in workdir, rename - * CAP_FOWNER for removing whiteout from sticky dir - */ - cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); - cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); - cap_raise(override_cred->cap_effective, CAP_FOWNER); old_cred = override_creds(override_cred); err = ovl_create_over_whiteout(dentry, inode, &stat, link, @@ -618,7 +650,8 @@ * sole user of this dentry. Too tricky... Just unhash for * now. */ - d_drop(dentry); + if (!err) + d_drop(dentry); mutex_unlock(&dir->i_mutex); return err; @@ -660,22 +693,9 @@ struct cred *override_cred; err = -ENOMEM; - override_cred = prepare_creds(); + override_cred = ovl_prepare_creds(dentry->d_sb); if (!override_cred) goto out_drop_write; - - /* - * CAP_SYS_ADMIN for setting xattr on whiteout, opaque dir - * CAP_DAC_OVERRIDE for create in workdir, rename - * CAP_FOWNER for removing whiteout from sticky dir - * CAP_FSETID for chmod of opaque dir - * CAP_CHOWN for chown of opaque dir - */ - cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); - cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); - cap_raise(override_cred->cap_effective, CAP_FOWNER); - cap_raise(override_cred->cap_effective, CAP_FSETID); - cap_raise(override_cred->cap_effective, CAP_CHOWN); old_cred = override_creds(override_cred); err = ovl_remove_and_whiteout(dentry, is_dir); @@ -699,6 +719,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) @@ -791,22 +856,9 @@ if (old_opaque || new_opaque) { err = -ENOMEM; - override_cred = prepare_creds(); + override_cred = ovl_prepare_creds(old->d_sb); if (!override_cred) goto out_drop_write; - - /* - * CAP_SYS_ADMIN for setting xattr on whiteout, opaque dir - * CAP_DAC_OVERRIDE for create in workdir - * CAP_FOWNER for removing whiteout from sticky dir - * CAP_FSETID for chmod of opaque dir - * CAP_CHOWN for chown of opaque dir - */ - cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); - cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); - cap_raise(override_cred->cap_effective, CAP_FOWNER); - cap_raise(override_cred->cap_effective, CAP_FSETID); - cap_raise(override_cred->cap_effective, CAP_CHOWN); old_cred = override_creds(override_cred); } @@ -903,6 +955,13 @@ if (!overwrite && new_is_dir && !old_opaque && new_opaque) ovl_remove_opaque(newdentry); + /* + * Old dentry now lives in different location. Dentries in + * lowerstack are stale. We cannot drop them here because + * access to them is lockless. This could be only pure upper + * or opaque directory - numlower is zero. Or upper non-dir + * entry - its pureness is tracked by flag opaque. + */ if (old_opaque != new_opaque) { ovl_dentry_set_opaque(old, new_opaque); if (!overwrite) @@ -919,6 +978,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 @@ -45,17 +45,32 @@ int err; struct dentry *upperdentry; + /* + * Check for permissions before trying to copy-up. This is redundant + * since it will be rechecked later by ->setattr() on upper dentry. But + * without this, copy-up can be triggered by just about anybody. + * + * We don't initialize inode->size, which just means that + * inode_newsize_ok() will always check against MAX_LFS_FILESIZE and not + * check for a swapfile (which this won't be anyway). + */ + err = inode_change_ok(dentry->d_inode, attr); + if (err) + return err; + err = ovl_want_write(dentry); 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); + if (!err) + ovl_copyattr(upperdentry->d_inode, dentry->d_inode); mutex_unlock(&upperdentry->d_inode->i_mutex); - } else { - err = ovl_copy_up_last(dentry, attr, false); } ovl_drop_write(dentry); out: @@ -363,6 +378,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); @@ -93,7 +95,14 @@ static inline int ovl_do_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags) { - int err = vfs_setxattr(dentry, name, value, size, flags); + struct inode *inode = dentry->d_inode; + int err = -EOPNOTSUPP; + + mutex_lock(&inode->i_mutex); + if (inode->i_op->setxattr) + err = inode->i_op->setxattr(dentry, name, value, size, flags); + mutex_unlock(&inode->i_mutex); + pr_debug("setxattr(%pd2, \"%s\", \"%*s\", 0x%x) = %i\n", dentry, name, (int) size, (char *) value, flags, err); return err; @@ -101,7 +110,14 @@ static inline int ovl_do_removexattr(struct dentry *dentry, const char *name) { - int err = vfs_removexattr(dentry, name); + struct inode *inode = dentry->d_inode; + int err = -EOPNOTSUPP; + + mutex_lock(&inode->i_mutex); + if (inode->i_op->removexattr) + err = inode->i_op->removexattr(dentry, name); + mutex_unlock(&inode->i_mutex); + pr_debug("removexattr(%pd2, \"%s\") = %i\n", dentry, name, err); return err; } @@ -124,13 +140,30 @@ 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); +} +struct cred *ovl_prepare_creds(struct super_block *sb); enum ovl_path_type ovl_path_type(struct dentry *dentry); u64 ovl_dentry_version_get(struct dentry *dentry); void ovl_dentry_version_inc(struct dentry *dentry); @@ -149,7 +182,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 +190,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" @@ -36,6 +37,7 @@ struct ovl_readdir_data { struct dir_context ctx; + struct dentry *dentry; bool is_merge; struct rb_root root; struct list_head *list; @@ -43,6 +45,7 @@ struct ovl_cache_entry *first_maybe_whiteout; int count; int err; + int is_legacy; }; struct ovl_dir_file { @@ -98,7 +101,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; } @@ -207,14 +210,9 @@ const struct cred *old_cred; struct cred *override_cred; - override_cred = prepare_creds(); + override_cred = ovl_prepare_creds(rdd->dentry->d_sb); if (!override_cred) return -ENOMEM; - - /* - * CAP_DAC_OVERRIDE for lookup - */ - cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); old_cred = override_creds(override_cred); err = mutex_lock_killable(&dir->d_inode->i_mutex); @@ -224,7 +222,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); } } @@ -287,15 +285,21 @@ struct path realpath; struct ovl_readdir_data rdd = { .ctx.actor = ovl_fill_merge, + .dentry = dentry, .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 +373,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; @@ -571,7 +580,8 @@ (int) PTR_ERR(dentry)); continue; } - ovl_cleanup(upper->d_inode, dentry); + if (dentry->d_inode) + ovl_cleanup(upper->d_inode, dentry); dput(dentry); } mutex_unlock(&upper->d_inode->i_mutex); --- linux-raspi2-4.2.0.orig/fs/overlayfs/super.c +++ linux-raspi2-4.2.0/fs/overlayfs/super.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -39,8 +40,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; @@ -62,6 +65,27 @@ #define OVL_MAX_STACK 500 +/* + * Returns a set of credentials suitable for overlayfs internal + * operations which require elevated capabilities, equivalent to those + * of the user which mounted the superblock. Caller must put the + * returned credentials. + */ +struct cred *ovl_prepare_creds(struct super_block *sb) +{ + struct ovl_fs *ofs = sb->s_fs_info; + struct cred *new_cred; + + if (sb->s_magic != OVERLAYFS_SUPER_MAGIC) + return NULL; + + new_cred = clone_cred(ofs->mounter_creds); + if (!new_cred) + return NULL; + + return new_cred; +} + static struct dentry *__ovl_dentry_lower(struct ovl_entry *oe) { return oe->numlower ? oe->lowerstack[0].dentry : NULL; @@ -75,12 +99,14 @@ if (oe->__upperdentry) { type = __OVL_PATH_UPPER; - if (oe->numlower) { - if (S_ISDIR(dentry->d_inode->i_mode)) - type |= __OVL_PATH_MERGE; - } else if (!oe->opaque) { + /* + * Non-dir dentry can hold lower dentry from previous + * location. Its purity depends only on opaque flag. + */ + if (oe->numlower && S_ISDIR(dentry->d_inode->i_mode)) + type |= __OVL_PATH_MERGE; + else if (!oe->opaque) type |= __OVL_PATH_PURE; - } } else { if (oe->numlower > 1) type |= __OVL_PATH_MERGE; @@ -236,13 +262,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; @@ -273,6 +358,37 @@ } } +static struct dentry *ovl_d_real(struct dentry *dentry, struct inode *inode) +{ + struct dentry *real; + + if (d_is_dir(dentry)) { + if (!inode || inode == d_inode(dentry)) + return dentry; + goto bug; + } + + real = ovl_dentry_upper(dentry); + if (real && (!inode || inode == d_inode(real))) + return real; + + real = ovl_dentry_lower(dentry); + if (!real) + goto bug; + + if (!inode || inode == d_inode(real)) + return real; + + /* Handle recursion */ + if (real->d_flags & DCACHE_OP_REAL) + return real->d_op->d_real(real, inode); + +bug: + WARN(1, "ovl_d_real(%pd4, %s:%lu\n): real dentry not found\n", dentry, + inode ? inode->i_sb->s_id : "NULL", inode ? inode->i_ino : 0); + return dentry; +} + static int ovl_dentry_revalidate(struct dentry *dentry, unsigned int flags) { struct ovl_entry *oe = dentry->d_fsdata; @@ -317,10 +433,13 @@ static const struct dentry_operations ovl_dentry_operations = { .d_release = ovl_dentry_release, .d_select_inode = ovl_d_select_inode, + .d_real = ovl_d_real, }; static const struct dentry_operations ovl_reval_dentry_operations = { .d_release = ovl_dentry_release, + .d_select_inode = ovl_d_select_inode, + .d_real = ovl_d_real, .d_revalidate = ovl_dentry_revalidate, .d_weak_revalidate = ovl_dentry_weak_revalidate, }; @@ -407,6 +526,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 +541,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 +575,7 @@ } if (!this) continue; - if (ovl_is_whiteout(this)) { + if (ovl_is_whiteout(this, is_legacy)) { dput(this); break; } @@ -540,10 +660,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 +710,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; } @@ -909,6 +1031,7 @@ } sb->s_stack_depth = 0; + sb->s_maxbytes = MAX_LFS_FILESIZE; if (ufs->config.upperdir) { if (!ufs->config.workdir) { pr_err("overlayfs: missing 'workdir'\n"); @@ -987,6 +1110,9 @@ goto out_put_lowerpath; } + if (ufs->upper_mnt->mnt_flags & MNT_NOSUID) + sb->s_iflags |= SB_I_NOSUID; + ufs->workdir = ovl_workdir_create(ufs->upper_mnt, workpath.dentry); err = PTR_ERR(ufs->workdir); if (IS_ERR(ufs->workdir)) { @@ -1015,6 +1141,9 @@ */ mnt->mnt_flags |= MNT_READONLY; + if (mnt->mnt_flags & MNT_NOSUID) + sb->s_iflags |= SB_I_NOSUID; + ufs->lower_mnt[ufs->numlower] = mnt; ufs->numlower++; } @@ -1037,6 +1166,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,9 +1182,13 @@ oe->lowerstack[i].dentry = stack[i].dentry; oe->lowerstack[i].mnt = ufs->lower_mnt[i]; } + kfree(stack); root_dentry->d_fsdata = oe; + ovl_copyattr(ovl_dentry_real(root_dentry)->d_inode, + root_dentry->d_inode); + sb->s_magic = OVERLAYFS_SUPER_MAGIC; sb->s_op = &ovl_super_operations; sb->s_root = root_dentry; @@ -1058,6 +1196,8 @@ return 0; +out_put_root: + dput(root_dentry); out_free_oe: kfree(oe); out_put_lower_mnt: @@ -1097,17 +1237,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 @@ -38,6 +38,12 @@ */ unsigned int pipe_min_size = PAGE_SIZE; +/* Maximum allocatable pages per user. Hard limit is unset by default, soft + * matches default values. + */ +unsigned long pipe_user_pages_hard; +unsigned long pipe_user_pages_soft = PIPE_DEF_BUFFERS * INR_OPEN_CUR; + /* * We use a start+len construction, which provides full use of the * allocated memory. @@ -366,18 +372,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; } @@ -584,20 +589,49 @@ return retval; } +static void account_pipe_buffers(struct pipe_inode_info *pipe, + unsigned long old, unsigned long new) +{ + atomic_long_add(new - old, &pipe->user->pipe_bufs); +} + +static bool too_many_pipe_buffers_soft(struct user_struct *user) +{ + return pipe_user_pages_soft && + atomic_long_read(&user->pipe_bufs) >= pipe_user_pages_soft; +} + +static bool too_many_pipe_buffers_hard(struct user_struct *user) +{ + return pipe_user_pages_hard && + atomic_long_read(&user->pipe_bufs) >= pipe_user_pages_hard; +} + struct pipe_inode_info *alloc_pipe_info(void) { struct pipe_inode_info *pipe; pipe = kzalloc(sizeof(struct pipe_inode_info), GFP_KERNEL); if (pipe) { - pipe->bufs = kzalloc(sizeof(struct pipe_buffer) * PIPE_DEF_BUFFERS, GFP_KERNEL); + unsigned long pipe_bufs = PIPE_DEF_BUFFERS; + struct user_struct *user = get_current_user(); + + if (!too_many_pipe_buffers_hard(user)) { + if (too_many_pipe_buffers_soft(user)) + pipe_bufs = 1; + pipe->bufs = kzalloc(sizeof(struct pipe_buffer) * pipe_bufs, GFP_KERNEL); + } + if (pipe->bufs) { init_waitqueue_head(&pipe->wait); pipe->r_counter = pipe->w_counter = 1; - pipe->buffers = PIPE_DEF_BUFFERS; + pipe->buffers = pipe_bufs; + pipe->user = user; + account_pipe_buffers(pipe, 0, pipe_bufs); mutex_init(&pipe->mutex); return pipe; } + free_uid(user); kfree(pipe); } @@ -608,6 +642,8 @@ { int i; + account_pipe_buffers(pipe, pipe->buffers, 0); + free_uid(pipe->user); for (i = 0; i < pipe->buffers; i++) { struct pipe_buffer *buf = pipe->bufs + i; if (buf->ops) @@ -996,6 +1032,7 @@ memcpy(bufs + head, pipe->bufs, tail * sizeof(struct pipe_buffer)); } + account_pipe_buffers(pipe, pipe->buffers, nr_pages); pipe->curbuf = 0; kfree(pipe->bufs); pipe->bufs = bufs; @@ -1067,6 +1104,11 @@ if (!capable(CAP_SYS_RESOURCE) && size > pipe_max_size) { ret = -EPERM; goto out; + } else if ((too_many_pipe_buffers_hard(pipe->user) || + too_many_pipe_buffers_soft(pipe->user)) && + !capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN)) { + ret = -EPERM; + goto out; } ret = pipe_set_size(pipe, nr_pages); break; --- 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 @@ -246,23 +246,29 @@ sizeof(struct proc_maps_private)); } -static pid_t pid_of_stack(struct proc_maps_private *priv, - struct vm_area_struct *vma, bool is_pid) +/* + * Indicate if the VMA is a stack for the given task; for + * /proc/PID/maps that is the stack of the main task. + */ +static int is_stack(struct proc_maps_private *priv, + struct vm_area_struct *vma, int is_pid) { - struct inode *inode = priv->inode; - struct task_struct *task; - pid_t ret = 0; + int stack = 0; + + if (is_pid) { + stack = vma->vm_start <= vma->vm_mm->start_stack && + vma->vm_end >= vma->vm_mm->start_stack; + } else { + struct inode *inode = priv->inode; + struct task_struct *task; - rcu_read_lock(); - task = pid_task(proc_pid(inode), PIDTYPE_PID); - if (task) { - task = task_of_stack(task, vma, is_pid); + rcu_read_lock(); + task = pid_task(proc_pid(inode), PIDTYPE_PID); if (task) - ret = task_pid_nr_ns(task, inode->i_sb->s_fs_info); + stack = vma_is_stack_for_task(vma, task); + rcu_read_unlock(); } - rcu_read_unlock(); - - return ret; + return stack; } static void @@ -279,7 +285,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; @@ -322,8 +331,6 @@ name = arch_vma_name(vma); if (!name) { - pid_t tid; - if (!mm) { name = "[vdso]"; goto done; @@ -335,21 +342,8 @@ goto done; } - tid = pid_of_stack(priv, vma, is_pid); - if (tid != 0) { - /* - * Thread stack in /proc/PID/task/TID/maps or - * the main process stack. - */ - if (!is_pid || (vma->vm_start <= mm->start_stack && - vma->vm_end >= mm->start_stack)) { - name = "[stack]"; - } else { - /* Thread stack in /proc/PID/maps */ - seq_pad(m, ' '); - seq_printf(m, "[stack:%d]", tid); - } - } + if (is_stack(priv, vma, is_pid)) + name = "[stack]"; } done: @@ -1479,7 +1473,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, @@ -1512,19 +1506,8 @@ seq_file_path(m, file, "\n\t= "); } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) { seq_puts(m, " heap"); - } else { - pid_t tid = pid_of_stack(proc_priv, vma, is_pid); - if (tid != 0) { - /* - * Thread stack in /proc/PID/task/TID/maps or - * the main process stack. - */ - if (!is_pid || (vma->vm_start <= mm->start_stack && - vma->vm_end >= mm->start_stack)) - seq_puts(m, " stack"); - else - seq_printf(m, " stack:%d", tid); - } + } else if (is_stack(proc_priv, vma, is_pid)) { + seq_puts(m, " stack"); } if (is_vm_hugetlb_page(vma)) --- linux-raspi2-4.2.0.orig/fs/proc/task_nommu.c +++ linux-raspi2-4.2.0/fs/proc/task_nommu.c @@ -123,23 +123,26 @@ return size; } -static pid_t pid_of_stack(struct proc_maps_private *priv, - struct vm_area_struct *vma, bool is_pid) +static int is_stack(struct proc_maps_private *priv, + struct vm_area_struct *vma, int is_pid) { - struct inode *inode = priv->inode; - struct task_struct *task; - pid_t ret = 0; - - rcu_read_lock(); - task = pid_task(proc_pid(inode), PIDTYPE_PID); - if (task) { - task = task_of_stack(task, vma, is_pid); + struct mm_struct *mm = vma->vm_mm; + int stack = 0; + + if (is_pid) { + stack = vma->vm_start <= mm->start_stack && + vma->vm_end >= mm->start_stack; + } else { + struct inode *inode = priv->inode; + struct task_struct *task; + + rcu_read_lock(); + task = pid_task(proc_pid(inode), PIDTYPE_PID); if (task) - ret = task_pid_nr_ns(task, inode->i_sb->s_fs_info); + stack = vma_is_stack_for_task(vma, task); + rcu_read_unlock(); } - rcu_read_unlock(); - - return ret; + return stack; } /* @@ -160,7 +163,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; @@ -181,21 +187,9 @@ if (file) { seq_pad(m, ' '); seq_file_path(m, file, ""); - } else if (mm) { - pid_t tid = pid_of_stack(priv, vma, is_pid); - - if (tid != 0) { - seq_pad(m, ' '); - /* - * Thread stack in /proc/PID/task/TID/maps or - * the main process stack. - */ - if (!is_pid || (vma->vm_start <= mm->start_stack && - vma->vm_end >= mm->start_stack)) - seq_printf(m, "[stack]"); - else - seq_printf(m, "[stack:%d]", tid); - } + } else if (mm && is_stack(priv, vma, is_pid)) { + seq_pad(m, ' '); + seq_printf(m, "[stack]"); } seq_putc(m, '\n'); --- 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/proc_namespace.c +++ linux-raspi2-4.2.0/fs/proc_namespace.c @@ -197,6 +197,8 @@ if (sb->s_op->show_devname) { seq_puts(m, "device "); err = sb->s_op->show_devname(m, mnt_path.dentry); + if (err) + goto out; } else { if (r->mnt_devname) { seq_puts(m, "device "); --- linux-raspi2-4.2.0.orig/fs/quota/dquot.c +++ linux-raspi2-4.2.0/fs/quota/dquot.c @@ -1393,7 +1393,7 @@ static void __dquot_initialize(struct inode *inode, int type) { int cnt, init_needed = 0; - struct dquot **dquots, *got[MAXQUOTAS]; + struct dquot **dquots, *got[MAXQUOTAS] = {}; struct super_block *sb = inode->i_sb; qsize_t rsv; @@ -1408,7 +1408,6 @@ kprojid_t projid; int rc; - got[cnt] = NULL; if (type != -1 && cnt != type) continue; /* --- 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 @@ -185,6 +185,9 @@ unsigned int spd_pages = spd->nr_pages; int ret, do_wakeup, page_nr; + if (!spd_pages) + return 0; + ret = 0; do_wakeup = 0; page_nr = 0; @@ -809,6 +812,13 @@ */ static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd) { + /* + * Check for signal early to make process killable when there are + * always buffers available + */ + if (signal_pending(current)) + return -ERESTARTSYS; + while (!pipe->nrbufs) { if (!pipe->writers) return 0; @@ -884,6 +894,7 @@ splice_from_pipe_begin(sd); do { + cond_resched(); ret = splice_from_pipe_next(pipe, sd); if (ret > 0) ret = splice_from_pipe_feed(pipe, sd, actor); @@ -1102,8 +1113,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 +1126,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 +1153,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/sysv/inode.c +++ linux-raspi2-4.2.0/fs/sysv/inode.c @@ -162,15 +162,8 @@ inode->i_fop = &sysv_dir_operations; inode->i_mapping->a_ops = &sysv_aops; } else if (S_ISLNK(inode->i_mode)) { - if (inode->i_blocks) { - inode->i_op = &sysv_symlink_inode_operations; - inode->i_mapping->a_ops = &sysv_aops; - } else { - inode->i_op = &simple_symlink_inode_operations; - inode->i_link = (char *)SYSV_I(inode)->i_data; - nd_terminate_link(inode->i_link, inode->i_size, - sizeof(SYSV_I(inode)->i_data) - 1); - } + inode->i_op = &sysv_symlink_inode_operations; + inode->i_mapping->a_ops = &sysv_aops; } else init_special_inode(inode, inode->i_mode, rdev); } --- linux-raspi2-4.2.0.orig/fs/timerfd.c +++ linux-raspi2-4.2.0/fs/timerfd.c @@ -153,7 +153,7 @@ if (isalarm(ctx)) remaining = alarm_expires_remaining(&ctx->t.alarm); else - remaining = hrtimer_expires_remaining(&ctx->t.tmr); + remaining = hrtimer_expires_remaining_adjusted(&ctx->t.tmr); return remaining.tv64 < 0 ? ktime_set(0, 0): remaining; } --- 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/udf/inode.c +++ linux-raspi2-4.2.0/fs/udf/inode.c @@ -2047,14 +2047,29 @@ epos->offset += adsize; } +/* + * Only 1 indirect extent in a row really makes sense but allow upto 16 in case + * someone does some weird stuff. + */ +#define UDF_MAX_INDIR_EXTS 16 + int8_t udf_next_aext(struct inode *inode, struct extent_position *epos, struct kernel_lb_addr *eloc, uint32_t *elen, int inc) { int8_t etype; + unsigned int indirections = 0; while ((etype = udf_current_aext(inode, epos, eloc, elen, inc)) == (EXT_NEXT_EXTENT_ALLOCDECS >> 30)) { int block; + + if (++indirections > UDF_MAX_INDIR_EXTS) { + udf_err(inode->i_sb, + "too many indirect extents in inode %lu\n", + inode->i_ino); + return -1; + } + epos->block = *eloc; epos->offset = sizeof(struct allocExtDesc); brelse(epos->bh); --- linux-raspi2-4.2.0.orig/fs/udf/unicode.c +++ linux-raspi2-4.2.0/fs/udf/unicode.c @@ -128,11 +128,15 @@ if (c < 0x80U) utf_o->u_name[utf_o->u_len++] = (uint8_t)c; else if (c < 0x800U) { + if (utf_o->u_len > (UDF_NAME_LEN - 4)) + break; utf_o->u_name[utf_o->u_len++] = (uint8_t)(0xc0 | (c >> 6)); utf_o->u_name[utf_o->u_len++] = (uint8_t)(0x80 | (c & 0x3f)); } else { + if (utf_o->u_len > (UDF_NAME_LEN - 5)) + break; utf_o->u_name[utf_o->u_len++] = (uint8_t)(0xe0 | (c >> 12)); utf_o->u_name[utf_o->u_len++] = @@ -173,17 +177,22 @@ static int udf_UTF8toCS0(dstring *ocu, struct ustr *utf, int length) { unsigned c, i, max_val, utf_char; - int utf_cnt, u_len; + int utf_cnt, u_len, u_ch; memset(ocu, 0, sizeof(dstring) * length); ocu[0] = 8; max_val = 0xffU; + u_ch = 1; try_again: u_len = 0U; utf_char = 0U; utf_cnt = 0U; for (i = 0U; i < utf->u_len; i++) { + /* Name didn't fit? */ + if (u_len + 1 + u_ch >= length) + return 0; + c = (uint8_t)utf->u_name[i]; /* Complete a multi-byte UTF-8 character */ @@ -225,6 +234,7 @@ if (max_val == 0xffU) { max_val = 0xffffU; ocu[0] = (uint8_t)0x10U; + u_ch = 2; goto try_again; } goto error_out; @@ -277,7 +287,7 @@ c = (c << 8) | ocu[i++]; len = nls->uni2char(c, &utf_o->u_name[utf_o->u_len], - UDF_NAME_LEN - utf_o->u_len); + UDF_NAME_LEN - 2 - utf_o->u_len); /* Valid character? */ if (len >= 0) utf_o->u_len += len; @@ -295,15 +305,19 @@ int len; unsigned i, max_val; uint16_t uni_char; - int u_len; + int u_len, u_ch; memset(ocu, 0, sizeof(dstring) * length); ocu[0] = 8; max_val = 0xffU; + u_ch = 1; try_again: u_len = 0U; for (i = 0U; i < uni->u_len; i++) { + /* Name didn't fit? */ + if (u_len + 1 + u_ch >= length) + return 0; len = nls->char2uni(&uni->u_name[i], uni->u_len - i, &uni_char); if (!len) continue; @@ -316,6 +330,7 @@ if (uni_char > max_val) { max_val = 0xffffU; ocu[0] = (uint8_t)0x10U; + u_ch = 2; goto try_again; } --- 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/libxfs/xfs_dquot_buf.c +++ linux-raspi2-4.2.0/fs/xfs/libxfs/xfs_dquot_buf.c @@ -54,7 +54,7 @@ xfs_dqid_t id, uint type, /* used only when IO_dorepair is true */ uint flags, - char *str) + const char *str) { xfs_dqblk_t *d = (xfs_dqblk_t *)ddq; int errs = 0; @@ -207,7 +207,8 @@ STATIC bool xfs_dquot_buf_verify( struct xfs_mount *mp, - struct xfs_buf *bp) + struct xfs_buf *bp, + int warn) { struct xfs_dqblk *d = (struct xfs_dqblk *)bp->b_addr; xfs_dqid_t id = 0; @@ -240,8 +241,7 @@ if (i == 0) id = be32_to_cpu(ddq->d_id); - error = xfs_dqcheck(mp, ddq, id + i, 0, XFS_QMOPT_DOWARN, - "xfs_dquot_buf_verify"); + error = xfs_dqcheck(mp, ddq, id + i, 0, warn, __func__); if (error) return false; } @@ -256,7 +256,7 @@ if (!xfs_dquot_buf_verify_crc(mp, bp)) xfs_buf_ioerror(bp, -EFSBADCRC); - else if (!xfs_dquot_buf_verify(mp, bp)) + else if (!xfs_dquot_buf_verify(mp, bp, XFS_QMOPT_DOWARN)) xfs_buf_ioerror(bp, -EFSCORRUPTED); if (bp->b_error) @@ -264,6 +264,25 @@ } /* + * readahead errors are silent and simply leave the buffer as !done so a real + * read will then be run with the xfs_dquot_buf_ops verifier. See + * xfs_inode_buf_verify() for why we use EIO and ~XBF_DONE here rather than + * reporting the failure. + */ +static void +xfs_dquot_buf_readahead_verify( + struct xfs_buf *bp) +{ + struct xfs_mount *mp = bp->b_target->bt_mount; + + if (!xfs_dquot_buf_verify_crc(mp, bp) || + !xfs_dquot_buf_verify(mp, bp, 0)) { + xfs_buf_ioerror(bp, -EIO); + bp->b_flags &= ~XBF_DONE; + } +} + +/* * we don't calculate the CRC here as that is done when the dquot is flushed to * the buffer after the update is done. This ensures that the dquot in the * buffer always has an up-to-date CRC value. @@ -274,7 +293,7 @@ { struct xfs_mount *mp = bp->b_target->bt_mount; - if (!xfs_dquot_buf_verify(mp, bp)) { + if (!xfs_dquot_buf_verify(mp, bp, XFS_QMOPT_DOWARN)) { xfs_buf_ioerror(bp, -EFSCORRUPTED); xfs_verifier_error(bp); return; @@ -286,3 +305,7 @@ .verify_write = xfs_dquot_buf_write_verify, }; +const struct xfs_buf_ops xfs_dquot_buf_ra_ops = { + .verify_read = xfs_dquot_buf_readahead_verify, + .verify_write = xfs_dquot_buf_write_verify, +}; --- linux-raspi2-4.2.0.orig/fs/xfs/libxfs/xfs_format.h +++ linux-raspi2-4.2.0/fs/xfs/libxfs/xfs_format.h @@ -762,7 +762,7 @@ __be64 agfl_lsn; __be32 agfl_crc; __be32 agfl_bno[]; /* actually XFS_AGFL_SIZE(mp) */ -} xfs_agfl_t; +} __attribute__((packed)) xfs_agfl_t; #define XFS_AGFL_CRC_OFF offsetof(struct xfs_agfl, agfl_crc) --- linux-raspi2-4.2.0.orig/fs/xfs/libxfs/xfs_inode_buf.c +++ linux-raspi2-4.2.0/fs/xfs/libxfs/xfs_inode_buf.c @@ -62,11 +62,14 @@ * has not had the inode cores stamped into it. Hence for readahead, the buffer * may be potentially invalid. * - * If the readahead buffer is invalid, we don't want to mark it with an error, - * but we do want to clear the DONE status of the buffer so that a followup read - * will re-read it from disk. This will ensure that we don't get an unnecessary - * warnings during log recovery and we don't get unnecssary panics on debug - * kernels. + * If the readahead buffer is invalid, we need to mark it with an error and + * clear the DONE status of the buffer so that a followup read will re-read it + * from disk. We don't report the error otherwise to avoid warnings during log + * recovery and we don't get unnecssary panics on debug kernels. We use EIO here + * because all we want to do is say readahead failed; there is no-one to report + * the error to, so this will distinguish it from a non-ra verifier failure. + * Changes to this readahead error behavour also need to be reflected in + * xfs_dquot_buf_readahead_verify(). */ static void xfs_inode_buf_verify( @@ -93,6 +96,7 @@ XFS_RANDOM_ITOBP_INOTOBP))) { if (readahead) { bp->b_flags &= ~XBF_DONE; + xfs_buf_ioerror(bp, -EIO); return; } --- linux-raspi2-4.2.0.orig/fs/xfs/libxfs/xfs_quota_defs.h +++ linux-raspi2-4.2.0/fs/xfs/libxfs/xfs_quota_defs.h @@ -153,7 +153,7 @@ #define XFS_QMOPT_RESBLK_MASK (XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_RES_RTBLKS) extern int xfs_dqcheck(struct xfs_mount *mp, xfs_disk_dquot_t *ddq, - xfs_dqid_t id, uint type, uint flags, char *str); + xfs_dqid_t id, uint type, uint flags, const char *str); extern int xfs_calc_dquots_per_chunk(unsigned int nbblks); #endif /* __XFS_QUOTA_H__ */ --- linux-raspi2-4.2.0.orig/fs/xfs/libxfs/xfs_shared.h +++ linux-raspi2-4.2.0/fs/xfs/libxfs/xfs_shared.h @@ -49,6 +49,7 @@ extern const struct xfs_buf_ops xfs_inode_buf_ops; extern const struct xfs_buf_ops xfs_inode_buf_ra_ops; extern const struct xfs_buf_ops xfs_dquot_buf_ops; +extern const struct xfs_buf_ops xfs_dquot_buf_ra_ops; extern const struct xfs_buf_ops xfs_sb_buf_ops; extern const struct xfs_buf_ops xfs_sb_quiet_buf_ops; extern const struct xfs_buf_ops xfs_symlink_buf_ops; --- 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_attr_list.c +++ linux-raspi2-4.2.0/fs/xfs/xfs_attr_list.c @@ -202,8 +202,10 @@ sbp->namelen, sbp->valuelen, &sbp->name[sbp->namelen]); - if (error) + if (error) { + kmem_free(sbuf); return error; + } if (context->seen_enough) break; cursor->offset++; @@ -454,14 +456,13 @@ args.rmtblkcnt = xfs_attr3_rmt_blocks( args.dp->i_mount, valuelen); retval = xfs_attr_rmtval_get(&args); - if (retval) - return retval; - retval = context->put_listent(context, - entry->flags, - name_rmt->name, - (int)name_rmt->namelen, - valuelen, - args.value); + if (!retval) + retval = context->put_listent(context, + entry->flags, + name_rmt->name, + (int)name_rmt->namelen, + valuelen, + args.value); kmem_free(args.value); } else { retval = context->put_listent(context, --- linux-raspi2-4.2.0.orig/fs/xfs/xfs_buf.c +++ linux-raspi2-4.2.0/fs/xfs/xfs_buf.c @@ -605,6 +605,13 @@ } } + /* + * Clear b_error if this is a lookup from a caller that doesn't expect + * valid data to be found in the buffer. + */ + if (!(flags & XBF_READ)) + xfs_buf_ioerror(bp, 0); + XFS_STATS_INC(xb_get); trace_xfs_buf_get(bp, flags, _RET_IP_); return bp; @@ -1522,6 +1529,16 @@ LIST_HEAD(dispose); int loop = 0; + /* + * We need to flush the buffer workqueue to ensure that all IO + * completion processing is 100% done. Just waiting on buffer locks is + * not sufficient for async IO as the reference count held over IO is + * not released until after the buffer lock is dropped. Hence we need to + * ensure here that all reference counts have been dropped before we + * start walking the LRU list. + */ + drain_workqueue(btp->bt_mount->m_buf_workqueue); + /* loop until there is nothing left on the lru list. */ while (list_lru_count(&btp->bt_lru)) { list_lru_walk(&btp->bt_lru, xfs_buftarg_wait_rele, --- linux-raspi2-4.2.0.orig/fs/xfs/xfs_log_recover.c +++ linux-raspi2-4.2.0/fs/xfs/xfs_log_recover.c @@ -3163,6 +3163,7 @@ struct xfs_disk_dquot *recddq; struct xfs_dq_logformat *dq_f; uint type; + int len; if (mp->m_qflags == 0) @@ -3183,8 +3184,12 @@ ASSERT(dq_f); ASSERT(dq_f->qlf_len == 1); - xfs_buf_readahead(mp->m_ddev_targp, dq_f->qlf_blkno, - XFS_FSB_TO_BB(mp, dq_f->qlf_len), NULL); + len = XFS_FSB_TO_BB(mp, dq_f->qlf_len); + if (xlog_peek_buffer_cancelled(log, dq_f->qlf_blkno, len, 0)) + return; + + xfs_buf_readahead(mp->m_ddev_targp, dq_f->qlf_blkno, len, + &xfs_dquot_buf_ra_ops); } STATIC void --- 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/bitops/lock.h +++ linux-raspi2-4.2.0/include/asm-generic/bitops/lock.h @@ -29,16 +29,16 @@ * @nr: the bit to set * @addr: the address to start counting from * - * This operation is like clear_bit_unlock, however it is not atomic. - * It does provide release barrier semantics so it can be used to unlock - * a bit lock, however it would only be used if no other CPU can modify - * any bits in the memory until the lock is released (a good example is - * if the bit lock itself protects access to the other bits in the word). + * A weaker form of clear_bit_unlock() as used by __bit_lock_unlock(). If all + * the bits in the word are protected by this lock some archs can use weaker + * ops to safely unlock. + * + * See for example x86's implementation. */ #define __clear_bit_unlock(nr, addr) \ do { \ - smp_mb(); \ - __clear_bit(nr, addr); \ + smp_mb__before_atomic(); \ + clear_bit(nr, addr); \ } while (0) #endif /* _ASM_GENERIC_BITOPS_LOCK_H_ */ --- linux-raspi2-4.2.0.orig/include/asm-generic/cputime_nsecs.h +++ linux-raspi2-4.2.0/include/asm-generic/cputime_nsecs.h @@ -75,7 +75,7 @@ */ static inline cputime_t timespec_to_cputime(const struct timespec *val) { - u64 ret = val->tv_sec * NSEC_PER_SEC + val->tv_nsec; + u64 ret = (u64)val->tv_sec * NSEC_PER_SEC + val->tv_nsec; return (__force cputime_t) ret; } static inline void cputime_to_timespec(const cputime_t ct, struct timespec *val) @@ -91,7 +91,8 @@ */ static inline cputime_t timeval_to_cputime(const struct timeval *val) { - u64 ret = val->tv_sec * NSEC_PER_SEC + val->tv_usec * NSEC_PER_USEC; + u64 ret = (u64)val->tv_sec * NSEC_PER_SEC + + val->tv_usec * NSEC_PER_USEC; return (__force cputime_t) ret; } static inline void cputime_to_timeval(const cputime_t ct, struct timeval *val) --- 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,19 +111,14 @@ 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; } #endif /* - * Initializier - */ -#define __ARCH_SPIN_LOCK_UNLOCKED { ATOMIC_INIT(0) } - -/* * Remapping spinlock architecture specific functions to the corresponding * queued spinlock functions. */ --- linux-raspi2-4.2.0.orig/include/asm-generic/qspinlock_types.h +++ linux-raspi2-4.2.0/include/asm-generic/qspinlock_types.h @@ -33,6 +33,11 @@ } arch_spinlock_t; /* + * Initializier + */ +#define __ARCH_SPIN_LOCK_UNLOCKED { ATOMIC_INIT(0) } + +/* * Bitfields in the atomic value: * * When NR_CPUS < 16K --- linux-raspi2-4.2.0.orig/include/crypto/hash.h +++ linux-raspi2-4.2.0/include/crypto/hash.h @@ -199,6 +199,7 @@ unsigned int keylen); unsigned int reqsize; + bool has_setkey; struct crypto_tfm base; }; @@ -356,6 +357,11 @@ int crypto_ahash_setkey(struct crypto_ahash *tfm, const u8 *key, unsigned int keylen); +static inline bool crypto_ahash_has_setkey(struct crypto_ahash *tfm) +{ + return tfm->has_setkey; +} + /** * crypto_ahash_finup() - update and finalize message digest * @req: reference to the ahash_request handle that holds all information --- linux-raspi2-4.2.0.orig/include/crypto/if_alg.h +++ linux-raspi2-4.2.0/include/crypto/if_alg.h @@ -30,6 +30,9 @@ struct sock *parent; + unsigned int refcnt; + unsigned int nokey_refcnt; + const struct af_alg_type *type; void *private; }; @@ -50,9 +53,11 @@ void (*release)(void *private); int (*setkey)(void *private, const u8 *key, unsigned int keylen); int (*accept)(void *private, struct sock *sk); + int (*accept_nokey)(void *private, struct sock *sk); int (*setauthsize)(void *private, unsigned int authsize); struct proto_ops *ops; + struct proto_ops *ops_nokey; struct module *owner; char name[14]; }; @@ -67,6 +72,7 @@ int af_alg_unregister_type(const struct af_alg_type *type); int af_alg_release(struct socket *sock); +void af_alg_release_parent(struct sock *sk); int af_alg_accept(struct sock *sk, struct socket *newsock); int af_alg_make_sg(struct af_alg_sgl *sgl, struct iov_iter *iter, int len); @@ -83,11 +89,6 @@ return (struct alg_sock *)sk; } -static inline void af_alg_release_parent(struct sock *sk) -{ - sock_put(alg_sk(sk)->parent); -} - static inline void af_alg_init_completion(struct af_alg_completion *completion) { init_completion(&completion->completion); --- linux-raspi2-4.2.0.orig/include/drm/drmP.h +++ linux-raspi2-4.2.0/include/drm/drmP.h @@ -299,6 +299,11 @@ unsigned universal_planes:1; /* true if client understands atomic properties */ unsigned atomic:1; + /* + * This client is allowed to gain master privileges for @master. + * Protected by struct drm_device::master_mutex. + */ + unsigned allowed_master:1; struct pid *pid; kuid_t uid; @@ -898,6 +903,7 @@ extern ssize_t drm_read(struct file *filp, char __user *buffer, size_t count, loff_t *offset); extern int drm_release(struct inode *inode, struct file *filp); +extern int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv); /* Mapping support (drm_vm.h) */ extern unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait); --- linux-raspi2-4.2.0.orig/include/drm/drm_cache.h +++ linux-raspi2-4.2.0/include/drm/drm_cache.h @@ -35,4 +35,13 @@ void drm_clflush_pages(struct page *pages[], unsigned long num_pages); +static inline bool drm_arch_can_wc_memory(void) +{ +#if defined(CONFIG_PPC) && !defined(CONFIG_NOT_COHERENT_CACHE) + return false; +#else + return true; +#endif +} + #endif --- 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; }; @@ -448,9 +449,7 @@ the mstb tx_slots and txmsg->state once they are queued */ struct mutex qlock; struct list_head tx_msg_downq; - struct list_head tx_msg_upq; bool tx_down_in_progress; - bool tx_up_in_progress; /* payload info + lock for it */ struct mutex payload_lock; --- linux-raspi2-4.2.0.orig/include/drm/drm_fixed.h +++ linux-raspi2-4.2.0/include/drm/drm_fixed.h @@ -73,18 +73,28 @@ #define DRM_FIXED_ONE (1ULL << DRM_FIXED_POINT) #define DRM_FIXED_DECIMAL_MASK (DRM_FIXED_ONE - 1) #define DRM_FIXED_DIGITS_MASK (~DRM_FIXED_DECIMAL_MASK) +#define DRM_FIXED_EPSILON 1LL +#define DRM_FIXED_ALMOST_ONE (DRM_FIXED_ONE - DRM_FIXED_EPSILON) static inline s64 drm_int2fixp(int a) { return ((s64)a) << DRM_FIXED_POINT; } -static inline int drm_fixp2int(int64_t a) +static inline int drm_fixp2int(s64 a) { return ((s64)a) >> DRM_FIXED_POINT; } -static inline unsigned drm_fixp_msbset(int64_t a) +static inline int drm_fixp2int_ceil(s64 a) +{ + if (a > 0) + return drm_fixp2int(a + DRM_FIXED_ALMOST_ONE); + else + return drm_fixp2int(a - DRM_FIXED_ALMOST_ONE); +} + +static inline unsigned drm_fixp_msbset(s64 a) { unsigned shift, sign = (a >> 63) & 1; @@ -136,6 +146,45 @@ return result; } +static inline s64 drm_fixp_from_fraction(s64 a, s64 b) +{ + s64 res; + bool a_neg = a < 0; + bool b_neg = b < 0; + u64 a_abs = a_neg ? -a : a; + u64 b_abs = b_neg ? -b : b; + u64 rem; + + /* determine integer part */ + u64 res_abs = div64_u64_rem(a_abs, b_abs, &rem); + + /* determine fractional part */ + { + u32 i = DRM_FIXED_POINT; + + do { + rem <<= 1; + res_abs <<= 1; + if (rem >= b_abs) { + res_abs |= 1; + rem -= b_abs; + } + } while (--i != 0); + } + + /* round up LSB */ + { + u64 summand = (rem << 1) >= b_abs; + + res_abs += summand; + } + + res = (s64) res_abs; + if (a_neg ^ b_neg) + res = -res; + return res; +} + static inline s64 drm_fixp_exp(s64 x) { s64 tolerance = div64_s64(DRM_FIXED_ONE, 1000000); --- 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); @@ -778,8 +784,8 @@ return -ENXIO; } static inline int acpi_dev_get_property_reference(struct acpi_device *adev, - const char *name, const char *cells_name, - size_t index, struct acpi_reference_args *args) + const char *name, size_t index, + struct acpi_reference_args *args) { return -ENXIO; } --- linux-raspi2-4.2.0.orig/include/linux/ata.h +++ linux-raspi2-4.2.0/include/linux/ata.h @@ -487,8 +487,8 @@ }; enum ata_ioctls { - ATA_IOC_GET_IO32 = 0x309, - ATA_IOC_SET_IO32 = 0x324, + ATA_IOC_GET_IO32 = 0x309, /* HDIO_GET_32BIT */ + ATA_IOC_SET_IO32 = 0x324, /* HDIO_SET_32BIT */ }; /* core structures */ --- 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/blkdev.h +++ linux-raspi2-4.2.0/include/linux/blkdev.h @@ -772,7 +772,6 @@ extern void blk_requeue_request(struct request_queue *, struct request *); extern void blk_add_request_payload(struct request *rq, struct page *page, unsigned int len); -extern int blk_rq_check_limits(struct request_queue *q, struct request *rq); extern int blk_lld_busy(struct request_queue *q); extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src, struct bio_set *bs, gfp_t gfp_mask, --- 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/ceph/messenger.h +++ linux-raspi2-4.2.0/include/linux/ceph/messenger.h @@ -226,6 +226,7 @@ struct ceph_entity_addr actual_peer_addr; /* message out temps */ + struct ceph_msg_header out_hdr; struct ceph_msg *out_msg; /* sending message (== tail of out_sent) */ bool out_msg_done; @@ -235,7 +236,6 @@ int out_kvec_left; /* kvec's left in out_kvec */ int out_skip; /* skip this many bytes */ int out_kvec_bytes; /* total bytes left */ - bool out_kvec_is_msg; /* kvec refers to out_msg */ int out_more; /* there is more data after the kvecs */ __le64 out_temp_ack; /* for writing an ack */ --- linux-raspi2-4.2.0.orig/include/linux/cgroup-defs.h +++ linux-raspi2-4.2.0/include/linux/cgroup-defs.h @@ -117,6 +117,12 @@ */ u64 serial_nr; + /* + * Incremented by online self and children. Used to guarantee that + * parents are not offlined before their children. + */ + atomic_t online_cnt; + /* percpu_ref killing and RCU release */ struct rcu_head rcu_head; struct work_struct destroy_work; @@ -463,31 +469,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/clk-provider.h +++ linux-raspi2-4.2.0/include/linux/clk-provider.h @@ -362,6 +362,7 @@ #define CLK_DIVIDER_READ_ONLY BIT(5) extern const struct clk_ops clk_divider_ops; +extern const struct clk_ops clk_divider_ro_ops; unsigned long divider_recalc_rate(struct clk_hw *hw, unsigned long parent_rate, unsigned int val, const struct clk_div_table *table, --- linux-raspi2-4.2.0.orig/include/linux/compiler-gcc.h +++ linux-raspi2-4.2.0/include/linux/compiler-gcc.h @@ -199,7 +199,7 @@ #define unreachable() __builtin_unreachable() /* Mark a function definition as prohibited from being cloned. */ -#define __noclone __attribute__((__noclone__)) +#define __noclone __attribute__((__noclone__, __optimize__("no-tracer"))) #endif /* GCC_VERSION >= 40500 */ --- linux-raspi2-4.2.0.orig/include/linux/compiler.h +++ linux-raspi2-4.2.0/include/linux/compiler.h @@ -144,7 +144,7 @@ */ #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) #define __trace_if(cond) \ - if (__builtin_constant_p((cond)) ? !!(cond) : \ + if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ({ \ int ______r; \ static struct ftrace_branch_data \ --- linux-raspi2-4.2.0.orig/include/linux/console.h +++ linux-raspi2-4.2.0/include/linux/console.h @@ -150,6 +150,7 @@ extern void console_unlock(void); extern void console_conditional_schedule(void); extern void console_unblank(void); +extern void console_flush_on_panic(void); extern struct tty_driver *console_device(int *); extern void console_stop(struct console *); extern void console_start(struct console *); --- linux-raspi2-4.2.0.orig/include/linux/cred.h +++ linux-raspi2-4.2.0/include/linux/cred.h @@ -165,6 +165,7 @@ extern void abort_creds(struct cred *); extern const struct cred *override_creds(const struct cred *); extern void revert_creds(const struct cred *); +extern struct cred *clone_cred(const struct cred *old); extern struct cred *prepare_kernel_cred(struct task_struct *); extern int change_create_files_as(struct cred *, struct inode *); extern int set_security_override(struct cred *, u32); --- linux-raspi2-4.2.0.orig/include/linux/crypto.h +++ linux-raspi2-4.2.0/include/linux/crypto.h @@ -552,6 +552,7 @@ unsigned int ivsize; unsigned int reqsize; + bool has_setkey; }; struct blkcipher_tfm { @@ -922,6 +923,13 @@ return crt->setkey(crt->base, key, keylen); } +static inline bool crypto_ablkcipher_has_setkey(struct crypto_ablkcipher *tfm) +{ + struct ablkcipher_tfm *crt = crypto_ablkcipher_crt(tfm); + + return crt->has_setkey; +} + /** * crypto_ablkcipher_reqtfm() - obtain cipher handle from request * @req: ablkcipher_request out of which the cipher handle is to be obtained --- linux-raspi2-4.2.0.orig/include/linux/dcache.h +++ linux-raspi2-4.2.0/include/linux/dcache.h @@ -161,6 +161,7 @@ struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(struct dentry *, bool); struct inode *(*d_select_inode)(struct dentry *, unsigned); + struct dentry *(*d_real)(struct dentry *, struct inode *); } ____cacheline_aligned; /* @@ -228,6 +229,8 @@ #define DCACHE_FALLTHRU 0x01000000 /* Fall through to lower layer */ #define DCACHE_OP_SELECT_INODE 0x02000000 /* Unioned entry: dcache op selects inode */ +#define DCACHE_OP_REAL 0x08000000 + extern seqlock_t rename_lock; /* @@ -409,9 +412,7 @@ */ static inline unsigned __d_entry_type(const struct dentry *dentry) { - unsigned type = READ_ONCE(dentry->d_flags); - smp_rmb(); - return type & DCACHE_ENTRY_TYPE; + return dentry->d_flags & DCACHE_ENTRY_TYPE; } static inline bool d_is_miss(const struct dentry *dentry) @@ -584,4 +585,12 @@ return upper; } +static inline struct dentry *d_real(struct dentry *dentry) +{ + if (unlikely(dentry->d_flags & DCACHE_OP_REAL)) + return dentry->d_op->d_real(dentry, NULL); + else + return dentry; +} + #endif /* __LINUX_DCACHE_H */ --- linux-raspi2-4.2.0.orig/include/linux/device-mapper.h +++ linux-raspi2-4.2.0/include/linux/device-mapper.h @@ -127,6 +127,8 @@ char name[16]; }; +dev_t dm_get_dev_t(const char *path); + /* * Constructors should call these functions to ensure destination devices * are opened/closed correctly. --- 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/devpts_fs.h +++ linux-raspi2-4.2.0/include/linux/devpts_fs.h @@ -19,6 +19,8 @@ int devpts_new_index(struct inode *ptmx_inode); void devpts_kill_index(struct inode *ptmx_inode, int idx); +void devpts_add_ref(struct inode *ptmx_inode); +void devpts_del_ref(struct inode *ptmx_inode); /* mknod in devpts */ struct inode *devpts_pty_new(struct inode *ptmx_inode, dev_t device, int index, void *priv); @@ -32,6 +34,8 @@ /* Dummy stubs in the no-pty case */ static inline int devpts_new_index(struct inode *ptmx_inode) { return -EINVAL; } static inline void devpts_kill_index(struct inode *ptmx_inode, int idx) { } +static inline void devpts_add_ref(struct inode *ptmx_inode) { } +static inline void devpts_del_ref(struct inode *ptmx_inode) { } static inline struct inode *devpts_pty_new(struct inode *ptmx_inode, dev_t device, int index, void *priv) { --- linux-raspi2-4.2.0.orig/include/linux/dmapool.h +++ linux-raspi2-4.2.0/include/linux/dmapool.h @@ -24,6 +24,12 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle); +static inline void *dma_pool_zalloc(struct dma_pool *pool, gfp_t mem_flags, + dma_addr_t *handle) +{ + return dma_pool_alloc(pool, mem_flags | __GFP_ZERO, handle); +} + void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr); /* --- linux-raspi2-4.2.0.orig/include/linux/efi.h +++ linux-raspi2-4.2.0/include/linux/efi.h @@ -1178,7 +1178,10 @@ struct efivar_entry *efivar_entry_find(efi_char16_t *name, efi_guid_t guid, struct list_head *head, bool remove); -bool efivar_validate(efi_char16_t *var_name, u8 *data, unsigned long len); +bool efivar_validate(efi_guid_t vendor, efi_char16_t *var_name, u8 *data, + unsigned long data_size); +bool efivar_variable_is_removable(efi_guid_t vendor, const char *name, + size_t len); extern struct work_struct efivar_work; void efivar_run_worker(void); --- linux-raspi2-4.2.0.orig/include/linux/enclosure.h +++ linux-raspi2-4.2.0/include/linux/enclosure.h @@ -29,7 +29,11 @@ /* A few generic types ... taken from ses-2 */ enum enclosure_component_type { ENCLOSURE_COMPONENT_DEVICE = 0x01, + ENCLOSURE_COMPONENT_CONTROLLER_ELECTRONICS = 0x07, + ENCLOSURE_COMPONENT_SCSI_TARGET_PORT = 0x14, + ENCLOSURE_COMPONENT_SCSI_INITIATOR_PORT = 0x15, ENCLOSURE_COMPONENT_ARRAY_DEVICE = 0x17, + ENCLOSURE_COMPONENT_SAS_EXPANDER = 0x18, }; /* ses-2 common element status */ --- 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/filter.h +++ linux-raspi2-4.2.0/include/linux/filter.h @@ -446,6 +446,25 @@ #define BPF_ANC BIT(15) +static inline bool bpf_needs_clear_a(const struct sock_filter *first) +{ + switch (first->code) { + case BPF_RET | BPF_K: + case BPF_LD | BPF_W | BPF_LEN: + return false; + + case BPF_LD | BPF_W | BPF_ABS: + case BPF_LD | BPF_H | BPF_ABS: + case BPF_LD | BPF_B | BPF_ABS: + if (first->k == SKF_AD_OFF + SKF_AD_ALU_XOR_X) + return true; + return false; + + default: + return true; + } +} + static inline u16 bpf_anc_helper(const struct sock_filter *ftest) { BUG_ON(ftest->code & BPF_ANC); --- linux-raspi2-4.2.0.orig/include/linux/fs.h +++ linux-raspi2-4.2.0/include/linux/fs.h @@ -1209,6 +1209,16 @@ return f->f_inode; } +static inline struct dentry *file_dentry(const struct file *file) +{ + struct dentry *dentry = file->f_path.dentry; + + if (unlikely(dentry->d_flags & DCACHE_OP_REAL)) + return dentry->d_op->d_real(dentry, file_inode(file)); + else + return dentry; +} + static inline int posix_lock_file_wait(struct file *filp, struct file_lock *fl) { return posix_lock_inode_wait(file_inode(filp), fl); @@ -1260,6 +1270,7 @@ /* sb->s_iflags */ #define SB_I_CGROUPWB 0x00000001 /* cgroup-aware writeback enabled */ +#define SB_I_NOSUID 0x00000004 /* Ignore suid on this fs */ /* Possible states of 'frozen' field */ enum { @@ -1677,6 +1688,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 +1735,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 }; /* @@ -2222,7 +2243,7 @@ extern struct file *file_open_name(struct filename *, int, umode_t); extern struct file *filp_open(const char *, int, umode_t); extern struct file *file_open_root(struct dentry *, struct vfsmount *, - const char *, int); + const char *, int, umode_t); extern struct file * dentry_open(const struct path *, int, const struct cred *); extern int filp_close(struct file *, fl_owner_t id); @@ -3041,4 +3062,6 @@ return !IS_DEADDIR(inode); } +extern bool path_nosuid(const struct path *path); + #endif /* _LINUX_FS_H */ --- 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/ftrace.h +++ linux-raspi2-4.2.0/include/linux/ftrace.h @@ -575,6 +575,7 @@ extern int skip_trace(unsigned long ip); extern void ftrace_module_init(struct module *mod); +extern void ftrace_release_mod(struct module *mod); extern void ftrace_disable_daemon(void); extern void ftrace_enable_daemon(void); --- linux-raspi2-4.2.0.orig/include/linux/gpio/driver.h +++ linux-raspi2-4.2.0/include/linux/gpio/driver.h @@ -22,6 +22,7 @@ * @dev: optional device providing the GPIOs * @cdev: class device used by sysfs interface (may be NULL) * @owner: helps prevent removal of modules exporting active GPIOs + * @data: per-instance data assigned by the driver * @list: links gpio_chips together for traversal * @request: optional hook for chip-specific activation, such as * enabling module power and clock; may sleep @@ -80,6 +81,7 @@ struct device *dev; struct device *cdev; struct module *owner; + void *data; struct list_head list; int (*request)(struct gpio_chip *chip, @@ -153,7 +155,11 @@ unsigned offset); /* add/remove chips */ -extern int gpiochip_add(struct gpio_chip *chip); +extern int gpiochip_add_data(struct gpio_chip *chip, void *data); +static inline int gpiochip_add(struct gpio_chip *chip) +{ + return gpiochip_add_data(chip, NULL); +} extern void gpiochip_remove(struct gpio_chip *chip); extern struct gpio_chip *gpiochip_find(void *data, int (*match)(struct gpio_chip *chip, void *data)); @@ -162,6 +168,12 @@ int gpiochip_lock_as_irq(struct gpio_chip *chip, unsigned int offset); void gpiochip_unlock_as_irq(struct gpio_chip *chip, unsigned int offset); +/* get driver data */ +static inline void *gpiochip_get_data(struct gpio_chip *chip) +{ + return chip->data; +} + struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc); #ifdef CONFIG_GPIOLIB_IRQCHIP --- linux-raspi2-4.2.0.orig/include/linux/hrtimer.h +++ linux-raspi2-4.2.0/include/linux/hrtimer.h @@ -87,7 +87,8 @@ * @function: timer expiry callback function * @base: pointer to the timer base (per cpu and per clock) * @state: state information (See bit values above) - * @start_pid: timer statistics field to store the pid of the task which + * @is_rel: Set if the timer was armed relative + * @start_pid: timer statistics field to store the pid of the task which * started the timer * @start_site: timer statistics field to store the site where the timer * was started @@ -101,7 +102,8 @@ ktime_t _softexpires; enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; - unsigned long state; + u8 state; + u8 is_rel; #ifdef CONFIG_TIMER_STATS int start_pid; void *start_site; @@ -321,6 +323,27 @@ #endif +static inline ktime_t +__hrtimer_expires_remaining_adjusted(const struct hrtimer *timer, ktime_t now) +{ + ktime_t rem = ktime_sub(timer->node.expires, now); + + /* + * Adjust relative timers for the extra we added in + * hrtimer_start_range_ns() to prevent short timeouts. + */ + if (IS_ENABLED(CONFIG_TIME_LOW_RES) && timer->is_rel) + rem.tv64 -= hrtimer_resolution; + return rem; +} + +static inline ktime_t +hrtimer_expires_remaining_adjusted(const struct hrtimer *timer) +{ + return __hrtimer_expires_remaining_adjusted(timer, + timer->base->get_time()); +} + extern void clock_was_set(void); #ifdef CONFIG_TIMERFD extern void timerfd_clock_was_set(void); @@ -390,7 +413,12 @@ } /* Query timers: */ -extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer); +extern ktime_t __hrtimer_get_remaining(const struct hrtimer *timer, bool adjust); + +static inline ktime_t hrtimer_get_remaining(const struct hrtimer *timer) +{ + return __hrtimer_get_remaining(timer, false); +} extern u64 hrtimer_get_next_event(void); --- linux-raspi2-4.2.0.orig/include/linux/hyperv.h +++ linux-raspi2-4.2.0/include/linux/hyperv.h @@ -629,6 +629,11 @@ struct hv_input_signal_event event; }; +enum hv_signal_policy { + HV_SIGNAL_POLICY_DEFAULT = 0, + HV_SIGNAL_POLICY_EXPLICIT, +}; + struct vmbus_channel { /* Unique channel id */ int id; @@ -756,8 +761,21 @@ * link up channels based on their CPU affinity. */ struct list_head percpu_list; + /* + * Host signaling policy: The default policy will be + * based on the ring buffer state. We will also support + * a policy where the client driver can have explicit + * signaling control. + */ + enum hv_signal_policy signal_policy; }; +static inline void set_channel_signal_state(struct vmbus_channel *c, + enum hv_signal_policy policy) +{ + c->signal_policy = policy; +} + static inline void set_channel_read_state(struct vmbus_channel *c, bool state) { c->batched_reading = state; @@ -977,6 +995,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 +1256,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 @@ -29,6 +29,7 @@ __s32 max_desync_factor; __s32 max_addresses; __s32 accept_ra_defrtr; + __s32 accept_ra_min_hop_limit; __s32 accept_ra_pinfo; #ifdef CONFIG_IPV6_ROUTER_PREF __s32 accept_ra_rtr_pref; @@ -224,7 +225,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/kernel.h +++ linux-raspi2-4.2.0/include/linux/kernel.h @@ -605,7 +605,7 @@ #define do_trace_printk(fmt, args...) \ do { \ - static const char *trace_printk_fmt \ + static const char *trace_printk_fmt __used \ __attribute__((section("__trace_printk_fmt"))) = \ __builtin_constant_p(fmt) ? fmt : NULL; \ \ @@ -649,7 +649,7 @@ */ #define trace_puts(str) ({ \ - static const char *trace_printk_fmt \ + static const char *trace_printk_fmt __used \ __attribute__((section("__trace_printk_fmt"))) = \ __builtin_constant_p(str) ? str : NULL; \ \ @@ -671,7 +671,7 @@ #define ftrace_vprintk(fmt, vargs) \ do { \ if (__builtin_constant_p(fmt)) { \ - static const char *trace_printk_fmt \ + static const char *trace_printk_fmt __used \ __attribute__((section("__trace_printk_fmt"))) = \ __builtin_constant_p(fmt) ? fmt : NULL; \ \ --- 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/libata.h +++ linux-raspi2-4.2.0/include/linux/libata.h @@ -716,7 +716,7 @@ union { u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ - }; + } ____cacheline_aligned; /* DEVSLP Timing Variables from Identify Device Data Log */ u8 devslp_timing[ATA_LOG_DEVSLP_SIZE]; --- 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/memblock.h +++ linux-raspi2-4.2.0/include/linux/memblock.h @@ -211,10 +211,10 @@ * for_each_free_mem_range - iterate through free memblock areas * @i: u64 used as loop variable * @nid: node selector, %NUMA_NO_NODE for all nodes + * @flags: pick from blocks based on memory attributes * @p_start: ptr to phys_addr_t for start address of the range, can be %NULL * @p_end: ptr to phys_addr_t for end address of the range, can be %NULL * @p_nid: ptr to int for nid of the range, can be %NULL - * @flags: pick from blocks based on memory attributes * * Walks over free (memory && !reserved) areas of memblock. Available as * soon as memblock is initialized. @@ -227,10 +227,10 @@ * for_each_free_mem_range_reverse - rev-iterate through free memblock areas * @i: u64 used as loop variable * @nid: node selector, %NUMA_NO_NODE for all nodes + * @flags: pick from blocks based on memory attributes * @p_start: ptr to phys_addr_t for start address of the range, can be %NULL * @p_end: ptr to phys_addr_t for end address of the range, can be %NULL * @p_nid: ptr to int for nid of the range, can be %NULL - * @flags: pick from blocks based on memory attributes * * Walks over free (memory && !reserved) areas of memblock in reverse * order. Available as soon as memblock is initialized. --- 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/mlx4/device.h +++ linux-raspi2-4.2.0/include/linux/mlx4/device.h @@ -961,10 +961,6 @@ for ((port) = 1; (port) <= (dev)->caps.num_ports; (port)++) \ if ((type) == (dev)->caps.port_mask[(port)]) -#define mlx4_foreach_non_ib_transport_port(port, dev) \ - for ((port) = 1; (port) <= (dev)->caps.num_ports; (port)++) \ - if (((dev)->caps.port_mask[port] != MLX4_PORT_TYPE_IB)) - #define mlx4_foreach_ib_transport_port(port, dev) \ for ((port) = 1; (port) <= (dev)->caps.num_ports; (port)++) \ if (((dev)->caps.port_mask[port] == MLX4_PORT_TYPE_IB) || \ --- linux-raspi2-4.2.0.orig/include/linux/mlx5/driver.h +++ linux-raspi2-4.2.0/include/linux/mlx5/driver.h @@ -54,7 +54,7 @@ /* one minute for the sake of bringup. Generally, commands must always * complete and we may need to increase this timeout value */ - MLX5_CMD_TIMEOUT_MSEC = 7200 * 1000, + MLX5_CMD_TIMEOUT_MSEC = 60 * 1000, MLX5_CMD_WQ_MAX_NAME = 32, }; @@ -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); @@ -1279,8 +1322,7 @@ !vma_growsup(vma->vm_next, addr); } -extern struct task_struct *task_of_stack(struct task_struct *task, - struct vm_area_struct *vma, bool in_group); +int vma_is_stack_for_task(struct vm_area_struct *vma, struct task_struct *t); extern unsigned long move_page_tables(struct vm_area_struct *vma, unsigned long old_addr, struct vm_area_struct *new_vma, --- 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/mmdebug.h +++ linux-raspi2-4.2.0/include/linux/mmdebug.h @@ -1,6 +1,7 @@ #ifndef LINUX_MM_DEBUG_H #define LINUX_MM_DEBUG_H 1 +#include #include struct page; --- linux-raspi2-4.2.0.orig/include/linux/mtd/map.h +++ linux-raspi2-4.2.0/include/linux/mtd/map.h @@ -238,8 +238,11 @@ If there is no cache to care about this can be set to NULL. */ void (*inval_cache)(struct map_info *, unsigned long, ssize_t); - /* set_vpp() must handle being reentered -- enable, enable, disable - must leave it enabled. */ + /* This will be called with 1 as parameter when the first map user + * needs VPP, and called with 0 when the last user exits. The map + * core maintains a reference counter, and assumes that VPP is a + * global resource applying to all mapped flash chips on the system. + */ void (*set_vpp)(struct map_info *, int); unsigned long pfow_base; --- linux-raspi2-4.2.0.orig/include/linux/mtd/nand.h +++ linux-raspi2-4.2.0/include/linux/mtd/nand.h @@ -276,7 +276,7 @@ __le16 t_r; __le16 t_ccs; __le16 src_sync_timing_mode; - __le16 src_ssync_features; + u8 src_ssync_features; __le16 clk_pin_capacitance_typ; __le16 io_pin_capacitance_typ; __le16 input_pin_capacitance_typ; @@ -284,7 +284,7 @@ u8 driver_strength_support; __le16 t_int_r; __le16 t_ald; - u8 reserved4[7]; + u8 reserved4[8]; /* vendor */ __le16 vendor_revision; --- 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/nfs_fs.h +++ linux-raspi2-4.2.0/include/linux/nfs_fs.h @@ -544,9 +544,7 @@ static inline loff_t nfs_size_to_loff_t(__u64 size) { - if (size > (__u64) OFFSET_MAX - 1) - return OFFSET_MAX - 1; - return (loff_t) size; + return min_t(u64, size, OFFSET_MAX); } static inline ino_t --- 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 { @@ -356,6 +358,7 @@ unsigned int io_window_1k:1; /* Intel P2P bridge 1K I/O windows */ unsigned int irq_managed:1; unsigned int has_secondary_link:1; + unsigned int non_compliant_bars:1; /* broken BARs; ignore them */ pci_dev_flags_t dev_flags; atomic_t enable_cnt; /* pci_enable_device has been called */ @@ -1202,8 +1205,6 @@ u16 entry; /* driver uses to specify entry, OS writes */ }; -void pci_msi_setup_pci_dev(struct pci_dev *dev); - #ifdef CONFIG_PCI_MSI int pci_msi_vec_count(struct pci_dev *dev); void pci_msi_shutdown(struct pci_dev *dev); --- linux-raspi2-4.2.0.orig/include/linux/pipe_fs_i.h +++ linux-raspi2-4.2.0/include/linux/pipe_fs_i.h @@ -42,6 +42,7 @@ * @fasync_readers: reader side fasync * @fasync_writers: writer side fasync * @bufs: the circular array of pipe buffers + * @user: the user who created this pipe **/ struct pipe_inode_info { struct mutex mutex; @@ -57,6 +58,7 @@ struct fasync_struct *fasync_readers; struct fasync_struct *fasync_writers; struct pipe_buffer *bufs; + struct user_struct *user; }; /* @@ -123,6 +125,8 @@ void pipe_double_lock(struct pipe_inode_info *, struct pipe_inode_info *); extern unsigned int pipe_max_size, pipe_min_size; +extern unsigned long pipe_user_pages_hard; +extern unsigned long pipe_user_pages_soft; int pipe_proc_fn(struct ctl_table *, int, void __user *, size_t *, loff_t *); --- 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/poison.h +++ linux-raspi2-4.2.0/include/linux/poison.h @@ -19,8 +19,8 @@ * under normal circumstances, used to verify that nobody uses * non-initialized list entries. */ -#define LIST_POISON1 ((void *) 0x00100100 + POISON_POINTER_DELTA) -#define LIST_POISON2 ((void *) 0x00200200 + POISON_POINTER_DELTA) +#define LIST_POISON1 ((void *) 0x100 + POISON_POINTER_DELTA) +#define LIST_POISON2 ((void *) 0x200 + POISON_POINTER_DELTA) /********** include/linux/timer.h **********/ /* --- 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/printk.h +++ linux-raspi2-4.2.0/include/linux/printk.h @@ -106,13 +106,13 @@ /* * Dummy printk for disabled debugging statements to use whilst maintaining - * gcc's format and side-effect checking. + * gcc's format checking. */ -static inline __printf(1, 2) -int no_printk(const char *fmt, ...) -{ - return 0; -} +#define no_printk(fmt, ...) \ +do { \ + if (0) \ + printk(fmt, ##__VA_ARGS__); \ +} while (0) #ifdef CONFIG_EARLY_PRINTK extern asmlinkage __printf(1, 2) --- 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/radix-tree.h +++ linux-raspi2-4.2.0/include/linux/radix-tree.h @@ -370,12 +370,28 @@ struct radix_tree_iter *iter, unsigned flags); /** + * radix_tree_iter_retry - retry this chunk of the iteration + * @iter: iterator state + * + * If we iterate over a tree protected only by the RCU lock, a race + * against deletion or creation may result in seeing a slot for which + * radix_tree_deref_retry() returns true. If so, call this function + * and continue the iteration. + */ +static inline __must_check +void **radix_tree_iter_retry(struct radix_tree_iter *iter) +{ + iter->next_index = iter->index; + return NULL; +} + +/** * radix_tree_chunk_size - get current chunk size * * @iter: pointer to radix tree iterator * Returns: current chunk size */ -static __always_inline unsigned +static __always_inline long radix_tree_chunk_size(struct radix_tree_iter *iter) { return iter->next_index - iter->index; @@ -409,9 +425,9 @@ return slot + offset + 1; } } else { - unsigned size = radix_tree_chunk_size(iter) - 1; + long size = radix_tree_chunk_size(iter); - while (size--) { + while (--size > 0) { slot++; iter->index++; if (likely(*slot)) --- linux-raspi2-4.2.0.orig/include/linux/rmap.h +++ linux-raspi2-4.2.0/include/linux/rmap.h @@ -105,20 +105,6 @@ __put_anon_vma(anon_vma); } -static inline void vma_lock_anon_vma(struct vm_area_struct *vma) -{ - struct anon_vma *anon_vma = vma->anon_vma; - if (anon_vma) - down_write(&anon_vma->root->rwsem); -} - -static inline void vma_unlock_anon_vma(struct vm_area_struct *vma) -{ - struct anon_vma *anon_vma = vma->anon_vma; - if (anon_vma) - up_write(&anon_vma->root->rwsem); -} - static inline void anon_vma_lock_write(struct anon_vma *anon_vma) { down_write(&anon_vma->root->rwsem); --- 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 */ @@ -810,6 +822,8 @@ unsigned long mq_bytes; /* How many bytes can be allocated to mqueue? */ #endif unsigned long locked_shm; /* How many pages of mlocked shm ? */ + unsigned long unix_inflight; /* How many files in flight in unix sockets */ + atomic_long_t pipe_bufs; /* how many pages are allocated in pipe buffers */ #ifdef CONFIG_KEYS struct key *uid_keyring; /* UID specific keyring */ @@ -2897,12 +2911,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 @@ -15,10 +15,7 @@ unsigned int seals; /* shmem seals */ unsigned long flags; unsigned long alloced; /* data pages alloced to file */ - union { - unsigned long swapped; /* subtotal assigned to swap */ - char *symlink; /* unswappable short symlink */ - }; + unsigned long swapped; /* subtotal assigned to swap */ struct shared_policy policy; /* NUMA memory alloc policy */ struct list_head swaplist; /* chain of maybes on swap */ struct simple_xattrs xattrs; /* list of xattrs */ @@ -26,10 +23,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/signal.h +++ linux-raspi2-4.2.0/include/linux/signal.h @@ -239,7 +239,6 @@ extern void set_current_blocked(sigset_t *); extern void __set_current_blocked(const sigset_t *); extern int show_unhandled_signals; -extern int sigsuspend(sigset_t *); struct sigaction { #ifndef __ARCH_HAS_IRIX_SIGACTION --- 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. * @@ -211,6 +212,7 @@ #else #define MAX_SKB_FRAGS (65536/PAGE_SIZE + 1) #endif +extern int sysctl_max_skb_frags; typedef struct skb_frag_struct skb_frag_t; @@ -922,14 +924,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 +1016,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) @@ -1792,6 +1877,30 @@ skb->tail += len; } +/** + * skb_tailroom_reserve - adjust reserved_tailroom + * @skb: buffer to alter + * @mtu: maximum amount of headlen permitted + * @needed_tailroom: minimum amount of reserved_tailroom + * + * Set reserved_tailroom so that headlen can be as large as possible but + * not larger than mtu and tailroom cannot be smaller than + * needed_tailroom. + * The required headroom should already have been reserved before using + * this function. + */ +static inline void skb_tailroom_reserve(struct sk_buff *skb, unsigned int mtu, + unsigned int needed_tailroom) +{ + SKB_LINEAR_ASSERT(skb); + if (mtu < skb_tailroom(skb) - needed_tailroom) + /* use at most mtu */ + skb->reserved_tailroom = skb_tailroom(skb) - mtu; + else + /* use up to all available space */ + skb->reserved_tailroom = needed_tailroom; +} + #define ENCAP_TYPE_ETHER 0 #define ENCAP_TYPE_IPPROTO 1 @@ -1943,7 +2052,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 +2710,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); @@ -3334,7 +3446,8 @@ int encap_level; __u16 csum_start; }; -#define SKB_GSO_CB(skb) ((struct skb_gso_cb *)(skb)->cb) +#define SKB_SGO_CB_OFFSET 32 +#define SKB_GSO_CB(skb) ((struct skb_gso_cb *)((skb)->cb + SKB_SGO_CB_OFFSET)) static inline int skb_tnl_header_len(const struct sk_buff *inner_skb) { --- 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/thermal.h +++ linux-raspi2-4.2.0/include/linux/thermal.h @@ -43,6 +43,9 @@ /* Default weight of a bound cooling device */ #define THERMAL_WEIGHT_DEFAULT 0 +/* use value, which < 0K, to indicate an invalid/uninitialized temperature */ +#define THERMAL_TEMP_INVALID -274000 + /* Unit conversion macros */ #define KELVIN_TO_CELSIUS(t) (long)(((long)t-2732 >= 0) ? \ ((long)t-2732+5)/10 : ((long)t-2732-5)/10) @@ -169,6 +172,7 @@ * @forced_passive: If > 0, temperature at which to switch on all ACPI * processor cooling devices. Currently only used by the * step-wise governor. + * @need_update: if equals 1, thermal_zone_device_update needs to be invoked. * @ops: operations this &thermal_zone_device supports * @tzp: thermal zone parameters * @governor: pointer to the governor for this thermal zone @@ -196,6 +200,7 @@ int emul_temperature; int passive; unsigned int forced_passive; + atomic_t need_update; struct thermal_zone_device_ops *ops; struct thermal_zone_params *tzp; struct thermal_governor *governor; @@ -434,7 +439,8 @@ static inline int thermal_zone_bind_cooling_device( struct thermal_zone_device *tz, int trip, struct thermal_cooling_device *cdev, - unsigned long upper, unsigned long lower) + unsigned long upper, unsigned long lower, + unsigned int weight) { return -ENODEV; } static inline int thermal_zone_unbind_cooling_device( struct thermal_zone_device *tz, int trip, --- linux-raspi2-4.2.0.orig/include/linux/tracepoint.h +++ linux-raspi2-4.2.0/include/linux/tracepoint.h @@ -14,8 +14,10 @@ * See the file COPYING for more details. */ +#include #include #include +#include #include #include @@ -167,10 +169,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; \ @@ -327,15 +330,19 @@ * "void *__data, proto" as the callback prototype. */ #define DECLARE_TRACE_NOARGS(name) \ - __DECLARE_TRACE(name, void, , 1, void *__data, __data) + __DECLARE_TRACE(name, void, , \ + cpu_online(raw_smp_processor_id()), \ + void *__data, __data) #define DECLARE_TRACE(name, proto, args) \ - __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1, \ - PARAMS(void *__data, proto), \ - PARAMS(__data, args)) + __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ + cpu_online(raw_smp_processor_id()), \ + PARAMS(void *__data, proto), \ + PARAMS(__data, args)) #define DECLARE_TRACE_CONDITION(name, proto, args, cond) \ - __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), PARAMS(cond), \ + __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ + cpu_online(raw_smp_processor_id()) && (PARAMS(cond)), \ PARAMS(void *__data, proto), \ PARAMS(__data, args)) --- linux-raspi2-4.2.0.orig/include/linux/tty.h +++ linux-raspi2-4.2.0/include/linux/tty.h @@ -592,7 +592,7 @@ count = ld->ops->receive_buf2(ld->tty, p, f, count); else { count = min_t(int, count, ld->tty->receive_room); - if (count) + if (count && ld->ops->receive_buf) ld->ops->receive_buf(ld->tty, p, f, count); } return count; @@ -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/ucs2_string.h +++ linux-raspi2-4.2.0/include/linux/ucs2_string.h @@ -11,4 +11,8 @@ unsigned long ucs2_strsize(const ucs2_char_t *data, unsigned long maxlength); int ucs2_strncmp(const ucs2_char_t *a, const ucs2_char_t *b, size_t len); +unsigned long ucs2_utf8size(const ucs2_char_t *src); +unsigned long ucs2_as_utf8(u8 *dest, const ucs2_char_t *src, + unsigned long maxlength); + #endif /* _LINUX_UCS2_STRING_H_ */ --- linux-raspi2-4.2.0.orig/include/linux/usb/cdc_ncm.h +++ linux-raspi2-4.2.0/include/linux/usb/cdc_ncm.h @@ -138,6 +138,7 @@ }; u8 cdc_ncm_select_altsetting(struct usb_interface *intf); +int cdc_ncm_change_mtu(struct net_device *net, int new_mtu); int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_altsetting, int drvflags); void cdc_ncm_unbind(struct usbnet *dev, struct usb_interface *intf); struct sk_buff *cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign); --- linux-raspi2-4.2.0.orig/include/linux/usb/quirks.h +++ linux-raspi2-4.2.0/include/linux/usb/quirks.h @@ -47,4 +47,7 @@ /* device generates spurious wakeup, ignore remote wakeup capability */ #define USB_QUIRK_IGNORE_REMOTE_WAKEUP BIT(9) +/* device can't handle Link Power Management */ +#define USB_QUIRK_NO_LPM BIT(10) + #endif /* __LINUX_USB_QUIRKS_H */ --- linux-raspi2-4.2.0.orig/include/linux/vmstat.h +++ linux-raspi2-4.2.0/include/linux/vmstat.h @@ -211,6 +211,7 @@ extern void dec_zone_state(struct zone *, enum zone_stat_item); extern void __dec_zone_state(struct zone *, enum zone_stat_item); +void quiet_vmstat(void); void cpu_vm_stats_fold(int cpu); void refresh_zone_stat_thresholds(void); @@ -241,7 +242,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, @@ -272,6 +277,7 @@ static inline void refresh_cpu_vm_stats(int cpu) { } static inline void refresh_zone_stat_thresholds(void) { } static inline void cpu_vm_stats_fold(int cpu) { } +static inline void quiet_vmstat(void) { } static inline void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset) { } --- 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/linux/wait.h +++ linux-raspi2-4.2.0/include/linux/wait.h @@ -145,7 +145,7 @@ list_del(&old->task_list); } -typedef int wait_bit_action_f(struct wait_bit_key *); +typedef int wait_bit_action_f(struct wait_bit_key *, int mode); void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key); void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr, void *key); @@ -960,10 +960,10 @@ } while (0) -extern int bit_wait(struct wait_bit_key *); -extern int bit_wait_io(struct wait_bit_key *); -extern int bit_wait_timeout(struct wait_bit_key *); -extern int bit_wait_io_timeout(struct wait_bit_key *); +extern int bit_wait(struct wait_bit_key *, int); +extern int bit_wait_io(struct wait_bit_key *, int); +extern int bit_wait_timeout(struct wait_bit_key *, int); +extern int bit_wait_io_timeout(struct wait_bit_key *, int); /** * wait_on_bit - wait for a bit to be cleared --- 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 @@ -6,8 +6,8 @@ #include #include -void unix_inflight(struct file *fp); -void unix_notinflight(struct file *fp); +void unix_inflight(struct user_struct *user, struct file *fp); +void unix_notinflight(struct user_struct *user, struct file *fp); void unix_gc(void); void wait_for_unix_gc(void); struct sock *unix_get_socket(struct file *filp); @@ -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_ecn.h +++ linux-raspi2-4.2.0/include/net/inet_ecn.h @@ -111,11 +111,24 @@ struct ipv6hdr; -static inline int IP6_ECN_set_ce(struct ipv6hdr *iph) +/* Note: + * IP_ECN_set_ce() has to tweak IPV4 checksum when setting CE, + * meaning both changes have no effect on skb->csum if/when CHECKSUM_COMPLETE + * In IPv6 case, no checksum compensates the change in IPv6 header, + * so we have to update skb->csum. + */ +static inline int IP6_ECN_set_ce(struct sk_buff *skb, struct ipv6hdr *iph) { + __be32 from, to; + if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph))) return 0; - *(__be32*)iph |= htonl(INET_ECN_CE << 20); + + from = *(__be32 *)iph; + to = from | htonl(INET_ECN_CE << 20); + *(__be32 *)iph = to; + if (skb->ip_summed == CHECKSUM_COMPLETE) + skb->csum = csum_add(csum_sub(skb->csum, from), to); return 1; } @@ -142,7 +155,7 @@ case cpu_to_be16(ETH_P_IPV6): if (skb_network_header(skb) + sizeof(struct ipv6hdr) <= skb_tail_pointer(skb)) - return IP6_ECN_set_ce(ipv6_hdr(skb)); + return IP6_ECN_set_ce(skb, ipv6_hdr(skb)); break; } --- 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_route.h +++ linux-raspi2-4.2.0/include/net/ip6_route.h @@ -64,8 +64,16 @@ void ip6_route_input(struct sk_buff *skb); -struct dst_entry *ip6_route_output(struct net *net, const struct sock *sk, - struct flowi6 *fl6); +struct dst_entry *ip6_route_output_flags(struct net *net, const struct sock *sk, + struct flowi6 *fl6, int flags); + +static inline struct dst_entry *ip6_route_output(struct net *net, + const struct sock *sk, + struct flowi6 *fl6) +{ + return ip6_route_output_flags(net, sk, fl6, 0); +} + struct dst_entry *ip6_route_lookup(struct net *net, struct flowi6 *fl6, int flags); --- 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 @@ -59,6 +59,7 @@ struct rtable __rcu *fnhe_rth_input; struct rtable __rcu *fnhe_rth_output; unsigned long fnhe_stamp; + struct rcu_head rcu; }; struct fnhe_hash_bucket { @@ -306,7 +307,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/ip_vs.h +++ linux-raspi2-4.2.0/include/net/ip_vs.h @@ -1584,6 +1584,23 @@ } #endif /* CONFIG_IP_VS_NFCT */ +/* Really using conntrack? */ +static inline bool ip_vs_conn_uses_conntrack(struct ip_vs_conn *cp, + struct sk_buff *skb) +{ +#ifdef CONFIG_IP_VS_NFCT + enum ip_conntrack_info ctinfo; + struct nf_conn *ct; + + if (!(cp->flags & IP_VS_CONN_F_NFCT)) + return false; + ct = nf_ct_get(skb, &ctinfo); + if (ct && !nf_ct_is_untracked(ct)) + return true; +#endif + return false; +} + static inline int ip_vs_dest_conn_overhead(struct ip_vs_dest *dest) { --- 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/iw_handler.h +++ linux-raspi2-4.2.0/include/net/iw_handler.h @@ -439,6 +439,12 @@ /* Send a single event to user space */ void wireless_send_event(struct net_device *dev, unsigned int cmd, union iwreq_data *wrqu, const char *extra); +#ifdef CONFIG_WEXT_CORE +/* flush all previous wext events - if work is done from netdev notifiers */ +void wireless_nlevent_flush(void); +#else +static inline void wireless_nlevent_flush(void) {} +#endif /* We may need a function to send a stream of events to user space. * More on that later... */ --- 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/scm.h +++ linux-raspi2-4.2.0/include/net/scm.h @@ -21,6 +21,7 @@ struct scm_fp_list { short count; short max; + struct user_struct *user; struct file *fp[SCM_MAX_FD]; }; --- linux-raspi2-4.2.0.orig/include/net/sctp/structs.h +++ linux-raspi2-4.2.0/include/net/sctp/structs.h @@ -775,10 +775,10 @@ hb_sent:1, /* Is the Path MTU update pending on this tranport */ - pmtu_pending:1; + pmtu_pending:1, - /* Has this transport moved the ctsn since we last sacked */ - __u32 sack_generation; + /* Has this transport moved the ctsn since we last sacked */ + sack_generation:1; u32 dst_cookie; struct flowi fl; @@ -1482,19 +1482,20 @@ prsctp_capable:1, /* Can peer do PR-SCTP? */ auth_capable:1; /* Is peer doing SCTP-AUTH? */ - /* Ack State : This flag indicates if the next received + /* sack_needed : This flag indicates if the next received * : packet is to be responded to with a - * : SACK. This is initializedto 0. When a packet - * : is received it is incremented. If this value + * : SACK. This is initialized to 0. When a packet + * : is received sack_cnt is incremented. If this value * : reaches 2 or more, a SACK is sent and the * : value is reset to 0. Note: This is used only * : when no DATA chunks are received out of * : order. When DATA chunks are out of order, * : SACK's are not delayed (see Section 6). */ - __u8 sack_needed; /* Do we need to sack the peer? */ + __u8 sack_needed:1, /* Do we need to sack the peer? */ + sack_generation:1, + zero_window_announced:1; __u32 sack_cnt; - __u32 sack_generation; __u32 adaptation_ind; /* Adaptation Code point. */ --- linux-raspi2-4.2.0.orig/include/net/sock.h +++ linux-raspi2-4.2.0/include/net/sock.h @@ -371,7 +371,7 @@ struct socket_wq __rcu *sk_wq; #ifdef CONFIG_XFRM - struct xfrm_policy *sk_policy[2]; + struct xfrm_policy __rcu *sk_policy[2]; #endif unsigned long sk_flags; struct dst_entry *sk_rx_dst; @@ -388,6 +388,7 @@ sk_userlocks : 4, sk_protocol : 8, sk_type : 16; +#define SK_PROTOCOL_MAX U8_MAX kmemcheck_bitfield_end(flags); int sk_wmem_queued; gfp_t sk_allocation; @@ -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; @@ -1198,11 +1209,13 @@ unsigned long amt, int *parent_status) { - page_counter_charge(&prot->memory_allocated, amt); + struct page_counter *counter; + + if (page_counter_try_charge(&prot->memory_allocated, amt, &counter)) + return; - if (page_counter_read(&prot->memory_allocated) > - prot->memory_allocated.limit) - *parent_status = OVER_LIMIT; + page_counter_charge(&prot->memory_allocated, amt); + *parent_status = OVER_LIMIT; } static inline void memcg_memory_allocated_sub(struct cg_proto *prot, @@ -1685,6 +1698,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/net/xfrm.h +++ linux-raspi2-4.2.0/include/net/xfrm.h @@ -1140,12 +1140,14 @@ return xfrm_route_forward(skb, AF_INET6); } -int __xfrm_sk_clone_policy(struct sock *sk); +int __xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk); -static inline int xfrm_sk_clone_policy(struct sock *sk) +static inline int xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk) { - if (unlikely(sk->sk_policy[0] || sk->sk_policy[1])) - return __xfrm_sk_clone_policy(sk); + sk->sk_policy[0] = NULL; + sk->sk_policy[1] = NULL; + if (unlikely(osk->sk_policy[0] || osk->sk_policy[1])) + return __xfrm_sk_clone_policy(sk, osk); return 0; } @@ -1153,12 +1155,16 @@ static inline void xfrm_sk_free_policy(struct sock *sk) { - if (unlikely(sk->sk_policy[0] != NULL)) { - xfrm_policy_delete(sk->sk_policy[0], XFRM_POLICY_MAX); + struct xfrm_policy *pol; + + pol = rcu_dereference_protected(sk->sk_policy[0], 1); + if (unlikely(pol != NULL)) { + xfrm_policy_delete(pol, XFRM_POLICY_MAX); sk->sk_policy[0] = NULL; } - if (unlikely(sk->sk_policy[1] != NULL)) { - xfrm_policy_delete(sk->sk_policy[1], XFRM_POLICY_MAX+1); + pol = rcu_dereference_protected(sk->sk_policy[1], 1); + if (unlikely(pol != NULL)) { + xfrm_policy_delete(pol, XFRM_POLICY_MAX+1); sk->sk_policy[1] = NULL; } } @@ -1168,7 +1174,7 @@ #else static inline void xfrm_sk_free_policy(struct sock *sk) {} -static inline int xfrm_sk_clone_policy(struct sock *sk) { return 0; } +static inline int xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk) { return 0; } static inline int xfrm6_route_forward(struct sk_buff *skb) { return 1; } static inline int xfrm4_route_forward(struct sk_buff *skb) { return 1; } static inline int xfrm6_policy_check(struct sock *sk, int dir, struct sk_buff *skb) --- 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/hdaudio.h +++ linux-raspi2-4.2.0/include/sound/hdaudio.h @@ -343,7 +343,7 @@ void snd_hdac_bus_exit_link_reset(struct hdac_bus *bus); void snd_hdac_bus_update_rirb(struct hdac_bus *bus); -void snd_hdac_bus_handle_stream_irq(struct hdac_bus *bus, unsigned int status, +int snd_hdac_bus_handle_stream_irq(struct hdac_bus *bus, unsigned int status, void (*ack)(struct hdac_bus *, struct hdac_stream *)); --- 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/rawmidi.h +++ linux-raspi2-4.2.0/include/sound/rawmidi.h @@ -167,6 +167,10 @@ int snd_rawmidi_transmit_ack(struct snd_rawmidi_substream *substream, int count); int snd_rawmidi_transmit(struct snd_rawmidi_substream *substream, unsigned char *buffer, int count); +int __snd_rawmidi_transmit_peek(struct snd_rawmidi_substream *substream, + unsigned char *buffer, int count); +int __snd_rawmidi_transmit_ack(struct snd_rawmidi_substream *substream, + int count); /* main midi functions */ --- 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); @@ -1627,7 +1629,7 @@ /* Helper functions */ static inline void snd_soc_dapm_mutex_lock(struct snd_soc_dapm_context *dapm) { - mutex_lock(&dapm->card->dapm_mutex); + mutex_lock_nested(&dapm->card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME); } static inline void snd_soc_dapm_mutex_unlock(struct snd_soc_dapm_context *dapm) --- 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/target/target_core_backend.h +++ linux-raspi2-4.2.0/include/target/target_core_backend.h @@ -93,4 +93,8 @@ sense_reason_t passthrough_parse_cdb(struct se_cmd *cmd, sense_reason_t (*exec_cmd)(struct se_cmd *cmd)); +sector_t target_to_linux_sector(struct se_device *dev, sector_t lb); +bool target_configure_unmap_from_queue(struct se_dev_attrib *attrib, + struct request_queue *q, int block_size); + #endif /* TARGET_CORE_BACKEND_H */ --- linux-raspi2-4.2.0.orig/include/target/target_core_base.h +++ linux-raspi2-4.2.0/include/target/target_core_base.h @@ -137,6 +137,7 @@ SCF_COMPARE_AND_WRITE = 0x00080000, SCF_COMPARE_AND_WRITE_POST = 0x00100000, SCF_PASSTHROUGH_PROT_SG_TO_MEM_NOALLOC = 0x00200000, + SCF_ACK_KREF = 0x00400000, }; /* struct se_dev_entry->lun_flags and struct se_lun->lun_access */ @@ -480,7 +481,7 @@ struct kref cmd_kref; const struct target_core_fabric_ops *se_tfo; sense_reason_t (*execute_cmd)(struct se_cmd *); - sense_reason_t (*transport_complete_callback)(struct se_cmd *, bool); + sense_reason_t (*transport_complete_callback)(struct se_cmd *, bool, int *); void *protocol_data; unsigned char *t_task_cdb; @@ -496,6 +497,8 @@ #define CMD_T_DEV_ACTIVE (1 << 7) #define CMD_T_REQUEST_STOP (1 << 8) #define CMD_T_BUSY (1 << 9) +#define CMD_T_TAS (1 << 10) +#define CMD_T_FABRIC_STOP (1 << 11) spinlock_t t_state_lock; struct completion t_transport_stop_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/ipv6.h +++ linux-raspi2-4.2.0/include/uapi/linux/ipv6.h @@ -171,6 +171,8 @@ DEVCONF_USE_OPTIMISTIC, DEVCONF_ACCEPT_RA_MTU, DEVCONF_STABLE_SECRET, + DEVCONF_USE_OIF_ADDRS_ONLY, + DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT, DEVCONF_MAX }; --- 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/msgutil.c +++ linux-raspi2-4.2.0/ipc/msgutil.c @@ -123,7 +123,7 @@ size_t len = src->m_ts; size_t alen; - BUG_ON(dst == NULL); + WARN_ON(dst == NULL); if (src->m_ts > dst->m_ts) return ERR_PTR(-EINVAL); --- 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 @@ -156,11 +156,12 @@ struct kern_ipc_perm *ipcp = ipc_lock(&shm_ids(ns), id); /* - * We raced in the idr lookup or with shm_destroy(). Either way, the - * ID is busted. + * Callers of shm_lock() must validate the status of the returned ipc + * object pointer (as returned by ipc_lock()), and error out as + * appropriate. */ - BUG_ON(IS_ERR(ipcp)); - + if (IS_ERR(ipcp)) + return (void *)ipcp; return container_of(ipcp, struct shmid_kernel, shm_perm); } @@ -186,18 +187,33 @@ } -/* This is called by fork, once for every shm attach. */ -static void shm_open(struct vm_area_struct *vma) +static int __shm_open(struct vm_area_struct *vma) { struct file *file = vma->vm_file; struct shm_file_data *sfd = shm_file_data(file); struct shmid_kernel *shp; shp = shm_lock(sfd->ns, sfd->id); + + if (IS_ERR(shp)) + return PTR_ERR(shp); + shp->shm_atim = get_seconds(); shp->shm_lprid = task_tgid_vnr(current); shp->shm_nattch++; shm_unlock(shp); + return 0; +} + +/* This is called by fork, once for every shm attach. */ +static void shm_open(struct vm_area_struct *vma) +{ + int err = __shm_open(vma); + /* + * We raced in the idr lookup or with shm_destroy(). + * Either way, the ID is busted. + */ + WARN_ON_ONCE(err); } /* @@ -260,6 +276,14 @@ down_write(&shm_ids(ns).rwsem); /* remove from the list of attaches of the shm segment */ shp = shm_lock(ns, sfd->id); + + /* + * We raced in the idr lookup or with shm_destroy(). + * Either way, the ID is busted. + */ + if (WARN_ON_ONCE(IS_ERR(shp))) + goto done; /* no-op */ + shp->shm_lprid = task_tgid_vnr(current); shp->shm_dtim = get_seconds(); shp->shm_nattch--; @@ -267,6 +291,7 @@ shm_destroy(ns, shp); else shm_unlock(shp); +done: up_write(&shm_ids(ns).rwsem); } @@ -388,17 +413,25 @@ struct shm_file_data *sfd = shm_file_data(file); int ret; + /* + * In case of remap_file_pages() emulation, the file can represent + * removed IPC ID: propogate shm_lock() error to caller. + */ + ret =__shm_open(vma); + if (ret) + return ret; + ret = sfd->file->f_op->mmap(sfd->file, vma); - if (ret != 0) + if (ret) { + shm_close(vma); return ret; + } sfd->vm_ops = vma->vm_ops; #ifdef CONFIG_MMU - BUG_ON(!sfd->vm_ops->fault); + WARN_ON(!sfd->vm_ops->fault); #endif vma->vm_ops = &shm_vm_ops; - shm_open(vma); - - return ret; + return 0; } static int shm_release(struct inode *ino, struct file *file) @@ -551,12 +584,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 +592,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/helpers.c +++ linux-raspi2-4.2.0/kernel/bpf/helpers.c @@ -171,7 +171,7 @@ if (!task) return -EINVAL; - memcpy(buf, task->comm, min_t(size_t, size, sizeof(task->comm))); + strlcpy(buf, task->comm, min_t(size_t, size, sizeof(task->comm))); 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/bpf/verifier.c +++ linux-raspi2-4.2.0/kernel/bpf/verifier.c @@ -1036,6 +1036,16 @@ return -EINVAL; } + if ((opcode == BPF_LSH || opcode == BPF_RSH || + opcode == BPF_ARSH) && BPF_SRC(insn->code) == BPF_K) { + int size = BPF_CLASS(insn->code) == BPF_ALU64 ? 64 : 32; + + if (insn->imm < 0 || insn->imm >= size) { + verbose("invalid shift %d\n", insn->imm); + return -EINVAL; + } + } + /* pattern match 'bpf_add Rx, imm' instruction */ if (opcode == BPF_ADD && BPF_CLASS(insn->code) == BPF_ALU64 && regs[insn->dst_reg].type == FRAME_PTR && @@ -1965,7 +1975,7 @@ /* adjust offset of jmps if necessary */ if (i < pos && i + insn->off + 1 > pos) insn->off += delta; - else if (i > pos && i + insn->off + 1 < pos) + else if (i > pos + delta && i + insn->off + 1 <= pos + delta) insn->off -= delta; } } --- 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; } @@ -4504,6 +4564,7 @@ INIT_LIST_HEAD(&css->sibling); INIT_LIST_HEAD(&css->children); css->serial_nr = css_serial_nr_next++; + atomic_set(&css->online_cnt, 0); if (cgroup_parent(cgrp)) { css->parent = cgroup_css(cgroup_parent(cgrp), ss); @@ -4526,6 +4587,10 @@ if (!ret) { css->flags |= CSS_ONLINE; rcu_assign_pointer(css->cgroup->subsys[ss->id], css); + + atomic_inc(&css->online_cnt); + if (css->parent) + atomic_inc(&css->parent->online_cnt); } return ret; } @@ -4763,10 +4828,15 @@ container_of(work, struct cgroup_subsys_state, destroy_work); mutex_lock(&cgroup_mutex); - offline_css(css); - mutex_unlock(&cgroup_mutex); - css_put(css); + do { + offline_css(css); + css_put(css); + /* @css can't go away while we're holding cgroup_mutex */ + css = css->parent; + } while (css && atomic_dec_and_test(&css->online_cnt)); + + mutex_unlock(&cgroup_mutex); } /* css kill confirmation processing requires process context, bounce */ @@ -4775,8 +4845,10 @@ struct cgroup_subsys_state *css = container_of(ref, struct cgroup_subsys_state, refcnt); - INIT_WORK(&css->destroy_work, css_killed_work_fn); - queue_work(cgroup_destroy_wq, &css->destroy_work); + if (atomic_dec_and_test(&css->online_cnt)) { + INIT_WORK(&css->destroy_work, css_killed_work_fn); + queue_work(cgroup_destroy_wq, &css->destroy_work); + } } /** @@ -5012,7 +5084,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 +5483,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/cred.c +++ linux-raspi2-4.2.0/kernel/cred.c @@ -569,38 +569,30 @@ } /** - * prepare_kernel_cred - Prepare a set of credentials for a kernel service - * @daemon: A userspace daemon to be used as a reference - * - * Prepare a set of credentials for a kernel service. This can then be used to - * override a task's own credentials so that work can be done on behalf of that - * task that requires a different subjective context. - * - * @daemon is used to provide a base for the security record, but can be NULL. - * If @daemon is supplied, then the security data will be derived from that; - * otherwise they'll be set to 0 and no groups, full capabilities and no keys. + * clone_cred - Create a new copy of a set of credentials + * @old: Credentials to be copied * - * The caller may change these controls afterwards if desired. + * Prepare a new set of credentials that is an exact copy of @old. This can + * optionally be modified and used to override a task's own credentials so + * that work can be done on behalf of that task that requires a different + * subjective context. * - * Returns the new credentials or NULL if out of memory. + * Returns the new credentials or NULL if @old is NULL or if out of memory. * * Does not take, and does not return holding current->cred_replace_mutex. */ -struct cred *prepare_kernel_cred(struct task_struct *daemon) +struct cred *clone_cred(const struct cred *old) { - const struct cred *old; struct cred *new; + if (!old) + return NULL; + new = kmem_cache_alloc(cred_jar, GFP_KERNEL); if (!new) return NULL; - kdebug("prepare_kernel_cred() alloc %p", new); - - if (daemon) - old = get_task_cred(daemon); - else - old = get_cred(&init_cred); + kdebug("clone_cred() alloc %p", new); validate_creds(old); @@ -625,15 +617,47 @@ if (security_prepare_creds(new, old, GFP_KERNEL) < 0) goto error; - put_cred(old); validate_creds(new); return new; error: put_cred(new); - put_cred(old); return NULL; } +EXPORT_SYMBOL(clone_cred); + +/** + * prepare_kernel_cred - Prepare a set of credentials for a kernel service + * @daemon: A userspace daemon to be used as a reference + * + * Prepare a set of credentials for a kernel service. This can then be used to + * override a task's own credentials so that work can be done on behalf of that + * task that requires a different subjective context. + * + * @daemon is used to provide a base for the security record, but can be NULL. + * If @daemon is supplied, then the security data will be derived from that; + * otherwise they'll be set to 0 and no groups, full capabilities and no keys. + * + * The caller may change these controls afterwards if desired. + * + * Returns the new credentials or NULL if out of memory. + * + * Does not take, and does not return holding current->cred_replace_mutex. + */ +struct cred *prepare_kernel_cred(struct task_struct *daemon) +{ + const struct cred *old; + struct cred *new; + + if (daemon) + old = get_task_cred(daemon); + else + old = get_cred(&init_cred); + + new = clone_cred(old); + put_cred(old); + return new; +} EXPORT_SYMBOL(prepare_kernel_cred); /** --- linux-raspi2-4.2.0.orig/kernel/events/core.c +++ linux-raspi2-4.2.0/kernel/events/core.c @@ -4034,7 +4034,14 @@ goto retry; } - __perf_event_period(&pe); + if (event->attr.freq) { + event->attr.sample_freq = value; + } else { + event->attr.sample_period = value; + event->hw.sample_period = value; + } + + local64_set(&event->hw.period_left, 0); raw_spin_unlock_irq(&ctx->lock); return 0; @@ -6644,6 +6651,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; @@ -7661,6 +7672,9 @@ } } + /* symmetric to unaccount_event() in _free_event() */ + account_event(event); + return event; err_per_task: @@ -8024,8 +8038,6 @@ } } - account_event(event); - /* * Special case software events and allow them to be part of * any hardware group. @@ -8285,8 +8297,6 @@ /* Mark owner so we could distinguish it from user events. */ event->owner = EVENT_OWNER_KERNEL; - account_event(event); - ctx = find_get_context(event->pmu, task, event); if (IS_ERR(ctx)) { err = PTR_ERR(ctx); --- linux-raspi2-4.2.0.orig/kernel/fork.c +++ linux-raspi2-4.2.0/kernel/fork.c @@ -379,6 +379,7 @@ #endif tsk->splice_pipe = NULL; tsk->task_frag.page = NULL; + tsk->wake_q.next = NULL; account_kernel_stack(ti, 1); @@ -461,7 +462,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 +1147,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 +1876,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 +1959,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/futex.c +++ linux-raspi2-4.2.0/kernel/futex.c @@ -2656,6 +2656,11 @@ if (q.pi_state && (q.pi_state->owner != current)) { spin_lock(q.lock_ptr); ret = fixup_pi_state_owner(uaddr2, &q, current); + /* + * Drop the reference to the pi state which + * the requeue_pi() code acquired for us. + */ + free_pi_state(q.pi_state); spin_unlock(q.lock_ptr); } } else { --- 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) @@ -1363,6 +1369,7 @@ if (!desc) return NULL; + chip_bus_lock(desc); raw_spin_lock_irqsave(&desc->lock, flags); /* @@ -1376,7 +1383,7 @@ if (!action) { WARN(1, "Trying to free already-free IRQ %d\n", irq); raw_spin_unlock_irqrestore(&desc->lock, flags); - + chip_bus_sync_unlock(desc); return NULL; } @@ -1403,6 +1410,7 @@ #endif raw_spin_unlock_irqrestore(&desc->lock, flags); + chip_bus_sync_unlock(desc); unregister_handler_proc(irq, action); @@ -1476,9 +1484,7 @@ desc->affinity_notify = NULL; #endif - chip_bus_lock(desc); kfree(__free_irq(irq, dev_id)); - chip_bus_sync_unlock(desc); } EXPORT_SYMBOL(free_irq); --- 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); @@ -3511,7 +3515,7 @@ /* Module is ready to execute: parsing args may do that. */ after_dashes = parse_args(mod->name, mod->args, mod->kp, mod->num_kp, - -32768, 32767, NULL, + -32768, 32767, mod, unknown_module_param_cb); if (IS_ERR(after_dashes)) { err = PTR_ERR(after_dashes); @@ -3567,6 +3571,12 @@ synchronize_sched(); mutex_unlock(&module_mutex); free_module: + /* + * Ftrace needs to clean up what it initialized. + * This does nothing if ftrace_module_init() wasn't called, + * but it must be called outside of module_mutex. + */ + ftrace_release_mod(mod); /* Free lock-classes; relies on the preceding sync_rcu() */ lockdep_free_key_range(mod->module_core, mod->core_size); @@ -3636,6 +3646,11 @@ && (str[2] == '\0' || str[2] == '.'); } +static const char *symname(struct module *mod, unsigned int symnum) +{ + return mod->strtab + mod->symtab[symnum].st_name; +} + static const char *get_ksymbol(struct module *mod, unsigned long addr, unsigned long *size, @@ -3658,15 +3673,15 @@ /* We ignore unnamed symbols: they're uninformative * and inserted at a whim. */ + if (*symname(mod, i) == '\0' + || is_arm_mapping_symbol(symname(mod, i))) + continue; + if (mod->symtab[i].st_value <= addr - && mod->symtab[i].st_value > mod->symtab[best].st_value - && *(mod->strtab + mod->symtab[i].st_name) != '\0' - && !is_arm_mapping_symbol(mod->strtab + mod->symtab[i].st_name)) + && mod->symtab[i].st_value > mod->symtab[best].st_value) best = i; if (mod->symtab[i].st_value > addr - && mod->symtab[i].st_value < nextval - && *(mod->strtab + mod->symtab[i].st_name) != '\0' - && !is_arm_mapping_symbol(mod->strtab + mod->symtab[i].st_name)) + && mod->symtab[i].st_value < nextval) nextval = mod->symtab[i].st_value; } @@ -3677,7 +3692,7 @@ *size = nextval - mod->symtab[best].st_value; if (offset) *offset = addr - mod->symtab[best].st_value; - return mod->strtab + mod->symtab[best].st_name; + return symname(mod, best); } /* For kallsyms to ask for address resolution. NULL means not found. Careful @@ -3772,8 +3787,7 @@ if (symnum < mod->num_symtab) { *value = mod->symtab[symnum].st_value; *type = mod->symtab[symnum].st_info; - strlcpy(name, mod->strtab + mod->symtab[symnum].st_name, - KSYM_NAME_LEN); + strlcpy(name, symname(mod, symnum), KSYM_NAME_LEN); strlcpy(module_name, mod->name, MODULE_NAME_LEN); *exported = is_exported(name, *value, mod); preempt_enable(); @@ -3790,7 +3804,7 @@ unsigned int i; for (i = 0; i < mod->num_symtab; i++) - if (strcmp(name, mod->strtab+mod->symtab[i].st_name) == 0 && + if (strcmp(name, symname(mod, i)) == 0 && mod->symtab[i].st_info != 'U') return mod->symtab[i].st_value; return 0; @@ -3834,7 +3848,7 @@ if (mod->state == MODULE_STATE_UNFORMED) continue; for (i = 0; i < mod->num_symtab; i++) { - ret = fn(data, mod->strtab + mod->symtab[i].st_name, + ret = fn(data, symname(mod, i), mod, mod->symtab[i].st_value); if (ret != 0) return ret; --- linux-raspi2-4.2.0.orig/kernel/panic.c +++ linux-raspi2-4.2.0/kernel/panic.c @@ -23,6 +23,7 @@ #include #include #include +#include #define PANIC_TIMER_STEP 100 #define PANIC_BLINK_SPD 18 @@ -147,6 +148,17 @@ bust_spinlocks(0); + /* + * We may have ended up stopping the CPU holding the lock (in + * smp_send_stop()) while still having some valuable data in the console + * buffer. Try to acquire the lock then release it regardless of the + * result. The release will also print the buffers out. Locks debug + * should be disabled to avoid reporting bad unlock balance when + * panic() is not being callled from OOPS. + */ + debug_locks_off(); + console_flush_on_panic(); + if (!panic_blink) panic_blink = no_blink; --- 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; @@ -2229,13 +2232,24 @@ static u64 seen_seq; unsigned long flags; bool wake_klogd = false; - bool retry; + bool do_cond_resched, retry; if (console_suspended) { up_console_sem(); return; } + /* + * Console drivers are called under logbuf_lock, so + * @console_may_schedule should be cleared before; however, we may + * end up dumping a lot of lines, for example, if called from + * console registration path, and should invoke cond_resched() + * between lines if allowable. Not doing so can cause a very long + * scheduling stall on a slow console leading to RCU stall and + * softlockup warnings which exacerbate the issue with more + * messages practically incapacitating the system. + */ + do_cond_resched = console_may_schedule; console_may_schedule = 0; /* flush buffered message fragment immediately to console */ @@ -2307,6 +2321,9 @@ call_console_drivers(level, ext_text, ext_len, text, len); start_critical_timings(); local_irq_restore(flags); + + if (do_cond_resched) + cond_resched(); } console_locked = 0; @@ -2374,6 +2391,25 @@ console_unlock(); } +/** + * console_flush_on_panic - flush console content on panic + * + * Immediately output all pending messages no matter what. + */ +void console_flush_on_panic(void) +{ + /* + * If someone else is holding the console lock, trylock will fail + * and may_schedule may be set. Ignore and proceed to unlock so + * that messages are flushed out. As this can be called from any + * context and we don't want to get preempted while flushing, + * ensure may_schedule is cleared. + */ + console_trylock(); + console_may_schedule = 0; + console_unlock(); +} + /* * Return the console tty driver structure and its associated index */ --- 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/resource.c +++ linux-raspi2-4.2.0/kernel/resource.c @@ -1072,9 +1072,10 @@ if (!conflict) break; if (conflict != parent) { - parent = conflict; - if (!(conflict->flags & IORESOURCE_BUSY)) + if (!(conflict->flags & IORESOURCE_BUSY)) { + parent = conflict; continue; + } } if (conflict->flags & flags & IORESOURCE_MUXED) { add_wait_queue(&muxed_resource_wait, &wait); --- linux-raspi2-4.2.0.orig/kernel/sched/core.c +++ linux-raspi2-4.2.0/kernel/sched/core.c @@ -1972,7 +1972,6 @@ */ int wake_up_process(struct task_struct *p) { - WARN_ON(task_is_stopped_or_traced(p)); return try_to_wake_up(p, TASK_NORMAL, 0); } EXPORT_SYMBOL(wake_up_process); @@ -2461,11 +2460,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 +2613,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 +4498,7 @@ int __sched _cond_resched(void) { - if (should_resched()) { + if (should_resched(0)) { preempt_schedule_common(); return 1; } @@ -4510,7 +4516,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 +4538,7 @@ { BUG_ON(!in_softirq()); - if (should_resched()) { + if (should_resched(SOFTIRQ_DISABLE_OFFSET)) { local_bh_enable(); preempt_schedule_common(); local_bh_disable(); @@ -5371,6 +5377,7 @@ case CPU_UP_PREPARE: rq->calc_load_update = calc_load_update; + account_reset_rq(rq); break; case CPU_ONLINE: @@ -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; @@ -5703,13 +5718,13 @@ { memset(rd, 0, sizeof(*rd)); - if (!alloc_cpumask_var(&rd->span, GFP_KERNEL)) + if (!zalloc_cpumask_var(&rd->span, GFP_KERNEL)) goto out; - if (!alloc_cpumask_var(&rd->online, GFP_KERNEL)) + if (!zalloc_cpumask_var(&rd->online, GFP_KERNEL)) goto free_span; - if (!alloc_cpumask_var(&rd->dlo_mask, GFP_KERNEL)) + if (!zalloc_cpumask_var(&rd->dlo_mask, GFP_KERNEL)) goto free_online; - if (!alloc_cpumask_var(&rd->rto_mask, GFP_KERNEL)) + if (!zalloc_cpumask_var(&rd->rto_mask, GFP_KERNEL)) goto free_dlo_mask; init_dl_bw(&rd->dl_bw); --- linux-raspi2-4.2.0.orig/kernel/sched/cputime.c +++ linux-raspi2-4.2.0/kernel/sched/cputime.c @@ -259,21 +259,21 @@ #ifdef CONFIG_PARAVIRT if (static_key_false(¶virt_steal_enabled)) { u64 steal; - cputime_t steal_ct; + unsigned long steal_jiffies; steal = paravirt_steal_clock(smp_processor_id()); steal -= this_rq()->prev_steal_time; /* - * cputime_t may be less precise than nsecs (eg: if it's - * based on jiffies). Lets cast the result to cputime + * steal is in nsecs but our caller is expecting steal + * time in jiffies. Lets cast the result to jiffies * granularity and account the rest on the next rounds. */ - steal_ct = nsecs_to_cputime(steal); - this_rq()->prev_steal_time += cputime_to_nsecs(steal_ct); + steal_jiffies = nsecs_to_jiffies(steal); + this_rq()->prev_steal_time += jiffies_to_nsecs(steal_jiffies); - account_steal_time(steal_ct); - return steal_ct; + account_steal_time(jiffies_to_cputime(steal_jiffies)); + return steal_jiffies; } #endif return false; --- 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/fair.c +++ linux-raspi2-4.2.0/kernel/sched/fair.c @@ -1187,8 +1187,6 @@ { if (env->best_task) put_task_struct(env->best_task); - if (p) - get_task_struct(p); env->best_task = p; env->best_imp = imp; @@ -1256,20 +1254,30 @@ long imp = env->p->numa_group ? groupimp : taskimp; long moveimp = imp; int dist = env->dist; + bool assigned = false; rcu_read_lock(); raw_spin_lock_irq(&dst_rq->lock); cur = dst_rq->curr; /* - * No need to move the exiting task, and this ensures that ->curr - * wasn't reaped and thus get_task_struct() in task_numa_assign() - * is safe under RCU read lock. - * Note that rcu_read_lock() itself can't protect from the final - * put_task_struct() after the last schedule(). + * No need to move the exiting task or idle task. */ if ((cur->flags & PF_EXITING) || is_idle_task(cur)) cur = NULL; + else { + /* + * The task_struct must be protected here to protect the + * p->numa_faults access in the task_weight since the + * numa_faults could already be freed in the following path: + * finish_task_switch() + * --> put_task_struct() + * --> __put_task_struct() + * --> task_numa_free() + */ + get_task_struct(cur); + } + raw_spin_unlock_irq(&dst_rq->lock); /* @@ -1353,6 +1361,7 @@ */ if (!load_too_imbalanced(src_load, dst_load, env)) { imp = moveimp - 1; + put_task_struct(cur); cur = NULL; goto assign; } @@ -1378,9 +1387,16 @@ env->dst_cpu = select_idle_sibling(env->p, env->dst_cpu); assign: + assigned = true; task_numa_assign(env, cur, imp); unlock: rcu_read_unlock(); + /* + * The dst_rq->curr isn't assigned. The protection for task_struct is + * finished. + */ + if (cur && !assigned) + put_task_struct(cur); } static void task_numa_find_cpu(struct task_numa_env *env, --- linux-raspi2-4.2.0.orig/kernel/sched/idle.c +++ linux-raspi2-4.2.0/kernel/sched/idle.c @@ -221,6 +221,7 @@ */ __current_set_polling(); + quiet_vmstat(); tick_nohz_idle_enter(); while (!need_resched()) { --- linux-raspi2-4.2.0.orig/kernel/sched/rt.c +++ linux-raspi2-4.2.0/kernel/sched/rt.c @@ -64,7 +64,7 @@ raw_spin_unlock(&rt_b->rt_runtime_lock); } -#ifdef CONFIG_SMP +#if defined(CONFIG_SMP) && defined(HAVE_RT_PUSH_IPI) static void push_irq_work_func(struct irq_work *work); #endif --- 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 */ @@ -1770,3 +1771,16 @@ } #endif /* CONFIG_64BIT */ #endif /* CONFIG_IRQ_TIME_ACCOUNTING */ + +static inline void account_reset_rq(struct rq *rq) +{ +#ifdef CONFIG_IRQ_TIME_ACCOUNTING + rq->prev_irq_time = 0; +#endif +#ifdef CONFIG_PARAVIRT + rq->prev_steal_time = 0; +#endif +#ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING + rq->prev_steal_time_rq = 0; +#endif +} --- linux-raspi2-4.2.0.orig/kernel/sched/wait.c +++ linux-raspi2-4.2.0/kernel/sched/wait.c @@ -392,7 +392,7 @@ do { prepare_to_wait(wq, &q->wait, mode); if (test_bit(q->key.bit_nr, q->key.flags)) - ret = (*action)(&q->key); + ret = (*action)(&q->key, mode); } while (test_bit(q->key.bit_nr, q->key.flags) && !ret); finish_wait(wq, &q->wait); return ret; @@ -431,7 +431,7 @@ prepare_to_wait_exclusive(wq, &q->wait, mode); if (!test_bit(q->key.bit_nr, q->key.flags)) continue; - ret = action(&q->key); + ret = action(&q->key, mode); if (!ret) continue; abort_exclusive_wait(wq, &q->wait, mode, &q->key); @@ -581,44 +581,44 @@ } EXPORT_SYMBOL(wake_up_atomic_t); -__sched int bit_wait(struct wait_bit_key *word) +__sched int bit_wait(struct wait_bit_key *word, int mode) { - if (signal_pending_state(current->state, current)) - return 1; schedule(); + if (signal_pending_state(mode, current)) + return -EINTR; return 0; } EXPORT_SYMBOL(bit_wait); -__sched int bit_wait_io(struct wait_bit_key *word) +__sched int bit_wait_io(struct wait_bit_key *word, int mode) { - if (signal_pending_state(current->state, current)) - return 1; io_schedule(); + if (signal_pending_state(mode, current)) + return -EINTR; return 0; } EXPORT_SYMBOL(bit_wait_io); -__sched int bit_wait_timeout(struct wait_bit_key *word) +__sched int bit_wait_timeout(struct wait_bit_key *word, int mode) { unsigned long now = READ_ONCE(jiffies); - if (signal_pending_state(current->state, current)) - return 1; if (time_after_eq(now, word->timeout)) return -EAGAIN; schedule_timeout(word->timeout - now); + if (signal_pending_state(mode, current)) + return -EINTR; return 0; } EXPORT_SYMBOL_GPL(bit_wait_timeout); -__sched int bit_wait_io_timeout(struct wait_bit_key *word) +__sched int bit_wait_io_timeout(struct wait_bit_key *word, int mode) { unsigned long now = READ_ONCE(jiffies); - if (signal_pending_state(current->state, current)) - return 1; if (time_after_eq(now, word->timeout)) return -EAGAIN; io_schedule_timeout(word->timeout - now); + if (signal_pending_state(mode, current)) + return -EINTR; return 0; } EXPORT_SYMBOL_GPL(bit_wait_io_timeout); --- linux-raspi2-4.2.0.orig/kernel/seccomp.c +++ linux-raspi2-4.2.0/kernel/seccomp.c @@ -317,24 +317,24 @@ put_seccomp_filter(thread); smp_store_release(&thread->seccomp.filter, caller->seccomp.filter); + + /* + * Don't let an unprivileged task work around + * the no_new_privs restriction by creating + * a thread that sets it up, enters seccomp, + * then dies. + */ + if (task_no_new_privs(caller)) + task_set_no_new_privs(thread); + /* * Opt the other thread into seccomp if needed. * As threads are considered to be trust-realm * equivalent (see ptrace_may_access), it is safe to * allow one thread to transition the other. */ - if (thread->seccomp.mode == SECCOMP_MODE_DISABLED) { - /* - * Don't let an unprivileged task work around - * the no_new_privs restriction by creating - * a thread that sets it up, enters seccomp, - * then dies. - */ - if (task_no_new_privs(caller)) - task_set_no_new_privs(thread); - + if (thread->seccomp.mode == SECCOMP_MODE_DISABLED) seccomp_assign_mode(thread, SECCOMP_MODE_FILTER); - } } } --- linux-raspi2-4.2.0.orig/kernel/signal.c +++ linux-raspi2-4.2.0/kernel/signal.c @@ -3552,7 +3552,7 @@ #endif -int sigsuspend(sigset_t *set) +static int sigsuspend(sigset_t *set) { current->saved_sigmask = current->blocked; set_current_blocked(set); --- 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, \ @@ -1854,11 +1869,13 @@ user_auxv[AT_VECTOR_SIZE - 1] = AT_NULL; } - if (prctl_map.exe_fd != (u32)-1) + if (prctl_map.exe_fd != (u32)-1) { error = prctl_set_mm_exe_file(mm, prctl_map.exe_fd); - down_read(&mm->mmap_sem); - if (error) - goto out; + if (error) + return error; + } + + down_write(&mm->mmap_sem); /* * We don't validate if these members are pointing to @@ -1895,10 +1912,8 @@ if (prctl_map.auxv_size) memcpy(mm->saved_auxv, user_auxv, sizeof(user_auxv)); - error = 0; -out: - up_read(&mm->mmap_sem); - return error; + up_write(&mm->mmap_sem); + return 0; } #endif /* CONFIG_CHECKPOINT_RESTORE */ @@ -1964,7 +1979,7 @@ error = -EINVAL; - down_read(&mm->mmap_sem); + down_write(&mm->mmap_sem); vma = find_vma(mm, addr); prctl_map.start_code = mm->start_code; @@ -2057,7 +2072,7 @@ error = 0; out: - up_read(&mm->mmap_sem); + up_write(&mm->mmap_sem); return error; } --- 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/sysctl.c +++ linux-raspi2-4.2.0/kernel/sysctl.c @@ -1702,6 +1702,20 @@ .proc_handler = &pipe_proc_fn, .extra1 = &pipe_min_size, }, + { + .procname = "pipe-user-pages-hard", + .data = &pipe_user_pages_hard, + .maxlen = sizeof(pipe_user_pages_hard), + .mode = 0644, + .proc_handler = proc_doulongvec_minmax, + }, + { + .procname = "pipe-user-pages-soft", + .data = &pipe_user_pages_soft, + .maxlen = sizeof(pipe_user_pages_soft), + .mode = 0644, + .proc_handler = proc_doulongvec_minmax, + }, { } }; --- linux-raspi2-4.2.0.orig/kernel/sysctl_binary.c +++ linux-raspi2-4.2.0/kernel/sysctl_binary.c @@ -1321,7 +1321,7 @@ } mnt = task_active_pid_ns(current)->proc_mnt; - file = file_open_root(mnt->mnt_root, mnt, pathname, flags); + file = file_open_root(mnt->mnt_root, mnt, pathname, flags, 0); result = PTR_ERR(file); if (IS_ERR(file)) goto out_putname; --- 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/hrtimer.c +++ linux-raspi2-4.2.0/kernel/time/hrtimer.c @@ -889,10 +889,10 @@ */ static void __remove_hrtimer(struct hrtimer *timer, struct hrtimer_clock_base *base, - unsigned long newstate, int reprogram) + u8 newstate, int reprogram) { struct hrtimer_cpu_base *cpu_base = base->cpu_base; - unsigned int state = timer->state; + u8 state = timer->state; timer->state = newstate; if (!(state & HRTIMER_STATE_ENQUEUED)) @@ -922,7 +922,7 @@ remove_hrtimer(struct hrtimer *timer, struct hrtimer_clock_base *base, bool restart) { if (hrtimer_is_queued(timer)) { - unsigned long state = timer->state; + u8 state = timer->state; int reprogram; /* @@ -946,6 +946,22 @@ return 0; } +static inline ktime_t hrtimer_update_lowres(struct hrtimer *timer, ktime_t tim, + const enum hrtimer_mode mode) +{ +#ifdef CONFIG_TIME_LOW_RES + /* + * CONFIG_TIME_LOW_RES indicates that the system has no way to return + * granular time values. For relative timers we add hrtimer_resolution + * (i.e. one jiffie) to prevent short timeouts. + */ + timer->is_rel = mode & HRTIMER_MODE_REL; + if (timer->is_rel) + tim = ktime_add_safe(tim, ktime_set(0, hrtimer_resolution)); +#endif + return tim; +} + /** * hrtimer_start_range_ns - (re)start an hrtimer on the current CPU * @timer: the timer to be added @@ -966,19 +982,10 @@ /* Remove an active timer from the queue: */ remove_hrtimer(timer, base, true); - if (mode & HRTIMER_MODE_REL) { + if (mode & HRTIMER_MODE_REL) tim = ktime_add_safe(tim, base->get_time()); - /* - * CONFIG_TIME_LOW_RES is a temporary way for architectures - * to signal that they simply return xtime in - * do_gettimeoffset(). In this case we want to round up by - * resolution when starting a relative timer, to avoid short - * timeouts. This will go away with the GTOD framework. - */ -#ifdef CONFIG_TIME_LOW_RES - tim = ktime_add_safe(tim, ktime_set(0, hrtimer_resolution)); -#endif - } + + tim = hrtimer_update_lowres(timer, tim, mode); hrtimer_set_expires_range_ns(timer, tim, delta_ns); @@ -1066,19 +1073,23 @@ /** * hrtimer_get_remaining - get remaining time for the timer * @timer: the timer to read + * @adjust: adjust relative timers when CONFIG_TIME_LOW_RES=y */ -ktime_t hrtimer_get_remaining(const struct hrtimer *timer) +ktime_t __hrtimer_get_remaining(const struct hrtimer *timer, bool adjust) { unsigned long flags; ktime_t rem; lock_hrtimer_base(timer, &flags); - rem = hrtimer_expires_remaining(timer); + if (IS_ENABLED(CONFIG_TIME_LOW_RES) && adjust) + rem = hrtimer_expires_remaining_adjusted(timer); + else + rem = hrtimer_expires_remaining(timer); unlock_hrtimer_base(timer, &flags); return rem; } -EXPORT_SYMBOL_GPL(hrtimer_get_remaining); +EXPORT_SYMBOL_GPL(__hrtimer_get_remaining); #ifdef CONFIG_NO_HZ_COMMON /** @@ -1212,6 +1223,14 @@ fn = timer->function; /* + * Clear the 'is relative' flag for the TIME_LOW_RES case. If the + * timer is restarted with a period then it becomes an absolute + * timer. If its not restarted it does not matter. + */ + if (IS_ENABLED(CONFIG_TIME_LOW_RES)) + timer->is_rel = false; + + /* * Because we run timers from hardirq context, there is no chance * they get migrated to another cpu, therefore its safe to unlock * the timer base. --- linux-raspi2-4.2.0.orig/kernel/time/itimer.c +++ linux-raspi2-4.2.0/kernel/time/itimer.c @@ -26,7 +26,7 @@ */ static struct timeval itimer_get_remtime(struct hrtimer *timer) { - ktime_t rem = hrtimer_get_remaining(timer); + ktime_t rem = __hrtimer_get_remaining(timer, true); /* * Racy but safe: if the itimer expires after the above --- linux-raspi2-4.2.0.orig/kernel/time/posix-clock.c +++ linux-raspi2-4.2.0/kernel/time/posix-clock.c @@ -69,10 +69,10 @@ static unsigned int posix_clock_poll(struct file *fp, poll_table *wait) { struct posix_clock *clk = get_posix_clock(fp); - int result = 0; + unsigned int result = 0; if (!clk) - return -ENODEV; + return POLLERR; if (clk->ops.poll) result = clk->ops.poll(clk, fp, wait); --- linux-raspi2-4.2.0.orig/kernel/time/posix-timers.c +++ linux-raspi2-4.2.0/kernel/time/posix-timers.c @@ -760,7 +760,7 @@ (timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE)) timr->it_overrun += (unsigned int) hrtimer_forward(timer, now, iv); - remaining = ktime_sub(hrtimer_get_expires(timer), now); + remaining = __hrtimer_expires_remaining_adjusted(timer, now); /* Return 0 only, when the timer is expired and not pending */ if (remaining.tv64 <= 0) { /* --- linux-raspi2-4.2.0.orig/kernel/time/tick-sched.c +++ linux-raspi2-4.2.0/kernel/time/tick-sched.c @@ -988,9 +988,9 @@ /* Get the next period */ next = tick_init_jiffy_update(); - hrtimer_forward_now(&ts->sched_timer, tick_period); hrtimer_set_expires(&ts->sched_timer, next); - tick_program_event(next, 1); + hrtimer_forward_now(&ts->sched_timer, tick_period); + tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1); tick_nohz_activate(ts, NOHZ_MODE_LOWRES); } --- linux-raspi2-4.2.0.orig/kernel/time/timekeeping.c +++ linux-raspi2-4.2.0/kernel/time/timekeeping.c @@ -305,8 +305,7 @@ delta = timekeeping_get_delta(tkr); - nsec = delta * tkr->mult + tkr->xtime_nsec; - nsec >>= tkr->shift; + nsec = (delta * tkr->mult + tkr->xtime_nsec) >> tkr->shift; /* If arch requires, add in get_arch_timeoffset() */ return nsec + arch_gettimeoffset(); @@ -1244,7 +1243,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 +1606,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/time/timer_list.c +++ linux-raspi2-4.2.0/kernel/time/timer_list.c @@ -69,7 +69,7 @@ print_name_offset(m, taddr); SEQ_printf(m, ", "); print_name_offset(m, timer->function); - SEQ_printf(m, ", S:%02lx", timer->state); + SEQ_printf(m, ", S:%02x", timer->state); #ifdef CONFIG_TIMER_STATS SEQ_printf(m, ", "); print_name_offset(m, timer->start_site); --- linux-raspi2-4.2.0.orig/kernel/trace/ring_buffer.c +++ linux-raspi2-4.2.0/kernel/trace/ring_buffer.c @@ -1943,12 +1943,6 @@ goto again; } -static void rb_reset_reader_page(struct ring_buffer_per_cpu *cpu_buffer) -{ - cpu_buffer->read_stamp = cpu_buffer->reader_page->page->time_stamp; - cpu_buffer->reader_page->read = 0; -} - static void rb_inc_iter(struct ring_buffer_iter *iter) { struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer; @@ -3586,7 +3580,7 @@ /* Finally update the reader page to the new head */ cpu_buffer->reader_page = reader; - rb_reset_reader_page(cpu_buffer); + cpu_buffer->reader_page->read = 0; if (overwrite != cpu_buffer->last_overrun) { cpu_buffer->lost_events = overwrite - cpu_buffer->last_overrun; @@ -3596,6 +3590,10 @@ goto again; out: + /* Update the read_stamp on the first event */ + if (reader && reader->read == 0) + cpu_buffer->read_stamp = reader->page->time_stamp; + arch_spin_unlock(&cpu_buffer->lock); local_irq_restore(flags); --- linux-raspi2-4.2.0.orig/kernel/trace/trace.c +++ linux-raspi2-4.2.0/kernel/trace/trace.c @@ -4917,7 +4917,10 @@ spd.nr_pages = i; - ret = splice_to_pipe(pipe, &spd); + if (i) + ret = splice_to_pipe(pipe, &spd); + else + ret = 0; out: splice_shrink_spd(&spd); return ret; @@ -6602,7 +6605,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_events.c +++ linux-raspi2-4.2.0/kernel/trace/trace_events.c @@ -683,7 +683,8 @@ * The ftrace subsystem is for showing formats only. * They can not be enabled or disabled via the event files. */ - if (call->class && call->class->reg) + if (call->class && call->class->reg && + !(call->flags & TRACE_EVENT_FL_IGNORE_ENABLE)) return file; } --- linux-raspi2-4.2.0.orig/kernel/trace/trace_irqsoff.c +++ linux-raspi2-4.2.0/kernel/trace/trace_irqsoff.c @@ -116,8 +116,12 @@ return 0; local_save_flags(*flags); - /* slight chance to get a false positive on tracing_cpu */ - if (!irqs_disabled_flags(*flags)) + /* + * Slight chance to get a false positive on tracing_cpu, + * although I'm starting to think there isn't a chance. + * Leave this for now just to be paranoid. + */ + if (!irqs_disabled_flags(*flags) && !preempt_count()) return 0; *data = per_cpu_ptr(tr->trace_buffer.data, cpu); --- linux-raspi2-4.2.0.orig/kernel/trace/trace_printk.c +++ linux-raspi2-4.2.0/kernel/trace/trace_printk.c @@ -267,6 +267,7 @@ if (*pos < last_index + start_index) return __start___tracepoint_str + (*pos - last_index); + start_index += last_index; return find_next_mod_format(start_index, v, fmt, pos); } @@ -289,6 +290,9 @@ const char *str = *fmt; int i; + if (!*fmt) + return 0; + seq_printf(m, "0x%lx : \"", *(unsigned long *)fmt); /* --- 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/watchdog.c +++ linux-raspi2-4.2.0/kernel/watchdog.c @@ -823,6 +823,9 @@ * Update the run state of the lockup detectors. * Restore 'watchdog_enabled' on failure. */ + if (old == new) + goto out; + err = proc_watchdog_update(); if (err) watchdog_enabled = old; @@ -868,7 +871,7 @@ int proc_watchdog_thresh(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { - int err, old; + int err, old, new; mutex_lock(&watchdog_proc_mutex); @@ -882,6 +885,10 @@ * Update the sample period. * Restore 'watchdog_thresh' on failure. */ + new = ACCESS_ONCE(watchdog_thresh); + if (old == new) + goto out; + set_sample_period(); err = proc_watchdog_update(); if (err) --- linux-raspi2-4.2.0.orig/kernel/workqueue.c +++ linux-raspi2-4.2.0/kernel/workqueue.c @@ -568,6 +568,16 @@ int node) { assert_rcu_or_wq_mutex_or_pool_mutex(wq); + + /* + * XXX: @node can be NUMA_NO_NODE if CPU goes offline while a + * delayed item is pending. The plan is to keep CPU -> NODE + * mapping valid and stable across CPU on/offlines. Once that + * happens, this workaround can be removed. + */ + if (unlikely(node == NUMA_NO_NODE)) + return wq->dfl_pwq; + return rcu_dereference_raw(wq->numa_pwq_tbl[node]); } @@ -2614,7 +2624,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/Kconfig +++ linux-raspi2-4.2.0/lib/Kconfig @@ -213,9 +213,11 @@ # compression support is select'ed if needed # config 842_COMPRESS + select CRC32 tristate config 842_DECOMPRESS + select CRC32 tristate config ZLIB_INFLATE --- linux-raspi2-4.2.0.orig/lib/asn1_decoder.c +++ linux-raspi2-4.2.0/lib/asn1_decoder.c @@ -208,9 +208,8 @@ unsigned char tmp; /* Skip conditional matches if possible */ - if ((op & ASN1_OP_MATCH__COND && - flags & FLAG_MATCHED) || - dp == datalen) { + if ((op & ASN1_OP_MATCH__COND && flags & FLAG_MATCHED) || + (op & ASN1_OP_MATCH__SKIP && dp == datalen)) { pc += asn1_op_lengths[op]; goto next_op; } --- 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/dma-debug.c +++ linux-raspi2-4.2.0/lib/dma-debug.c @@ -1181,7 +1181,7 @@ static void check_for_illegal_area(struct device *dev, void *addr, unsigned long len) { - if (overlap(addr, len, _text, _etext) || + if (overlap(addr, len, _stext, _etext) || overlap(addr, len, __start_rodata, __end_rodata)) err_printk(dev, NULL, "DMA-API: device driver maps memory from kernel text or rodata [addr=%p] [len=%lu]\n", addr, len); } @@ -1456,7 +1456,7 @@ entry->type = dma_debug_coherent; entry->dev = dev; entry->pfn = page_to_pfn(virt_to_page(virt)); - entry->offset = (size_t) virt & PAGE_MASK; + entry->offset = (size_t) virt & ~PAGE_MASK; entry->size = size; entry->dev_addr = dma_addr; entry->direction = DMA_BIDIRECTIONAL; @@ -1472,7 +1472,7 @@ .type = dma_debug_coherent, .dev = dev, .pfn = page_to_pfn(virt_to_page(virt)), - .offset = (size_t) virt & PAGE_MASK, + .offset = (size_t) virt & ~PAGE_MASK, .dev_addr = addr, .size = size, .direction = DMA_BIDIRECTIONAL, --- linux-raspi2-4.2.0.orig/lib/dump_stack.c +++ linux-raspi2-4.2.0/lib/dump_stack.c @@ -25,6 +25,7 @@ asmlinkage __visible void dump_stack(void) { + unsigned long flags; int was_locked; int old; int cpu; @@ -33,9 +34,8 @@ * Permit this cpu to perform nested stack dumps while serialising * against other CPUs */ - preempt_disable(); - retry: + local_irq_save(flags); cpu = smp_processor_id(); old = atomic_cmpxchg(&dump_lock, -1, cpu); if (old == -1) { @@ -43,6 +43,7 @@ } else if (old == cpu) { was_locked = 1; } else { + local_irq_restore(flags); cpu_relax(); goto retry; } @@ -52,7 +53,7 @@ if (!was_locked) atomic_set(&dump_lock, -1); - preempt_enable(); + local_irq_restore(flags); } #else asmlinkage __visible void dump_stack(void) --- 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 @@ -282,9 +282,9 @@ struct klist_node *n) { i->i_klist = k; - i->i_cur = n; - if (n) - kref_get(&n->n_ref); + i->i_cur = NULL; + if (n && kref_get_unless_zero(&n->n_ref)) + i->i_cur = n; } EXPORT_SYMBOL_GPL(klist_iter_init_node); @@ -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/libcrc32c.c +++ linux-raspi2-4.2.0/lib/libcrc32c.c @@ -74,3 +74,4 @@ MODULE_AUTHOR("Clay Haapala "); MODULE_DESCRIPTION("CRC32c (Castagnoli) calculations"); MODULE_LICENSE("GPL"); +MODULE_SOFTDEP("pre: crc32c"); --- linux-raspi2-4.2.0.orig/lib/radix-tree.c +++ linux-raspi2-4.2.0/lib/radix-tree.c @@ -1019,9 +1019,13 @@ return 0; radix_tree_for_each_slot(slot, root, &iter, first_index) { - results[ret] = indirect_to_ptr(rcu_dereference_raw(*slot)); + results[ret] = rcu_dereference_raw(*slot); if (!results[ret]) continue; + if (radix_tree_is_indirect_ptr(results[ret])) { + slot = radix_tree_iter_retry(&iter); + continue; + } if (++ret == max_items) break; } @@ -1098,9 +1102,13 @@ return 0; radix_tree_for_each_tagged(slot, root, &iter, first_index, tag) { - results[ret] = indirect_to_ptr(rcu_dereference_raw(*slot)); + results[ret] = rcu_dereference_raw(*slot); if (!results[ret]) continue; + if (radix_tree_is_indirect_ptr(results[ret])) { + slot = radix_tree_iter_retry(&iter); + continue; + } if (++ret == max_items) break; } --- 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/lib/ucs2_string.c +++ linux-raspi2-4.2.0/lib/ucs2_string.c @@ -49,3 +49,65 @@ } } EXPORT_SYMBOL(ucs2_strncmp); + +unsigned long +ucs2_utf8size(const ucs2_char_t *src) +{ + unsigned long i; + unsigned long j = 0; + + for (i = 0; i < ucs2_strlen(src); i++) { + u16 c = src[i]; + + if (c >= 0x800) + j += 3; + else if (c >= 0x80) + j += 2; + else + j += 1; + } + + return j; +} +EXPORT_SYMBOL(ucs2_utf8size); + +/* + * copy at most maxlength bytes of whole utf8 characters to dest from the + * ucs2 string src. + * + * The return value is the number of characters copied, not including the + * final NUL character. + */ +unsigned long +ucs2_as_utf8(u8 *dest, const ucs2_char_t *src, unsigned long maxlength) +{ + unsigned int i; + unsigned long j = 0; + unsigned long limit = ucs2_strnlen(src, maxlength); + + for (i = 0; maxlength && i < limit; i++) { + u16 c = src[i]; + + if (c >= 0x800) { + if (maxlength < 3) + break; + maxlength -= 3; + dest[j++] = 0xe0 | (c & 0xf000) >> 12; + dest[j++] = 0x80 | (c & 0x0fc0) >> 6; + dest[j++] = 0x80 | (c & 0x003f); + } else if (c >= 0x80) { + if (maxlength < 2) + break; + maxlength -= 2; + dest[j++] = 0xc0 | (c & 0x7c0) >> 6; + dest[j++] = 0x80 | (c & 0x03f); + } else { + maxlength -= 1; + dest[j++] = c & 0x7f; + } + } + if (maxlength) + dest[j] = '\0'; + return j; +} +EXPORT_SYMBOL(ucs2_as_utf8); --- 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); /* @@ -933,8 +943,9 @@ * jiffies for either a BDI to exit congestion of the given @sync queue * or a write to complete. * - * In the absence of zone congestion, cond_resched() is called to yield - * the processor if necessary but otherwise does not sleep. + * In the absence of zone congestion, a short sleep or a cond_resched is + * performed to yield the processor and to allow other subsystems to make + * a forward progress. * * The return value is 0 if the sleep is for the full timeout. Otherwise, * it is the number of jiffies that were still remaining when the function @@ -954,7 +965,19 @@ */ if (atomic_read(&nr_wb_congested[sync]) == 0 || !test_bit(ZONE_CONGESTED, &zone->flags)) { - cond_resched(); + + /* + * Memory allocation/reclaim might be called from a WQ + * context and the current implementation of the WQ + * concurrency control doesn't recognize that a particular + * WQ is congested if the worker thread is looping without + * ever sleeping. Therefore we have to do a short sleep + * here rather than calling cond_resched(). + */ + if (current->flags & PF_WQ_WORKER) + schedule_timeout_uninterruptible(1); + else + cond_resched(); /* In case we scheduled, work out time remaining */ ret = timeout - (jiffies - start); --- linux-raspi2-4.2.0.orig/mm/balloon_compaction.c +++ linux-raspi2-4.2.0/mm/balloon_compaction.c @@ -61,6 +61,7 @@ bool dequeued_page; dequeued_page = false; + spin_lock_irqsave(&b_dev_info->pages_lock, flags); list_for_each_entry_safe(page, tmp, &b_dev_info->pages, lru) { /* * Block others from accessing the 'page' while we get around @@ -75,15 +76,14 @@ continue; } #endif - spin_lock_irqsave(&b_dev_info->pages_lock, flags); balloon_page_delete(page); __count_vm_event(BALLOON_DEFLATE); - spin_unlock_irqrestore(&b_dev_info->pages_lock, flags); unlock_page(page); dequeued_page = true; break; } } + spin_unlock_irqrestore(&b_dev_info->pages_lock, flags); if (!dequeued_page) { /* --- 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 @@ -1563,7 +1563,10 @@ page = alloc_buddy_huge_page(h, NUMA_NO_NODE); if (!page) goto out_uncharge_cgroup; - + if (!avoid_reserve && vma_has_reserves(vma, chg)) { + SetPagePrivate(page); + h->resv_huge_pages--; + } spin_lock(&hugetlb_lock); list_move(&page->lru, &h->hugepage_activelist); /* Fall through */ @@ -2974,6 +2977,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 @@ -3339,12 +3350,12 @@ } else if (unlikely(is_hugetlb_entry_hwpoisoned(entry))) return VM_FAULT_HWPOISON_LARGE | VM_FAULT_SET_HINDEX(hstate_index(h)); + } else { + ptep = huge_pte_alloc(mm, address, huge_page_size(h)); + if (!ptep) + return VM_FAULT_OOM; } - ptep = huge_pte_alloc(mm, address, huge_page_size(h)); - if (!ptep) - return VM_FAULT_OOM; - mapping = vma->vm_file->f_mapping; idx = vma_hugecache_offset(h, vma, address); --- 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))); } @@ -1542,7 +1551,7 @@ return limit; } -static void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask, +static bool mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask, int order) { struct mem_cgroup *iter; @@ -1615,6 +1624,7 @@ } unlock: mutex_unlock(&oom_lock); + return chosen; } #if MAX_NUMNODES > 1 @@ -3119,20 +3129,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 +3152,7 @@ else val = page_counter_read(&memcg->memsw); } - return val << PAGE_SHIFT; + return val; } enum { @@ -3179,9 +3186,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 +3476,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 +3501,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++) { @@ -3827,16 +3834,17 @@ swap_buffers: /* Swap primary and spare array */ thresholds->spare = thresholds->primary; - /* If all events are unregistered, free the spare array */ - if (!new) { - kfree(thresholds->spare); - thresholds->spare = NULL; - } rcu_assign_pointer(thresholds->primary, new); /* To be sure that nobody uses thresholds */ synchronize_rcu(); + + /* If all events are unregistered, free the spare array */ + if (!new) { + kfree(thresholds->spare); + thresholds->spare = NULL; + } unlock: mutex_unlock(&memcg->thresholds_lock); } @@ -5415,6 +5423,7 @@ char *buf, size_t nbytes, loff_t off) { struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of)); + unsigned long nr_pages; unsigned long high; int err; @@ -5425,6 +5434,11 @@ memcg->high = high; + nr_pages = page_counter_read(&memcg->memory); + if (nr_pages > high) + try_to_free_mem_cgroup_pages(memcg, nr_pages - high, + GFP_KERNEL, true); + memcg_wb_domain_size_changed(memcg); return nbytes; } @@ -5446,6 +5460,8 @@ char *buf, size_t nbytes, loff_t off) { struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of)); + unsigned int nr_reclaims = MEM_CGROUP_RECLAIM_RETRIES; + bool drained = false; unsigned long max; int err; @@ -5454,9 +5470,36 @@ if (err) return err; - err = mem_cgroup_resize_limit(memcg, max); - if (err) - return err; + xchg(&memcg->memory.limit, max); + + for (;;) { + unsigned long nr_pages = page_counter_read(&memcg->memory); + + if (nr_pages <= max) + break; + + if (signal_pending(current)) { + err = -EINTR; + break; + } + + if (!drained) { + drain_all_stock(memcg); + drained = true; + continue; + } + + if (nr_reclaims) { + if (!try_to_free_mem_cgroup_pages(memcg, nr_pages - max, + GFP_KERNEL, true)) + nr_reclaims--; + continue; + } + + mem_cgroup_events(memcg, MEMCG_OOM, 1); + if (!mem_cgroup_out_of_memory(memcg, GFP_KERNEL, 0)) + break; + } memcg_wb_domain_size_changed(memcg); return nbytes; @@ -5518,6 +5561,7 @@ .dfl_cftypes = memory_files, .legacy_cftypes = mem_cgroup_legacy_files, .early_init = 0, + .disabled = 1, }; /** --- linux-raspi2-4.2.0.orig/mm/memory-failure.c +++ linux-raspi2-4.2.0/mm/memory-failure.c @@ -1540,7 +1540,7 @@ * Did it turn free? */ ret = __get_any_page(page, pfn, 0); - if (!PageLRU(page)) { + if (ret == 1 && !PageLRU(page)) { /* Drop page reference which is from __get_any_page() */ put_page(page); pr_info("soft_offline: %#lx: unknown non LRU page type %lx\n", --- 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; @@ -3365,8 +3365,18 @@ if (unlikely(pmd_none(*pmd)) && unlikely(__pte_alloc(mm, vma, pmd, address))) return VM_FAULT_OOM; - /* if an huge pmd materialized from under us just retry later */ - if (unlikely(pmd_trans_huge(*pmd))) + /* + * If a huge pmd materialized under us just retry later. Use + * pmd_trans_unstable() instead of pmd_trans_huge() to ensure the pmd + * didn't become pmd_trans_huge under us and then back to pmd_none, as + * a result of MADV_DONTNEED running immediately after a huge pmd fault + * in a different thread of this mm, in turn leading to a misleading + * pmd_trans_huge() retval. All we have to ensure is that it is a + * regular pmd that we can walk with pte_offset_map() and we can do that + * through an atomic read in C, which is what pmd_trans_unstable() + * provides. + */ + if (unlikely(pmd_trans_unstable(pmd))) return 0; /* * A regular pmd is established and it can't morph into a huge pmd --- 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(); @@ -1346,23 +1354,30 @@ */ int test_pages_in_a_zone(unsigned long start_pfn, unsigned long end_pfn) { - unsigned long pfn; + unsigned long pfn, sec_end_pfn; struct zone *zone = NULL; struct page *page; int i; - for (pfn = start_pfn; + for (pfn = start_pfn, sec_end_pfn = SECTION_ALIGN_UP(start_pfn); pfn < end_pfn; - pfn += MAX_ORDER_NR_PAGES) { - i = 0; - /* This is just a CONFIG_HOLES_IN_ZONE check.*/ - while ((i < MAX_ORDER_NR_PAGES) && !pfn_valid_within(pfn + i)) - i++; - if (i == MAX_ORDER_NR_PAGES) + pfn = sec_end_pfn + 1, sec_end_pfn += PAGES_PER_SECTION) { + /* Make sure the memory section is present first */ + if (!present_section_nr(pfn_to_section_nr(pfn))) continue; - page = pfn_to_page(pfn + i); - if (zone && page_zone(page) != zone) - return 0; - zone = page_zone(page); + for (; pfn < sec_end_pfn && pfn < end_pfn; + pfn += MAX_ORDER_NR_PAGES) { + i = 0; + /* This is just a CONFIG_HOLES_IN_ZONE check.*/ + while ((i < MAX_ORDER_NR_PAGES) && + !pfn_valid_within(pfn + i)) + i++; + if (i == MAX_ORDER_NR_PAGES) + continue; + page = pfn_to_page(pfn + i); + if (zone && page_zone(page) != zone) + return 0; + zone = page_zone(page); + } } return 1; } --- 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; @@ -440,12 +440,16 @@ struct vm_area_struct *vma = mm->mmap; while (vma) { + struct anon_vma *anon_vma = vma->anon_vma; struct anon_vma_chain *avc; - vma_lock_anon_vma(vma); - list_for_each_entry(avc, &vma->anon_vma_chain, same_vma) - anon_vma_interval_tree_verify(avc); - vma_unlock_anon_vma(vma); + if (anon_vma) { + anon_vma_lock_read(anon_vma); + list_for_each_entry(avc, &vma->anon_vma_chain, same_vma) + anon_vma_interval_tree_verify(avc); + anon_vma_unlock_read(anon_vma); + } + highest_address = vma->vm_end; vma = vma->vm_next; i++; @@ -886,7 +890,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 +1675,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); @@ -2141,32 +2145,27 @@ */ int expand_upwards(struct vm_area_struct *vma, unsigned long address) { - int error; + int error = 0; if (!(vma->vm_flags & VM_GROWSUP)) return -EFAULT; - /* - * We must make sure the anon_vma is allocated - * so that the anon_vma locking is not a noop. - */ + /* Guard against wrapping around to address 0. */ + if (address < PAGE_ALIGN(address+4)) + address = PAGE_ALIGN(address+4); + else + return -ENOMEM; + + /* We must make sure the anon_vma is allocated. */ if (unlikely(anon_vma_prepare(vma))) return -ENOMEM; - vma_lock_anon_vma(vma); /* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_sem in read mode. We need the * anon_vma lock to serialize against concurrent expand_stacks. - * Also guard against wrapping around to address 0. */ - if (address < PAGE_ALIGN(address+4)) - address = PAGE_ALIGN(address+4); - else { - vma_unlock_anon_vma(vma); - return -ENOMEM; - } - error = 0; + anon_vma_lock_write(vma->anon_vma); /* Somebody else might have raced and expanded it already */ if (address > vma->vm_end) { @@ -2184,7 +2183,7 @@ * updates, but we only hold a shared mmap_sem * lock here, so we need to protect against * concurrent vma expansions. - * vma_lock_anon_vma() doesn't help here, as + * anon_vma_lock_write() doesn't help here, as * we don't guarantee that all growable vmas * in a mm share the same root anon vma. * So, we reuse mm->page_table_lock to guard @@ -2204,7 +2203,7 @@ } } } - vma_unlock_anon_vma(vma); + anon_vma_unlock_write(vma->anon_vma); khugepaged_enter_vma_merge(vma, vma->vm_flags); validate_mm(vma->vm_mm); return error; @@ -2219,25 +2218,21 @@ { int error; - /* - * We must make sure the anon_vma is allocated - * so that the anon_vma locking is not a noop. - */ - if (unlikely(anon_vma_prepare(vma))) - return -ENOMEM; - address &= PAGE_MASK; error = security_mmap_addr(address); if (error) return error; - vma_lock_anon_vma(vma); + /* We must make sure the anon_vma is allocated. */ + if (unlikely(anon_vma_prepare(vma))) + return -ENOMEM; /* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_sem in read mode. We need the * anon_vma lock to serialize against concurrent expand_stacks. */ + anon_vma_lock_write(vma->anon_vma); /* Somebody else might have raced and expanded it already */ if (address < vma->vm_start) { @@ -2255,7 +2250,7 @@ * updates, but we only hold a shared mmap_sem * lock here, so we need to protect against * concurrent vma expansions. - * vma_lock_anon_vma() doesn't help here, as + * anon_vma_lock_write() doesn't help here, as * we don't guarantee that all growable vmas * in a mm share the same root anon vma. * So, we reuse mm->page_table_lock to guard @@ -2273,7 +2268,7 @@ } } } - vma_unlock_anon_vma(vma); + anon_vma_unlock_write(vma->anon_vma); khugepaged_enter_vma_merge(vma, vma->vm_flags); validate_mm(vma->vm_mm); return error; @@ -2473,7 +2468,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 +2487,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 +2630,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", @@ -2659,12 +2653,29 @@ if (!vma || !(vma->vm_flags & VM_SHARED)) goto out; - if (start < vma->vm_start || start + size > vma->vm_end) + if (start < vma->vm_start) goto out; - if (pgoff == linear_page_index(vma, start)) { - ret = 0; - goto out; + if (start + size > vma->vm_end) { + struct vm_area_struct *next; + + for (next = vma->vm_next; next; next = next->vm_next) { + /* hole between vmas ? */ + if (next->vm_start != next->vm_prev->vm_end) + goto out; + + if (next->vm_file != vma->vm_file) + goto out; + + if (next->vm_flags != vma->vm_flags) + goto out; + + if (start + size <= next->vm_end) + break; + } + + if (!next) + goto out; } prot |= vma->vm_flags & VM_READ ? PROT_READ : 0; @@ -2674,15 +2685,22 @@ flags &= MAP_NONBLOCK; flags |= MAP_SHARED | MAP_FIXED | MAP_POPULATE; if (vma->vm_flags & VM_LOCKED) { + struct vm_area_struct *tmp; flags |= MAP_LOCKED; + /* drop PG_Mlocked flag for over-mapped range */ - munlock_vma_pages_range(vma, start, start + size); + for (tmp = vma; tmp->vm_start >= start + size; + tmp = tmp->vm_next) { + munlock_vma_pages_range(tmp, + max(tmp->vm_start, start), + min(tmp->vm_end, 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 +2967,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 @@ -635,34 +635,28 @@ unsigned long combined_idx; unsigned long uninitialized_var(buddy_idx); struct page *buddy; - int max_order = MAX_ORDER; + unsigned int max_order; + + max_order = min_t(unsigned int, MAX_ORDER, pageblock_order + 1); VM_BUG_ON(!zone_is_initialized(zone)); VM_BUG_ON_PAGE(page->flags & PAGE_FLAGS_CHECK_AT_PREP, page); VM_BUG_ON(migratetype == -1); - if (is_migrate_isolate(migratetype)) { - /* - * We restrict max order of merging to prevent merge - * between freepages on isolate pageblock and normal - * pageblock. Without this, pageblock isolation - * could cause incorrect freepage accounting. - */ - max_order = min(MAX_ORDER, pageblock_order + 1); - } else { + if (likely(!is_migrate_isolate(migratetype))) __mod_zone_freepage_state(zone, 1 << order, migratetype); - } - page_idx = pfn & ((1 << max_order) - 1); + page_idx = pfn & ((1 << MAX_ORDER) - 1); VM_BUG_ON_PAGE(page_idx & ((1 << order) - 1), page); VM_BUG_ON_PAGE(bad_range(zone, page), page); +continue_merging: while (order < max_order - 1) { buddy_idx = __find_buddy_index(page_idx, order); buddy = page + (buddy_idx - page_idx); if (!page_is_buddy(page, buddy, order)) - break; + goto done_merging; /* * Our buddy is free or it is CONFIG_DEBUG_PAGEALLOC guard page, * merge with it and move up one order. @@ -679,6 +673,32 @@ page_idx = combined_idx; order++; } + if (max_order < MAX_ORDER) { + /* If we are here, it means order is >= pageblock_order. + * We want to prevent merge between freepages on isolate + * pageblock and normal pageblock. Without this, pageblock + * isolation could cause incorrect freepage or CMA accounting. + * + * We don't want to hit this code for the more frequent + * low-order merging. + */ + if (unlikely(has_isolate_pageblock(zone))) { + int buddy_mt; + + buddy_idx = __find_buddy_index(page_idx, order); + buddy = page + (buddy_idx - page_idx); + buddy_mt = get_pageblock_migratetype(buddy); + + if (migratetype != buddy_mt + && (is_migrate_isolate(migratetype) || + is_migrate_isolate(buddy_mt))) + goto done_merging; + } + max_order++; + goto continue_merging; + } + +done_merging: set_page_order(page, order); /* @@ -6311,6 +6331,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/page_isolation.c +++ linux-raspi2-4.2.0/mm/page_isolation.c @@ -300,11 +300,11 @@ * now as a simple work-around, we use the next node for destination. */ if (PageHuge(page)) { - nodemask_t src = nodemask_of_node(page_to_nid(page)); - nodemask_t dst; - nodes_complement(dst, src); + int node = next_online_node(page_to_nid(page)); + if (node == MAX_NUMNODES) + node = first_online_node; return alloc_huge_page_node(page_hstate(compound_head(page)), - next_node(page_to_nid(page), dst)); + node); } if (PageHighMem(page)) --- 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); @@ -597,11 +602,15 @@ list_del_init(&info->swaplist); mutex_unlock(&shmem_swaplist_mutex); } - } else - kfree(info->symlink); + } 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 +1410,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 +1457,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; @@ -2445,13 +2473,12 @@ info = SHMEM_I(inode); inode->i_size = len-1; if (len <= SHORT_SYMLINK_LEN) { - info->symlink = kmemdup(symname, len, GFP_KERNEL); - if (!info->symlink) { + inode->i_link = kmemdup(symname, len, GFP_KERNEL); + if (!inode->i_link) { iput(inode); return -ENOMEM; } inode->i_op = &shmem_short_symlink_operations; - inode->i_link = info->symlink; } else { error = shmem_getpage(inode, 0, &page, SGP_WRITE, NULL); if (error) { @@ -2665,8 +2692,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 +2703,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 +2719,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 +2792,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 +2845,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 +2893,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 +2982,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 +3002,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(); @@ -3066,6 +3078,7 @@ static void shmem_destroy_callback(struct rcu_head *head) { struct inode *inode = container_of(head, struct inode, i_rcu); + kfree(inode->i_link); kmem_cache_free(shmem_inode_cachep, SHMEM_I(inode)); } @@ -3095,6 +3108,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 +3252,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/util.c +++ linux-raspi2-4.2.0/mm/util.c @@ -199,36 +199,11 @@ } /* Check if the vma is being used as a stack by this task */ -static int vm_is_stack_for_task(struct task_struct *t, - struct vm_area_struct *vma) +int vma_is_stack_for_task(struct vm_area_struct *vma, struct task_struct *t) { return (vma->vm_start <= KSTK_ESP(t) && vma->vm_end >= KSTK_ESP(t)); } -/* - * Check if the vma is being used as a stack. - * If is_group is non-zero, check in the entire thread group or else - * just check in the current task. Returns the task_struct of the task - * that the vma is stack for. Must be called under rcu_read_lock(). - */ -struct task_struct *task_of_stack(struct task_struct *task, - struct vm_area_struct *vma, bool in_group) -{ - if (vm_is_stack_for_task(task, vma)) - return task; - - if (in_group) { - struct task_struct *t; - - for_each_thread(task, t) { - if (vm_is_stack_for_task(t, vma)) - return t; - } - } - - return NULL; -} - #if defined(CONFIG_MMU) && !defined(HAVE_ARCH_PICK_MMAP_LAYOUT) void arch_pick_mmap_layout(struct mm_struct *mm) { --- 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/mm/vmstat.c +++ linux-raspi2-4.2.0/mm/vmstat.c @@ -460,7 +460,7 @@ * * The function returns the number of global counters updated. */ -static int refresh_cpu_vm_stats(void) +static int refresh_cpu_vm_stats(bool do_pagesets) { struct zone *zone; int i; @@ -484,33 +484,35 @@ #endif } } - cond_resched(); #ifdef CONFIG_NUMA - /* - * Deal with draining the remote pageset of this - * processor - * - * Check if there are pages remaining in this pageset - * if not then there is nothing to expire. - */ - if (!__this_cpu_read(p->expire) || + if (do_pagesets) { + cond_resched(); + /* + * Deal with draining the remote pageset of this + * processor + * + * Check if there are pages remaining in this pageset + * if not then there is nothing to expire. + */ + if (!__this_cpu_read(p->expire) || !__this_cpu_read(p->pcp.count)) - continue; + continue; - /* - * We never drain zones local to this processor. - */ - if (zone_to_nid(zone) == numa_node_id()) { - __this_cpu_write(p->expire, 0); - continue; - } + /* + * We never drain zones local to this processor. + */ + if (zone_to_nid(zone) == numa_node_id()) { + __this_cpu_write(p->expire, 0); + continue; + } - if (__this_cpu_dec_return(p->expire)) - continue; + if (__this_cpu_dec_return(p->expire)) + continue; - if (__this_cpu_read(p->pcp.count)) { - drain_zone_pages(zone, this_cpu_ptr(&p->pcp)); - changes++; + if (__this_cpu_read(p->pcp.count)) { + drain_zone_pages(zone, this_cpu_ptr(&p->pcp)); + changes++; + } } #endif } @@ -1357,21 +1359,23 @@ #endif /* CONFIG_PROC_FS */ #ifdef CONFIG_SMP +static struct workqueue_struct *vmstat_wq; static DEFINE_PER_CPU(struct delayed_work, vmstat_work); int sysctl_stat_interval __read_mostly = HZ; static cpumask_var_t cpu_stat_off; static void vmstat_update(struct work_struct *w) { - if (refresh_cpu_vm_stats()) + if (refresh_cpu_vm_stats(true)) { /* * Counters were updated so we expect more updates * to occur in the future. Keep on running the * update worker thread. */ - schedule_delayed_work(this_cpu_ptr(&vmstat_work), + queue_delayed_work_on(smp_processor_id(), vmstat_wq, + this_cpu_ptr(&vmstat_work), round_jiffies_relative(sysctl_stat_interval)); - else { + } else { /* * We did not update any counters so the app may be in * a mode where it does not cause counter updates. @@ -1394,6 +1398,23 @@ } /* + * Switch off vmstat processing and then fold all the remaining differentials + * until the diffs stay at zero. The function is used by NOHZ and can only be + * invoked when tick processing is not active. + */ +void quiet_vmstat(void) +{ + if (system_state != SYSTEM_RUNNING) + return; + + do { + if (!cpumask_test_and_set_cpu(smp_processor_id(), cpu_stat_off)) + cancel_delayed_work(this_cpu_ptr(&vmstat_work)); + + } while (refresh_cpu_vm_stats(false)); +} + +/* * Check if the diffs for a certain cpu indicate that * an update is needed. */ @@ -1425,7 +1446,7 @@ */ static void vmstat_shepherd(struct work_struct *w); -static DECLARE_DELAYED_WORK(shepherd, vmstat_shepherd); +static DECLARE_DEFERRABLE_WORK(shepherd, vmstat_shepherd); static void vmstat_shepherd(struct work_struct *w) { @@ -1437,7 +1458,7 @@ if (need_update(cpu) && cpumask_test_and_clear_cpu(cpu, cpu_stat_off)) - schedule_delayed_work_on(cpu, + queue_delayed_work_on(cpu, vmstat_wq, &per_cpu(vmstat_work, cpu), 0); put_online_cpus(); @@ -1459,6 +1480,7 @@ BUG(); cpumask_copy(cpu_stat_off, cpu_online_mask); + vmstat_wq = alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0); schedule_delayed_work(&shepherd, round_jiffies_relative(sysctl_stat_interval)); } --- linux-raspi2-4.2.0.orig/mm/zsmalloc.c +++ linux-raspi2-4.2.0/mm/zsmalloc.c @@ -302,7 +302,12 @@ static void record_obj(unsigned long handle, unsigned long obj) { - *(unsigned long *)handle = obj; + /* + * lsb of @obj represents handle lock while other bits + * represent object value the handle is pointing so + * updating shouldn't do store tearing. + */ + WRITE_ONCE(*(unsigned long *)handle, obj); } /* zpool driver */ @@ -1638,6 +1643,13 @@ free_obj = obj_malloc(d_page, class, handle); zs_object_copy(used_obj, free_obj, class); index++; + /* + * record_obj updates handle's value to free_obj and it will + * invalidate lock bit(ie, HANDLE_PIN_BIT) of handle, which + * breaks synchronization using pin_tag(e,g, zs_free) so + * let's keep the lock bit. + */ + free_obj |= BIT(HANDLE_PIN_BIT); record_obj(handle, free_obj); unpin_tag(handle); obj_free(pool, class, used_obj); --- 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/bridge_loop_avoidance.c +++ linux-raspi2-4.2.0/net/batman-adv/bridge_loop_avoidance.c @@ -126,21 +126,17 @@ } /* finally deinitialize the claim */ -static void batadv_claim_free_rcu(struct rcu_head *rcu) +static void batadv_claim_release(struct batadv_bla_claim *claim) { - struct batadv_bla_claim *claim; - - claim = container_of(rcu, struct batadv_bla_claim, rcu); - batadv_backbone_gw_free_ref(claim->backbone_gw); - kfree(claim); + kfree_rcu(claim, rcu); } /* free a claim, call claim_free_rcu if its the last reference */ static void batadv_claim_free_ref(struct batadv_bla_claim *claim) { if (atomic_dec_and_test(&claim->refcount)) - call_rcu(&claim->rcu, batadv_claim_free_rcu); + batadv_claim_release(claim); } /** --- 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/hard-interface.c +++ linux-raspi2-4.2.0/net/batman-adv/hard-interface.c @@ -75,6 +75,28 @@ } /** + * batadv_mutual_parents - check if two devices are each others parent + * @dev1: 1st net_device + * @dev2: 2nd net_device + * + * veth devices come in pairs and each is the parent of the other! + * + * Return: true if the devices are each others parent, otherwise false + */ +static bool batadv_mutual_parents(const struct net_device *dev1, + const struct net_device *dev2) +{ + int dev1_parent_iflink = dev_get_iflink(dev1); + int dev2_parent_iflink = dev_get_iflink(dev2); + + if (!dev1_parent_iflink || !dev2_parent_iflink) + return false; + + return (dev1_parent_iflink == dev2->ifindex) && + (dev2_parent_iflink == dev1->ifindex); +} + +/** * batadv_is_on_batman_iface - check if a device is a batman iface descendant * @net_dev: the device to check * @@ -107,6 +129,9 @@ if (WARN(!parent_dev, "Cannot find parent device")) return false; + if (batadv_mutual_parents(net_dev, parent_dev)) + return false; + ret = batadv_is_on_batman_iface(parent_dev); return ret; --- linux-raspi2-4.2.0.orig/net/batman-adv/hard-interface.h +++ linux-raspi2-4.2.0/net/batman-adv/hard-interface.h @@ -75,18 +75,6 @@ call_rcu(&hard_iface->rcu, batadv_hardif_free_rcu); } -/** - * batadv_hardif_free_ref_now - decrement the hard interface refcounter and - * possibly free it (without rcu callback) - * @hard_iface: the hard interface to free - */ -static inline void -batadv_hardif_free_ref_now(struct batadv_hard_iface *hard_iface) -{ - if (atomic_dec_and_test(&hard_iface->refcount)) - batadv_hardif_free_rcu(&hard_iface->rcu); -} - static inline struct batadv_hard_iface * batadv_primary_if_get_selected(struct batadv_priv *bat_priv) { --- 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); } /** @@ -203,28 +204,25 @@ } /** - * batadv_nc_node_free_rcu - rcu callback to free an nc node and remove - * its refcount on the orig_node - * @rcu: rcu pointer of the nc node + * batadv_nc_node_release - release nc_node from lists and queue for free after + * rcu grace period + * @nc_node: the nc node to free */ -static void batadv_nc_node_free_rcu(struct rcu_head *rcu) +static void batadv_nc_node_release(struct batadv_nc_node *nc_node) { - struct batadv_nc_node *nc_node; - - nc_node = container_of(rcu, struct batadv_nc_node, rcu); batadv_orig_node_free_ref(nc_node->orig_node); - kfree(nc_node); + kfree_rcu(nc_node, rcu); } /** - * batadv_nc_node_free_ref - decrements the nc node refcounter and possibly - * frees it + * batadv_nc_node_free_ref - decrement the nc node refcounter and possibly + * release it * @nc_node: the nc node to free */ static void batadv_nc_node_free_ref(struct batadv_nc_node *nc_node) { if (atomic_dec_and_test(&nc_node->refcount)) - call_rcu(&nc_node->rcu, batadv_nc_node_free_rcu); + batadv_nc_node_release(nc_node); } /** @@ -894,7 +892,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 @@ -162,92 +162,66 @@ } /** - * batadv_neigh_ifinfo_free_rcu - free the neigh_ifinfo object - * @rcu: rcu pointer of the neigh_ifinfo object - */ -static void batadv_neigh_ifinfo_free_rcu(struct rcu_head *rcu) -{ - struct batadv_neigh_ifinfo *neigh_ifinfo; - - neigh_ifinfo = container_of(rcu, struct batadv_neigh_ifinfo, rcu); - - if (neigh_ifinfo->if_outgoing != BATADV_IF_DEFAULT) - batadv_hardif_free_ref_now(neigh_ifinfo->if_outgoing); - - kfree(neigh_ifinfo); -} - -/** - * batadv_neigh_ifinfo_free_now - decrement the refcounter and possibly free - * the neigh_ifinfo (without rcu callback) + * batadv_neigh_ifinfo_release - release neigh_ifinfo from lists and queue for + * free after rcu grace period * @neigh_ifinfo: the neigh_ifinfo object to release */ static void -batadv_neigh_ifinfo_free_ref_now(struct batadv_neigh_ifinfo *neigh_ifinfo) +batadv_neigh_ifinfo_release(struct batadv_neigh_ifinfo *neigh_ifinfo) { - if (atomic_dec_and_test(&neigh_ifinfo->refcount)) - batadv_neigh_ifinfo_free_rcu(&neigh_ifinfo->rcu); + if (neigh_ifinfo->if_outgoing != BATADV_IF_DEFAULT) + batadv_hardif_free_ref(neigh_ifinfo->if_outgoing); + + kfree_rcu(neigh_ifinfo, rcu); } /** - * batadv_neigh_ifinfo_free_ref - decrement the refcounter and possibly free + * batadv_neigh_ifinfo_free_ref - decrement the refcounter and possibly release * the neigh_ifinfo * @neigh_ifinfo: the neigh_ifinfo object to release */ void batadv_neigh_ifinfo_free_ref(struct batadv_neigh_ifinfo *neigh_ifinfo) { if (atomic_dec_and_test(&neigh_ifinfo->refcount)) - call_rcu(&neigh_ifinfo->rcu, batadv_neigh_ifinfo_free_rcu); + batadv_neigh_ifinfo_release(neigh_ifinfo); } /** * batadv_neigh_node_free_rcu - free the neigh_node - * @rcu: rcu pointer of the neigh_node + * batadv_neigh_node_release - release neigh_node from lists and queue for + * free after rcu grace period + * @neigh_node: neigh neighbor to free */ -static void batadv_neigh_node_free_rcu(struct rcu_head *rcu) +static void batadv_neigh_node_release(struct batadv_neigh_node *neigh_node) { struct hlist_node *node_tmp; - struct batadv_neigh_node *neigh_node; struct batadv_neigh_ifinfo *neigh_ifinfo; struct batadv_algo_ops *bao; - neigh_node = container_of(rcu, struct batadv_neigh_node, rcu); bao = neigh_node->orig_node->bat_priv->bat_algo_ops; hlist_for_each_entry_safe(neigh_ifinfo, node_tmp, &neigh_node->ifinfo_list, list) { - batadv_neigh_ifinfo_free_ref_now(neigh_ifinfo); + batadv_neigh_ifinfo_free_ref(neigh_ifinfo); } if (bao->bat_neigh_free) bao->bat_neigh_free(neigh_node); - batadv_hardif_free_ref_now(neigh_node->if_incoming); - - kfree(neigh_node); -} + batadv_hardif_free_ref(neigh_node->if_incoming); -/** - * batadv_neigh_node_free_ref_now - decrement the neighbors refcounter - * and possibly free it (without rcu callback) - * @neigh_node: neigh neighbor to free - */ -static void -batadv_neigh_node_free_ref_now(struct batadv_neigh_node *neigh_node) -{ - if (atomic_dec_and_test(&neigh_node->refcount)) - batadv_neigh_node_free_rcu(&neigh_node->rcu); + kfree_rcu(neigh_node, rcu); } /** * batadv_neigh_node_free_ref - decrement the neighbors refcounter - * and possibly free it + * and possibly release it * @neigh_node: neigh neighbor to free */ void batadv_neigh_node_free_ref(struct batadv_neigh_node *neigh_node) { if (atomic_dec_and_test(&neigh_node->refcount)) - call_rcu(&neigh_node->rcu, batadv_neigh_node_free_rcu); + batadv_neigh_node_release(neigh_node); } /** @@ -513,108 +487,99 @@ } /** - * batadv_orig_ifinfo_free_rcu - free the orig_ifinfo object - * @rcu: rcu pointer of the orig_ifinfo object + * batadv_orig_ifinfo_release - release orig_ifinfo from lists and queue for + * free after rcu grace period + * @orig_ifinfo: the orig_ifinfo object to release */ -static void batadv_orig_ifinfo_free_rcu(struct rcu_head *rcu) +static void batadv_orig_ifinfo_release(struct batadv_orig_ifinfo *orig_ifinfo) { - struct batadv_orig_ifinfo *orig_ifinfo; struct batadv_neigh_node *router; - orig_ifinfo = container_of(rcu, struct batadv_orig_ifinfo, rcu); - if (orig_ifinfo->if_outgoing != BATADV_IF_DEFAULT) - batadv_hardif_free_ref_now(orig_ifinfo->if_outgoing); + batadv_hardif_free_ref(orig_ifinfo->if_outgoing); /* this is the last reference to this object */ router = rcu_dereference_protected(orig_ifinfo->router, true); if (router) - batadv_neigh_node_free_ref_now(router); - kfree(orig_ifinfo); + batadv_neigh_node_free_ref(router); + + kfree_rcu(orig_ifinfo, rcu); } /** - * batadv_orig_ifinfo_free_ref - decrement the refcounter and possibly free - * the orig_ifinfo (without rcu callback) + * batadv_orig_ifinfo_free_ref - decrement the refcounter and possibly release + * the orig_ifinfo * @orig_ifinfo: the orig_ifinfo object to release */ -static void -batadv_orig_ifinfo_free_ref_now(struct batadv_orig_ifinfo *orig_ifinfo) +void batadv_orig_ifinfo_free_ref(struct batadv_orig_ifinfo *orig_ifinfo) { if (atomic_dec_and_test(&orig_ifinfo->refcount)) - batadv_orig_ifinfo_free_rcu(&orig_ifinfo->rcu); + batadv_orig_ifinfo_release(orig_ifinfo); } /** - * batadv_orig_ifinfo_free_ref - decrement the refcounter and possibly free - * the orig_ifinfo - * @orig_ifinfo: the orig_ifinfo object to release + * batadv_orig_node_free_rcu - free the orig_node + * @rcu: rcu pointer of the orig_node */ -void batadv_orig_ifinfo_free_ref(struct batadv_orig_ifinfo *orig_ifinfo) +static void batadv_orig_node_free_rcu(struct rcu_head *rcu) { - if (atomic_dec_and_test(&orig_ifinfo->refcount)) - call_rcu(&orig_ifinfo->rcu, batadv_orig_ifinfo_free_rcu); + struct batadv_orig_node *orig_node; + + orig_node = container_of(rcu, struct batadv_orig_node, rcu); + + batadv_mcast_purge_orig(orig_node); + + batadv_frag_purge_orig(orig_node, NULL); + + if (orig_node->bat_priv->bat_algo_ops->bat_orig_free) + orig_node->bat_priv->bat_algo_ops->bat_orig_free(orig_node); + + kfree(orig_node->tt_buff); + kfree(orig_node); } -static void batadv_orig_node_free_rcu(struct rcu_head *rcu) +/** + * batadv_orig_node_release - release orig_node from lists and queue for + * free after rcu grace period + * @orig_node: the orig node to free + */ +static void batadv_orig_node_release(struct batadv_orig_node *orig_node) { struct hlist_node *node_tmp; struct batadv_neigh_node *neigh_node; - struct batadv_orig_node *orig_node; struct batadv_orig_ifinfo *orig_ifinfo; - orig_node = container_of(rcu, struct batadv_orig_node, rcu); - spin_lock_bh(&orig_node->neigh_list_lock); /* for all neighbors towards this originator ... */ hlist_for_each_entry_safe(neigh_node, node_tmp, &orig_node->neigh_list, list) { hlist_del_rcu(&neigh_node->list); - batadv_neigh_node_free_ref_now(neigh_node); + batadv_neigh_node_free_ref(neigh_node); } hlist_for_each_entry_safe(orig_ifinfo, node_tmp, &orig_node->ifinfo_list, list) { hlist_del_rcu(&orig_ifinfo->list); - batadv_orig_ifinfo_free_ref_now(orig_ifinfo); + batadv_orig_ifinfo_free_ref(orig_ifinfo); } spin_unlock_bh(&orig_node->neigh_list_lock); - batadv_mcast_purge_orig(orig_node); - /* Free nc_nodes */ batadv_nc_purge_orig(orig_node->bat_priv, orig_node, NULL); - batadv_frag_purge_orig(orig_node, NULL); - - if (orig_node->bat_priv->bat_algo_ops->bat_orig_free) - orig_node->bat_priv->bat_algo_ops->bat_orig_free(orig_node); - - kfree(orig_node->tt_buff); - kfree(orig_node); + call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); } /** * batadv_orig_node_free_ref - decrement the orig node refcounter and possibly - * schedule an rcu callback for freeing it + * release it * @orig_node: the orig node to free */ void batadv_orig_node_free_ref(struct batadv_orig_node *orig_node) { if (atomic_dec_and_test(&orig_node->refcount)) - call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); -} - -/** - * batadv_orig_node_free_ref_now - decrement the orig node refcounter and - * possibly free it (without rcu callback) - * @orig_node: the orig node to free - */ -void batadv_orig_node_free_ref_now(struct batadv_orig_node *orig_node) -{ - if (atomic_dec_and_test(&orig_node->refcount)) - batadv_orig_node_free_rcu(&orig_node->rcu); + batadv_orig_node_release(orig_node); } void batadv_originator_free(struct batadv_priv *bat_priv) @@ -696,8 +661,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/originator.h +++ linux-raspi2-4.2.0/net/batman-adv/originator.h @@ -38,7 +38,6 @@ void batadv_originator_free(struct batadv_priv *bat_priv); void batadv_purge_orig_ref(struct batadv_priv *bat_priv); void batadv_orig_node_free_ref(struct batadv_orig_node *orig_node); -void batadv_orig_node_free_ref_now(struct batadv_orig_node *orig_node); struct batadv_orig_node *batadv_orig_node_new(struct batadv_priv *bat_priv, const uint8_t *addr); struct batadv_neigh_node * --- 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 @@ -237,20 +238,6 @@ return count; } -static void batadv_tt_orig_list_entry_free_rcu(struct rcu_head *rcu) -{ - struct batadv_tt_orig_list_entry *orig_entry; - - orig_entry = container_of(rcu, struct batadv_tt_orig_list_entry, rcu); - - /* We are in an rcu callback here, therefore we cannot use - * batadv_orig_node_free_ref() and its call_rcu(): - * An rcu_barrier() wouldn't wait for that to finish - */ - batadv_orig_node_free_ref_now(orig_entry->orig_node); - kfree(orig_entry); -} - /** * batadv_tt_local_size_mod - change the size by v of the local table identified * by vid @@ -346,13 +333,25 @@ batadv_tt_global_size_mod(orig_node, vid, -1); } +/** + * batadv_tt_orig_list_entry_release - release tt orig entry from lists and + * queue for free after rcu grace period + * @orig_entry: tt orig entry to be free'd + */ +static void +batadv_tt_orig_list_entry_release(struct batadv_tt_orig_list_entry *orig_entry) +{ + batadv_orig_node_free_ref(orig_entry->orig_node); + kfree_rcu(orig_entry, rcu); +} + static void batadv_tt_orig_list_entry_free_ref(struct batadv_tt_orig_list_entry *orig_entry) { if (!atomic_dec_and_test(&orig_entry->refcount)) return; - call_rcu(&orig_entry->rcu, batadv_tt_orig_list_entry_free_rcu); + batadv_tt_orig_list_entry_release(orig_entry); } /** @@ -1882,7 +1881,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 +2840,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 +3342,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); @@ -7133,6 +7135,10 @@ return mgmt_cmd_status(sk, hdev->id, MGMT_OP_ADD_ADVERTISING, status); + if (data_len != sizeof(*cp) + cp->adv_data_len + cp->scan_rsp_len) + return mgmt_cmd_status(sk, hdev->id, MGMT_OP_ADD_ADVERTISING, + MGMT_STATUS_INVALID_PARAMS); + flags = __le32_to_cpu(cp->flags); timeout = __le16_to_cpu(cp->timeout); duration = __le16_to_cpu(cp->duration); --- 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 */ @@ -3001,8 +3001,13 @@ BT_DBG("chan %p", chan); + /* No need to call l2cap_chan_hold() here since we already own + * the reference taken in smp_new_conn_cb(). This is just the + * first time that we tie it to a specific pointer. The code in + * l2cap_core.c ensures that there's no risk this function wont + * get called if smp_new_conn_cb was previously called. + */ conn->smp = chan; - l2cap_chan_hold(chan); if (hcon->type == ACL_LINK && test_bit(HCI_CONN_ENCRYPT, &hcon->flags)) bredr_pairing(chan); --- linux-raspi2-4.2.0.orig/net/bridge/br.c +++ linux-raspi2-4.2.0/net/bridge/br.c @@ -121,6 +121,7 @@ .notifier_call = br_device_event }; +/* called with RTNL */ static int br_switchdev_event(struct notifier_block *unused, unsigned long event, void *ptr) { @@ -130,7 +131,6 @@ struct switchdev_notifier_fdb_info *fdb_info; int err = NOTIFY_DONE; - rtnl_lock(); p = br_port_get_rtnl(dev); if (!p) goto out; @@ -155,7 +155,6 @@ } out: - rtnl_unlock(); return err; } --- linux-raspi2-4.2.0.orig/net/bridge/br_device.c +++ linux-raspi2-4.2.0/net/bridge/br_device.c @@ -28,6 +28,8 @@ const struct nf_br_ops __rcu *nf_br_ops __read_mostly; EXPORT_SYMBOL_GPL(nf_br_ops); +static struct lock_class_key bridge_netdev_addr_lock_key; + /* net device transmit always called with BH disabled */ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) { @@ -87,6 +89,11 @@ return NETDEV_TX_OK; } +static void br_set_lockdep_class(struct net_device *dev) +{ + lockdep_set_class(&dev->addr_list_lock, &bridge_netdev_addr_lock_key); +} + static int br_dev_init(struct net_device *dev) { struct net_bridge *br = netdev_priv(dev); @@ -99,6 +106,7 @@ err = br_vlan_init(br); if (err) free_percpu(br->stats); + br_set_lockdep_class(dev); return err; } --- 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/bridge/br_stp_if.c +++ linux-raspi2-4.2.0/net/bridge/br_stp_if.c @@ -130,7 +130,10 @@ char *envp[] = { NULL }; struct net_bridge_port *p; - r = call_usermodehelper(BR_STP_PROG, argv, envp, UMH_WAIT_PROC); + if (net_eq(dev_net(br->dev), &init_net)) + r = call_usermodehelper(BR_STP_PROG, argv, envp, UMH_WAIT_PROC); + else + r = -ENOENT; spin_lock_bh(&br->lock); --- 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/ceph/messenger.c +++ linux-raspi2-4.2.0/net/ceph/messenger.c @@ -675,6 +675,8 @@ } con->in_seq = 0; con->in_seq_acked = 0; + + con->out_skip = 0; } /* @@ -774,6 +776,8 @@ static void con_out_kvec_reset(struct ceph_connection *con) { + BUG_ON(con->out_skip); + con->out_kvec_left = 0; con->out_kvec_bytes = 0; con->out_kvec_cur = &con->out_kvec[0]; @@ -782,9 +786,9 @@ static void con_out_kvec_add(struct ceph_connection *con, size_t size, void *data) { - int index; + int index = con->out_kvec_left; - index = con->out_kvec_left; + BUG_ON(con->out_skip); BUG_ON(index >= ARRAY_SIZE(con->out_kvec)); con->out_kvec[index].iov_len = size; @@ -793,6 +797,27 @@ con->out_kvec_bytes += size; } +/* + * Chop off a kvec from the end. Return residual number of bytes for + * that kvec, i.e. how many bytes would have been written if the kvec + * hadn't been nuked. + */ +static int con_out_kvec_skip(struct ceph_connection *con) +{ + int off = con->out_kvec_cur - con->out_kvec; + int skip = 0; + + if (con->out_kvec_bytes > 0) { + skip = con->out_kvec[off + con->out_kvec_left - 1].iov_len; + BUG_ON(con->out_kvec_bytes < skip); + BUG_ON(!con->out_kvec_left); + con->out_kvec_bytes -= skip; + con->out_kvec_left--; + } + + return skip; +} + #ifdef CONFIG_BLOCK /* @@ -1178,6 +1203,13 @@ return new_piece; } +static size_t sizeof_footer(struct ceph_connection *con) +{ + return (con->peer_features & CEPH_FEATURE_MSG_AUTH) ? + sizeof(struct ceph_msg_footer) : + sizeof(struct ceph_msg_footer_old); +} + static void prepare_message_data(struct ceph_msg *msg, u32 data_len) { BUG_ON(!msg); @@ -1200,7 +1232,6 @@ m->footer.flags |= CEPH_MSG_FOOTER_COMPLETE; dout("prepare_write_message_footer %p\n", con); - con->out_kvec_is_msg = true; con->out_kvec[v].iov_base = &m->footer; if (con->peer_features & CEPH_FEATURE_MSG_AUTH) { if (con->ops->sign_message) @@ -1228,7 +1259,6 @@ u32 crc; con_out_kvec_reset(con); - con->out_kvec_is_msg = true; con->out_msg_done = false; /* Sneak an ack in there first? If we can get it into the same @@ -1268,18 +1298,19 @@ /* tag + hdr + front + middle */ con_out_kvec_add(con, sizeof (tag_msg), &tag_msg); - con_out_kvec_add(con, sizeof (m->hdr), &m->hdr); + con_out_kvec_add(con, sizeof(con->out_hdr), &con->out_hdr); con_out_kvec_add(con, m->front.iov_len, m->front.iov_base); if (m->middle) con_out_kvec_add(con, m->middle->vec.iov_len, m->middle->vec.iov_base); - /* fill in crc (except data pages), footer */ + /* fill in hdr crc and finalize hdr */ crc = crc32c(0, &m->hdr, offsetof(struct ceph_msg_header, crc)); con->out_msg->hdr.crc = cpu_to_le32(crc); - con->out_msg->footer.flags = 0; + memcpy(&con->out_hdr, &con->out_msg->hdr, sizeof(con->out_hdr)); + /* fill in front and middle crc, footer */ crc = crc32c(0, m->front.iov_base, m->front.iov_len); con->out_msg->footer.front_crc = cpu_to_le32(crc); if (m->middle) { @@ -1291,6 +1322,7 @@ dout("%s front_crc %u middle_crc %u\n", __func__, le32_to_cpu(con->out_msg->footer.front_crc), le32_to_cpu(con->out_msg->footer.middle_crc)); + con->out_msg->footer.flags = 0; /* is there a data payload? */ con->out_msg->footer.data_crc = 0; @@ -1485,7 +1517,6 @@ } } con->out_kvec_left = 0; - con->out_kvec_is_msg = false; ret = 1; out: dout("write_partial_kvec %p %d left in %d kvecs ret = %d\n", con, @@ -1577,6 +1608,7 @@ { int ret; + dout("%s %p %d left\n", __func__, con, con->out_skip); while (con->out_skip > 0) { size_t size = min(con->out_skip, (int) PAGE_CACHE_SIZE); @@ -2301,9 +2333,9 @@ ceph_pr_addr(&con->peer_addr.in_addr), seq, con->in_seq + 1); con->in_base_pos = -front_len - middle_len - data_len - - sizeof(m->footer); + sizeof_footer(con); con->in_tag = CEPH_MSGR_TAG_READY; - return 0; + return 1; } else if ((s64)seq - (s64)con->in_seq > 1) { pr_err("read_partial_message bad seq %lld expected %lld\n", seq, con->in_seq + 1); @@ -2333,10 +2365,10 @@ /* skip this message */ dout("alloc_msg said skip message\n"); con->in_base_pos = -front_len - middle_len - data_len - - sizeof(m->footer); + sizeof_footer(con); con->in_tag = CEPH_MSGR_TAG_READY; con->in_seq++; - return 0; + return 1; } BUG_ON(!con->in_msg); @@ -2493,13 +2525,13 @@ more_kvec: /* kvec data queued? */ - if (con->out_skip) { - ret = write_partial_skip(con); + if (con->out_kvec_left) { + ret = write_partial_kvec(con); if (ret <= 0) goto out; } - if (con->out_kvec_left) { - ret = write_partial_kvec(con); + if (con->out_skip) { + ret = write_partial_skip(con); if (ret <= 0) goto out; } @@ -3033,16 +3065,31 @@ ceph_msg_put(msg); } if (con->out_msg == msg) { - dout("%s %p msg %p - was sending\n", __func__, con, msg); - con->out_msg = NULL; - if (con->out_kvec_is_msg) { - con->out_skip = con->out_kvec_bytes; - con->out_kvec_is_msg = false; - } - msg->hdr.seq = 0; + BUG_ON(con->out_skip); + /* footer */ + if (con->out_msg_done) { + con->out_skip += con_out_kvec_skip(con); + } else { + BUG_ON(!msg->data_length); + if (con->peer_features & CEPH_FEATURE_MSG_AUTH) + con->out_skip += sizeof(msg->footer); + else + con->out_skip += sizeof(msg->old_footer); + } + /* data, middle, front */ + if (msg->data_length) + con->out_skip += msg->cursor.total_resid; + if (msg->middle) + con->out_skip += con_out_kvec_skip(con); + con->out_skip += con_out_kvec_skip(con); + dout("%s %p msg %p - was sending, will write %d skip %d\n", + __func__, con, msg, con->out_kvec_bytes, con->out_skip); + msg->hdr.seq = 0; + con->out_msg = NULL; ceph_msg_put(msg); } + mutex_unlock(&con->mutex); } --- linux-raspi2-4.2.0.orig/net/core/dev.c +++ linux-raspi2-4.2.0/net/core/dev.c @@ -2512,6 +2512,8 @@ * * It may return NULL if the skb requires no segmentation. This is * only possible when GSO is used for verifying header integrity. + * + * Segmentation preserves SKB_SGO_CB_OFFSET bytes of previous skb cb. */ struct sk_buff *__skb_gso_segment(struct sk_buff *skb, netdev_features_t features, bool tx_path) @@ -2526,6 +2528,9 @@ return ERR_PTR(err); } + BUILD_BUG_ON(SKB_SGO_CB_OFFSET + + sizeof(*SKB_GSO_CB(skb)) > sizeof(skb->cb)); + SKB_GSO_CB(skb)->mac_offset = skb_headroom(skb); SKB_GSO_CB(skb)->encap_level = 0; @@ -6060,6 +6065,7 @@ * dev_get_phys_port_name - Get device physical port name * @dev: device * @name: port name + * @len: limit of bytes to copy to name * * Get device physical port name */ --- linux-raspi2-4.2.0.orig/net/core/dst.c +++ linux-raspi2-4.2.0/net/core/dst.c @@ -282,12 +282,13 @@ { if (dst) { int newrefcnt; + unsigned short nocache = dst->flags & DST_NOCACHE; newrefcnt = atomic_dec_return(&dst->__refcnt); 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(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 @@ -779,6 +779,11 @@ if (ftest->k == 0) return -EINVAL; break; + case BPF_ALU | BPF_LSH | BPF_K: + case BPF_ALU | BPF_RSH | BPF_K: + if (ftest->k >= 32) + return -EINVAL; + break; case BPF_LD | BPF_MEM: case BPF_LDX | BPF_MEM: case BPF_ST: @@ -1412,6 +1417,7 @@ return dev_forward_skb(dev, skb2); skb2->dev = dev; + skb_sender_cpu_clear(skb2); return dev_queue_xmit(skb2); } @@ -1701,9 +1707,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; @@ -192,7 +193,6 @@ case htons(ETH_P_IPV6): { const struct ipv6hdr *iph; struct ipv6hdr _iph; - __be32 flow_label; ipv6: iph = __skb_header_pointer(skb, nhoff, sizeof(_iph), data, hlen, &_iph); @@ -214,8 +214,9 @@ key_control->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; } - flow_label = ip6_flowlabel(iph); - if (flow_label) { + if (skb && ip6_flowlabel(iph)) { + __be32 flow_label = ip6_flowlabel(iph); + if (skb_flow_dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_FLOW_LABEL)) { key_tags = skb_flow_dissector_target(flow_dissector, @@ -381,6 +382,13 @@ return false; proto = eth->h_proto; nhoff += sizeof(*eth); + + /* Cap headers that we access via pointers at the + * end of the Ethernet header as our maximum alignment + * at that point is only 2 bytes. + */ + if (NET_IP_ALIGN) + hlen = nhoff; } goto again; } @@ -557,7 +565,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 +617,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 +631,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 +735,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 @@ -87,6 +87,7 @@ *fplp = fpl; fpl->count = 0; fpl->max = SCM_MAX_FD; + fpl->user = NULL; } fpp = &fpl->fp[fpl->count]; @@ -107,6 +108,10 @@ *fpp++ = file; fpl->count++; } + + if (!fpl->user) + fpl->user = get_uid(current_user()); + return num; } @@ -119,6 +124,7 @@ scm->fp = NULL; for (i=fpl->count-1; i>=0; i--) fput(fpl->fp[i]); + free_uid(fpl->user); kfree(fpl); } } @@ -305,6 +311,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; } @@ -334,6 +342,7 @@ for (i = 0; i < fpl->count; i++) get_file(fpl->fp[i]); new_fpl->max = new_fpl->count; + new_fpl->user = get_uid(fpl->user); } return new_fpl; } --- linux-raspi2-4.2.0.orig/net/core/skbuff.c +++ linux-raspi2-4.2.0/net/core/skbuff.c @@ -79,6 +79,8 @@ struct kmem_cache *skbuff_head_cache __read_mostly; static struct kmem_cache *skbuff_fclone_cache __read_mostly; +int sysctl_max_skb_frags __read_mostly = MAX_SKB_FRAGS; +EXPORT_SYMBOL(sysctl_max_skb_frags); /** * skb_panic - private function for out-of-line support @@ -2958,11 +2960,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 +3645,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 +4271,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; @@ -1537,7 +1536,7 @@ */ is_charged = sk_filter_charge(newsk, filter); - if (unlikely(!is_charged || xfrm_sk_clone_policy(newsk))) { + if (unlikely(!is_charged || xfrm_sk_clone_policy(newsk, sk))) { /* It is still raw copy of parent, so invalidate * destructor and make plain sk_free() */ newsk->sk_destruct = NULL; --- 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/core/sysctl_net_core.c +++ linux-raspi2-4.2.0/net/core/sysctl_net_core.c @@ -26,6 +26,7 @@ static int one = 1; static int min_sndbuf = SOCK_MIN_SNDBUF; static int min_rcvbuf = SOCK_MIN_RCVBUF; +static int max_skb_frags = MAX_SKB_FRAGS; static int net_msg_warn; /* Unused, but still a sysctl */ @@ -392,6 +393,15 @@ .mode = 0644, .proc_handler = proc_dointvec }, + { + .procname = "max_skb_frags", + .data = &sysctl_max_skb_frags, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = &one, + .extra2 = &max_skb_frags, + }, { } }; --- 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. */ @@ -1428,6 +1431,13 @@ return err; } +static int ipip_gro_complete(struct sk_buff *skb, int nhoff) +{ + skb->encapsulation = 1; + skb_shinfo(skb)->gso_type |= SKB_GSO_IPIP; + return inet_gro_complete(skb, nhoff); +} + int inet_ctl_sock_create(struct sock **sk, unsigned short family, unsigned short type, unsigned char protocol, struct net *net) @@ -1643,7 +1653,7 @@ .callbacks = { .gso_segment = inet_gso_segment, .gro_receive = inet_gro_receive, - .gro_complete = inet_gro_complete, + .gro_complete = ipip_gro_complete, }, }; --- 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/devinet.c +++ linux-raspi2-4.2.0/net/ipv4/devinet.c @@ -334,6 +334,9 @@ ASSERT_RTNL(); + if (in_dev->dead) + goto no_promotions; + /* 1. Deleting primary ifaddr forces deletion all secondaries * unless alias promotion is set **/ @@ -380,6 +383,7 @@ fib_del_ifaddr(ifa, ifa1); } +no_promotions: /* 2. Unlink it */ *ifap = ifa1->ifa_next; @@ -1845,7 +1849,7 @@ if (err < 0) goto errout; - err = EINVAL; + err = -EINVAL; if (!tb[NETCONFA_IFINDEX]) goto errout; --- linux-raspi2-4.2.0.orig/net/ipv4/fib_frontend.c +++ linux-raspi2-4.2.0/net/ipv4/fib_frontend.c @@ -876,6 +876,9 @@ subnet = 1; } + if (in_dev->dead) + goto no_promotions; + /* Deletion is more complicated than add. * We should take care of not to delete too much :-) * @@ -951,6 +954,7 @@ } } +no_promotions: if (!(ok & BRD_OK)) fib_magic(RTM_DELROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim); if (subnet && ifa->ifa_prefixlen < 31) { @@ -1063,9 +1067,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 +1098,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 +1115,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 +1136,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 @@ -353,9 +353,8 @@ skb_dst_set(skb, &rt->dst); skb->dev = dev; - skb->reserved_tailroom = skb_end_offset(skb) - - min(mtu, skb_end_offset(skb)); skb_reserve(skb, hlen); + skb_tailroom_reserve(skb, mtu, tlen); skb_reset_network_header(skb); pip = ip_hdr(skb); @@ -2102,7 +2101,7 @@ ASSERT_RTNL(); in_dev = ip_mc_find_dev(net, imr); - if (!in_dev) { + if (!imr->imr_ifindex && !imr->imr_address.s_addr && !in_dev) { ret = -ENODEV; goto out; } @@ -2123,7 +2122,8 @@ *imlp = iml->next_rcu; - ip_mc_dec_group(in_dev, group); + if (in_dev) + ip_mc_dec_group(in_dev, group); /* decrease mem now to avoid the memleak warning */ atomic_sub(sizeof(*iml), &sk->sk_omem_alloc); @@ -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); @@ -240,6 +240,7 @@ * from host network stack. */ features = netif_skb_features(skb); + BUILD_BUG_ON(sizeof(*IPCB(skb)) > SKB_SGO_CB_OFFSET); segs = skb_gso_segment(skb, features & ~NETIF_F_GSO_MASK); if (IS_ERR_OR_NULL(segs)) { kfree_skb(skb); @@ -451,7 +452,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; @@ -918,7 +919,7 @@ if (((length > mtu) || (skb && skb_is_gso(skb))) && (sk->sk_protocol == IPPROTO_UDP) && (rt->dst.dev->features & NETIF_F_UFO) && !rt->dst.header_len && - (sk->sk_type == SOCK_DGRAM)) { + (sk->sk_type == SOCK_DGRAM) && !sk->sk_no_check_tx) { err = ip_ufo_append_data(sk, queue, getfrag, from, length, hh_len, fragheaderlen, transhdrlen, maxfraglen, flags); --- linux-raspi2-4.2.0.orig/net/ipv4/ip_sockglue.c +++ linux-raspi2-4.2.0/net/ipv4/ip_sockglue.c @@ -249,6 +249,8 @@ switch (cmsg->cmsg_type) { case IP_RETOPTS: err = cmsg->cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr)); + + /* Our caller is responsible for freeing ipc->opt */ err = ip_options_get(net, &ipc->opt, CMSG_DATA(cmsg), err < 40 ? err : 40); if (err) @@ -1251,11 +1253,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 +1282,8 @@ if (len < 0) return -EINVAL; + if (needs_rtnl) + rtnl_lock(); lock_sock(sk); switch (optname) { @@ -1386,39 +1401,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 +1496,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/netfilter/arp_tables.c +++ linux-raspi2-4.2.0/net/ipv4/netfilter/arp_tables.c @@ -370,6 +370,17 @@ return memcmp(arp, &uncond, sizeof(uncond)) == 0; } +static bool next_offset_ok(const struct xt_table_info *t, unsigned int newpos) +{ + if (newpos > t->size - sizeof(struct arpt_entry)) + return false; + + if (newpos % __alignof__(struct arpt_entry) != 0) + return false; + + return true; +} + /* Figures out from what hook each rule can be called: returns 0 if * there are loops. Puts hook bitmask in comefrom. */ @@ -441,6 +452,8 @@ /* Move along one */ size = e->next_offset; + if (!next_offset_ok(newinfo, pos + size)) + return 0; e = (struct arpt_entry *) (entry0 + pos + size); e->counters.pcnt = pos; @@ -451,14 +464,6 @@ if (strcmp(t->target.u.user.name, XT_STANDARD_TARGET) == 0 && newpos >= 0) { - if (newpos > newinfo->size - - sizeof(struct arpt_entry)) { - duprintf("mark_source_chains: " - "bad verdict (%i)\n", - newpos); - return 0; - } - /* This a jump; chase it. */ duprintf("Jump rule %u -> %u\n", pos, newpos); @@ -466,6 +471,10 @@ /* ... this is a fallthru */ newpos = pos + e->next_offset; } + + if (!next_offset_ok(newinfo, newpos)) + return 0; + e = (struct arpt_entry *) (entry0 + newpos); e->counters.pcnt = pos; --- linux-raspi2-4.2.0.orig/net/ipv4/netfilter/ip_tables.c +++ linux-raspi2-4.2.0/net/ipv4/netfilter/ip_tables.c @@ -438,6 +438,17 @@ #endif } +static bool next_offset_ok(const struct xt_table_info *t, unsigned int newpos) +{ + if (newpos > t->size - sizeof(struct ipt_entry)) + return false; + + if (newpos % __alignof__(struct ipt_entry) != 0) + return false; + + return true; +} + /* Figures out from what hook each rule can be called: returns 0 if there are loops. Puts hook bitmask in comefrom. */ static int @@ -514,6 +525,8 @@ /* Move along one */ size = e->next_offset; + if (!next_offset_ok(newinfo, pos + size)) + return 0; e = (struct ipt_entry *) (entry0 + pos + size); e->counters.pcnt = pos; @@ -524,13 +537,6 @@ if (strcmp(t->target.u.user.name, XT_STANDARD_TARGET) == 0 && newpos >= 0) { - if (newpos > newinfo->size - - sizeof(struct ipt_entry)) { - duprintf("mark_source_chains: " - "bad verdict (%i)\n", - newpos); - return 0; - } /* This a jump; chase it. */ duprintf("Jump rule %u -> %u\n", pos, newpos); @@ -538,6 +544,10 @@ /* ... this is a fallthru */ newpos = pos + e->next_offset; } + + if (!next_offset_ok(newinfo, newpos)) + return 0; + e = (struct ipt_entry *) (entry0 + newpos); e->counters.pcnt = pos; --- linux-raspi2-4.2.0.orig/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c +++ linux-raspi2-4.2.0/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c @@ -108,10 +108,18 @@ unsigned long event, void *ptr) { - struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev; + struct in_device *idev = ((struct in_ifaddr *)ptr)->ifa_dev; struct netdev_notifier_info info; - netdev_notifier_info_init(&info, dev); + /* The masq_dev_notifier will catch the case of the device going + * down. So if the inetdev is dead and being destroyed we have + * no work to do. Otherwise this is an individual address removal + * and we have to perform the flush. + */ + if (idev->dead) + return NOTIFY_DONE; + + netdev_notifier_info_init(&info, idev->dev); return masq_device_event(this, event, &info); } --- linux-raspi2-4.2.0.orig/net/ipv4/ping.c +++ linux-raspi2-4.2.0/net/ipv4/ping.c @@ -745,8 +745,10 @@ if (msg->msg_controllen) { err = ip_cmsg_send(sock_net(sk), msg, &ipc, false); - if (err) + if (unlikely(err)) { + kfree(ipc.opt); return err; + } if (ipc.opt) free = 1; } --- linux-raspi2-4.2.0.orig/net/ipv4/raw.c +++ linux-raspi2-4.2.0/net/ipv4/raw.c @@ -543,8 +543,10 @@ if (msg->msg_controllen) { err = ip_cmsg_send(sock_net(sk), msg, &ipc, false); - if (err) + if (unlikely(err)) { + kfree(ipc.opt); goto out; + } if (ipc.opt) free = 1; } --- linux-raspi2-4.2.0.orig/net/ipv4/route.c +++ linux-raspi2-4.2.0/net/ipv4/route.c @@ -125,6 +125,7 @@ static int ip_rt_min_pmtu __read_mostly = 512 + 20 + 20; static int ip_rt_min_advmss __read_mostly = 256; +static int ip_rt_gc_timeout __read_mostly = RT_GC_TIMEOUT; /* * Interface to generic destination cache. */ @@ -751,7 +752,7 @@ struct fib_nh *nh = &FIB_RES_NH(res); update_or_create_fnhe(nh, fl4->daddr, new_gw, - 0, 0); + 0, jiffies + ip_rt_gc_timeout); } if (kill_route) rt->dst.obsolete = DST_OBSOLETE_KILL; @@ -1536,6 +1537,36 @@ #endif } +static void ip_del_fnhe(struct fib_nh *nh, __be32 daddr) +{ + struct fnhe_hash_bucket *hash; + struct fib_nh_exception *fnhe, __rcu **fnhe_p; + u32 hval = fnhe_hashfun(daddr); + + spin_lock_bh(&fnhe_lock); + + hash = rcu_dereference_protected(nh->nh_exceptions, + lockdep_is_held(&fnhe_lock)); + hash += hval; + + fnhe_p = &hash->chain; + fnhe = rcu_dereference_protected(*fnhe_p, lockdep_is_held(&fnhe_lock)); + while (fnhe) { + if (fnhe->fnhe_daddr == daddr) { + rcu_assign_pointer(*fnhe_p, rcu_dereference_protected( + fnhe->fnhe_next, lockdep_is_held(&fnhe_lock))); + fnhe_flush_routes(fnhe); + kfree_rcu(fnhe, rcu); + break; + } + fnhe_p = &fnhe->fnhe_next; + fnhe = rcu_dereference_protected(fnhe->fnhe_next, + lockdep_is_held(&fnhe_lock)); + } + + spin_unlock_bh(&fnhe_lock); +} + /* called in rcu_read_lock() section */ static int __mkroute_input(struct sk_buff *skb, const struct fib_result *res, @@ -1590,11 +1621,20 @@ fnhe = find_exception(&FIB_RES_NH(*res), daddr); if (do_cache) { - if (fnhe) + if (fnhe) { rth = rcu_dereference(fnhe->fnhe_rth_input); - else - rth = rcu_dereference(FIB_RES_NH(*res).nh_rth_input); + if (rth && rth->dst.expires && + time_after(jiffies, rth->dst.expires)) { + ip_del_fnhe(&FIB_RES_NH(*res), daddr); + fnhe = NULL; + } else { + goto rt_cache; + } + } + + rth = rcu_dereference(FIB_RES_NH(*res).nh_rth_input); +rt_cache: if (rt_cache_valid(rth)) { skb_dst_set_noref(skb, &rth->dst); goto out; @@ -1943,19 +1983,29 @@ struct fib_nh *nh = &FIB_RES_NH(*res); fnhe = find_exception(nh, fl4->daddr); - if (fnhe) + if (fnhe) { prth = &fnhe->fnhe_rth_output; - else { - if (unlikely(fl4->flowi4_flags & - FLOWI_FLAG_KNOWN_NH && - !(nh->nh_gw && - nh->nh_scope == RT_SCOPE_LINK))) { - do_cache = false; - goto add; + rth = rcu_dereference(*prth); + if (rth && rth->dst.expires && + time_after(jiffies, rth->dst.expires)) { + ip_del_fnhe(nh, fl4->daddr); + fnhe = NULL; + } else { + goto rt_cache; } - prth = raw_cpu_ptr(nh->nh_pcpu_rth_output); } + + if (unlikely(fl4->flowi4_flags & + FLOWI_FLAG_KNOWN_NH && + !(nh->nh_gw && + nh->nh_scope == RT_SCOPE_LINK))) { + do_cache = false; + goto add; + } + prth = raw_cpu_ptr(nh->nh_pcpu_rth_output); rth = rcu_dereference(*prth); + +rt_cache: if (rt_cache_valid(rth)) { dst_hold(&rth->dst); return rth; @@ -2503,7 +2553,6 @@ } #ifdef CONFIG_SYSCTL -static int ip_rt_gc_timeout __read_mostly = RT_GC_TIMEOUT; static int ip_rt_gc_interval __read_mostly = 60 * HZ; static int ip_rt_gc_min_interval __read_mostly = HZ / 2; static int ip_rt_gc_elasticity __read_mostly = 8; --- 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.c +++ linux-raspi2-4.2.0/net/ipv4/tcp.c @@ -279,6 +279,7 @@ #include #include +#include #include int sysctl_tcp_fin_timeout __read_mostly = TCP_FIN_TIMEOUT; @@ -935,7 +936,7 @@ i = skb_shinfo(skb)->nr_frags; can_coalesce = skb_can_coalesce(skb, i, page, offset); - if (!can_coalesce && i >= MAX_SKB_FRAGS) { + if (!can_coalesce && i >= sysctl_max_skb_frags) { tcp_mark_push(tp, skb); goto new_segment; } @@ -1205,7 +1206,7 @@ if (!skb_can_coalesce(skb, i, pfrag->page, pfrag->offset)) { - if (i == MAX_SKB_FRAGS || !sg) { + if (i == sysctl_max_skb_frags || !sg) { tcp_mark_push(tp, skb); goto new_segment; } @@ -2634,6 +2635,7 @@ const struct inet_connection_sock *icsk = inet_csk(sk); u32 now = tcp_time_stamp; unsigned int start; + u64 rate64; u32 rate; memset(info, 0, sizeof(*info)); @@ -2698,15 +2700,17 @@ info->tcpi_total_retrans = tp->total_retrans; rate = READ_ONCE(sk->sk_pacing_rate); - info->tcpi_pacing_rate = rate != ~0U ? rate : ~0ULL; + rate64 = rate != ~0U ? rate : ~0ULL; + put_unaligned(rate64, &info->tcpi_pacing_rate); rate = READ_ONCE(sk->sk_max_pacing_rate); - info->tcpi_max_pacing_rate = rate != ~0U ? rate : ~0ULL; + rate64 = rate != ~0U ? rate : ~0ULL; + put_unaligned(rate64, &info->tcpi_max_pacing_rate); do { start = u64_stats_fetch_begin_irq(&tp->syncp); - info->tcpi_bytes_acked = tp->bytes_acked; - info->tcpi_bytes_received = tp->bytes_received; + put_unaligned(tp->bytes_acked, &info->tcpi_bytes_acked); + put_unaligned(tp->bytes_received, &info->tcpi_bytes_received); } while (u64_stats_fetch_retry_irq(&tp->syncp, start)); info->tcpi_segs_out = tp->segs_out; info->tcpi_segs_in = tp->segs_in; --- 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); @@ -705,7 +705,8 @@ outside socket context is ugly, certainly. What can I do? */ -static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack, +static void tcp_v4_send_ack(struct net *net, + struct sk_buff *skb, u32 seq, u32 ack, u32 win, u32 tsval, u32 tsecr, int oif, struct tcp_md5sig_key *key, int reply_flags, u8 tos) @@ -720,7 +721,6 @@ ]; } rep; struct ip_reply_arg arg; - struct net *net = dev_net(skb_dst(skb)->dev); memset(&rep.th, 0, sizeof(struct tcphdr)); memset(&arg, 0, sizeof(arg)); @@ -782,7 +782,8 @@ struct inet_timewait_sock *tw = inet_twsk(sk); struct tcp_timewait_sock *tcptw = tcp_twsk(sk); - tcp_v4_send_ack(skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt, + tcp_v4_send_ack(sock_net(sk), skb, + tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt, tcptw->tw_rcv_wnd >> tw->tw_rcv_wscale, tcp_time_stamp + tcptw->tw_ts_offset, tcptw->tw_ts_recent, @@ -801,8 +802,10 @@ /* sk->sk_state == TCP_LISTEN -> for regular TCP_SYN_RECV * sk->sk_state == TCP_SYN_RECV -> for Fast Open. */ - tcp_v4_send_ack(skb, (sk->sk_state == TCP_LISTEN) ? - tcp_rsk(req)->snt_isn + 1 : tcp_sk(sk)->snd_nxt, + u32 seq = (sk->sk_state == TCP_LISTEN) ? tcp_rsk(req)->snt_isn + 1 : + tcp_sk(sk)->snd_nxt; + + tcp_v4_send_ack(sock_net(sk), skb, seq, tcp_rsk(req)->rcv_nxt, req->rcv_wnd, tcp_time_stamp, req->ts_recent, @@ -922,7 +925,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 +1281,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 +1414,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 +1512,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 +1714,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_metrics.c +++ linux-raspi2-4.2.0/net/ipv4/tcp_metrics.c @@ -566,7 +566,7 @@ */ if (crtt > tp->srtt_us) { /* Set RTO like tcp_rtt_estimator(), but from cached RTT. */ - crtt /= 8 * USEC_PER_MSEC; + crtt /= 8 * USEC_PER_SEC / HZ; inet_csk(sk)->icsk_rto = crtt + max(2 * crtt, tcp_rto_min(sk)); } else if (tp->srtt_us == 0) { /* RFC6298: 5.7 We've failed to get a valid RTT sample from --- linux-raspi2-4.2.0.orig/net/ipv4/tcp_minisocks.c +++ linux-raspi2-4.2.0/net/ipv4/tcp_minisocks.c @@ -451,7 +451,7 @@ newtp->rcv_wup = newtp->copied_seq = newtp->rcv_nxt = treq->rcv_isn + 1; - newtp->segs_in = 0; + newtp->segs_in = 1; newtp->snd_sml = newtp->snd_una = newtp->snd_nxt = newtp->snd_up = treq->snt_isn + 1; @@ -813,6 +813,7 @@ int ret = 0; int state = child->sk_state; + tcp_sk(child)->segs_in += max_t(u16, 1, skb_shinfo(skb)->gso_segs); if (!sock_owned_by_user(child)) { ret = tcp_rcv_state_process(child, skb, tcp_hdr(skb), skb->len); --- 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/tcp_yeah.c +++ linux-raspi2-4.2.0/net/ipv4/tcp_yeah.c @@ -219,7 +219,7 @@ yeah->fast_count = 0; yeah->reno_count = max(yeah->reno_count>>1, 2U); - return tp->snd_cwnd - reduction; + return max_t(int, tp->snd_cwnd - reduction, 2); } static struct tcp_congestion_ops tcp_yeah __read_mostly = { --- linux-raspi2-4.2.0.orig/net/ipv4/udp.c +++ linux-raspi2-4.2.0/net/ipv4/udp.c @@ -963,8 +963,10 @@ if (msg->msg_controllen) { err = ip_cmsg_send(sock_net(sk), msg, &ipc, sk->sk_family == AF_INET6); - if (err) + if (unlikely(err)) { + kfree(ipc.opt); return err; + } if (ipc.opt) free = 1; connected = 0; @@ -1262,6 +1264,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 +1290,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 { @@ -1977,10 +1981,14 @@ if (!in_dev) return; - ours = ip_check_mc_rcu(in_dev, iph->daddr, iph->saddr, - iph->protocol); - if (!ours) - return; + /* we are supposed to accept bcast packets */ + if (skb->pkt_type == PACKET_MULTICAST) { + ours = ip_check_mc_rcu(in_dev, iph->daddr, iph->saddr, + iph->protocol); + if (!ours) + return; + } + sk = __udp4_lib_mcast_demux_lookup(net, uh->dest, iph->daddr, uh->source, iph->saddr, dif); } else if (skb->pkt_type == PACKET_HOST) { --- linux-raspi2-4.2.0.orig/net/ipv4/xfrm4_policy.c +++ linux-raspi2-4.2.0/net/ipv4/xfrm4_policy.c @@ -230,7 +230,7 @@ xfrm_dst_ifdown(dst, dev); } -static struct dst_ops xfrm4_dst_ops = { +static struct dst_ops xfrm4_dst_ops_template = { .family = AF_INET, .gc = xfrm4_garbage_collect, .update_pmtu = xfrm4_update_pmtu, @@ -244,7 +244,7 @@ static struct xfrm_policy_afinfo xfrm4_policy_afinfo = { .family = AF_INET, - .dst_ops = &xfrm4_dst_ops, + .dst_ops = &xfrm4_dst_ops_template, .dst_lookup = xfrm4_dst_lookup, .get_saddr = xfrm4_get_saddr, .decode_session = _decode_session4, @@ -266,7 +266,7 @@ { } }; -static int __net_init xfrm4_net_init(struct net *net) +static int __net_init xfrm4_net_sysctl_init(struct net *net) { struct ctl_table *table; struct ctl_table_header *hdr; @@ -294,7 +294,7 @@ return -ENOMEM; } -static void __net_exit xfrm4_net_exit(struct net *net) +static void __net_exit xfrm4_net_sysctl_exit(struct net *net) { struct ctl_table *table; @@ -306,12 +306,44 @@ if (!net_eq(net, &init_net)) kfree(table); } +#else /* CONFIG_SYSCTL */ +static int inline xfrm4_net_sysctl_init(struct net *net) +{ + return 0; +} + +static void inline xfrm4_net_sysctl_exit(struct net *net) +{ +} +#endif + +static int __net_init xfrm4_net_init(struct net *net) +{ + int ret; + + memcpy(&net->xfrm.xfrm4_dst_ops, &xfrm4_dst_ops_template, + sizeof(xfrm4_dst_ops_template)); + ret = dst_entries_init(&net->xfrm.xfrm4_dst_ops); + if (ret) + return ret; + + ret = xfrm4_net_sysctl_init(net); + if (ret) + dst_entries_destroy(&net->xfrm.xfrm4_dst_ops); + + return ret; +} + +static void __net_exit xfrm4_net_exit(struct net *net) +{ + xfrm4_net_sysctl_exit(net); + dst_entries_destroy(&net->xfrm.xfrm4_dst_ops); +} static struct pernet_operations __net_initdata xfrm4_net_ops = { .init = xfrm4_net_init, .exit = xfrm4_net_exit, }; -#endif static void __init xfrm4_policy_init(void) { @@ -320,13 +352,9 @@ void __init xfrm4_init(void) { - dst_entries_init(&xfrm4_dst_ops); - xfrm4_state_init(); xfrm4_policy_init(); xfrm4_protocol_init(); -#ifdef CONFIG_SYSCTL register_pernet_subsys(&xfrm4_net_ops); -#endif } --- linux-raspi2-4.2.0.orig/net/ipv6/addrconf.c +++ linux-raspi2-4.2.0/net/ipv6/addrconf.c @@ -195,6 +195,7 @@ .max_addresses = IPV6_MAX_ADDRESSES, .accept_ra_defrtr = 1, .accept_ra_from_local = 0, + .accept_ra_min_hop_limit= 1, .accept_ra_pinfo = 1, #ifdef CONFIG_IPV6_ROUTER_PREF .accept_ra_rtr_pref = 1, @@ -236,6 +237,7 @@ .max_addresses = IPV6_MAX_ADDRESSES, .accept_ra_defrtr = 1, .accept_ra_from_local = 0, + .accept_ra_min_hop_limit= 1, .accept_ra_pinfo = 1, #ifdef CONFIG_IPV6_ROUTER_PREF .accept_ra_rtr_pref = 1, @@ -343,6 +345,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 +419,7 @@ if (err) { ipv6_mc_destroy_dev(ndev); del_timer(&ndev->regen_timer); + snmp6_unregister_dev(ndev); goto err_release; } /* protected by rtnl_lock */ @@ -560,7 +569,7 @@ if (err < 0) goto errout; - err = EINVAL; + err = -EINVAL; if (!tb[NETCONFA_IFINDEX]) goto errout; @@ -2385,7 +2394,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 @@ -3416,6 +3425,7 @@ { struct inet6_dev *idev = ifp->idev; struct net_device *dev = idev->dev; + bool notify = false; addrconf_join_solict(dev, &ifp->addr); @@ -3461,7 +3471,7 @@ /* Because optimistic nodes can use this address, * notify listeners. If DAD fails, RTM_DELADDR is sent. */ - ipv6_ifa_notify(RTM_NEWADDR, ifp); + notify = true; } } @@ -3469,6 +3479,8 @@ out: spin_unlock(&ifp->lock); read_unlock_bh(&idev->lock); + if (notify) + ipv6_ifa_notify(RTM_NEWADDR, ifp); } static void addrconf_dad_start(struct inet6_ifaddr *ifp) @@ -4560,6 +4572,7 @@ array[DEVCONF_MAX_DESYNC_FACTOR] = cnf->max_desync_factor; array[DEVCONF_MAX_ADDRESSES] = cnf->max_addresses; array[DEVCONF_ACCEPT_RA_DEFRTR] = cnf->accept_ra_defrtr; + array[DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT] = cnf->accept_ra_min_hop_limit; array[DEVCONF_ACCEPT_RA_PINFO] = cnf->accept_ra_pinfo; #ifdef CONFIG_IPV6_ROUTER_PREF array[DEVCONF_ACCEPT_RA_RTR_PREF] = cnf->accept_ra_rtr_pref; @@ -5262,13 +5275,10 @@ goto out; } - if (!write) { - err = snprintf(str, sizeof(str), "%pI6", - &secret->secret); - if (err >= sizeof(str)) { - err = -EIO; - goto out; - } + err = snprintf(str, sizeof(str), "%pI6", &secret->secret); + if (err >= sizeof(str)) { + err = -EIO; + goto out; } err = proc_dostring(&lctl, write, buffer, lenp, ppos); @@ -5454,6 +5464,13 @@ .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec, + }, + { + .procname = "accept_ra_min_hop_limit", + .data = &ipv6_devconf.accept_ra_min_hop_limit, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec, }, { .procname = "accept_ra_pinfo", --- linux-raspi2-4.2.0.orig/net/ipv6/addrlabel.c +++ linux-raspi2-4.2.0/net/ipv6/addrlabel.c @@ -552,7 +552,7 @@ rcu_read_lock(); p = __ipv6_addr_label(net, addr, ipv6_addr_type(addr), ifal->ifal_index); - if (p && ip6addrlbl_hold(p)) + if (p && !ip6addrlbl_hold(p)) p = NULL; lseq = ip6addrlbl_table.seq; rcu_read_unlock(); --- 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 @@ -162,13 +162,18 @@ fl6.fl6_dport = inet->inet_dport; fl6.fl6_sport = inet->inet_sport; + if (!fl6.flowi6_oif) + fl6.flowi6_oif = np->sticky_pktinfo.ipi6_ifindex; + if (!fl6.flowi6_oif && (addr_type&IPV6_ADDR_MULTICAST)) fl6.flowi6_oif = np->mcast_oif; 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 +204,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_core.c +++ linux-raspi2-4.2.0/net/ipv6/exthdrs_core.c @@ -257,7 +257,11 @@ *fragoff = _frag_off; return hp->nexthdr; } - return -ENOENT; + if (!found) + return -ENOENT; + if (fragoff) + *fragoff = _frag_off; + break; } hdrlen = 8; } else if (nexthdr == NEXTHDR_AUTH) { --- 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_flowlabel.c +++ linux-raspi2-4.2.0/net/ipv6/ip6_flowlabel.c @@ -540,12 +540,13 @@ } spin_lock_bh(&ip6_sk_fl_lock); for (sflp = &np->ipv6_fl_list; - (sfl = rcu_dereference(*sflp)) != NULL; + (sfl = rcu_dereference_protected(*sflp, + lockdep_is_held(&ip6_sk_fl_lock))) != NULL; sflp = &sfl->next) { if (sfl->fl->label == freq.flr_label) { if (freq.flr_label == (np->flow_label&IPV6_FLOWLABEL_MASK)) np->flow_label &= ~IPV6_FLOWLABEL_MASK; - *sflp = rcu_dereference(sfl->next); + *sflp = sfl->next; spin_unlock_bh(&ip6_sk_fl_lock); fl_release(sfl->fl); kfree_rcu(sfl, rcu); --- 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 @@ -890,6 +890,7 @@ struct rt6_info *rt; #endif int err; + int flags = 0; /* The correct way to handle this would be to do * ip6_route_get_saddr, and then ip6_route_output; however, @@ -921,10 +922,13 @@ dst_release(*dst); *dst = NULL; } + + if (fl6->flowi6_oif) + flags |= RT6_LOOKUP_F_IFACE; } if (!*dst) - *dst = ip6_route_output(net, sk, fl6); + *dst = ip6_route_output_flags(net, sk, fl6, flags); err = (*dst)->error; if (err) @@ -1248,6 +1252,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 +1270,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 +1314,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. @@ -1335,7 +1335,7 @@ (skb && skb_is_gso(skb))) && (sk->sk_protocol == IPPROTO_UDP) && (rt->dst.dev->features & NETIF_F_UFO) && - (sk->sk_type == SOCK_DGRAM)) { + (sk->sk_type == SOCK_DGRAM) && !udp_get_no_check6_tx(sk)) { err = ip6_ufo_append_data(sk, queue, getfrag, from, length, hh_len, fragheaderlen, transhdrlen, mtu, flags, fl6); --- linux-raspi2-4.2.0.orig/net/ipv6/ip6_tunnel.c +++ linux-raspi2-4.2.0/net/ipv6/ip6_tunnel.c @@ -284,12 +284,12 @@ t = netdev_priv(dev); + dev->rtnl_link_ops = &ip6_link_ops; err = register_netdevice(dev); if (err < 0) goto out; strcpy(t->parms.name, dev->name); - dev->rtnl_link_ops = &ip6_link_ops; dev_hold(dev); ip6_tnl_link(ip6n, t); --- 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 @@ -1574,9 +1574,8 @@ return NULL; skb->priority = TC_PRIO_CONTROL; - skb->reserved_tailroom = skb_end_offset(skb) - - min(mtu, skb_end_offset(skb)); skb_reserve(skb, hlen); + skb_tailroom_reserve(skb, mtu, tlen); if (__ipv6_get_lladdr(idev, &addr_buf, IFA_F_TENTATIVE)) { /* : @@ -1651,7 +1650,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 +2012,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/ndisc.c +++ linux-raspi2-4.2.0/net/ipv6/ndisc.c @@ -1225,18 +1225,16 @@ if (rt) rt6_set_expires(rt, jiffies + (HZ * lifetime)); - if (ra_msg->icmph.icmp6_hop_limit) { - /* Only set hop_limit on the interface if it is higher than - * the current hop_limit. - */ - if (in6_dev->cnf.hop_limit < ra_msg->icmph.icmp6_hop_limit) { + if (in6_dev->cnf.accept_ra_min_hop_limit < 256 && + ra_msg->icmph.icmp6_hop_limit) { + if (in6_dev->cnf.accept_ra_min_hop_limit <= ra_msg->icmph.icmp6_hop_limit) { in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit; + if (rt) + dst_metric_set(&rt->dst, RTAX_HOPLIMIT, + ra_msg->icmph.icmp6_hop_limit); } else { - ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than current\n"); + ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than minimum\n"); } - if (rt) - dst_metric_set(&rt->dst, RTAX_HOPLIMIT, - ra_msg->icmph.icmp6_hop_limit); } skip_defrtr: --- linux-raspi2-4.2.0.orig/net/ipv6/netfilter/ip6_tables.c +++ linux-raspi2-4.2.0/net/ipv6/netfilter/ip6_tables.c @@ -451,6 +451,17 @@ #endif } +static bool next_offset_ok(const struct xt_table_info *t, unsigned int newpos) +{ + if (newpos > t->size - sizeof(struct ip6t_entry)) + return false; + + if (newpos % __alignof__(struct ip6t_entry) != 0) + return false; + + return true; +} + /* Figures out from what hook each rule can be called: returns 0 if there are loops. Puts hook bitmask in comefrom. */ static int @@ -527,6 +538,8 @@ /* Move along one */ size = e->next_offset; + if (!next_offset_ok(newinfo, pos + size)) + return 0; e = (struct ip6t_entry *) (entry0 + pos + size); e->counters.pcnt = pos; @@ -537,13 +550,6 @@ if (strcmp(t->target.u.user.name, XT_STANDARD_TARGET) == 0 && newpos >= 0) { - if (newpos > newinfo->size - - sizeof(struct ip6t_entry)) { - duprintf("mark_source_chains: " - "bad verdict (%i)\n", - newpos); - return 0; - } /* This a jump; chase it. */ duprintf("Jump rule %u -> %u\n", pos, newpos); @@ -551,6 +557,10 @@ /* ... this is a fallthru */ newpos = pos + e->next_offset; } + + if (!next_offset_ok(newinfo, newpos)) + return 0; + e = (struct ip6t_entry *) (entry0 + newpos); e->counters.pcnt = pos; --- 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) { @@ -1172,11 +1181,9 @@ return ip6_pol_route(net, table, fl6->flowi6_oif, fl6, flags); } -struct dst_entry *ip6_route_output(struct net *net, const struct sock *sk, - struct flowi6 *fl6) +struct dst_entry *ip6_route_output_flags(struct net *net, const struct sock *sk, + struct flowi6 *fl6, int flags) { - int flags = 0; - fl6->flowi6_iif = LOOPBACK_IFINDEX; if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl6->daddr)) @@ -1189,7 +1196,7 @@ return fib6_rule_lookup(net, fl6, flags, ip6_pol_route_output); } -EXPORT_SYMBOL(ip6_route_output); +EXPORT_SYMBOL_GPL(ip6_route_output_flags); struct dst_entry *ip6_blackhole_route(struct net *net, struct dst_entry *dst_orig) { @@ -1254,7 +1261,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 +1282,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 +1334,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 +1353,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 +1742,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 +1750,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 +1955,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 +1988,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 +2592,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 +2766,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 +2853,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 +2888,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 +2961,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 +2976,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,10 @@ 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); + rcu_read_lock(); + err = ip6_xmit(sk, skb, fl6, rcu_dereference(np->opt), + np->tclass); + rcu_read_unlock(); err = net_xmit_eval(err); } @@ -991,6 +995,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 +1095,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 +1131,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 +1270,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 { @@ -834,8 +836,8 @@ flush_stack(stack, count, skb, count - 1); } else { if (!inner_flushed) - UDP_INC_STATS_BH(net, UDP_MIB_IGNOREDMULTI, - proto == IPPROTO_UDPLITE); + UDP6_INC_STATS_BH(net, UDP_MIB_IGNOREDMULTI, + proto == IPPROTO_UDPLITE); consume_skb(skb); } return 0; @@ -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_mode_tunnel.c +++ linux-raspi2-4.2.0/net/ipv6/xfrm6_mode_tunnel.c @@ -24,7 +24,7 @@ struct ipv6hdr *inner_iph = ipipv6_hdr(skb); if (INET_ECN_is_ce(ipv6_get_dsfield(outer_iph))) - IP6_ECN_set_ce(inner_iph); + IP6_ECN_set_ce(skb, inner_iph); } /* Add encapsulation header. --- 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/ipv6/xfrm6_policy.c +++ linux-raspi2-4.2.0/net/ipv6/xfrm6_policy.c @@ -274,7 +274,7 @@ xfrm_dst_ifdown(dst, dev); } -static struct dst_ops xfrm6_dst_ops = { +static struct dst_ops xfrm6_dst_ops_template = { .family = AF_INET6, .gc = xfrm6_garbage_collect, .update_pmtu = xfrm6_update_pmtu, @@ -288,7 +288,7 @@ static struct xfrm_policy_afinfo xfrm6_policy_afinfo = { .family = AF_INET6, - .dst_ops = &xfrm6_dst_ops, + .dst_ops = &xfrm6_dst_ops_template, .dst_lookup = xfrm6_dst_lookup, .get_saddr = xfrm6_get_saddr, .decode_session = _decode_session6, @@ -320,7 +320,7 @@ { } }; -static int __net_init xfrm6_net_init(struct net *net) +static int __net_init xfrm6_net_sysctl_init(struct net *net) { struct ctl_table *table; struct ctl_table_header *hdr; @@ -348,7 +348,7 @@ return -ENOMEM; } -static void __net_exit xfrm6_net_exit(struct net *net) +static void __net_exit xfrm6_net_sysctl_exit(struct net *net) { struct ctl_table *table; @@ -360,24 +360,52 @@ if (!net_eq(net, &init_net)) kfree(table); } +#else /* CONFIG_SYSCTL */ +static int inline xfrm6_net_sysctl_init(struct net *net) +{ + return 0; +} + +static void inline xfrm6_net_sysctl_exit(struct net *net) +{ +} +#endif + +static int __net_init xfrm6_net_init(struct net *net) +{ + int ret; + + memcpy(&net->xfrm.xfrm6_dst_ops, &xfrm6_dst_ops_template, + sizeof(xfrm6_dst_ops_template)); + ret = dst_entries_init(&net->xfrm.xfrm6_dst_ops); + if (ret) + return ret; + + ret = xfrm6_net_sysctl_init(net); + if (ret) + dst_entries_destroy(&net->xfrm.xfrm6_dst_ops); + + return ret; +} + +static void __net_exit xfrm6_net_exit(struct net *net) +{ + xfrm6_net_sysctl_exit(net); + dst_entries_destroy(&net->xfrm.xfrm6_dst_ops); +} static struct pernet_operations xfrm6_net_ops = { .init = xfrm6_net_init, .exit = xfrm6_net_exit, }; -#endif int __init xfrm6_init(void) { int ret; - dst_entries_init(&xfrm6_dst_ops); - ret = xfrm6_policy_init(); - if (ret) { - dst_entries_destroy(&xfrm6_dst_ops); + if (ret) goto out; - } ret = xfrm6_state_init(); if (ret) goto out_policy; @@ -386,9 +414,7 @@ if (ret) goto out_state; -#ifdef CONFIG_SYSCTL register_pernet_subsys(&xfrm6_net_ops); -#endif out: return ret; out_state: @@ -400,11 +426,8 @@ void xfrm6_fini(void) { -#ifdef CONFIG_SYSCTL unregister_pernet_subsys(&xfrm6_net_ops); -#endif xfrm6_protocol_fini(); xfrm6_policy_fini(); xfrm6_state_fini(); - dst_entries_destroy(&xfrm6_dst_ops); } --- 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/iucv/af_iucv.c +++ linux-raspi2-4.2.0/net/iucv/af_iucv.c @@ -709,6 +709,9 @@ if (!addr || addr->sa_family != AF_IUCV) return -EINVAL; + if (addr_len < sizeof(struct sockaddr_iucv)) + return -EINVAL; + lock_sock(sk); if (sk->sk_state != IUCV_OPEN) { err = -EBADFD; --- 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/l2tp/l2tp_netlink.c +++ linux-raspi2-4.2.0/net/l2tp/l2tp_netlink.c @@ -124,8 +124,13 @@ ret = l2tp_nl_tunnel_send(msg, info->snd_portid, info->snd_seq, NLM_F_ACK, tunnel, cmd); - if (ret >= 0) - return genlmsg_multicast_allns(family, msg, 0, 0, GFP_ATOMIC); + if (ret >= 0) { + ret = genlmsg_multicast_allns(family, msg, 0, 0, GFP_ATOMIC); + /* We don't care if no one is listening */ + if (ret == -ESRCH) + ret = 0; + return ret; + } nlmsg_free(msg); @@ -147,8 +152,13 @@ ret = l2tp_nl_session_send(msg, info->snd_portid, info->snd_seq, NLM_F_ACK, session, cmd); - if (ret >= 0) - return genlmsg_multicast_allns(family, msg, 0, 0, GFP_ATOMIC); + if (ret >= 0) { + ret = genlmsg_multicast_allns(family, msg, 0, 0, GFP_ATOMIC); + /* We don't care if no one is listening */ + if (ret == -ESRCH) + ret = 0; + return ret; + } nlmsg_free(msg); --- linux-raspi2-4.2.0.orig/net/mac80211/agg-rx.c +++ linux-raspi2-4.2.0/net/mac80211/agg-rx.c @@ -289,7 +289,7 @@ } /* prepare A-MPDU MLME for Rx aggregation */ - tid_agg_rx = kmalloc(sizeof(struct tid_ampdu_rx), GFP_KERNEL); + tid_agg_rx = kzalloc(sizeof(*tid_agg_rx), GFP_KERNEL); if (!tid_agg_rx) goto end; --- linux-raspi2-4.2.0.orig/net/mac80211/cfg.c +++ linux-raspi2-4.2.0/net/mac80211/cfg.c @@ -3439,8 +3439,12 @@ goto out_unlock; } } else { - /* for cookie below */ - ack_skb = skb; + /* Assign a dummy non-zero cookie, it's not sent to + * userspace in this case but we rely on its value + * internally in the need_offchan case to distinguish + * mgmt-tx from remain-on-channel. + */ + *cookie = 0xffffffff; } if (!need_offchan) { --- 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/ibss.c +++ linux-raspi2-4.2.0/net/mac80211/ibss.c @@ -7,6 +7,7 @@ * Copyright 2007, Michael Wu * Copyright 2009, Johannes Berg * Copyright 2013-2014 Intel Mobile Communications GmbH + * Copyright(c) 2016 Intel Deutschland GmbH * * 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 @@ -1482,14 +1483,21 @@ sdata_info(sdata, "Trigger new scan to find an IBSS to join\n"); - num = ieee80211_ibss_setup_scan_channels(local->hw.wiphy, - &ifibss->chandef, - channels, - ARRAY_SIZE(channels)); scan_width = cfg80211_chandef_to_scan_width(&ifibss->chandef); - ieee80211_request_ibss_scan(sdata, ifibss->ssid, - ifibss->ssid_len, channels, num, - scan_width); + + if (ifibss->fixed_channel) { + num = ieee80211_ibss_setup_scan_channels(local->hw.wiphy, + &ifibss->chandef, + channels, + ARRAY_SIZE(channels)); + ieee80211_request_ibss_scan(sdata, ifibss->ssid, + ifibss->ssid_len, channels, + num, scan_width); + } else { + ieee80211_request_ibss_scan(sdata, ifibss->ssid, + ifibss->ssid_len, NULL, + 0, scan_width); + } } else { int interval = IEEE80211_SCAN_INTERVAL; @@ -1730,7 +1738,6 @@ if (sdata->vif.type != NL80211_IFTYPE_ADHOC) continue; sdata->u.ibss.last_scan_completed = jiffies; - ieee80211_queue_work(&local->hw, &sdata->work); } mutex_unlock(&local->iflist_mtx); } --- linux-raspi2-4.2.0.orig/net/mac80211/ieee80211_i.h +++ linux-raspi2-4.2.0/net/mac80211/ieee80211_i.h @@ -90,7 +90,7 @@ unsigned int last_frag; unsigned int extra_len; struct sk_buff_head skb_list; - int ccmp; /* Whether fragments were encrypted with CCMP */ + bool check_sequential_pn; /* needed for CCMP/GCMP */ u8 last_pn[6]; /* PN of the last fragment if CCMP was used */ }; --- linux-raspi2-4.2.0.orig/net/mac80211/iface.c +++ linux-raspi2-4.2.0/net/mac80211/iface.c @@ -76,7 +76,8 @@ void ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata, bool update_bss) { - if (__ieee80211_recalc_txpower(sdata) || update_bss) + if (__ieee80211_recalc_txpower(sdata) || + (update_bss && ieee80211_sdata_running(sdata))) ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_TXPOWER); } @@ -974,7 +975,10 @@ if (sdata->vif.txq) { struct txq_info *txqi = to_txq_info(sdata->vif.txq); + spin_lock_bh(&txqi->queue.lock); ieee80211_purge_tx_queue(&local->hw, &txqi->queue); + spin_unlock_bh(&txqi->queue.lock); + atomic_set(&sdata->txqs_len[txqi->txq.ac], 0); } --- linux-raspi2-4.2.0.orig/net/mac80211/mesh.c +++ linux-raspi2-4.2.0/net/mac80211/mesh.c @@ -1299,17 +1299,6 @@ sdata_unlock(sdata); } -void ieee80211_mesh_notify_scan_completed(struct ieee80211_local *local) -{ - struct ieee80211_sub_if_data *sdata; - - rcu_read_lock(); - list_for_each_entry_rcu(sdata, &local->interfaces, list) - if (ieee80211_vif_is_mesh(&sdata->vif) && - ieee80211_sdata_running(sdata)) - ieee80211_queue_work(&local->hw, &sdata->work); - rcu_read_unlock(); -} void ieee80211_mesh_init_sdata(struct ieee80211_sub_if_data *sdata) { --- linux-raspi2-4.2.0.orig/net/mac80211/mesh.h +++ linux-raspi2-4.2.0/net/mac80211/mesh.h @@ -358,14 +358,10 @@ return sdata->u.mesh.mesh_pp_id == IEEE80211_PATH_PROTOCOL_HWMP; } -void ieee80211_mesh_notify_scan_completed(struct ieee80211_local *local); - void mesh_path_flush_by_iface(struct ieee80211_sub_if_data *sdata); void mesh_sync_adjust_tbtt(struct ieee80211_sub_if_data *sdata); void ieee80211s_stop(void); #else -static inline void -ieee80211_mesh_notify_scan_completed(struct ieee80211_local *local) {} static inline bool mesh_path_sel_is_hwmp(struct ieee80211_sub_if_data *sdata) { return false; } static inline void mesh_path_flush_by_iface(struct ieee80211_sub_if_data *sdata) --- linux-raspi2-4.2.0.orig/net/mac80211/mesh_pathtbl.c +++ linux-raspi2-4.2.0/net/mac80211/mesh_pathtbl.c @@ -779,10 +779,8 @@ static void mesh_path_node_reclaim(struct rcu_head *rp) { struct mpath_node *node = container_of(rp, struct mpath_node, rcu); - struct ieee80211_sub_if_data *sdata = node->mpath->sdata; del_timer_sync(&node->mpath->timer); - atomic_dec(&sdata->u.mesh.mpaths); kfree(node->mpath); kfree(node); } @@ -790,8 +788,9 @@ /* needs to be called with the corresponding hashwlock taken */ static void __mesh_path_del(struct mesh_table *tbl, struct mpath_node *node) { - struct mesh_path *mpath; - mpath = node->mpath; + struct mesh_path *mpath = node->mpath; + struct ieee80211_sub_if_data *sdata = node->mpath->sdata; + spin_lock(&mpath->state_lock); mpath->flags |= MESH_PATH_RESOLVING; if (mpath->is_gate) @@ -799,6 +798,7 @@ hlist_del_rcu(&node->list); call_rcu(&node->rcu, mesh_path_node_reclaim); spin_unlock(&mpath->state_lock); + atomic_dec(&sdata->u.mesh.mpaths); atomic_dec(&tbl->entries); } --- 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, @@ -4037,8 +4037,6 @@ if (!ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR)) ieee80211_queue_work(&sdata->local->hw, &sdata->u.mgd.monitor_work); - /* and do all the other regular work too */ - ieee80211_queue_work(&sdata->local->hw, &sdata->work); } } @@ -4999,6 +4997,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/offchannel.c +++ linux-raspi2-4.2.0/net/mac80211/offchannel.c @@ -308,11 +308,10 @@ /* was never transmitted */ if (roc->frame) { - cfg80211_mgmt_tx_status(&roc->sdata->wdev, - (unsigned long)roc->frame, + cfg80211_mgmt_tx_status(&roc->sdata->wdev, roc->mgmt_tx_cookie, roc->frame->data, roc->frame->len, false, GFP_KERNEL); - kfree_skb(roc->frame); + ieee80211_free_txskb(&roc->sdata->local->hw, roc->frame); } if (!roc->mgmt_tx_cookie) --- linux-raspi2-4.2.0.orig/net/mac80211/rc80211_minstrel.c +++ linux-raspi2-4.2.0/net/mac80211/rc80211_minstrel.c @@ -711,7 +711,7 @@ * computing cur_tp */ tmp_mrs = &mi->r[idx].stats; - tmp_cur_tp = minstrel_get_tp_avg(&mi->r[idx], tmp_mrs->prob_ewma); + tmp_cur_tp = minstrel_get_tp_avg(&mi->r[idx], tmp_mrs->prob_ewma) * 10; tmp_cur_tp = tmp_cur_tp * 1200 * 8 / 1024; return tmp_cur_tp; --- linux-raspi2-4.2.0.orig/net/mac80211/rc80211_minstrel_ht.c +++ linux-raspi2-4.2.0/net/mac80211/rc80211_minstrel_ht.c @@ -691,7 +691,7 @@ if (likely(sta->ampdu_mlme.tid_tx[tid])) return; - ieee80211_start_tx_ba_session(pubsta, tid, 5000); + ieee80211_start_tx_ba_session(pubsta, tid, 0); } static void @@ -1328,7 +1328,8 @@ prob = mi->groups[i].rates[j].prob_ewma; /* convert tp_avg from pkt per second in kbps */ - tp_avg = minstrel_ht_get_tp_avg(mi, i, j, prob) * AVG_PKT_SIZE * 8 / 1024; + tp_avg = minstrel_ht_get_tp_avg(mi, i, j, prob) * 10; + tp_avg = tp_avg * AVG_PKT_SIZE * 8 / 1024; return tp_avg; } --- linux-raspi2-4.2.0.orig/net/mac80211/rx.c +++ linux-raspi2-4.2.0/net/mac80211/rx.c @@ -1715,7 +1715,7 @@ entry->seq = seq; entry->rx_queue = rx_queue; entry->last_frag = frag; - entry->ccmp = 0; + entry->check_sequential_pn = false; entry->extra_len = 0; return entry; @@ -1811,15 +1811,27 @@ rx->seqno_idx, &(rx->skb)); if (rx->key && (rx->key->conf.cipher == WLAN_CIPHER_SUITE_CCMP || - rx->key->conf.cipher == WLAN_CIPHER_SUITE_CCMP_256) && + rx->key->conf.cipher == WLAN_CIPHER_SUITE_CCMP_256 || + rx->key->conf.cipher == WLAN_CIPHER_SUITE_GCMP || + rx->key->conf.cipher == WLAN_CIPHER_SUITE_GCMP_256) && ieee80211_has_protected(fc)) { int queue = rx->security_idx; - /* Store CCMP PN so that we can verify that the next - * fragment has a sequential PN value. */ - entry->ccmp = 1; + + /* Store CCMP/GCMP PN so that we can verify that the + * next fragment has a sequential PN value. + */ + entry->check_sequential_pn = true; memcpy(entry->last_pn, rx->key->u.ccmp.rx_pn[queue], IEEE80211_CCMP_PN_LEN); + BUILD_BUG_ON(offsetof(struct ieee80211_key, + u.ccmp.rx_pn) != + offsetof(struct ieee80211_key, + u.gcmp.rx_pn)); + BUILD_BUG_ON(sizeof(rx->key->u.ccmp.rx_pn[queue]) != + sizeof(rx->key->u.gcmp.rx_pn[queue])); + BUILD_BUG_ON(IEEE80211_CCMP_PN_LEN != + IEEE80211_GCMP_PN_LEN); } return RX_QUEUED; } @@ -1834,15 +1846,21 @@ return RX_DROP_MONITOR; } - /* Verify that MPDUs within one MSDU have sequential PN values. - * (IEEE 802.11i, 8.3.3.4.5) */ - if (entry->ccmp) { + /* "The receiver shall discard MSDUs and MMPDUs whose constituent + * MPDU PN values are not incrementing in steps of 1." + * see IEEE P802.11-REVmc/D5.0, 12.5.3.4.4, item d (for CCMP) + * and IEEE P802.11-REVmc/D5.0, 12.5.5.4.4, item d (for GCMP) + */ + if (entry->check_sequential_pn) { int i; u8 pn[IEEE80211_CCMP_PN_LEN], *rpn; int queue; + if (!rx->key || (rx->key->conf.cipher != WLAN_CIPHER_SUITE_CCMP && - rx->key->conf.cipher != WLAN_CIPHER_SUITE_CCMP_256)) + rx->key->conf.cipher != WLAN_CIPHER_SUITE_CCMP_256 && + rx->key->conf.cipher != WLAN_CIPHER_SUITE_GCMP && + rx->key->conf.cipher != WLAN_CIPHER_SUITE_GCMP_256)) return RX_DROP_UNUSABLE; memcpy(pn, entry->last_pn, IEEE80211_CCMP_PN_LEN); for (i = IEEE80211_CCMP_PN_LEN - 1; i >= 0; i--) { @@ -2195,7 +2213,7 @@ struct ieee80211_local *local = rx->local; struct ieee80211_sub_if_data *sdata = rx->sdata; struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; - u16 q, hdrlen; + u16 ac, q, hdrlen; hdr = (struct ieee80211_hdr *) skb->data; hdrlen = ieee80211_hdrlen(hdr->frame_control); @@ -2264,7 +2282,8 @@ ether_addr_equal(sdata->vif.addr, hdr->addr3)) return RX_CONTINUE; - q = ieee80211_select_queue_80211(sdata, skb, hdr); + ac = ieee80211_select_queue_80211(sdata, skb, hdr); + q = sdata->vif.hw_queue[ac]; if (ieee80211_queue_stopped(&local->hw, q)) { IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_congestion); return RX_DROP_MONITOR; @@ -3333,6 +3352,7 @@ return false; /* ignore action frames to TDLS-peers */ if (ieee80211_is_action(hdr->frame_control) && + !is_broadcast_ether_addr(bssid) && !ether_addr_equal(bssid, hdr->addr1)) return false; } --- linux-raspi2-4.2.0.orig/net/mac80211/scan.c +++ linux-raspi2-4.2.0/net/mac80211/scan.c @@ -316,6 +316,7 @@ bool was_scanning = local->scanning; struct cfg80211_scan_request *scan_req; struct ieee80211_sub_if_data *scan_sdata; + struct ieee80211_sub_if_data *sdata; lockdep_assert_held(&local->mtx); @@ -375,7 +376,16 @@ ieee80211_mlme_notify_scan_completed(local); ieee80211_ibss_notify_scan_completed(local); - ieee80211_mesh_notify_scan_completed(local); + + /* Requeue all the work that might have been ignored while + * the scan was in progress; if there was none this will + * just be a no-op for the particular interface. + */ + list_for_each_entry_rcu(sdata, &local->interfaces, list) { + if (ieee80211_sdata_running(sdata)) + ieee80211_queue_work(&sdata->local->hw, &sdata->work); + } + if (was_scanning) ieee80211_start_next_roc(local); } @@ -599,8 +609,8 @@ /* We need to ensure power level is at max for scanning. */ ieee80211_hw_config(local, 0); - if ((req->channels[0]->flags & - IEEE80211_CHAN_NO_IR) || + if ((req->channels[0]->flags & (IEEE80211_CHAN_NO_IR | + IEEE80211_CHAN_RADAR)) || !req->n_ssids) { next_delay = IEEE80211_PASSIVE_CHANNEL_TIME; } else { @@ -647,7 +657,7 @@ * TODO: channel switching also consumes quite some time, * add that delay as well to get a better estimation */ - if (chan->flags & IEEE80211_CHAN_NO_IR) + if (chan->flags & (IEEE80211_CHAN_NO_IR | IEEE80211_CHAN_RADAR)) return IEEE80211_PASSIVE_CHANNEL_TIME; return IEEE80211_PROBE_DELAY + IEEE80211_CHANNEL_TIME; } @@ -779,7 +789,8 @@ * * In any case, it is not necessary for a passive scan. */ - if (chan->flags & IEEE80211_CHAN_NO_IR || !scan_req->n_ssids) { + if ((chan->flags & (IEEE80211_CHAN_NO_IR | IEEE80211_CHAN_RADAR)) || + !scan_req->n_ssids) { *next_delay = IEEE80211_PASSIVE_CHANNEL_TIME; local->next_scan_state = SCAN_DECISION; return; --- linux-raspi2-4.2.0.orig/net/mac80211/sta_info.c +++ linux-raspi2-4.2.0/net/mac80211/sta_info.c @@ -253,11 +253,11 @@ } /* Caller must hold local->sta_mtx */ -static void sta_info_hash_add(struct ieee80211_local *local, - struct sta_info *sta) +static int sta_info_hash_add(struct ieee80211_local *local, + struct sta_info *sta) { - rhashtable_insert_fast(&local->sta_hash, &sta->hash_node, - sta_rht_params); + return rhashtable_insert_fast(&local->sta_hash, &sta->hash_node, + sta_rht_params); } static void sta_deliver_ps_frames(struct work_struct *wk) @@ -474,11 +474,17 @@ { struct ieee80211_local *local = sta->local; struct ieee80211_sub_if_data *sdata = sta->sdata; - struct station_info sinfo; + struct station_info *sinfo; int err = 0; lockdep_assert_held(&local->sta_mtx); + sinfo = kzalloc(sizeof(struct station_info), GFP_KERNEL); + if (!sinfo) { + err = -ENOMEM; + goto out_err; + } + /* check if STA exists already */ if (sta_info_get_bss(sdata, sta->sta.addr)) { err = -EEXIST; @@ -493,7 +499,9 @@ set_sta_flag(sta, WLAN_STA_BLOCK_BA); /* make the station visible */ - sta_info_hash_add(local, sta); + err = sta_info_hash_add(local, sta); + if (err) + goto out_drop_sta; list_add_tail_rcu(&sta->list, &local->sta_list); @@ -510,10 +518,9 @@ ieee80211_sta_debugfs_add(sta); rate_control_add_sta_debugfs(sta); - memset(&sinfo, 0, sizeof(sinfo)); - sinfo.filled = 0; - sinfo.generation = local->sta_generation; - cfg80211_new_sta(sdata->dev, sta->sta.addr, &sinfo, GFP_KERNEL); + sinfo->generation = local->sta_generation; + cfg80211_new_sta(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL); + kfree(sinfo); sta_dbg(sdata, "Inserted STA %pM\n", sta->sta.addr); @@ -528,6 +535,7 @@ out_remove: sta_info_hash_del(local, sta); list_del_rcu(&sta->list); + out_drop_sta: local->num_sta--; synchronize_net(); __cleanup_single_sta(sta); @@ -875,7 +883,7 @@ { struct ieee80211_local *local = sta->local; struct ieee80211_sub_if_data *sdata = sta->sdata; - struct station_info sinfo = {}; + struct station_info *sinfo; int ret; /* @@ -913,8 +921,11 @@ sta_dbg(sdata, "Removed STA %pM\n", sta->sta.addr); - sta_set_sinfo(sta, &sinfo); - cfg80211_del_sta_sinfo(sdata->dev, sta->sta.addr, &sinfo, GFP_KERNEL); + sinfo = kzalloc(sizeof(*sinfo), GFP_KERNEL); + if (sinfo) + sta_set_sinfo(sta, sinfo); + cfg80211_del_sta_sinfo(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL); + kfree(sinfo); rate_control_remove_sta_debugfs(sta); ieee80211_sta_debugfs_remove(sta); --- 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/ipvs/ip_vs_core.c +++ linux-raspi2-4.2.0/net/netfilter/ipvs/ip_vs_core.c @@ -1689,15 +1689,34 @@ cp = pp->conn_in_get(af, skb, &iph, 0); conn_reuse_mode = sysctl_conn_reuse_mode(ipvs); - if (conn_reuse_mode && !iph.fragoffs && - is_new_conn(skb, &iph) && cp && - ((unlikely(sysctl_expire_nodest_conn(ipvs)) && cp->dest && - unlikely(!atomic_read(&cp->dest->weight))) || - unlikely(is_new_conn_expected(cp, conn_reuse_mode)))) { - if (!atomic_read(&cp->n_control)) - ip_vs_conn_expire_now(cp); - __ip_vs_conn_put(cp); - cp = NULL; + if (conn_reuse_mode && !iph.fragoffs && is_new_conn(skb, &iph) && cp) { + bool uses_ct = false, resched = false; + + if (unlikely(sysctl_expire_nodest_conn(ipvs)) && cp->dest && + unlikely(!atomic_read(&cp->dest->weight))) { + resched = true; + uses_ct = ip_vs_conn_uses_conntrack(cp, skb); + } else if (is_new_conn_expected(cp, conn_reuse_mode)) { + uses_ct = ip_vs_conn_uses_conntrack(cp, skb); + if (!atomic_read(&cp->n_control)) { + resched = true; + } else { + /* Do not reschedule controlling connection + * that uses conntrack while it is still + * referenced by controlled connection(s). + */ + resched = !uses_ct; + } + } + + if (resched) { + if (!atomic_read(&cp->n_control)) + ip_vs_conn_expire_now(cp); + __ip_vs_conn_put(cp); + if (uses_ct) + return NF_DROP; + cp = NULL; + } } if (unlikely(!cp) && !iph.fragoffs) { --- linux-raspi2-4.2.0.orig/net/netfilter/ipvs/ip_vs_pe_sip.c +++ linux-raspi2-4.2.0/net/netfilter/ipvs/ip_vs_pe_sip.c @@ -88,7 +88,7 @@ dptr = skb->data + dataoff; datalen = skb->len - dataoff; - if (get_callid(dptr, dataoff, datalen, &matchoff, &matchlen)) + if (get_callid(dptr, 0, datalen, &matchoff, &matchlen)) return -EINVAL; /* N.B: pe_data is only set on success, --- 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 @@ -328,10 +328,12 @@ nlh = nlmsg_hdr(skb); err = 0; - if (nlmsg_len(nlh) < sizeof(struct nfgenmsg) || - skb->len < nlh->nlmsg_len) { - err = -EINVAL; - goto ack; + if (nlh->nlmsg_len < NLMSG_HDRLEN || + skb->len < nlh->nlmsg_len || + nlmsg_len(nlh) < sizeof(struct nfgenmsg)) { + nfnl_err_reset(&err_list); + status |= NFNL_BATCH_FAILURE; + goto done; } /* Only requests are handled by the kernel */ @@ -444,6 +446,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 +471,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 +494,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); @@ -1391,6 +1392,7 @@ cleanup_netlink_notifier: netlink_unregister_notifier(&nfqnl_rtnl_notifier); + unregister_pernet_subsys(&nfnl_queue_net_ops); out: return status; } --- 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/x_tables.c +++ linux-raspi2-4.2.0/net/netfilter/x_tables.c @@ -661,6 +661,9 @@ struct xt_table_info *info = NULL; size_t sz = sizeof(*info) + size; + if (sz < size || sz < sizeof(*info)) + return NULL; + /* Pedantry: prevent them from hitting BUG() in vmalloc.c --RR */ if ((SMP_ALIGN(size) >> PAGE_SHIFT) + 2 > totalram_pages) return NULL; --- 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,36 @@ * 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. + */ + if (!netlink_rx_is_mmaped(sk)) + 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 @@ -336,12 +336,10 @@ unsigned short gso_type = skb_shinfo(skb)->gso_type; struct sw_flow_key later_key; struct sk_buff *segs, *nskb; - struct ovs_skb_cb ovs_cb; int err; - ovs_cb = *OVS_CB(skb); + BUILD_BUG_ON(sizeof(*OVS_CB(skb)) > SKB_SGO_CB_OFFSET); segs = __skb_gso_segment(skb, NETIF_F_SG, false); - *OVS_CB(skb) = ovs_cb; if (IS_ERR(segs)) return PTR_ERR(segs); if (segs == NULL) @@ -359,7 +357,6 @@ /* Queue all of the segments. */ skb = segs; do { - *OVS_CB(skb) = ovs_cb; if (gso_type & SKB_GSO_UDP && skb != segs) key = &later_key; @@ -920,7 +917,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 +1044,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/phonet/af_phonet.c +++ linux-raspi2-4.2.0/net/phonet/af_phonet.c @@ -377,6 +377,10 @@ struct sockaddr_pn sa; u16 len; + skb = skb_share_check(skb, GFP_ATOMIC); + if (!skb) + return NET_RX_DROP; + /* check we have at least a full Phonet header */ if (!pskb_pull(skb, sizeof(struct phonethdr))) goto out; --- 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/rfkill/core.c +++ linux-raspi2-4.2.0/net/rfkill/core.c @@ -49,7 +49,6 @@ struct rfkill { spinlock_t lock; - const char *name; enum rfkill_type type; unsigned long state; @@ -73,6 +72,7 @@ struct delayed_work poll_work; struct work_struct uevent_work; struct work_struct sync_work; + char name[]; }; #define to_rfkill(d) container_of(d, struct rfkill, dev) @@ -868,14 +868,14 @@ if (WARN_ON(type == RFKILL_TYPE_ALL || type >= NUM_RFKILL_TYPES)) return NULL; - rfkill = kzalloc(sizeof(*rfkill), GFP_KERNEL); + rfkill = kzalloc(sizeof(*rfkill) + strlen(name) + 1, GFP_KERNEL); if (!rfkill) return NULL; spin_lock_init(&rfkill->lock); INIT_LIST_HEAD(&rfkill->node); rfkill->type = type; - rfkill->name = name; + strcpy(rfkill->name, name); rfkill->ops = ops; rfkill->data = ops_data; @@ -1087,17 +1087,6 @@ return res; } -static bool rfkill_readable(struct rfkill_data *data) -{ - bool r; - - mutex_lock(&data->mtx); - r = !list_empty(&data->events); - mutex_unlock(&data->mtx); - - return r; -} - static ssize_t rfkill_fop_read(struct file *file, char __user *buf, size_t count, loff_t *pos) { @@ -1114,8 +1103,11 @@ goto out; } mutex_unlock(&data->mtx); + /* since we re-check and it just compares pointers, + * using !list_empty() without locking isn't a problem + */ ret = wait_event_interruptible(data->read_wait, - rfkill_readable(data)); + !list_empty(&data->events)); mutex_lock(&data->mtx); if (ret) --- 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); @@ -252,23 +252,28 @@ fl_set_key_val(tb, key->eth.src, TCA_FLOWER_KEY_ETH_SRC, mask->eth.src, TCA_FLOWER_KEY_ETH_SRC_MASK, sizeof(key->eth.src)); + fl_set_key_val(tb, &key->basic.n_proto, TCA_FLOWER_KEY_ETH_TYPE, &mask->basic.n_proto, TCA_FLOWER_UNSPEC, sizeof(key->basic.n_proto)); + if (key->basic.n_proto == htons(ETH_P_IP) || key->basic.n_proto == htons(ETH_P_IPV6)) { fl_set_key_val(tb, &key->basic.ip_proto, TCA_FLOWER_KEY_IP_PROTO, &mask->basic.ip_proto, TCA_FLOWER_UNSPEC, sizeof(key->basic.ip_proto)); } - if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS) { + + if (tb[TCA_FLOWER_KEY_IPV4_SRC] || tb[TCA_FLOWER_KEY_IPV4_DST]) { + key->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; fl_set_key_val(tb, &key->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC, &mask->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC_MASK, sizeof(key->ipv4.src)); fl_set_key_val(tb, &key->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST, &mask->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST_MASK, sizeof(key->ipv4.dst)); - } else if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV6_ADDRS) { + } else if (tb[TCA_FLOWER_KEY_IPV6_SRC] || tb[TCA_FLOWER_KEY_IPV6_DST]) { + key->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; fl_set_key_val(tb, &key->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC, &mask->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC_MASK, sizeof(key->ipv6.src)); @@ -276,6 +281,7 @@ &mask->ipv6.dst, TCA_FLOWER_KEY_IPV6_DST_MASK, sizeof(key->ipv6.dst)); } + if (key->basic.ip_proto == IPPROTO_TCP) { fl_set_key_val(tb, &key->tp.src, TCA_FLOWER_KEY_TCP_SRC, &mask->tp.src, TCA_FLOWER_UNSPEC, --- 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 @@ -666,8 +666,10 @@ { struct Qdisc *qdisc = container_of(head, struct Qdisc, rcu_head); - if (qdisc_is_percpu_stats(qdisc)) + if (qdisc_is_percpu_stats(qdisc)) { free_percpu(qdisc->cpu_bstats); + free_percpu(qdisc->cpu_qstats); + } kfree((char *) qdisc - qdisc->padded); } @@ -743,7 +745,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/associola.c +++ linux-raspi2-4.2.0/net/sctp/associola.c @@ -1256,7 +1256,7 @@ if (score_curr > score_best) return curr; else if (score_curr == score_best) - return sctp_trans_elect_tie(curr, best); + return sctp_trans_elect_tie(best, curr); else return best; } --- 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/outqueue.c +++ linux-raspi2-4.2.0/net/sctp/outqueue.c @@ -1251,6 +1251,7 @@ */ sack_a_rwnd = ntohl(sack->a_rwnd); + asoc->peer.zero_window_announced = !sack_a_rwnd; outstanding = q->outstanding_bytes; if (outstanding < sack_a_rwnd) --- linux-raspi2-4.2.0.orig/net/sctp/protocol.c +++ linux-raspi2-4.2.0/net/sctp/protocol.c @@ -60,6 +60,8 @@ #include #include +#define MAX_SCTP_PORT_HASH_ENTRIES (64 * 1024) + /* Global data structures. */ struct sctp_globals sctp_globals __read_mostly; @@ -1166,7 +1168,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 +1261,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 +1276,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 +1284,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 +1297,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. */ @@ -1321,6 +1334,8 @@ unsigned long limit; int max_share; int order; + int num_entries; + int max_entry_order; sock_skb_cb_check_size(sizeof(struct sctp_ulpevent)); @@ -1373,14 +1388,24 @@ /* Size and allocate the association hash table. * The methodology is similar to that of the tcp hash tables. + * Though not identical. Start by getting a goal size */ if (totalram_pages >= (128 * 1024)) goal = totalram_pages >> (22 - PAGE_SHIFT); else goal = totalram_pages >> (24 - PAGE_SHIFT); - for (order = 0; (1UL << order) < goal; order++) - ; + /* Then compute the page order for said goal */ + order = get_order(goal); + + /* Now compute the required page order for the maximum sized table we + * want to create + */ + max_entry_order = get_order(MAX_SCTP_PORT_HASH_ENTRIES * + sizeof(struct sctp_bind_hashbucket)); + + /* Limit the page order by that maximum hash table size */ + order = min(order, max_entry_order); do { sctp_assoc_hashsize = (1UL << order) * PAGE_SIZE / @@ -1414,27 +1439,42 @@ INIT_HLIST_HEAD(&sctp_ep_hashtable[i].chain); } - /* Allocate and initialize the SCTP port hash table. */ + /* Allocate and initialize the SCTP port hash table. + * Note that order is initalized to start at the max sized + * table we want to support. If we can't get that many pages + * reduce the order and try again + */ do { - sctp_port_hashsize = (1UL << order) * PAGE_SIZE / - sizeof(struct sctp_bind_hashbucket); - if ((sctp_port_hashsize > (64 * 1024)) && order > 0) - continue; sctp_port_hashtable = (struct sctp_bind_hashbucket *) __get_free_pages(GFP_ATOMIC|__GFP_NOWARN, order); } while (!sctp_port_hashtable && --order > 0); + if (!sctp_port_hashtable) { pr_err("Failed bind hash alloc\n"); status = -ENOMEM; goto err_bhash_alloc; } + + /* Now compute the number of entries that will fit in the + * port hash space we allocated + */ + num_entries = (1UL << order) * PAGE_SIZE / + sizeof(struct sctp_bind_hashbucket); + + /* And finish by rounding it down to the nearest power of two + * this wastes some memory of course, but its needed because + * the hash function operates based on the assumption that + * that the number of entries is a power of two + */ + sctp_port_hashsize = rounddown_pow_of_two(num_entries); + for (i = 0; i < sctp_port_hashsize; i++) { spin_lock_init(&sctp_port_hashtable[i].lock); INIT_HLIST_HEAD(&sctp_port_hashtable[i].chain); } - pr_info("Hash tables configured (established %d bind %d)\n", - sctp_assoc_hashsize, sctp_port_hashsize); + pr_info("Hash tables configured (established %d bind %d/%d)\n", + sctp_assoc_hashsize, sctp_port_hashsize, num_entries); sctp_sysctl_register(); @@ -1442,8 +1482,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 +1494,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 +1512,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 +1552,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/sm_sideeffect.c +++ linux-raspi2-4.2.0/net/sctp/sm_sideeffect.c @@ -244,12 +244,13 @@ int error; struct sctp_transport *transport = (struct sctp_transport *) peer; struct sctp_association *asoc = transport->asoc; - struct net *net = sock_net(asoc->base.sk); + struct sock *sk = asoc->base.sk; + struct net *net = sock_net(sk); /* Check whether a task is in the sock. */ - bh_lock_sock(asoc->base.sk); - if (sock_owned_by_user(asoc->base.sk)) { + bh_lock_sock(sk); + if (sock_owned_by_user(sk)) { pr_debug("%s: sock is busy\n", __func__); /* Try again later. */ @@ -272,10 +273,10 @@ transport, GFP_ATOMIC); if (error) - asoc->base.sk->sk_err = -error; + sk->sk_err = -error; out_unlock: - bh_unlock_sock(asoc->base.sk); + bh_unlock_sock(sk); sctp_transport_put(transport); } @@ -285,11 +286,12 @@ static void sctp_generate_timeout_event(struct sctp_association *asoc, sctp_event_timeout_t timeout_type) { - struct net *net = sock_net(asoc->base.sk); + struct sock *sk = asoc->base.sk; + struct net *net = sock_net(sk); int error = 0; - bh_lock_sock(asoc->base.sk); - if (sock_owned_by_user(asoc->base.sk)) { + bh_lock_sock(sk); + if (sock_owned_by_user(sk)) { pr_debug("%s: sock is busy: timer %d\n", __func__, timeout_type); @@ -312,10 +314,10 @@ (void *)timeout_type, GFP_ATOMIC); if (error) - asoc->base.sk->sk_err = -error; + sk->sk_err = -error; out_unlock: - bh_unlock_sock(asoc->base.sk); + bh_unlock_sock(sk); sctp_association_put(asoc); } @@ -365,10 +367,11 @@ int error = 0; struct sctp_transport *transport = (struct sctp_transport *) data; struct sctp_association *asoc = transport->asoc; - struct net *net = sock_net(asoc->base.sk); + struct sock *sk = asoc->base.sk; + struct net *net = sock_net(sk); - bh_lock_sock(asoc->base.sk); - if (sock_owned_by_user(asoc->base.sk)) { + bh_lock_sock(sk); + if (sock_owned_by_user(sk)) { pr_debug("%s: sock is busy\n", __func__); /* Try again later. */ @@ -389,10 +392,10 @@ transport, GFP_ATOMIC); if (error) - asoc->base.sk->sk_err = -error; + sk->sk_err = -error; out_unlock: - bh_unlock_sock(asoc->base.sk); + bh_unlock_sock(sk); sctp_transport_put(transport); } @@ -403,10 +406,11 @@ { struct sctp_transport *transport = (struct sctp_transport *) data; struct sctp_association *asoc = transport->asoc; - struct net *net = sock_net(asoc->base.sk); + struct sock *sk = asoc->base.sk; + struct net *net = sock_net(sk); - bh_lock_sock(asoc->base.sk); - if (sock_owned_by_user(asoc->base.sk)) { + bh_lock_sock(sk); + if (sock_owned_by_user(sk)) { pr_debug("%s: sock is busy\n", __func__); /* Try again later. */ @@ -427,7 +431,7 @@ asoc->state, asoc->ep, asoc, transport, GFP_ATOMIC); out_unlock: - bh_unlock_sock(asoc->base.sk); + bh_unlock_sock(sk); sctp_association_put(asoc); } --- linux-raspi2-4.2.0.orig/net/sctp/sm_statefuns.c +++ linux-raspi2-4.2.0/net/sctp/sm_statefuns.c @@ -4829,7 +4829,8 @@ retval = SCTP_DISPOSITION_CONSUME; - sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); + if (abort) + sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); /* Even if we can't send the ABORT due to low memory delete the * TCB. This is a departure from our typical NOMEM handling. @@ -4966,7 +4967,8 @@ SCTP_TO(SCTP_EVENT_TIMEOUT_T1_INIT)); retval = SCTP_DISPOSITION_CONSUME; - sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); + if (abort) + sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); sctp_add_cmd_sf(commands, SCTP_CMD_NEW_STATE, SCTP_STATE(SCTP_STATE_CLOSED)); @@ -5412,7 +5414,8 @@ SCTP_INC_STATS(net, SCTP_MIB_T3_RTX_EXPIREDS); if (asoc->overall_error_count >= asoc->max_retrans) { - if (asoc->state == SCTP_STATE_SHUTDOWN_PENDING) { + if (asoc->peer.zero_window_announced && + asoc->state == SCTP_STATE_SHUTDOWN_PENDING) { /* * We are here likely because the receiver had its rwnd * closed for a while and we have not been able to --- linux-raspi2-4.2.0.orig/net/sctp/socket.c +++ linux-raspi2-4.2.0/net/sctp/socket.c @@ -1513,8 +1513,7 @@ struct sctp_chunk *chunk; chunk = sctp_make_abort_user(asoc, NULL, 0); - if (chunk) - sctp_primitive_ABORT(net, asoc, chunk); + sctp_primitive_ABORT(net, asoc, chunk); } else sctp_primitive_SHUTDOWN(net, asoc, NULL); } @@ -5544,6 +5543,7 @@ struct sctp_hmac_algo_param *hmacs; __u16 data_len = 0; u32 num_idents; + int i; if (!ep->auth_enable) return -EACCES; @@ -5561,8 +5561,12 @@ return -EFAULT; if (put_user(num_idents, &p->shmac_num_idents)) return -EFAULT; - if (copy_to_user(p->shmac_idents, hmacs->hmac_ids, data_len)) - return -EFAULT; + for (i = 0; i < num_idents; i++) { + __u16 hmacid = ntohs(hmacs->hmac_ids[i]); + + if (copy_to_user(&p->shmac_idents[i], &hmacid, sizeof(__u16))) + return -EFAULT; + } return 0; } @@ -6642,6 +6646,7 @@ if (cmsgs->srinfo->sinfo_flags & ~(SCTP_UNORDERED | SCTP_ADDR_OVER | + SCTP_SACK_IMMEDIATELY | SCTP_ABORT | SCTP_EOF)) return -EINVAL; break; @@ -6665,6 +6670,7 @@ if (cmsgs->sinfo->snd_flags & ~(SCTP_UNORDERED | SCTP_ADDR_OVER | + SCTP_SACK_IMMEDIATELY | SCTP_ABORT | SCTP_EOF)) return -EINVAL; break; @@ -7163,6 +7169,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 +7202,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 +7385,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 +7401,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/sctp/sysctl.c +++ linux-raspi2-4.2.0/net/sctp/sysctl.c @@ -320,7 +320,7 @@ struct ctl_table tbl; bool changed = false; char *none = "none"; - char tmp[8]; + char tmp[8] = {0}; int ret; memset(&tbl, 0, sizeof(struct ctl_table)); --- linux-raspi2-4.2.0.orig/net/sctp/transport.c +++ linux-raspi2-4.2.0/net/sctp/transport.c @@ -72,7 +72,7 @@ */ peer->rto = msecs_to_jiffies(net->sctp.rto_initial); - peer->last_time_heard = ktime_get(); + peer->last_time_heard = ktime_set(0, 0); peer->last_time_ecne_reduced = jiffies; peer->param_flags = SPP_HB_DISABLE | --- 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); @@ -2243,31 +2244,31 @@ break; } -out_put: - fput_light(sock->file, fput_needed); - if (err == 0) - return datagrams; + goto out_put; + + if (datagrams == 0) { + datagrams = err; + goto out_put; + } - if (datagrams != 0) { + /* + * We may return less entries than requested (vlen) if the + * sock is non block and there aren't enough datagrams... + */ + if (err != -EAGAIN) { /* - * We may return less entries than requested (vlen) if the - * sock is non block and there aren't enough datagrams... + * ... or if recvmsg returns an error after we + * received some datagrams, where we record the + * error to return on the next call or if the + * app asks about it using getsockopt(SO_ERROR). */ - if (err != -EAGAIN) { - /* - * ... or if recvmsg returns an error after we - * received some datagrams, where we record the - * error to return on the next call or if the - * app asks about it using getsockopt(SO_ERROR). - */ - sock->sk->sk_err = -err; - } - - return datagrams; + sock->sk->sk_err = -err; } +out_put: + fput_light(sock->file, fput_needed); - return err; + return datagrams; } SYSCALL_DEFINE5(recvmmsg, int, fd, struct mmsghdr __user *, mmsg, --- 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/cache.c +++ linux-raspi2-4.2.0/net/sunrpc/cache.c @@ -1175,14 +1175,14 @@ } crq->q.reader = 0; - crq->item = cache_get(h); crq->buf = buf; crq->len = 0; crq->readers = 0; spin_lock(&queue_lock); - if (test_bit(CACHE_PENDING, &h->flags)) + if (test_bit(CACHE_PENDING, &h->flags)) { + crq->item = cache_get(h); list_add_tail(&crq->q.list, &detail->queue); - else + } else /* Lost a race, no longer PENDING, so don't enqueue */ ret = -EAGAIN; spin_unlock(&queue_lock); @@ -1218,7 +1218,7 @@ if (bp[0] == '\\' && bp[1] == 'x') { /* HEX STRING */ bp += 2; - while (len < bufsize) { + while (len < bufsize - 1) { int h, l; h = hex_to_bin(bp[0]); --- linux-raspi2-4.2.0.orig/net/sunrpc/sched.c +++ linux-raspi2-4.2.0/net/sunrpc/sched.c @@ -250,11 +250,11 @@ } EXPORT_SYMBOL_GPL(rpc_destroy_wait_queue); -static int rpc_wait_bit_killable(struct wait_bit_key *key) +static int rpc_wait_bit_killable(struct wait_bit_key *key, int mode) { - if (fatal_signal_pending(current)) - return -ERESTARTSYS; freezable_schedule_unsafe(); + if (signal_pending_state(mode, current)) + return -ERESTARTSYS; return 0; } --- linux-raspi2-4.2.0.orig/net/sunrpc/svc.c +++ linux-raspi2-4.2.0/net/sunrpc/svc.c @@ -1367,6 +1367,19 @@ memcpy(&rqstp->rq_arg, &req->rq_rcv_buf, sizeof(rqstp->rq_arg)); memcpy(&rqstp->rq_res, &req->rq_snd_buf, sizeof(rqstp->rq_res)); + /* Adjust the argument buffer length */ + rqstp->rq_arg.len = req->rq_private_buf.len; + if (rqstp->rq_arg.len <= rqstp->rq_arg.head[0].iov_len) { + rqstp->rq_arg.head[0].iov_len = rqstp->rq_arg.len; + rqstp->rq_arg.page_len = 0; + } else if (rqstp->rq_arg.len <= rqstp->rq_arg.head[0].iov_len + + rqstp->rq_arg.page_len) + rqstp->rq_arg.page_len = rqstp->rq_arg.len - + rqstp->rq_arg.head[0].iov_len; + else + rqstp->rq_arg.len = rqstp->rq_arg.head[0].iov_len + + rqstp->rq_arg.page_len; + /* reset result send buffer "put" position */ resv->iov_len = 0; --- 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/switchdev/switchdev.c +++ linux-raspi2-4.2.0/net/switchdev/switchdev.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -333,7 +334,6 @@ } EXPORT_SYMBOL_GPL(switchdev_port_obj_dump); -static DEFINE_MUTEX(switchdev_mutex); static RAW_NOTIFIER_HEAD(switchdev_notif_chain); /** @@ -348,9 +348,9 @@ { int err; - mutex_lock(&switchdev_mutex); + rtnl_lock(); err = raw_notifier_chain_register(&switchdev_notif_chain, nb); - mutex_unlock(&switchdev_mutex); + rtnl_unlock(); return err; } EXPORT_SYMBOL_GPL(register_switchdev_notifier); @@ -366,9 +366,9 @@ { int err; - mutex_lock(&switchdev_mutex); + rtnl_lock(); err = raw_notifier_chain_unregister(&switchdev_notif_chain, nb); - mutex_unlock(&switchdev_mutex); + rtnl_unlock(); return err; } EXPORT_SYMBOL_GPL(unregister_switchdev_notifier); @@ -382,16 +382,17 @@ * Call all network notifier blocks. This should be called by driver * when it needs to propagate hardware event. * Return values are same as for atomic_notifier_call_chain(). + * rtnl_lock must be held. */ int call_switchdev_notifiers(unsigned long val, struct net_device *dev, struct switchdev_notifier_info *info) { int err; + ASSERT_RTNL(); + info->dev = dev; - mutex_lock(&switchdev_mutex); err = raw_notifier_call_chain(&switchdev_notif_chain, val, info); - mutex_unlock(&switchdev_mutex); return err; } EXPORT_SYMBOL_GPL(call_switchdev_notifiers); --- 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/subscr.c +++ linux-raspi2-4.2.0/net/tipc/subscr.c @@ -289,15 +289,15 @@ struct sockaddr_tipc *addr, void *usr_data, void *buf, size_t len) { - struct tipc_subscriber *subscriber = usr_data; + struct tipc_subscriber *subscrb = usr_data; struct tipc_subscription *sub = NULL; struct tipc_net *tn = net_generic(net, tipc_net_id); - tipc_subscrp_create(net, (struct tipc_subscr *)buf, subscriber, &sub); + if (tipc_subscrp_create(net, (struct tipc_subscr *)buf, subscrb, &sub)) + return tipc_conn_terminate(tn->topsrv, subscrb->conid); + if (sub) tipc_nametbl_subscribe(sub); - else - tipc_conn_terminate(tn->topsrv, subscriber->conid); } /* Handle one request to establish a new subscriber */ --- 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) @@ -836,32 +952,20 @@ return NULL; } -static int unix_mknod(const char *sun_path, umode_t mode, struct path *res) +static int unix_mknod(struct dentry *dentry, struct path *path, umode_t mode, + struct path *res) { - struct dentry *dentry; - struct path path; - int err = 0; - /* - * Get the parent directory, calculate the hash for last - * component. - */ - dentry = kern_path_create(AT_FDCWD, sun_path, &path, 0); - err = PTR_ERR(dentry); - if (IS_ERR(dentry)) - return err; + int err; - /* - * All right, let's create it. - */ - err = security_path_mknod(&path, dentry, mode, 0); + err = security_path_mknod(path, dentry, mode, 0); if (!err) { - err = vfs_mknod(d_inode(path.dentry), dentry, mode, 0); + err = vfs_mknod(d_inode(path->dentry), dentry, mode, 0); if (!err) { - res->mnt = mntget(path.mnt); + res->mnt = mntget(path->mnt); res->dentry = dget(dentry); } } - done_path_create(&path, dentry); + return err; } @@ -872,10 +976,12 @@ struct unix_sock *u = unix_sk(sk); struct sockaddr_un *sunaddr = (struct sockaddr_un *)uaddr; char *sun_path = sunaddr->sun_path; - int err; + int err, name_err; unsigned int hash; struct unix_address *addr; struct hlist_head *list; + struct path path; + struct dentry *dentry; err = -EINVAL; if (sunaddr->sun_family != AF_UNIX) @@ -891,14 +997,34 @@ goto out; addr_len = err; + name_err = 0; + dentry = NULL; + if (sun_path[0]) { + /* Get the parent directory, calculate the hash for last + * component. + */ + dentry = kern_path_create(AT_FDCWD, sun_path, &path, 0); + + if (IS_ERR(dentry)) { + /* delay report until after 'already bound' check */ + name_err = PTR_ERR(dentry); + dentry = NULL; + } + } + err = mutex_lock_interruptible(&u->readlock); if (err) - goto out; + goto out_path; err = -EINVAL; if (u->addr) goto out_up; + if (name_err) { + err = name_err == -EEXIST ? -EADDRINUSE : name_err; + goto out_up; + } + err = -ENOMEM; addr = kmalloc(sizeof(*addr)+addr_len, GFP_KERNEL); if (!addr) @@ -909,11 +1035,11 @@ addr->hash = hash ^ sk->sk_type; atomic_set(&addr->refcnt, 1); - if (sun_path[0]) { - struct path path; + if (dentry) { + struct path u_path; umode_t mode = S_IFSOCK | (SOCK_INODE(sock)->i_mode & ~current_umask()); - err = unix_mknod(sun_path, mode, &path); + err = unix_mknod(dentry, &path, mode, &u_path); if (err) { if (err == -EEXIST) err = -EADDRINUSE; @@ -921,9 +1047,9 @@ goto out_up; } addr->hash = UNIX_HASH_SIZE; - hash = d_backing_inode(path.dentry)->i_ino & (UNIX_HASH_SIZE-1); + hash = d_backing_inode(dentry)->i_ino & (UNIX_HASH_SIZE - 1); spin_lock(&unix_table_lock); - u->path = path; + u->path = u_path; list = &unix_socket_table[hash]; } else { spin_lock(&unix_table_lock); @@ -946,6 +1072,10 @@ spin_unlock(&unix_table_lock); out_up: mutex_unlock(&u->readlock); +out_path: + if (dentry) + done_path_create(&path, dentry); + out: return err; } @@ -1031,6 +1161,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) @@ -1363,7 +1495,7 @@ UNIXCB(skb).fp = NULL; for (i = scm->fp->count-1; i >= 0; i--) - unix_notinflight(scm->fp->fp[i]); + unix_notinflight(scm->fp->user, scm->fp->fp[i]); } static void unix_destruct_scm(struct sk_buff *skb) @@ -1380,6 +1512,21 @@ sock_wfree(skb); } +/* + * The "user->unix_inflight" variable is protected by the garbage + * collection lock, and we just read it locklessly here. If you go + * over the limit, there might be a tiny race in actually noticing + * it across threads. Tough. + */ +static inline bool too_many_unix_fds(struct task_struct *p) +{ + struct user_struct *user = current_user(); + + if (unlikely(user->unix_inflight > task_rlimit(p, RLIMIT_NOFILE))) + return !capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN); + return false; +} + #define MAX_RECURSION_LEVEL 4 static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) @@ -1388,6 +1535,9 @@ unsigned char max_level = 0; int unix_sock_count = 0; + if (too_many_unix_fds(current)) + return -ETOOMANYREFS; + for (i = scm->fp->count - 1; i >= 0; i--) { struct sock *sk = unix_get_socket(scm->fp->fp[i]); @@ -1409,10 +1559,8 @@ if (!UNIXCB(skb).fp) return -ENOMEM; - if (unix_sock_count) { - for (i = scm->fp->count - 1; i >= 0; i--) - unix_inflight(scm->fp->fp[i]); - } + for (i = scm->fp->count - 1; i >= 0; i--) + unix_inflight(scm->fp->user, scm->fp->fp[i]); return max_level; } @@ -1432,6 +1580,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 +1598,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 +1653,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 +1732,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 +1747,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 +1780,43 @@ goto out_unlock; } - if (unix_peer(other) != sk && unix_recvq_full(other)) { - if (!timeo) { - err = -EAGAIN; - goto out_unlock; + /* other == sk && unix_peer(other) != sk if + * - unix_peer(sk) == NULL, destination address bound to sk + * - unix_peer(sk) == sk by time of get but disconnected before lock + */ + if (other != sk && + 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 +1830,8 @@ return len; out_unlock: + if (sk_locked) + unix_state_unlock(sk); unix_state_unlock(other); out_free: kfree_skb(skb); @@ -1739,8 +1953,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 +1974,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 +1983,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 +1997,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 +2037,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 +2061,8 @@ kfree_skb(newskb); if (send_sigpipe && !(flags & MSG_NOSIGNAL)) send_sig(SIGPIPE, current, 0); + if (!init_scm) + scm_destroy(&scm); return err; } @@ -2039,13 +2274,15 @@ size_t size = state->size; unsigned int last_len; - err = -EINVAL; - if (sk->sk_state != TCP_ESTABLISHED) + if (unlikely(sk->sk_state != TCP_ESTABLISHED)) { + err = -EINVAL; goto out; + } - err = -EOPNOTSUPP; - if (flags & MSG_OOB) + if (unlikely(flags & MSG_OOB)) { + err = -EOPNOTSUPP; goto out; + } target = sock_rcvlowat(sk, flags & MSG_WAITALL, size); timeo = sock_rcvtimeo(sk, noblock); @@ -2064,8 +2301,14 @@ goto out; } + 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); @@ -2092,9 +2335,11 @@ goto unlock; unix_state_unlock(sk); - err = -EAGAIN; - if (!timeo) + if (!timeo) { + err = -EAGAIN; break; + } + mutex_unlock(&u->readlock); timeo = unix_stream_data_wait(sk, timeo, last, @@ -2103,6 +2348,7 @@ if (signal_pending(current) || mutex_lock_interruptible(&u->readlock)) { err = sock_intr_errno(timeo); + scm_destroy(&scm); goto out; } @@ -2112,7 +2358,6 @@ break; } - skip = sk_peek_offset(sk, flags); while (skip >= unix_skb_len(skb)) { skip -= unix_skb_len(skb); last = skb; @@ -2126,10 +2371,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 +2389,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 +2402,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 +2439,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 +2707,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/unix/diag.c +++ linux-raspi2-4.2.0/net/unix/diag.c @@ -220,7 +220,7 @@ return skb->len; } -static struct sock *unix_lookup_by_ino(int ino) +static struct sock *unix_lookup_by_ino(unsigned int ino) { int i; struct sock *sk; --- linux-raspi2-4.2.0.orig/net/unix/garbage.c +++ linux-raspi2-4.2.0/net/unix/garbage.c @@ -116,15 +116,15 @@ * descriptor if it is for an AF_UNIX socket. */ -void unix_inflight(struct file *fp) +void unix_inflight(struct user_struct *user, struct file *fp) { struct sock *s = unix_get_socket(fp); + spin_lock(&unix_gc_lock); + if (s) { struct unix_sock *u = unix_sk(s); - spin_lock(&unix_gc_lock); - if (atomic_long_inc_return(&u->inflight) == 1) { BUG_ON(!list_empty(&u->link)); list_add_tail(&u->link, &gc_inflight_list); @@ -132,25 +132,28 @@ BUG_ON(list_empty(&u->link)); } unix_tot_inflight++; - spin_unlock(&unix_gc_lock); } + user->unix_inflight++; + spin_unlock(&unix_gc_lock); } -void unix_notinflight(struct file *fp) +void unix_notinflight(struct user_struct *user, struct file *fp) { struct sock *s = unix_get_socket(fp); + spin_lock(&unix_gc_lock); + if (s) { struct unix_sock *u = unix_sk(s); - spin_lock(&unix_gc_lock); BUG_ON(list_empty(&u->link)); if (atomic_long_dec_and_test(&u->inflight)) list_del_init(&u->link); unix_tot_inflight--; - spin_unlock(&unix_gc_lock); } + user->unix_inflight--; + spin_unlock(&unix_gc_lock); } static void scan_inflight(struct sock *x, void (*func)(struct unix_sock *), --- linux-raspi2-4.2.0.orig/net/wireless/core.c +++ linux-raspi2-4.2.0/net/wireless/core.c @@ -1138,6 +1138,8 @@ return NOTIFY_DONE; } + wireless_nlevent_flush(); + return NOTIFY_OK; } --- 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/net/wireless/wext-core.c +++ linux-raspi2-4.2.0/net/wireless/wext-core.c @@ -342,6 +342,40 @@ /* IW event code */ +void wireless_nlevent_flush(void) +{ + struct sk_buff *skb; + struct net *net; + + ASSERT_RTNL(); + + for_each_net(net) { + while ((skb = skb_dequeue(&net->wext_nlevents))) + rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, + GFP_KERNEL); + } +} +EXPORT_SYMBOL_GPL(wireless_nlevent_flush); + +static int wext_netdev_notifier_call(struct notifier_block *nb, + unsigned long state, void *ptr) +{ + /* + * When a netdev changes state in any way, flush all pending messages + * to avoid them going out in a strange order, e.g. RTM_NEWLINK after + * RTM_DELLINK, or with IFF_UP after without IFF_UP during dev_close() + * or similar - all of which could otherwise happen due to delays from + * schedule_work(). + */ + wireless_nlevent_flush(); + + return NOTIFY_OK; +} + +static struct notifier_block wext_netdev_notifier = { + .notifier_call = wext_netdev_notifier_call, +}; + static int __net_init wext_pernet_init(struct net *net) { skb_queue_head_init(&net->wext_nlevents); @@ -360,7 +394,12 @@ static int __init wireless_nlevent_init(void) { - return register_pernet_subsys(&wext_pernet_ops); + int err = register_pernet_subsys(&wext_pernet_ops); + + if (err) + return err; + + return register_netdevice_notifier(&wext_netdev_notifier); } subsys_initcall(wireless_nlevent_init); @@ -368,17 +407,8 @@ /* Process events generated by the wireless layer or the driver. */ static void wireless_nlevent_process(struct work_struct *work) { - struct sk_buff *skb; - struct net *net; - rtnl_lock(); - - for_each_net(net) { - while ((skb = skb_dequeue(&net->wext_nlevents))) - rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, - GFP_KERNEL); - } - + wireless_nlevent_flush(); rtnl_unlock(); } --- linux-raspi2-4.2.0.orig/net/xfrm/xfrm_output.c +++ linux-raspi2-4.2.0/net/xfrm/xfrm_output.c @@ -165,6 +165,8 @@ { struct sk_buff *segs; + BUILD_BUG_ON(sizeof(*IPCB(skb)) > SKB_SGO_CB_OFFSET); + BUILD_BUG_ON(sizeof(*IP6CB(skb)) > SKB_SGO_CB_OFFSET); segs = skb_gso_segment(skb, 0); kfree_skb(skb); if (IS_ERR(segs)) --- linux-raspi2-4.2.0.orig/net/xfrm/xfrm_policy.c +++ linux-raspi2-4.2.0/net/xfrm/xfrm_policy.c @@ -1212,8 +1212,10 @@ struct xfrm_policy *pol; struct net *net = sock_net(sk); + rcu_read_lock(); read_lock_bh(&net->xfrm.xfrm_policy_lock); - if ((pol = sk->sk_policy[dir]) != NULL) { + pol = rcu_dereference(sk->sk_policy[dir]); + if (pol != NULL) { bool match = xfrm_selector_match(&pol->selector, fl, sk->sk_family); int err = 0; @@ -1237,6 +1239,7 @@ } out: read_unlock_bh(&net->xfrm.xfrm_policy_lock); + rcu_read_unlock(); return pol; } @@ -1305,13 +1308,14 @@ #endif write_lock_bh(&net->xfrm.xfrm_policy_lock); - old_pol = sk->sk_policy[dir]; - sk->sk_policy[dir] = pol; + old_pol = rcu_dereference_protected(sk->sk_policy[dir], + lockdep_is_held(&net->xfrm.xfrm_policy_lock)); if (pol) { pol->curlft.add_time = get_seconds(); pol->index = xfrm_gen_index(net, XFRM_POLICY_MAX+dir, 0); xfrm_sk_policy_link(pol, dir); } + rcu_assign_pointer(sk->sk_policy[dir], pol); if (old_pol) { if (pol) xfrm_policy_requeue(old_pol, pol); @@ -1359,17 +1363,26 @@ return newp; } -int __xfrm_sk_clone_policy(struct sock *sk) +int __xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk) { - struct xfrm_policy *p0 = sk->sk_policy[0], - *p1 = sk->sk_policy[1]; + const struct xfrm_policy *p; + struct xfrm_policy *np; + int i, ret = 0; - sk->sk_policy[0] = sk->sk_policy[1] = NULL; - if (p0 && (sk->sk_policy[0] = clone_policy(p0, 0)) == NULL) - return -ENOMEM; - if (p1 && (sk->sk_policy[1] = clone_policy(p1, 1)) == NULL) - return -ENOMEM; - return 0; + rcu_read_lock(); + for (i = 0; i < 2; i++) { + p = rcu_dereference(osk->sk_policy[i]); + if (p) { + np = clone_policy(p, i); + if (unlikely(!np)) { + ret = -ENOMEM; + break; + } + rcu_assign_pointer(sk->sk_policy[i], np); + } + } + rcu_read_unlock(); + return ret; } static int @@ -2803,7 +2816,6 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) { - struct net *net; int err = 0; if (unlikely(afinfo == NULL)) return -EINVAL; @@ -2834,26 +2846,6 @@ } spin_unlock(&xfrm_policy_afinfo_lock); - rtnl_lock(); - for_each_net(net) { - struct dst_ops *xfrm_dst_ops; - - switch (afinfo->family) { - case AF_INET: - xfrm_dst_ops = &net->xfrm.xfrm4_dst_ops; - break; -#if IS_ENABLED(CONFIG_IPV6) - case AF_INET6: - xfrm_dst_ops = &net->xfrm.xfrm6_dst_ops; - break; -#endif - default: - BUG(); - } - *xfrm_dst_ops = *afinfo->dst_ops; - } - rtnl_unlock(); - return err; } EXPORT_SYMBOL(xfrm_policy_register_afinfo); @@ -2889,22 +2881,6 @@ } EXPORT_SYMBOL(xfrm_policy_unregister_afinfo); -static void __net_init xfrm_dst_ops_init(struct net *net) -{ - struct xfrm_policy_afinfo *afinfo; - - rcu_read_lock(); - afinfo = rcu_dereference(xfrm_policy_afinfo[AF_INET]); - if (afinfo) - net->xfrm.xfrm4_dst_ops = *afinfo->dst_ops; -#if IS_ENABLED(CONFIG_IPV6) - afinfo = rcu_dereference(xfrm_policy_afinfo[AF_INET6]); - if (afinfo) - net->xfrm.xfrm6_dst_ops = *afinfo->dst_ops; -#endif - rcu_read_unlock(); -} - static int xfrm_dev_event(struct notifier_block *this, unsigned long event, void *ptr) { struct net_device *dev = netdev_notifier_info_to_dev(ptr); @@ -3053,7 +3029,6 @@ rv = xfrm_policy_init(net); if (rv < 0) goto out_policy; - xfrm_dst_ops_init(net); rv = xfrm_sysctl_init(net); if (rv < 0) goto out_sysctl; --- linux-raspi2-4.2.0.orig/scripts/Makefile.extrawarn +++ linux-raspi2-4.2.0/scripts/Makefile.extrawarn @@ -25,6 +25,7 @@ warning-1 += $(call cc-option, -Wmissing-include-dirs) warning-1 += $(call cc-option, -Wunused-but-set-variable) warning-1 += $(call cc-disable-warning, missing-field-initializers) +warning-1 += $(call cc-disable-warning, sign-compare) warning-2 := -Waggregate-return warning-2 += -Wcast-align @@ -33,6 +34,7 @@ warning-2 += -Wshadow warning-2 += $(call cc-option, -Wlogical-op) warning-2 += $(call cc-option, -Wmissing-field-initializers) +warning-2 += $(call cc-option, -Wsign-compare) warning-3 := -Wbad-function-cast warning-3 += -Wcast-qual --- linux-raspi2-4.2.0.orig/scripts/bloat-o-meter +++ linux-raspi2-4.2.0/scripts/bloat-o-meter @@ -58,8 +58,8 @@ delta.sort() delta.reverse() -print "add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s (%s)" % \ - (add, remove, grow, shrink, up, -down, up-down) -print "%-40s %7s %7s %+7s" % ("function", "old", "new", "delta") +print("add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s (%s)" % \ + (add, remove, grow, shrink, up, -down, up-down)) +print("%-40s %7s %7s %+7s" % ("function", "old", "new", "delta")) for d, n in delta: - if d: print "%-40s %7s %7s %+7d" % (n, old.get(n,"-"), new.get(n,"-"), d) + if d: print("%-40s %7s %7s %+7d" % (n, old.get(n,"-"), new.get(n,"-"), d)) --- linux-raspi2-4.2.0.orig/scripts/coccinelle/iterators/use_after_iter.cocci +++ linux-raspi2-4.2.0/scripts/coccinelle/iterators/use_after_iter.cocci @@ -123,7 +123,7 @@ | sizeof(<+...c...+>) | -&c->member + &c->member | c = E | --- 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/kconfig/menu.c +++ linux-raspi2-4.2.0/scripts/kconfig/menu.c @@ -477,7 +477,7 @@ if (menu->visibility) { if (expr_calc_value(menu->visibility) == no) - return no; + return false; } sym = menu->sym; --- 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/package/mkspec +++ linux-raspi2-4.2.0/scripts/package/mkspec @@ -133,11 +133,11 @@ echo "" echo "%post" echo "if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then" -echo "cp /boot/vmlinuz-$KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm" -echo "cp /boot/System.map-$KERNELRELEASE /boot/System.map-$KERNELRELEASE-rpm" +echo "cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm" +echo "cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm" echo "rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE" -echo "/sbin/installkernel $KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm" -echo "rm -f /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm" +echo "/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm" +echo "rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm" echo "fi" echo "" echo "%files" --- linux-raspi2-4.2.0.orig/scripts/recordmcount.c +++ linux-raspi2-4.2.0/scripts/recordmcount.c @@ -42,17 +42,23 @@ #ifndef EM_AARCH64 #define EM_AARCH64 183 +#define R_AARCH64_NONE 0 #define R_AARCH64_ABS64 257 #endif static int fd_map; /* File descriptor for file being modified. */ static int mmap_failed; /* Boolean flag. */ -static void *ehdr_curr; /* current ElfXX_Ehdr * for resource cleanup */ static char gpfx; /* prefix for global symbol name (sometimes '_') */ static struct stat sb; /* Remember .st_size, etc. */ static jmp_buf jmpenv; /* setjmp/longjmp per-file error escape */ static const char *altmcount; /* alternate mcount symbol name */ static int warn_on_notrace_sect; /* warn when section has mcount not being recorded */ +static void *file_map; /* pointer of the mapped file */ +static void *file_end; /* pointer to the end of the mapped file */ +static int file_updated; /* flag to state file was changed */ +static void *file_ptr; /* current file pointer location */ +static void *file_append; /* added to the end of the file */ +static size_t file_append_size; /* how much is added to end of file */ /* setjmp() return values */ enum { @@ -66,10 +72,14 @@ cleanup(void) { if (!mmap_failed) - munmap(ehdr_curr, sb.st_size); + munmap(file_map, sb.st_size); else - free(ehdr_curr); - close(fd_map); + free(file_map); + file_map = NULL; + free(file_append); + file_append = NULL; + file_append_size = 0; + file_updated = 0; } static void __attribute__((noreturn)) @@ -91,12 +101,22 @@ static off_t ulseek(int const fd, off_t const offset, int const whence) { - off_t const w = lseek(fd, offset, whence); - if (w == (off_t)-1) { - perror("lseek"); + switch (whence) { + case SEEK_SET: + file_ptr = file_map + offset; + break; + case SEEK_CUR: + file_ptr += offset; + break; + case SEEK_END: + file_ptr = file_map + (sb.st_size - offset); + break; + } + if (file_ptr < file_map) { + fprintf(stderr, "lseek: seek before file\n"); fail_file(); } - return w; + return file_ptr - file_map; } static size_t @@ -113,12 +133,38 @@ static size_t uwrite(int const fd, void const *const buf, size_t const count) { - size_t const n = write(fd, buf, count); - if (n != count) { - perror("write"); - fail_file(); + size_t cnt = count; + off_t idx = 0; + + file_updated = 1; + + if (file_ptr + count >= file_end) { + off_t aoffset = (file_ptr + count) - file_end; + + if (aoffset > file_append_size) { + file_append = realloc(file_append, aoffset); + file_append_size = aoffset; + } + if (!file_append) { + perror("write"); + fail_file(); + } + if (file_ptr < file_end) { + cnt = file_end - file_ptr; + } else { + cnt = 0; + idx = aoffset - count; + } } - return n; + + if (cnt) + memcpy(file_ptr, buf, cnt); + + if (cnt < count) + memcpy(file_append + idx, buf + cnt, count - cnt); + + file_ptr += count; + return count; } static void * @@ -160,6 +206,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 @@ -175,9 +237,7 @@ */ static void *mmap_file(char const *fname) { - void *addr; - - fd_map = open(fname, O_RDWR); + fd_map = open(fname, O_RDONLY); if (fd_map < 0 || fstat(fd_map, &sb) < 0) { perror(fname); fail_file(); @@ -186,15 +246,58 @@ fprintf(stderr, "not a regular file: %s\n", fname); fail_file(); } - addr = mmap(0, sb.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, - fd_map, 0); + file_map = mmap(0, sb.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, + fd_map, 0); mmap_failed = 0; - if (addr == MAP_FAILED) { + if (file_map == MAP_FAILED) { mmap_failed = 1; - addr = umalloc(sb.st_size); - uread(fd_map, addr, sb.st_size); + file_map = umalloc(sb.st_size); + uread(fd_map, file_map, sb.st_size); + } + close(fd_map); + + file_end = file_map + sb.st_size; + + return file_map; +} + +static void write_file(const char *fname) +{ + char tmp_file[strlen(fname) + 4]; + size_t n; + + if (!file_updated) + return; + + sprintf(tmp_file, "%s.rc", fname); + + /* + * After reading the entire file into memory, delete it + * and write it back, to prevent weird side effects of modifying + * an object file in place. + */ + fd_map = open(tmp_file, O_WRONLY | O_TRUNC | O_CREAT, sb.st_mode); + if (fd_map < 0) { + perror(fname); + fail_file(); + } + n = write(fd_map, file_map, sb.st_size); + if (n != sb.st_size) { + perror("write"); + fail_file(); + } + if (file_append_size) { + n = write(fd_map, file_append, file_append_size); + if (n != file_append_size) { + perror("write"); + fail_file(); + } + } + close(fd_map); + if (rename(tmp_file, fname) < 0) { + perror(fname); + fail_file(); } - return addr; } /* w8rev, w8nat, ...: Handle endianness. */ @@ -301,7 +404,6 @@ Elf32_Ehdr *const ehdr = mmap_file(fname); unsigned int reltype = 0; - ehdr_curr = ehdr; w = w4nat; w2 = w2nat; w8 = w8nat; @@ -353,7 +455,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"; @@ -417,6 +524,7 @@ } } /* end switch */ + write_file(fname); cleanup(); } @@ -469,11 +577,14 @@ case SJ_SETJMP: /* normal sequence */ /* Avoid problems if early cleanup() */ fd_map = -1; - ehdr_curr = NULL; mmap_failed = 1; + file_map = NULL; + file_ptr = NULL; + file_updated = 0; do_file(file); break; case SJ_FAIL: /* error in do_file or below */ + fprintf(stderr, "%s: failed\n", file); ++n_error; break; case SJ_SUCCEED: /* premature success */ --- 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/scripts/recordmcount.pl +++ linux-raspi2-4.2.0/scripts/recordmcount.pl @@ -263,7 +263,8 @@ } elsif ($arch eq "powerpc") { $local_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)"; - $function_regex = "^([0-9a-fA-F]+)\\s+<(\\.?.*?)>:"; + # See comment in the sparc64 section for why we use '\w'. + $function_regex = "^([0-9a-fA-F]+)\\s+<(\\.?\\w*?)>:"; $mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s\\.?_mcount\$"; if ($bits == 64) { --- 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,635 @@ +/* + * 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 + */ + struct aa_sk_cxt *cxt = SK_CXT(&u->sk); + if (cxt->path.dentry) + return aa_path_perm(op, label, &cxt->path, flags, mask, + &cond); + return fn_for_each_confined(label, profile, + ((flags | profile->path_flags) & PATH_MEDIATE_DELETED) ? + __aa_path_perm(op, profile, + u->addr->name->sun_path, mask, + &cond, flags, &perms) : + aa_audit_file(profile, &nullperms, op, mask, + u->addr->name->sun_path, NULL, + 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,112 @@ +/* + * 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 + +#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; + struct path path; +}; + +#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,492 @@ 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); + path_put(&cxt->path); + 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); + new->path = cxt->path; + path_get(&new->path); +} + +static struct path *UNIX_FS_CONN_PATH(struct sock *sk, struct sock *newsk) +{ + if (sk->sk_family == PF_UNIX && UNIX_FS(sk)) + return &unix_sk(sk)->path; + else if (newsk->sk_family == PF_UNIX && UNIX_FS(newsk)) + return &unix_sk(newsk)->path; + return NULL; +} + +/** + * apparmor_unix_stream_connect - check perms before making unix domain conn + * + * peer is locked when this hook is called + */ +static int apparmor_unix_stream_connect(struct sock *sk, struct sock *peer_sk, + struct sock *newsk) +{ + struct aa_sk_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; + struct path *path; + 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); + + path = UNIX_FS_CONN_PATH(sk, peer_sk); + if (path) { + new_cxt->path = *path; + sk_cxt->path = *path; + path_get(path); + path_get(path); + } + return 0; +} + +/** + * apparmor_unix_may_send - check perms before conn or sending unix dgrams + * + * other is locked when this hook is called + * + * dgram connect calls may_send, peer setup but path not copied????? + */ +static int apparmor_unix_may_send(struct socket *sock, struct socket *peer) +{ + struct aa_sk_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 +1167,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 +1215,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 +1263,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 +1310,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 +1443,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 +1453,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 +1519,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 +1544,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 @@ -437,7 +437,7 @@ if (!file_caps_enabled) return 0; - if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID) + if (path_nosuid(&bprm->file->f_path)) return 0; rc = get_vfs_caps_from_disk(bprm->file->f_path.dentry, &vcaps); @@ -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/integrity/evm/evm_main.c +++ linux-raspi2-4.2.0/security/integrity/evm/evm_main.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "evm.h" int evm_initialized; @@ -148,7 +149,7 @@ xattr_value_len, calc.digest); if (rc) break; - rc = memcmp(xattr_data->digest, calc.digest, + rc = crypto_memneq(xattr_data->digest, calc.digest, sizeof(calc.digest)); if (rc) rc = -EINVAL; --- 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, '\"'); } @@ -2137,7 +2137,7 @@ const struct task_security_struct *new_tsec) { int nnp = (bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS); - int nosuid = (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID); + int nosuid = path_nosuid(&bprm->file->f_path); int rc; if (!nnp && !nosuid) --- 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/compress_offload.c +++ linux-raspi2-4.2.0/sound/core/compress_offload.c @@ -44,6 +44,13 @@ #include #include +/* struct snd_compr_codec_caps overflows the ioctl bit size for some + * architectures, so we need to disable the relevant ioctls. + */ +#if _IOC_SIZEBITS < 14 +#define COMPR_CODEC_CAPS_OVERFLOW +#endif + /* TODO: * - add substream support for multiple devices in case of * SND_DYNAMIC_MINORS is not used @@ -438,6 +445,7 @@ return retval; } +#ifndef COMPR_CODEC_CAPS_OVERFLOW static int snd_compr_get_codec_caps(struct snd_compr_stream *stream, unsigned long arg) { @@ -461,6 +469,7 @@ kfree(caps); return retval; } +#endif /* !COMPR_CODEC_CAPS_OVERFLOW */ /* revisit this with snd_pcm_preallocate_xxx */ static int snd_compr_allocate_buffer(struct snd_compr_stream *stream, @@ -799,9 +808,11 @@ case _IOC_NR(SNDRV_COMPRESS_GET_CAPS): retval = snd_compr_get_caps(stream, arg); break; +#ifndef COMPR_CODEC_CAPS_OVERFLOW case _IOC_NR(SNDRV_COMPRESS_GET_CODEC_CAPS): retval = snd_compr_get_codec_caps(stream, arg); break; +#endif case _IOC_NR(SNDRV_COMPRESS_SET_PARAMS): retval = snd_compr_set_params(stream, arg); break; --- linux-raspi2-4.2.0.orig/sound/core/control.c +++ linux-raspi2-4.2.0/sound/core/control.c @@ -1405,6 +1405,8 @@ return -EFAULT; if (tlv.length < sizeof(unsigned int) * 2) return -EINVAL; + if (!tlv.numid) + return -EINVAL; down_read(&card->controls_rwsem); kctl = snd_ctl_find_numid(card, tlv.numid); if (kctl == NULL) { --- linux-raspi2-4.2.0.orig/sound/core/control_compat.c +++ linux-raspi2-4.2.0/sound/core/control_compat.c @@ -170,6 +170,19 @@ unsigned char reserved[128]; }; +#ifdef CONFIG_X86_X32 +/* x32 has a different alignment for 64bit values from ia32 */ +struct snd_ctl_elem_value_x32 { + struct snd_ctl_elem_id id; + unsigned int indirect; /* bit-field causes misalignment */ + union { + s32 integer[128]; + unsigned char data[512]; + s64 integer64[64]; + } value; + unsigned char reserved[128]; +}; +#endif /* CONFIG_X86_X32 */ /* get the value type and count of the control */ static int get_ctl_type(struct snd_card *card, struct snd_ctl_elem_id *id, @@ -219,9 +232,11 @@ static int copy_ctl_value_from_user(struct snd_card *card, struct snd_ctl_elem_value *data, - struct snd_ctl_elem_value32 __user *data32, + void __user *userdata, + void __user *valuep, int *typep, int *countp) { + struct snd_ctl_elem_value32 __user *data32 = userdata; int i, type, size; int uninitialized_var(count); unsigned int indirect; @@ -239,8 +254,9 @@ if (type == SNDRV_CTL_ELEM_TYPE_BOOLEAN || type == SNDRV_CTL_ELEM_TYPE_INTEGER) { for (i = 0; i < count; i++) { + s32 __user *intp = valuep; int val; - if (get_user(val, &data32->value.integer[i])) + if (get_user(val, &intp[i])) return -EFAULT; data->value.integer.value[i] = val; } @@ -250,8 +266,7 @@ dev_err(card->dev, "snd_ioctl32_ctl_elem_value: unknown type %d\n", type); return -EINVAL; } - if (copy_from_user(data->value.bytes.data, - data32->value.data, size)) + if (copy_from_user(data->value.bytes.data, valuep, size)) return -EFAULT; } @@ -261,7 +276,8 @@ } /* restore the value to 32bit */ -static int copy_ctl_value_to_user(struct snd_ctl_elem_value32 __user *data32, +static int copy_ctl_value_to_user(void __user *userdata, + void __user *valuep, struct snd_ctl_elem_value *data, int type, int count) { @@ -270,22 +286,22 @@ if (type == SNDRV_CTL_ELEM_TYPE_BOOLEAN || type == SNDRV_CTL_ELEM_TYPE_INTEGER) { for (i = 0; i < count; i++) { + s32 __user *intp = valuep; int val; val = data->value.integer.value[i]; - if (put_user(val, &data32->value.integer[i])) + if (put_user(val, &intp[i])) return -EFAULT; } } else { size = get_elem_size(type, count); - if (copy_to_user(data32->value.data, - data->value.bytes.data, size)) + if (copy_to_user(valuep, data->value.bytes.data, size)) return -EFAULT; } return 0; } -static int snd_ctl_elem_read_user_compat(struct snd_card *card, - struct snd_ctl_elem_value32 __user *data32) +static int ctl_elem_read_user(struct snd_card *card, + void __user *userdata, void __user *valuep) { struct snd_ctl_elem_value *data; int err, type, count; @@ -294,7 +310,9 @@ if (data == NULL) return -ENOMEM; - if ((err = copy_ctl_value_from_user(card, data, data32, &type, &count)) < 0) + err = copy_ctl_value_from_user(card, data, userdata, valuep, + &type, &count); + if (err < 0) goto error; snd_power_lock(card); @@ -303,14 +321,15 @@ err = snd_ctl_elem_read(card, data); snd_power_unlock(card); if (err >= 0) - err = copy_ctl_value_to_user(data32, data, type, count); + err = copy_ctl_value_to_user(userdata, valuep, data, + type, count); error: kfree(data); return err; } -static int snd_ctl_elem_write_user_compat(struct snd_ctl_file *file, - struct snd_ctl_elem_value32 __user *data32) +static int ctl_elem_write_user(struct snd_ctl_file *file, + void __user *userdata, void __user *valuep) { struct snd_ctl_elem_value *data; struct snd_card *card = file->card; @@ -320,7 +339,9 @@ if (data == NULL) return -ENOMEM; - if ((err = copy_ctl_value_from_user(card, data, data32, &type, &count)) < 0) + err = copy_ctl_value_from_user(card, data, userdata, valuep, + &type, &count); + if (err < 0) goto error; snd_power_lock(card); @@ -329,12 +350,39 @@ err = snd_ctl_elem_write(card, file, data); snd_power_unlock(card); if (err >= 0) - err = copy_ctl_value_to_user(data32, data, type, count); + err = copy_ctl_value_to_user(userdata, valuep, data, + type, count); error: kfree(data); return err; } +static int snd_ctl_elem_read_user_compat(struct snd_card *card, + struct snd_ctl_elem_value32 __user *data32) +{ + return ctl_elem_read_user(card, data32, &data32->value); +} + +static int snd_ctl_elem_write_user_compat(struct snd_ctl_file *file, + struct snd_ctl_elem_value32 __user *data32) +{ + return ctl_elem_write_user(file, data32, &data32->value); +} + +#ifdef CONFIG_X86_X32 +static int snd_ctl_elem_read_user_x32(struct snd_card *card, + struct snd_ctl_elem_value_x32 __user *data32) +{ + return ctl_elem_read_user(card, data32, &data32->value); +} + +static int snd_ctl_elem_write_user_x32(struct snd_ctl_file *file, + struct snd_ctl_elem_value_x32 __user *data32) +{ + return ctl_elem_write_user(file, data32, &data32->value); +} +#endif /* CONFIG_X86_X32 */ + /* add or replace a user control */ static int snd_ctl_elem_add_compat(struct snd_ctl_file *file, struct snd_ctl_elem_info32 __user *data32, @@ -393,6 +441,10 @@ SNDRV_CTL_IOCTL_ELEM_WRITE32 = _IOWR('U', 0x13, struct snd_ctl_elem_value32), SNDRV_CTL_IOCTL_ELEM_ADD32 = _IOWR('U', 0x17, struct snd_ctl_elem_info32), SNDRV_CTL_IOCTL_ELEM_REPLACE32 = _IOWR('U', 0x18, struct snd_ctl_elem_info32), +#ifdef CONFIG_X86_X32 + SNDRV_CTL_IOCTL_ELEM_READ_X32 = _IOWR('U', 0x12, struct snd_ctl_elem_value_x32), + SNDRV_CTL_IOCTL_ELEM_WRITE_X32 = _IOWR('U', 0x13, struct snd_ctl_elem_value_x32), +#endif /* CONFIG_X86_X32 */ }; static inline long snd_ctl_ioctl_compat(struct file *file, unsigned int cmd, unsigned long arg) @@ -431,6 +483,12 @@ return snd_ctl_elem_add_compat(ctl, argp, 0); case SNDRV_CTL_IOCTL_ELEM_REPLACE32: return snd_ctl_elem_add_compat(ctl, argp, 1); +#ifdef CONFIG_X86_X32 + case SNDRV_CTL_IOCTL_ELEM_READ_X32: + return snd_ctl_elem_read_user_x32(ctl->card, argp); + case SNDRV_CTL_IOCTL_ELEM_WRITE_X32: + return snd_ctl_elem_write_user_x32(ctl, argp); +#endif /* CONFIG_X86_X32 */ } down_read(&snd_ioctl_rwsem); --- linux-raspi2-4.2.0.orig/sound/core/hrtimer.c +++ linux-raspi2-4.2.0/sound/core/hrtimer.c @@ -90,7 +90,7 @@ struct snd_hrtimer *stime = t->private_data; atomic_set(&stime->running, 0); - hrtimer_cancel(&stime->hrt); + hrtimer_try_to_cancel(&stime->hrt); hrtimer_start(&stime->hrt, ns_to_ktime(t->sticks * resolution), HRTIMER_MODE_REL); atomic_set(&stime->running, 1); @@ -101,6 +101,7 @@ { struct snd_hrtimer *stime = t->private_data; atomic_set(&stime->running, 0); + hrtimer_try_to_cancel(&stime->hrt); return 0; } --- linux-raspi2-4.2.0.orig/sound/core/oss/pcm_oss.c +++ linux-raspi2-4.2.0/sound/core/oss/pcm_oss.c @@ -834,7 +834,8 @@ return snd_pcm_hw_param_near(substream, params, SNDRV_PCM_HW_PARAM_RATE, best_rate, NULL); } -static int snd_pcm_oss_change_params(struct snd_pcm_substream *substream) +static int snd_pcm_oss_change_params(struct snd_pcm_substream *substream, + bool trylock) { struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_hw_params *params, *sparams; @@ -848,7 +849,10 @@ struct snd_mask sformat_mask; struct snd_mask mask; - if (mutex_lock_interruptible(&runtime->oss.params_lock)) + if (trylock) { + if (!(mutex_trylock(&runtime->oss.params_lock))) + return -EAGAIN; + } else if (mutex_lock_interruptible(&runtime->oss.params_lock)) return -EINTR; sw_params = kmalloc(sizeof(*sw_params), GFP_KERNEL); params = kmalloc(sizeof(*params), GFP_KERNEL); @@ -1092,7 +1096,7 @@ if (asubstream == NULL) asubstream = substream; if (substream->runtime->oss.params) { - err = snd_pcm_oss_change_params(substream); + err = snd_pcm_oss_change_params(substream, false); if (err < 0) return err; } @@ -1132,7 +1136,7 @@ return 0; runtime = substream->runtime; if (runtime->oss.params) { - err = snd_pcm_oss_change_params(substream); + err = snd_pcm_oss_change_params(substream, false); if (err < 0) return err; } @@ -2163,7 +2167,7 @@ runtime = substream->runtime; if (runtime->oss.params && - (err = snd_pcm_oss_change_params(substream)) < 0) + (err = snd_pcm_oss_change_params(substream, false)) < 0) return err; info.fragsize = runtime->oss.period_bytes; @@ -2800,7 +2804,12 @@ return -EIO; if (runtime->oss.params) { - if ((err = snd_pcm_oss_change_params(substream)) < 0) + /* use mutex_trylock() for params_lock for avoiding a deadlock + * between mmap_sem and params_lock taken by + * copy_from/to_user() in snd_pcm_oss_write/read() + */ + err = snd_pcm_oss_change_params(substream, true); + if (err < 0) return err; } #ifdef CONFIG_SND_PCM_OSS_PLUGINS --- 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/core/pcm_compat.c +++ linux-raspi2-4.2.0/sound/core/pcm_compat.c @@ -183,6 +183,14 @@ return err; } +#ifdef CONFIG_X86_X32 +/* X32 ABI has the same struct as x86-64 for snd_pcm_channel_info */ +static int snd_pcm_channel_info_user(struct snd_pcm_substream *substream, + struct snd_pcm_channel_info __user *src); +#define snd_pcm_ioctl_channel_info_x32(s, p) \ + snd_pcm_channel_info_user(s, p) +#endif /* CONFIG_X86_X32 */ + struct snd_pcm_status32 { s32 state; struct compat_timespec trigger_tstamp; @@ -243,6 +251,71 @@ return err; } +#ifdef CONFIG_X86_X32 +/* X32 ABI has 64bit timespec and 64bit alignment */ +struct snd_pcm_status_x32 { + s32 state; + u32 rsvd; /* alignment */ + struct timespec trigger_tstamp; + struct timespec tstamp; + u32 appl_ptr; + u32 hw_ptr; + s32 delay; + u32 avail; + u32 avail_max; + u32 overrange; + s32 suspended_state; + u32 audio_tstamp_data; + struct timespec audio_tstamp; + struct timespec driver_tstamp; + u32 audio_tstamp_accuracy; + unsigned char reserved[52-2*sizeof(struct timespec)]; +} __packed; + +#define put_timespec(src, dst) copy_to_user(dst, src, sizeof(*dst)) + +static int snd_pcm_status_user_x32(struct snd_pcm_substream *substream, + struct snd_pcm_status_x32 __user *src, + bool ext) +{ + struct snd_pcm_status status; + int err; + + memset(&status, 0, sizeof(status)); + /* + * with extension, parameters are read/write, + * get audio_tstamp_data from user, + * ignore rest of status structure + */ + if (ext && get_user(status.audio_tstamp_data, + (u32 __user *)(&src->audio_tstamp_data))) + return -EFAULT; + err = snd_pcm_status(substream, &status); + if (err < 0) + return err; + + if (clear_user(src, sizeof(*src))) + return -EFAULT; + if (put_user(status.state, &src->state) || + put_timespec(&status.trigger_tstamp, &src->trigger_tstamp) || + put_timespec(&status.tstamp, &src->tstamp) || + put_user(status.appl_ptr, &src->appl_ptr) || + put_user(status.hw_ptr, &src->hw_ptr) || + put_user(status.delay, &src->delay) || + put_user(status.avail, &src->avail) || + put_user(status.avail_max, &src->avail_max) || + put_user(status.overrange, &src->overrange) || + put_user(status.suspended_state, &src->suspended_state) || + put_user(status.audio_tstamp_data, &src->audio_tstamp_data) || + put_timespec(&status.audio_tstamp, &src->audio_tstamp) || + put_timespec(&status.driver_tstamp, &src->driver_tstamp) || + put_user(status.audio_tstamp_accuracy, &src->audio_tstamp_accuracy)) + return -EFAULT; + + return err; +} +#endif /* CONFIG_X86_X32 */ + /* both for HW_PARAMS and HW_REFINE */ static int snd_pcm_ioctl_hw_params_compat(struct snd_pcm_substream *substream, int refine, @@ -255,10 +328,15 @@ if (! (runtime = substream->runtime)) return -ENOTTY; - /* only fifo_size is different, so just copy all */ - data = memdup_user(data32, sizeof(*data32)); - if (IS_ERR(data)) - return PTR_ERR(data); + data = kmalloc(sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + /* only fifo_size (RO from userspace) is different, so just copy all */ + if (copy_from_user(data, data32, sizeof(*data32))) { + err = -EFAULT; + goto error; + } if (refine) err = snd_pcm_hw_refine(substream, data); @@ -464,6 +542,93 @@ return 0; } +#ifdef CONFIG_X86_X32 +/* X32 ABI has 64bit timespec and 64bit alignment */ +struct snd_pcm_mmap_status_x32 { + s32 state; + s32 pad1; + u32 hw_ptr; + u32 pad2; /* alignment */ + struct timespec tstamp; + s32 suspended_state; + struct timespec audio_tstamp; +} __packed; + +struct snd_pcm_mmap_control_x32 { + u32 appl_ptr; + u32 avail_min; +}; + +struct snd_pcm_sync_ptr_x32 { + u32 flags; + u32 rsvd; /* alignment */ + union { + struct snd_pcm_mmap_status_x32 status; + unsigned char reserved[64]; + } s; + union { + struct snd_pcm_mmap_control_x32 control; + unsigned char reserved[64]; + } c; +} __packed; + +static int snd_pcm_ioctl_sync_ptr_x32(struct snd_pcm_substream *substream, + struct snd_pcm_sync_ptr_x32 __user *src) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + volatile struct snd_pcm_mmap_status *status; + volatile struct snd_pcm_mmap_control *control; + u32 sflags; + struct snd_pcm_mmap_control scontrol; + struct snd_pcm_mmap_status sstatus; + snd_pcm_uframes_t boundary; + int err; + + if (snd_BUG_ON(!runtime)) + return -EINVAL; + + if (get_user(sflags, &src->flags) || + get_user(scontrol.appl_ptr, &src->c.control.appl_ptr) || + get_user(scontrol.avail_min, &src->c.control.avail_min)) + return -EFAULT; + if (sflags & SNDRV_PCM_SYNC_PTR_HWSYNC) { + err = snd_pcm_hwsync(substream); + if (err < 0) + return err; + } + status = runtime->status; + control = runtime->control; + boundary = recalculate_boundary(runtime); + if (!boundary) + boundary = 0x7fffffff; + snd_pcm_stream_lock_irq(substream); + /* FIXME: we should consider the boundary for the sync from app */ + if (!(sflags & SNDRV_PCM_SYNC_PTR_APPL)) + control->appl_ptr = scontrol.appl_ptr; + else + scontrol.appl_ptr = control->appl_ptr % boundary; + if (!(sflags & SNDRV_PCM_SYNC_PTR_AVAIL_MIN)) + control->avail_min = scontrol.avail_min; + else + scontrol.avail_min = control->avail_min; + sstatus.state = status->state; + sstatus.hw_ptr = status->hw_ptr % boundary; + sstatus.tstamp = status->tstamp; + sstatus.suspended_state = status->suspended_state; + sstatus.audio_tstamp = status->audio_tstamp; + snd_pcm_stream_unlock_irq(substream); + if (put_user(sstatus.state, &src->s.status.state) || + put_user(sstatus.hw_ptr, &src->s.status.hw_ptr) || + put_timespec(&sstatus.tstamp, &src->s.status.tstamp) || + put_user(sstatus.suspended_state, &src->s.status.suspended_state) || + put_timespec(&sstatus.audio_tstamp, &src->s.status.audio_tstamp) || + put_user(scontrol.appl_ptr, &src->c.control.appl_ptr) || + put_user(scontrol.avail_min, &src->c.control.avail_min)) + return -EFAULT; + + return 0; +} +#endif /* CONFIG_X86_X32 */ /* */ @@ -482,7 +647,12 @@ SNDRV_PCM_IOCTL_WRITEN_FRAMES32 = _IOW('A', 0x52, struct snd_xfern32), SNDRV_PCM_IOCTL_READN_FRAMES32 = _IOR('A', 0x53, struct snd_xfern32), SNDRV_PCM_IOCTL_SYNC_PTR32 = _IOWR('A', 0x23, struct snd_pcm_sync_ptr32), - +#ifdef CONFIG_X86_X32 + SNDRV_PCM_IOCTL_CHANNEL_INFO_X32 = _IOR('A', 0x32, struct snd_pcm_channel_info), + SNDRV_PCM_IOCTL_STATUS_X32 = _IOR('A', 0x20, struct snd_pcm_status_x32), + SNDRV_PCM_IOCTL_STATUS_EXT_X32 = _IOWR('A', 0x24, struct snd_pcm_status_x32), + SNDRV_PCM_IOCTL_SYNC_PTR_X32 = _IOWR('A', 0x23, struct snd_pcm_sync_ptr_x32), +#endif /* CONFIG_X86_X32 */ }; static long snd_pcm_ioctl_compat(struct file *file, unsigned int cmd, unsigned long arg) @@ -554,6 +724,16 @@ return snd_pcm_ioctl_rewind_compat(substream, argp); case SNDRV_PCM_IOCTL_FORWARD32: return snd_pcm_ioctl_forward_compat(substream, argp); +#ifdef CONFIG_X86_X32 + case SNDRV_PCM_IOCTL_STATUS_X32: + return snd_pcm_status_user_x32(substream, argp, false); + case SNDRV_PCM_IOCTL_STATUS_EXT_X32: + return snd_pcm_status_user_x32(substream, argp, true); + case SNDRV_PCM_IOCTL_SYNC_PTR_X32: + return snd_pcm_ioctl_sync_ptr_x32(substream, argp); + case SNDRV_PCM_IOCTL_CHANNEL_INFO_X32: + return snd_pcm_ioctl_channel_info_x32(substream, argp); +#endif /* CONFIG_X86_X32 */ } return -ENOIOCTLCMD; --- linux-raspi2-4.2.0.orig/sound/core/pcm_lib.c +++ linux-raspi2-4.2.0/sound/core/pcm_lib.c @@ -322,7 +322,7 @@ char name[16]; snd_pcm_debug_name(substream, name, sizeof(name)); pcm_err(substream->pcm, - "BUG: %s, pos = %ld, buffer size = %ld, period size = %ld\n", + "invalid position: %s, pos = %ld, buffer size = %ld, period size = %ld\n", name, pos, runtime->buffer_size, runtime->period_size); } --- linux-raspi2-4.2.0.orig/sound/core/pcm_native.c +++ linux-raspi2-4.2.0/sound/core/pcm_native.c @@ -74,6 +74,18 @@ static DEFINE_RWLOCK(snd_pcm_link_rwlock); static DECLARE_RWSEM(snd_pcm_link_rwsem); +/* Writer in rwsem may block readers even during its waiting in queue, + * and this may lead to a deadlock when the code path takes read sem + * twice (e.g. one in snd_pcm_action_nonatomic() and another in + * snd_pcm_stream_lock()). As a (suboptimal) workaround, let writer to + * spin until it gets the lock. + */ +static inline void down_write_nonblock(struct rw_semaphore *lock) +{ + while (!down_write_trylock(lock)) + cond_resched(); +} + /** * snd_pcm_stream_lock - Lock the PCM stream * @substream: PCM substream @@ -1816,7 +1828,7 @@ res = -ENOMEM; goto _nolock; } - down_write(&snd_pcm_link_rwsem); + down_write_nonblock(&snd_pcm_link_rwsem); write_lock_irq(&snd_pcm_link_rwlock); if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN || substream->runtime->status->state != substream1->runtime->status->state || @@ -1863,7 +1875,7 @@ struct snd_pcm_substream *s; int res = 0; - down_write(&snd_pcm_link_rwsem); + down_write_nonblock(&snd_pcm_link_rwsem); write_lock_irq(&snd_pcm_link_rwlock); if (!snd_pcm_stream_linked(substream)) { res = -EALREADY; --- linux-raspi2-4.2.0.orig/sound/core/rawmidi.c +++ linux-raspi2-4.2.0/sound/core/rawmidi.c @@ -942,31 +942,36 @@ unsigned long flags; long result = 0, count1; struct snd_rawmidi_runtime *runtime = substream->runtime; + unsigned long appl_ptr; + spin_lock_irqsave(&runtime->lock, flags); while (count > 0 && runtime->avail) { count1 = runtime->buffer_size - runtime->appl_ptr; if (count1 > count) count1 = count; - spin_lock_irqsave(&runtime->lock, flags); if (count1 > (int)runtime->avail) count1 = runtime->avail; + + /* update runtime->appl_ptr before unlocking for userbuf */ + appl_ptr = runtime->appl_ptr; + runtime->appl_ptr += count1; + runtime->appl_ptr %= runtime->buffer_size; + runtime->avail -= count1; + if (kernelbuf) - memcpy(kernelbuf + result, runtime->buffer + runtime->appl_ptr, count1); + memcpy(kernelbuf + result, runtime->buffer + appl_ptr, count1); if (userbuf) { spin_unlock_irqrestore(&runtime->lock, flags); if (copy_to_user(userbuf + result, - runtime->buffer + runtime->appl_ptr, count1)) { + runtime->buffer + appl_ptr, count1)) { return result > 0 ? result : -EFAULT; } spin_lock_irqsave(&runtime->lock, flags); } - runtime->appl_ptr += count1; - runtime->appl_ptr %= runtime->buffer_size; - runtime->avail -= count1; - spin_unlock_irqrestore(&runtime->lock, flags); result += count1; count -= count1; } + spin_unlock_irqrestore(&runtime->lock, flags); return result; } @@ -1055,23 +1060,16 @@ EXPORT_SYMBOL(snd_rawmidi_transmit_empty); /** - * snd_rawmidi_transmit_peek - copy data from the internal buffer + * __snd_rawmidi_transmit_peek - copy data from the internal buffer * @substream: the rawmidi substream * @buffer: the buffer pointer * @count: data size to transfer * - * Copies data from the internal output buffer to the given buffer. - * - * Call this in the interrupt handler when the midi output is ready, - * and call snd_rawmidi_transmit_ack() after the transmission is - * finished. - * - * Return: The size of copied data, or a negative error code on failure. + * This is a variant of snd_rawmidi_transmit_peek() without spinlock. */ -int snd_rawmidi_transmit_peek(struct snd_rawmidi_substream *substream, +int __snd_rawmidi_transmit_peek(struct snd_rawmidi_substream *substream, unsigned char *buffer, int count) { - unsigned long flags; int result, count1; struct snd_rawmidi_runtime *runtime = substream->runtime; @@ -1081,7 +1079,6 @@ return -EINVAL; } result = 0; - spin_lock_irqsave(&runtime->lock, flags); if (runtime->avail >= runtime->buffer_size) { /* warning: lowlevel layer MUST trigger down the hardware */ goto __skip; @@ -1106,25 +1103,47 @@ } } __skip: + return result; +} +EXPORT_SYMBOL(__snd_rawmidi_transmit_peek); + +/** + * snd_rawmidi_transmit_peek - copy data from the internal buffer + * @substream: the rawmidi substream + * @buffer: the buffer pointer + * @count: data size to transfer + * + * Copies data from the internal output buffer to the given buffer. + * + * Call this in the interrupt handler when the midi output is ready, + * and call snd_rawmidi_transmit_ack() after the transmission is + * finished. + * + * Return: The size of copied data, or a negative error code on failure. + */ +int snd_rawmidi_transmit_peek(struct snd_rawmidi_substream *substream, + unsigned char *buffer, int count) +{ + struct snd_rawmidi_runtime *runtime = substream->runtime; + int result; + unsigned long flags; + + spin_lock_irqsave(&runtime->lock, flags); + result = __snd_rawmidi_transmit_peek(substream, buffer, count); spin_unlock_irqrestore(&runtime->lock, flags); return result; } EXPORT_SYMBOL(snd_rawmidi_transmit_peek); /** - * snd_rawmidi_transmit_ack - acknowledge the transmission + * __snd_rawmidi_transmit_ack - acknowledge the transmission * @substream: the rawmidi substream * @count: the transferred count * - * Advances the hardware pointer for the internal output buffer with - * the given size and updates the condition. - * Call after the transmission is finished. - * - * Return: The advanced size if successful, or a negative error code on failure. + * This is a variant of __snd_rawmidi_transmit_ack() without spinlock. */ -int snd_rawmidi_transmit_ack(struct snd_rawmidi_substream *substream, int count) +int __snd_rawmidi_transmit_ack(struct snd_rawmidi_substream *substream, int count) { - unsigned long flags; struct snd_rawmidi_runtime *runtime = substream->runtime; if (runtime->buffer == NULL) { @@ -1132,7 +1151,6 @@ "snd_rawmidi_transmit_ack: output is not active!!!\n"); return -EINVAL; } - spin_lock_irqsave(&runtime->lock, flags); snd_BUG_ON(runtime->avail + count > runtime->buffer_size); runtime->hw_ptr += count; runtime->hw_ptr %= runtime->buffer_size; @@ -1142,9 +1160,32 @@ if (runtime->drain || snd_rawmidi_ready(substream)) wake_up(&runtime->sleep); } - spin_unlock_irqrestore(&runtime->lock, flags); return count; } +EXPORT_SYMBOL(__snd_rawmidi_transmit_ack); + +/** + * snd_rawmidi_transmit_ack - acknowledge the transmission + * @substream: the rawmidi substream + * @count: the transferred count + * + * Advances the hardware pointer for the internal output buffer with + * the given size and updates the condition. + * Call after the transmission is finished. + * + * Return: The advanced size if successful, or a negative error code on failure. + */ +int snd_rawmidi_transmit_ack(struct snd_rawmidi_substream *substream, int count) +{ + struct snd_rawmidi_runtime *runtime = substream->runtime; + int result; + unsigned long flags; + + spin_lock_irqsave(&runtime->lock, flags); + result = __snd_rawmidi_transmit_ack(substream, count); + spin_unlock_irqrestore(&runtime->lock, flags); + return result; +} EXPORT_SYMBOL(snd_rawmidi_transmit_ack); /** @@ -1160,12 +1201,22 @@ int snd_rawmidi_transmit(struct snd_rawmidi_substream *substream, unsigned char *buffer, int count) { + struct snd_rawmidi_runtime *runtime = substream->runtime; + int result; + unsigned long flags; + + spin_lock_irqsave(&runtime->lock, flags); if (!substream->opened) - return -EBADFD; - count = snd_rawmidi_transmit_peek(substream, buffer, count); - if (count < 0) - return count; - return snd_rawmidi_transmit_ack(substream, count); + result = -EBADFD; + else { + count = __snd_rawmidi_transmit_peek(substream, buffer, count); + if (count <= 0) + result = count; + else + result = __snd_rawmidi_transmit_ack(substream, count); + } + spin_unlock_irqrestore(&runtime->lock, flags); + return result; } EXPORT_SYMBOL(snd_rawmidi_transmit); @@ -1177,8 +1228,9 @@ unsigned long flags; long count1, result; struct snd_rawmidi_runtime *runtime = substream->runtime; + unsigned long appl_ptr; - if (snd_BUG_ON(!kernelbuf && !userbuf)) + if (!kernelbuf && !userbuf) return -EINVAL; if (snd_BUG_ON(!runtime->buffer)) return -EINVAL; @@ -1197,12 +1249,19 @@ count1 = count; if (count1 > (long)runtime->avail) count1 = runtime->avail; + + /* update runtime->appl_ptr before unlocking for userbuf */ + appl_ptr = runtime->appl_ptr; + runtime->appl_ptr += count1; + runtime->appl_ptr %= runtime->buffer_size; + runtime->avail -= count1; + if (kernelbuf) - memcpy(runtime->buffer + runtime->appl_ptr, + memcpy(runtime->buffer + appl_ptr, kernelbuf + result, count1); else if (userbuf) { spin_unlock_irqrestore(&runtime->lock, flags); - if (copy_from_user(runtime->buffer + runtime->appl_ptr, + if (copy_from_user(runtime->buffer + appl_ptr, userbuf + result, count1)) { spin_lock_irqsave(&runtime->lock, flags); result = result > 0 ? result : -EFAULT; @@ -1210,9 +1269,6 @@ } spin_lock_irqsave(&runtime->lock, flags); } - runtime->appl_ptr += count1; - runtime->appl_ptr %= runtime->buffer_size; - runtime->avail -= count1; result += count1; count -= count1; } --- linux-raspi2-4.2.0.orig/sound/core/rawmidi_compat.c +++ linux-raspi2-4.2.0/sound/core/rawmidi_compat.c @@ -94,9 +94,58 @@ return 0; } +#ifdef CONFIG_X86_X32 +/* X32 ABI has 64bit timespec and 64bit alignment */ +struct snd_rawmidi_status_x32 { + s32 stream; + u32 rsvd; /* alignment */ + struct timespec tstamp; + u32 avail; + u32 xruns; + unsigned char reserved[16]; +} __attribute__((packed)); + +#define put_timespec(src, dst) copy_to_user(dst, src, sizeof(*dst)) + +static int snd_rawmidi_ioctl_status_x32(struct snd_rawmidi_file *rfile, + struct snd_rawmidi_status_x32 __user *src) +{ + int err; + struct snd_rawmidi_status status; + + if (rfile->output == NULL) + return -EINVAL; + if (get_user(status.stream, &src->stream)) + return -EFAULT; + + switch (status.stream) { + case SNDRV_RAWMIDI_STREAM_OUTPUT: + err = snd_rawmidi_output_status(rfile->output, &status); + break; + case SNDRV_RAWMIDI_STREAM_INPUT: + err = snd_rawmidi_input_status(rfile->input, &status); + break; + default: + return -EINVAL; + } + if (err < 0) + return err; + + if (put_timespec(&status.tstamp, &src->tstamp) || + put_user(status.avail, &src->avail) || + put_user(status.xruns, &src->xruns)) + return -EFAULT; + + return 0; +} +#endif /* CONFIG_X86_X32 */ + enum { SNDRV_RAWMIDI_IOCTL_PARAMS32 = _IOWR('W', 0x10, struct snd_rawmidi_params32), SNDRV_RAWMIDI_IOCTL_STATUS32 = _IOWR('W', 0x20, struct snd_rawmidi_status32), +#ifdef CONFIG_X86_X32 + SNDRV_RAWMIDI_IOCTL_STATUS_X32 = _IOWR('W', 0x20, struct snd_rawmidi_status_x32), +#endif /* CONFIG_X86_X32 */ }; static long snd_rawmidi_ioctl_compat(struct file *file, unsigned int cmd, unsigned long arg) @@ -115,6 +164,10 @@ return snd_rawmidi_ioctl_params_compat(rfile, argp); case SNDRV_RAWMIDI_IOCTL_STATUS32: return snd_rawmidi_ioctl_status_compat(rfile, argp); +#ifdef CONFIG_X86_X32 + case SNDRV_RAWMIDI_IOCTL_STATUS_X32: + return snd_rawmidi_ioctl_status_x32(rfile, argp); +#endif /* CONFIG_X86_X32 */ } return -ENOIOCTLCMD; } --- linux-raspi2-4.2.0.orig/sound/core/seq/oss/seq_oss.c +++ linux-raspi2-4.2.0/sound/core/seq/oss/seq_oss.c @@ -148,8 +148,6 @@ if ((dp = file->private_data) == NULL) return 0; - snd_seq_oss_drain_write(dp); - mutex_lock(®ister_mutex); snd_seq_oss_release(dp); mutex_unlock(®ister_mutex); --- linux-raspi2-4.2.0.orig/sound/core/seq/oss/seq_oss_device.h +++ linux-raspi2-4.2.0/sound/core/seq/oss/seq_oss_device.h @@ -127,7 +127,6 @@ unsigned int snd_seq_oss_poll(struct seq_oss_devinfo *dp, struct file *file, poll_table * wait); void snd_seq_oss_reset(struct seq_oss_devinfo *dp); -void snd_seq_oss_drain_write(struct seq_oss_devinfo *dp); /* */ void snd_seq_oss_process_queue(struct seq_oss_devinfo *dp, abstime_t time); --- linux-raspi2-4.2.0.orig/sound/core/seq/oss/seq_oss_init.c +++ linux-raspi2-4.2.0/sound/core/seq/oss/seq_oss_init.c @@ -202,7 +202,7 @@ dp->index = i; if (i >= SNDRV_SEQ_OSS_MAX_CLIENTS) { - pr_err("ALSA: seq_oss: too many applications\n"); + pr_debug("ALSA: seq_oss: too many applications\n"); rc = -ENOMEM; goto _error; } @@ -435,22 +435,6 @@ } -/* - * Wait until the queue is empty (if we don't have nonblock) - */ -void -snd_seq_oss_drain_write(struct seq_oss_devinfo *dp) -{ - if (! dp->timer->running) - return; - if (is_write_mode(dp->file_mode) && !is_nonblock_mode(dp->file_mode) && - dp->writeq) { - while (snd_seq_oss_writeq_sync(dp->writeq)) - ; - } -} - - /* * reset sequencer devices */ --- linux-raspi2-4.2.0.orig/sound/core/seq/oss/seq_oss_synth.c +++ linux-raspi2-4.2.0/sound/core/seq/oss/seq_oss_synth.c @@ -308,7 +308,7 @@ struct seq_oss_synth *rec; struct seq_oss_synthinfo *info; - if (snd_BUG_ON(dp->max_synthdev >= SNDRV_SEQ_OSS_MAX_SYNTH_DEVS)) + if (snd_BUG_ON(dp->max_synthdev > SNDRV_SEQ_OSS_MAX_SYNTH_DEVS)) return; for (i = 0; i < dp->max_synthdev; i++) { info = &dp->synths[i]; --- linux-raspi2-4.2.0.orig/sound/core/seq/seq_clientmgr.c +++ linux-raspi2-4.2.0/sound/core/seq/seq_clientmgr.c @@ -678,6 +678,9 @@ else down_read(&grp->list_mutex); list_for_each_entry(subs, &grp->list_head, src_list) { + /* both ports ready? */ + if (atomic_read(&subs->ref_count) != 2) + continue; event->dest = subs->info.dest; if (subs->info.flags & SNDRV_SEQ_PORT_SUBS_TIMESTAMP) /* convert time according to flag with subscription */ @@ -1962,7 +1965,7 @@ * No restrictions so for a user client we can clear * the whole fifo */ - if (client->type == USER_CLIENT) + if (client->type == USER_CLIENT && client->data.user.fifo) snd_seq_fifo_clear(client->data.user.fifo); } --- linux-raspi2-4.2.0.orig/sound/core/seq/seq_compat.c +++ linux-raspi2-4.2.0/sound/core/seq/seq_compat.c @@ -49,11 +49,12 @@ struct snd_seq_port_info *data; mm_segment_t fs; - data = memdup_user(data32, sizeof(*data32)); - if (IS_ERR(data)) - return PTR_ERR(data); + data = kmalloc(sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; - if (get_user(data->flags, &data32->flags) || + if (copy_from_user(data, data32, sizeof(*data32)) || + get_user(data->flags, &data32->flags) || get_user(data->time_queue, &data32->time_queue)) goto error; data->kernel = NULL; --- linux-raspi2-4.2.0.orig/sound/core/seq/seq_memory.c +++ linux-raspi2-4.2.0/sound/core/seq/seq_memory.c @@ -383,15 +383,20 @@ if (snd_BUG_ON(!pool)) return -EINVAL; - if (pool->ptr) /* should be atomic? */ - return 0; - pool->ptr = vmalloc(sizeof(struct snd_seq_event_cell) * pool->size); - if (!pool->ptr) + cellptr = vmalloc(sizeof(struct snd_seq_event_cell) * pool->size); + if (!cellptr) return -ENOMEM; /* add new cells to the free cell list */ spin_lock_irqsave(&pool->lock, flags); + if (pool->ptr) { + spin_unlock_irqrestore(&pool->lock, flags); + vfree(cellptr); + return 0; + } + + pool->ptr = cellptr; pool->free = NULL; for (cell = 0; cell < pool->size; cell++) { --- linux-raspi2-4.2.0.orig/sound/core/seq/seq_ports.c +++ linux-raspi2-4.2.0/sound/core/seq/seq_ports.c @@ -173,10 +173,6 @@ } /* */ -enum group_type { - SRC_LIST, DEST_LIST -}; - static int subscribe_port(struct snd_seq_client *client, struct snd_seq_client_port *port, struct snd_seq_port_subs_info *grp, @@ -203,6 +199,20 @@ return NULL; } +static void delete_and_unsubscribe_port(struct snd_seq_client *client, + struct snd_seq_client_port *port, + struct snd_seq_subscribers *subs, + bool is_src, bool ack); + +static inline struct snd_seq_subscribers * +get_subscriber(struct list_head *p, bool is_src) +{ + if (is_src) + return list_entry(p, struct snd_seq_subscribers, src_list); + else + return list_entry(p, struct snd_seq_subscribers, dest_list); +} + /* * remove all subscribers on the list * this is called from port_delete, for each src and dest list. @@ -210,7 +220,7 @@ static void clear_subscriber_list(struct snd_seq_client *client, struct snd_seq_client_port *port, struct snd_seq_port_subs_info *grp, - int grptype) + int is_src) { struct list_head *p, *n; @@ -219,15 +229,13 @@ struct snd_seq_client *c; struct snd_seq_client_port *aport; - if (grptype == SRC_LIST) { - subs = list_entry(p, struct snd_seq_subscribers, src_list); + subs = get_subscriber(p, is_src); + if (is_src) aport = get_client_port(&subs->info.dest, &c); - } else { - subs = list_entry(p, struct snd_seq_subscribers, dest_list); + else aport = get_client_port(&subs->info.sender, &c); - } - list_del(p); - unsubscribe_port(client, port, grp, &subs->info, 0); + delete_and_unsubscribe_port(client, port, subs, is_src, false); + if (!aport) { /* looks like the connected port is being deleted. * we decrease the counter, and when both ports are deleted @@ -235,21 +243,14 @@ */ if (atomic_dec_and_test(&subs->ref_count)) kfree(subs); - } else { - /* ok we got the connected port */ - struct snd_seq_port_subs_info *agrp; - agrp = (grptype == SRC_LIST) ? &aport->c_dest : &aport->c_src; - down_write(&agrp->list_mutex); - if (grptype == SRC_LIST) - list_del(&subs->dest_list); - else - list_del(&subs->src_list); - up_write(&agrp->list_mutex); - unsubscribe_port(c, aport, agrp, &subs->info, 1); - kfree(subs); - snd_seq_port_unlock(aport); - snd_seq_client_unlock(c); + continue; } + + /* ok we got the connected port */ + delete_and_unsubscribe_port(c, aport, subs, !is_src, true); + kfree(subs); + snd_seq_port_unlock(aport); + snd_seq_client_unlock(c); } } @@ -262,8 +263,8 @@ snd_use_lock_sync(&port->use_lock); /* clear subscribers info */ - clear_subscriber_list(client, port, &port->c_src, SRC_LIST); - clear_subscriber_list(client, port, &port->c_dest, DEST_LIST); + clear_subscriber_list(client, port, &port->c_src, true); + clear_subscriber_list(client, port, &port->c_dest, false); if (port->private_free) port->private_free(port->private_data); @@ -479,85 +480,123 @@ return 0; } +static int check_and_subscribe_port(struct snd_seq_client *client, + struct snd_seq_client_port *port, + struct snd_seq_subscribers *subs, + bool is_src, bool exclusive, bool ack) +{ + struct snd_seq_port_subs_info *grp; + struct list_head *p; + struct snd_seq_subscribers *s; + int err; -/* connect two ports */ -int snd_seq_port_connect(struct snd_seq_client *connector, - struct snd_seq_client *src_client, - struct snd_seq_client_port *src_port, - struct snd_seq_client *dest_client, - struct snd_seq_client_port *dest_port, - struct snd_seq_port_subscribe *info) -{ - struct snd_seq_port_subs_info *src = &src_port->c_src; - struct snd_seq_port_subs_info *dest = &dest_port->c_dest; - struct snd_seq_subscribers *subs, *s; - int err, src_called = 0; - unsigned long flags; - int exclusive; - - subs = kzalloc(sizeof(*subs), GFP_KERNEL); - if (! subs) - return -ENOMEM; - - subs->info = *info; - atomic_set(&subs->ref_count, 2); - - down_write(&src->list_mutex); - down_write_nested(&dest->list_mutex, SINGLE_DEPTH_NESTING); - - exclusive = info->flags & SNDRV_SEQ_PORT_SUBS_EXCLUSIVE ? 1 : 0; + grp = is_src ? &port->c_src : &port->c_dest; err = -EBUSY; + down_write(&grp->list_mutex); if (exclusive) { - if (! list_empty(&src->list_head) || ! list_empty(&dest->list_head)) + if (!list_empty(&grp->list_head)) goto __error; } else { - if (src->exclusive || dest->exclusive) + if (grp->exclusive) goto __error; /* check whether already exists */ - list_for_each_entry(s, &src->list_head, src_list) { - if (match_subs_info(info, &s->info)) - goto __error; - } - list_for_each_entry(s, &dest->list_head, dest_list) { - if (match_subs_info(info, &s->info)) + list_for_each(p, &grp->list_head) { + s = get_subscriber(p, is_src); + if (match_subs_info(&subs->info, &s->info)) goto __error; } } - if ((err = subscribe_port(src_client, src_port, src, info, - connector->number != src_client->number)) < 0) - goto __error; - src_called = 1; - - if ((err = subscribe_port(dest_client, dest_port, dest, info, - connector->number != dest_client->number)) < 0) + err = subscribe_port(client, port, grp, &subs->info, ack); + if (err < 0) { + grp->exclusive = 0; goto __error; + } /* add to list */ - write_lock_irqsave(&src->list_lock, flags); - // write_lock(&dest->list_lock); // no other lock yet - list_add_tail(&subs->src_list, &src->list_head); - list_add_tail(&subs->dest_list, &dest->list_head); - // write_unlock(&dest->list_lock); // no other lock yet - write_unlock_irqrestore(&src->list_lock, flags); + write_lock_irq(&grp->list_lock); + if (is_src) + list_add_tail(&subs->src_list, &grp->list_head); + else + list_add_tail(&subs->dest_list, &grp->list_head); + grp->exclusive = exclusive; + atomic_inc(&subs->ref_count); + write_unlock_irq(&grp->list_lock); + err = 0; - src->exclusive = dest->exclusive = exclusive; + __error: + up_write(&grp->list_mutex); + return err; +} + +static void delete_and_unsubscribe_port(struct snd_seq_client *client, + struct snd_seq_client_port *port, + struct snd_seq_subscribers *subs, + bool is_src, bool ack) +{ + struct snd_seq_port_subs_info *grp; + struct list_head *list; + bool empty; + + grp = is_src ? &port->c_src : &port->c_dest; + list = is_src ? &subs->src_list : &subs->dest_list; + down_write(&grp->list_mutex); + write_lock_irq(&grp->list_lock); + empty = list_empty(list); + if (!empty) + list_del_init(list); + grp->exclusive = 0; + write_unlock_irq(&grp->list_lock); + up_write(&grp->list_mutex); + + if (!empty) + unsubscribe_port(client, port, grp, &subs->info, ack); +} + +/* connect two ports */ +int snd_seq_port_connect(struct snd_seq_client *connector, + struct snd_seq_client *src_client, + struct snd_seq_client_port *src_port, + struct snd_seq_client *dest_client, + struct snd_seq_client_port *dest_port, + struct snd_seq_port_subscribe *info) +{ + struct snd_seq_subscribers *subs; + bool exclusive; + int err; + + subs = kzalloc(sizeof(*subs), GFP_KERNEL); + if (!subs) + return -ENOMEM; + + subs->info = *info; + atomic_set(&subs->ref_count, 0); + INIT_LIST_HEAD(&subs->src_list); + INIT_LIST_HEAD(&subs->dest_list); + + exclusive = !!(info->flags & SNDRV_SEQ_PORT_SUBS_EXCLUSIVE); + + err = check_and_subscribe_port(src_client, src_port, subs, true, + exclusive, + connector->number != src_client->number); + if (err < 0) + goto error; + err = check_and_subscribe_port(dest_client, dest_port, subs, false, + exclusive, + connector->number != dest_client->number); + if (err < 0) + goto error_dest; - up_write(&dest->list_mutex); - up_write(&src->list_mutex); return 0; - __error: - if (src_called) - unsubscribe_port(src_client, src_port, src, info, - connector->number != src_client->number); + error_dest: + delete_and_unsubscribe_port(src_client, src_port, subs, true, + connector->number != src_client->number); + error: kfree(subs); - up_write(&dest->list_mutex); - up_write(&src->list_mutex); return err; } - /* remove the connection */ int snd_seq_port_disconnect(struct snd_seq_client *connector, struct snd_seq_client *src_client, @@ -567,37 +606,28 @@ struct snd_seq_port_subscribe *info) { struct snd_seq_port_subs_info *src = &src_port->c_src; - struct snd_seq_port_subs_info *dest = &dest_port->c_dest; struct snd_seq_subscribers *subs; int err = -ENOENT; - unsigned long flags; down_write(&src->list_mutex); - down_write_nested(&dest->list_mutex, SINGLE_DEPTH_NESTING); - /* look for the connection */ list_for_each_entry(subs, &src->list_head, src_list) { if (match_subs_info(info, &subs->info)) { - write_lock_irqsave(&src->list_lock, flags); - // write_lock(&dest->list_lock); // no lock yet - list_del(&subs->src_list); - list_del(&subs->dest_list); - // write_unlock(&dest->list_lock); - write_unlock_irqrestore(&src->list_lock, flags); - src->exclusive = dest->exclusive = 0; - unsubscribe_port(src_client, src_port, src, info, - connector->number != src_client->number); - unsubscribe_port(dest_client, dest_port, dest, info, - connector->number != dest_client->number); - kfree(subs); + atomic_dec(&subs->ref_count); /* mark as not ready */ err = 0; break; } } - - up_write(&dest->list_mutex); up_write(&src->list_mutex); - return err; + if (err < 0) + return err; + + delete_and_unsubscribe_port(src_client, src_port, subs, true, + connector->number != src_client->number); + delete_and_unsubscribe_port(dest_client, dest_port, subs, false, + connector->number != dest_client->number); + kfree(subs); + return 0; } --- linux-raspi2-4.2.0.orig/sound/core/seq/seq_queue.c +++ linux-raspi2-4.2.0/sound/core/seq/seq_queue.c @@ -142,8 +142,10 @@ static void queue_delete(struct snd_seq_queue *q) { /* stop and release the timer */ + mutex_lock(&q->timer_mutex); snd_seq_timer_stop(q->timer); snd_seq_timer_close(q); + mutex_unlock(&q->timer_mutex); /* wait until access free */ snd_use_lock_sync(&q->use_lock); /* release resources... */ --- linux-raspi2-4.2.0.orig/sound/core/seq/seq_timer.c +++ linux-raspi2-4.2.0/sound/core/seq/seq_timer.c @@ -90,6 +90,9 @@ void snd_seq_timer_defaults(struct snd_seq_timer * tmr) { + unsigned long flags; + + spin_lock_irqsave(&tmr->lock, flags); /* setup defaults */ tmr->ppq = 96; /* 96 PPQ */ tmr->tempo = 500000; /* 120 BPM */ @@ -105,21 +108,25 @@ tmr->preferred_resolution = seq_default_timer_resolution; tmr->skew = tmr->skew_base = SKEW_BASE; + spin_unlock_irqrestore(&tmr->lock, flags); } -void snd_seq_timer_reset(struct snd_seq_timer * tmr) +static void seq_timer_reset(struct snd_seq_timer *tmr) { - unsigned long flags; - - spin_lock_irqsave(&tmr->lock, flags); - /* reset time & songposition */ tmr->cur_time.tv_sec = 0; tmr->cur_time.tv_nsec = 0; tmr->tick.cur_tick = 0; tmr->tick.fraction = 0; +} + +void snd_seq_timer_reset(struct snd_seq_timer *tmr) +{ + unsigned long flags; + spin_lock_irqsave(&tmr->lock, flags); + seq_timer_reset(tmr); spin_unlock_irqrestore(&tmr->lock, flags); } @@ -138,8 +145,11 @@ tmr = q->timer; if (tmr == NULL) return; - if (!tmr->running) + spin_lock_irqsave(&tmr->lock, flags); + if (!tmr->running) { + spin_unlock_irqrestore(&tmr->lock, flags); return; + } resolution *= ticks; if (tmr->skew != tmr->skew_base) { @@ -148,8 +158,6 @@ (((resolution & 0xffff) * tmr->skew) >> 16); } - spin_lock_irqsave(&tmr->lock, flags); - /* update timer */ snd_seq_inc_time_nsec(&tmr->cur_time, resolution); @@ -296,26 +304,30 @@ t->callback = snd_seq_timer_interrupt; t->callback_data = q; t->flags |= SNDRV_TIMER_IFLG_AUTO; + spin_lock_irq(&tmr->lock); tmr->timeri = t; + spin_unlock_irq(&tmr->lock); return 0; } int snd_seq_timer_close(struct snd_seq_queue *q) { struct snd_seq_timer *tmr; + struct snd_timer_instance *t; tmr = q->timer; if (snd_BUG_ON(!tmr)) return -EINVAL; - if (tmr->timeri) { - snd_timer_stop(tmr->timeri); - snd_timer_close(tmr->timeri); - tmr->timeri = NULL; - } + spin_lock_irq(&tmr->lock); + t = tmr->timeri; + tmr->timeri = NULL; + spin_unlock_irq(&tmr->lock); + if (t) + snd_timer_close(t); return 0; } -int snd_seq_timer_stop(struct snd_seq_timer * tmr) +static int seq_timer_stop(struct snd_seq_timer *tmr) { if (! tmr->timeri) return -EINVAL; @@ -326,6 +338,17 @@ return 0; } +int snd_seq_timer_stop(struct snd_seq_timer *tmr) +{ + unsigned long flags; + int err; + + spin_lock_irqsave(&tmr->lock, flags); + err = seq_timer_stop(tmr); + spin_unlock_irqrestore(&tmr->lock, flags); + return err; +} + static int initialize_timer(struct snd_seq_timer *tmr) { struct snd_timer *t; @@ -358,13 +381,13 @@ return 0; } -int snd_seq_timer_start(struct snd_seq_timer * tmr) +static int seq_timer_start(struct snd_seq_timer *tmr) { if (! tmr->timeri) return -EINVAL; if (tmr->running) - snd_seq_timer_stop(tmr); - snd_seq_timer_reset(tmr); + seq_timer_stop(tmr); + seq_timer_reset(tmr); if (initialize_timer(tmr) < 0) return -EINVAL; snd_timer_start(tmr->timeri, tmr->ticks); @@ -373,14 +396,25 @@ return 0; } -int snd_seq_timer_continue(struct snd_seq_timer * tmr) +int snd_seq_timer_start(struct snd_seq_timer *tmr) +{ + unsigned long flags; + int err; + + spin_lock_irqsave(&tmr->lock, flags); + err = seq_timer_start(tmr); + spin_unlock_irqrestore(&tmr->lock, flags); + return err; +} + +static int seq_timer_continue(struct snd_seq_timer *tmr) { if (! tmr->timeri) return -EINVAL; if (tmr->running) return -EBUSY; if (! tmr->initialized) { - snd_seq_timer_reset(tmr); + seq_timer_reset(tmr); if (initialize_timer(tmr) < 0) return -EINVAL; } @@ -390,11 +424,24 @@ return 0; } +int snd_seq_timer_continue(struct snd_seq_timer *tmr) +{ + unsigned long flags; + int err; + + spin_lock_irqsave(&tmr->lock, flags); + err = seq_timer_continue(tmr); + spin_unlock_irqrestore(&tmr->lock, flags); + return err; +} + /* return current 'real' time. use timeofday() to get better granularity. */ snd_seq_real_time_t snd_seq_timer_get_cur_time(struct snd_seq_timer *tmr) { snd_seq_real_time_t cur_time; + unsigned long flags; + spin_lock_irqsave(&tmr->lock, flags); cur_time = tmr->cur_time; if (tmr->running) { struct timeval tm; @@ -410,7 +457,7 @@ } snd_seq_sanity_real_time(&cur_time); } - + spin_unlock_irqrestore(&tmr->lock, flags); return cur_time; } --- linux-raspi2-4.2.0.orig/sound/core/seq/seq_virmidi.c +++ linux-raspi2-4.2.0/sound/core/seq/seq_virmidi.c @@ -155,21 +155,26 @@ struct snd_virmidi *vmidi = substream->runtime->private_data; int count, res; unsigned char buf[32], *pbuf; + unsigned long flags; if (up) { vmidi->trigger = 1; if (vmidi->seq_mode == SNDRV_VIRMIDI_SEQ_DISPATCH && !(vmidi->rdev->flags & SNDRV_VIRMIDI_SUBSCRIBE)) { - snd_rawmidi_transmit_ack(substream, substream->runtime->buffer_size - substream->runtime->avail); - return; /* ignored */ + while (snd_rawmidi_transmit(substream, buf, + sizeof(buf)) > 0) { + /* ignored */ + } + return; } if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) { if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, in_atomic(), 0) < 0) return; vmidi->event.type = SNDRV_SEQ_EVENT_NONE; } + spin_lock_irqsave(&substream->runtime->lock, flags); while (1) { - count = snd_rawmidi_transmit_peek(substream, buf, sizeof(buf)); + count = __snd_rawmidi_transmit_peek(substream, buf, sizeof(buf)); if (count <= 0) break; pbuf = buf; @@ -179,16 +184,18 @@ snd_midi_event_reset_encode(vmidi->parser); continue; } - snd_rawmidi_transmit_ack(substream, res); + __snd_rawmidi_transmit_ack(substream, res); pbuf += res; count -= res; if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) { if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, in_atomic(), 0) < 0) - return; + goto out; vmidi->event.type = SNDRV_SEQ_EVENT_NONE; } } } + out: + spin_unlock_irqrestore(&substream->runtime->lock, flags); } else { vmidi->trigger = 0; } @@ -254,9 +261,13 @@ */ static int snd_virmidi_input_close(struct snd_rawmidi_substream *substream) { + struct snd_virmidi_dev *rdev = substream->rmidi->private_data; struct snd_virmidi *vmidi = substream->runtime->private_data; - snd_midi_event_free(vmidi->parser); + + write_lock_irq(&rdev->filelist_lock); list_del(&vmidi->list); + write_unlock_irq(&rdev->filelist_lock); + snd_midi_event_free(vmidi->parser); substream->runtime->private_data = NULL; kfree(vmidi); return 0; --- linux-raspi2-4.2.0.orig/sound/core/timer.c +++ linux-raspi2-4.2.0/sound/core/timer.c @@ -65,6 +65,7 @@ int qtail; int qused; int queue_size; + bool disconnected; struct snd_timer_read *queue; struct snd_timer_tread *tqueue; spinlock_t qlock; @@ -73,7 +74,7 @@ struct timespec tstamp; /* trigger tstamp */ wait_queue_head_t qchange_sleep; struct fasync_struct *fasync; - struct mutex tread_sem; + struct mutex ioctl_lock; }; /* list of timers */ @@ -215,11 +216,13 @@ slave->slave_id == master->slave_id) { list_move_tail(&slave->open_list, &master->slave_list_head); spin_lock_irq(&slave_active_lock); + spin_lock(&master->timer->lock); slave->master = master; slave->timer = master->timer; if (slave->flags & SNDRV_TIMER_IFLG_RUNNING) list_add_tail(&slave->active_list, &master->slave_active_head); + spin_unlock(&master->timer->lock); spin_unlock_irq(&slave_active_lock); } } @@ -288,6 +291,9 @@ mutex_unlock(®ister_mutex); return -ENOMEM; } + /* take a card refcount for safe disconnection */ + if (timer->card) + get_device(&timer->card->card_dev); timeri->slave_class = tid->dev_sclass; timeri->slave_id = slave_id; if (list_empty(&timer->open_list_head) && timer->hw.open) @@ -299,8 +305,7 @@ return 0; } -static int _snd_timer_stop(struct snd_timer_instance *timeri, - int keep_flag, int event); +static int _snd_timer_stop(struct snd_timer_instance *timeri, int event); /* * close a timer instance @@ -342,19 +347,25 @@ spin_unlock_irq(&timer->lock); mutex_lock(®ister_mutex); list_del(&timeri->open_list); - if (timer && list_empty(&timer->open_list_head) && + if (list_empty(&timer->open_list_head) && timer->hw.close) timer->hw.close(timer); /* remove slave links */ + spin_lock_irq(&slave_active_lock); + spin_lock(&timer->lock); list_for_each_entry_safe(slave, tmp, &timeri->slave_list_head, open_list) { - spin_lock_irq(&slave_active_lock); - _snd_timer_stop(slave, 1, SNDRV_TIMER_EVENT_RESOLUTION); list_move_tail(&slave->open_list, &snd_timer_slave_list); slave->master = NULL; slave->timer = NULL; - spin_unlock_irq(&slave_active_lock); + list_del_init(&slave->ack_list); + list_del_init(&slave->active_list); } + spin_unlock(&timer->lock); + spin_unlock_irq(&slave_active_lock); + /* release a card refcount for safe disconnection */ + if (timer->card) + put_device(&timer->card->card_dev); mutex_unlock(®ister_mutex); } out: @@ -411,7 +422,7 @@ spin_lock_irqsave(&timer->lock, flags); list_for_each_entry(ts, &ti->slave_active_head, active_list) if (ts->ccallback) - ts->ccallback(ti, event + 100, &tstamp, resolution); + ts->ccallback(ts, event + 100, &tstamp, resolution); spin_unlock_irqrestore(&timer->lock, flags); } @@ -440,10 +451,17 @@ unsigned long flags; spin_lock_irqsave(&slave_active_lock, flags); + if (timeri->flags & SNDRV_TIMER_IFLG_RUNNING) { + spin_unlock_irqrestore(&slave_active_lock, flags); + return -EBUSY; + } timeri->flags |= SNDRV_TIMER_IFLG_RUNNING; - if (timeri->master) + if (timeri->master && timeri->timer) { + spin_lock(&timeri->timer->lock); list_add_tail(&timeri->active_list, &timeri->master->slave_active_head); + spin_unlock(&timeri->timer->lock); + } spin_unlock_irqrestore(&slave_active_lock, flags); return 1; /* delayed start */ } @@ -461,23 +479,32 @@ return -EINVAL; if (timeri->flags & SNDRV_TIMER_IFLG_SLAVE) { result = snd_timer_start_slave(timeri); - snd_timer_notify1(timeri, SNDRV_TIMER_EVENT_START); + if (result >= 0) + snd_timer_notify1(timeri, SNDRV_TIMER_EVENT_START); return result; } timer = timeri->timer; if (timer == NULL) return -EINVAL; + if (timer->card && timer->card->shutdown) + return -ENODEV; spin_lock_irqsave(&timer->lock, flags); + if (timeri->flags & (SNDRV_TIMER_IFLG_RUNNING | + SNDRV_TIMER_IFLG_START)) { + result = -EBUSY; + goto unlock; + } timeri->ticks = timeri->cticks = ticks; timeri->pticks = 0; result = snd_timer_start1(timer, timeri, ticks); + unlock: spin_unlock_irqrestore(&timer->lock, flags); - snd_timer_notify1(timeri, SNDRV_TIMER_EVENT_START); + if (result >= 0) + snd_timer_notify1(timeri, SNDRV_TIMER_EVENT_START); return result; } -static int _snd_timer_stop(struct snd_timer_instance * timeri, - int keep_flag, int event) +static int _snd_timer_stop(struct snd_timer_instance *timeri, int event) { struct snd_timer *timer; unsigned long flags; @@ -486,19 +513,36 @@ return -ENXIO; if (timeri->flags & SNDRV_TIMER_IFLG_SLAVE) { - if (!keep_flag) { - spin_lock_irqsave(&slave_active_lock, flags); - timeri->flags &= ~SNDRV_TIMER_IFLG_RUNNING; + spin_lock_irqsave(&slave_active_lock, flags); + if (!(timeri->flags & SNDRV_TIMER_IFLG_RUNNING)) { spin_unlock_irqrestore(&slave_active_lock, flags); + return -EBUSY; } + if (timeri->timer) + spin_lock(&timeri->timer->lock); + timeri->flags &= ~SNDRV_TIMER_IFLG_RUNNING; + list_del_init(&timeri->ack_list); + list_del_init(&timeri->active_list); + if (timeri->timer) + spin_unlock(&timeri->timer->lock); + spin_unlock_irqrestore(&slave_active_lock, flags); goto __end; } timer = timeri->timer; if (!timer) return -EINVAL; spin_lock_irqsave(&timer->lock, flags); + if (!(timeri->flags & (SNDRV_TIMER_IFLG_RUNNING | + SNDRV_TIMER_IFLG_START))) { + spin_unlock_irqrestore(&timer->lock, flags); + return -EBUSY; + } list_del_init(&timeri->ack_list); list_del_init(&timeri->active_list); + if (timer->card && timer->card->shutdown) { + spin_unlock_irqrestore(&timer->lock, flags); + return 0; + } if ((timeri->flags & SNDRV_TIMER_IFLG_RUNNING) && !(--timer->running)) { timer->hw.stop(timer); @@ -511,9 +555,7 @@ } } } - if (!keep_flag) - timeri->flags &= - ~(SNDRV_TIMER_IFLG_RUNNING | SNDRV_TIMER_IFLG_START); + timeri->flags &= ~(SNDRV_TIMER_IFLG_RUNNING | SNDRV_TIMER_IFLG_START); spin_unlock_irqrestore(&timer->lock, flags); __end: if (event != SNDRV_TIMER_EVENT_RESOLUTION) @@ -532,7 +574,7 @@ unsigned long flags; int err; - err = _snd_timer_stop(timeri, 0, SNDRV_TIMER_EVENT_STOP); + err = _snd_timer_stop(timeri, SNDRV_TIMER_EVENT_STOP); if (err < 0) return err; timer = timeri->timer; @@ -561,11 +603,18 @@ timer = timeri->timer; if (! timer) return -EINVAL; + if (timer->card && timer->card->shutdown) + return -ENODEV; spin_lock_irqsave(&timer->lock, flags); + if (timeri->flags & SNDRV_TIMER_IFLG_RUNNING) { + result = -EBUSY; + goto unlock; + } if (!timeri->cticks) timeri->cticks = 1; timeri->pticks = 0; result = snd_timer_start1(timer, timeri, timer->sticks); + unlock: spin_unlock_irqrestore(&timer->lock, flags); snd_timer_notify1(timeri, SNDRV_TIMER_EVENT_CONTINUE); return result; @@ -576,7 +625,7 @@ */ int snd_timer_pause(struct snd_timer_instance * timeri) { - return _snd_timer_stop(timeri, 0, SNDRV_TIMER_EVENT_PAUSE); + return _snd_timer_stop(timeri, SNDRV_TIMER_EVENT_PAUSE); } /* @@ -624,6 +673,9 @@ unsigned long resolution, ticks; unsigned long flags; + if (timer->card && timer->card->shutdown) + return; + spin_lock_irqsave(&timer->lock, flags); /* now process all callbacks */ while (!list_empty(&timer->sack_list_head)) { @@ -664,6 +716,9 @@ if (timer == NULL) return; + if (timer->card && timer->card->shutdown) + return; + spin_lock_irqsave(&timer->lock, flags); /* remember the current resolution */ @@ -693,8 +748,8 @@ ti->cticks = ti->ticks; } else { ti->flags &= ~SNDRV_TIMER_IFLG_RUNNING; - if (--timer->running) - list_del(&ti->active_list); + --timer->running; + list_del_init(&ti->active_list); } if ((timer->hw.flags & SNDRV_TIMER_HW_TASKLET) || (ti->flags & SNDRV_TIMER_IFLG_FAST)) @@ -874,11 +929,28 @@ return 0; } +/* just for reference in snd_timer_dev_disconnect() below */ +static void snd_timer_user_ccallback(struct snd_timer_instance *timeri, + int event, struct timespec *tstamp, + unsigned long resolution); + static int snd_timer_dev_disconnect(struct snd_device *device) { struct snd_timer *timer = device->device_data; + struct snd_timer_instance *ti; + mutex_lock(®ister_mutex); list_del_init(&timer->device_list); + /* wake up pending sleepers */ + list_for_each_entry(ti, &timer->open_list_head, open_list) { + /* FIXME: better to have a ti.disconnect() op */ + if (ti->ccallback == snd_timer_user_ccallback) { + struct snd_timer_user *tu = ti->callback_data; + + tu->disconnected = true; + wake_up(&tu->qchange_sleep); + } + } mutex_unlock(®ister_mutex); return 0; } @@ -889,6 +961,8 @@ unsigned long resolution = 0; struct snd_timer_instance *ti, *ts; + if (timer->card && timer->card->shutdown) + return; if (! (timer->hw.flags & SNDRV_TIMER_HW_SLAVE)) return; if (snd_BUG_ON(event < SNDRV_TIMER_EVENT_MSTART || @@ -977,8 +1051,8 @@ njiff += timer->sticks - priv->correction; priv->correction = 0; } - priv->last_expires = priv->tlist.expires = njiff; - add_timer(&priv->tlist); + priv->last_expires = njiff; + mod_timer(&priv->tlist, njiff); return 0; } @@ -1047,6 +1121,8 @@ mutex_lock(®ister_mutex); list_for_each_entry(timer, &snd_timer_list, device_list) { + if (timer->card && timer->card->shutdown) + continue; switch (timer->tmr_class) { case SNDRV_TIMER_CLASS_GLOBAL: snd_iprintf(buffer, "G%i: ", timer->tmr_device); @@ -1253,7 +1329,7 @@ return -ENOMEM; spin_lock_init(&tu->qlock); init_waitqueue_head(&tu->qchange_sleep); - mutex_init(&tu->tread_sem); + mutex_init(&tu->ioctl_lock); tu->ticks = 1; tu->queue_size = 128; tu->queue = kmalloc(tu->queue_size * sizeof(struct snd_timer_read), @@ -1273,8 +1349,10 @@ if (file->private_data) { tu = file->private_data; file->private_data = NULL; + mutex_lock(&tu->ioctl_lock); if (tu->timeri) snd_timer_close(tu->timeri); + mutex_unlock(&tu->ioctl_lock); kfree(tu->queue); kfree(tu->tqueue); kfree(tu); @@ -1512,7 +1590,6 @@ int err = 0; tu = file->private_data; - mutex_lock(&tu->tread_sem); if (tu->timeri) { snd_timer_close(tu->timeri); tu->timeri = NULL; @@ -1556,7 +1633,6 @@ } __err: - mutex_unlock(&tu->tread_sem); return err; } @@ -1769,7 +1845,7 @@ SNDRV_TIMER_IOCTL_PAUSE_OLD = _IO('T', 0x23), }; -static long snd_timer_user_ioctl(struct file *file, unsigned int cmd, +static long __snd_timer_user_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { struct snd_timer_user *tu; @@ -1786,17 +1862,11 @@ { int xarg; - mutex_lock(&tu->tread_sem); - if (tu->timeri) { /* too late */ - mutex_unlock(&tu->tread_sem); + if (tu->timeri) /* too late */ return -EBUSY; - } - if (get_user(xarg, p)) { - mutex_unlock(&tu->tread_sem); + if (get_user(xarg, p)) return -EFAULT; - } tu->tread = xarg ? 1 : 0; - mutex_unlock(&tu->tread_sem); return 0; } case SNDRV_TIMER_IOCTL_GINFO: @@ -1829,6 +1899,18 @@ return -ENOTTY; } +static long snd_timer_user_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + struct snd_timer_user *tu = file->private_data; + long ret; + + mutex_lock(&tu->ioctl_lock); + ret = __snd_timer_user_ioctl(file, cmd, arg); + mutex_unlock(&tu->ioctl_lock); + return ret; +} + static int snd_timer_user_fasync(int fd, struct file * file, int on) { struct snd_timer_user *tu; @@ -1842,6 +1924,7 @@ { struct snd_timer_user *tu; long result = 0, unit; + int qhead; int err = 0; tu = file->private_data; @@ -1853,7 +1936,7 @@ if ((file->f_flags & O_NONBLOCK) != 0 || result > 0) { err = -EAGAIN; - break; + goto _error; } set_current_state(TASK_INTERRUPTIBLE); @@ -1866,40 +1949,39 @@ remove_wait_queue(&tu->qchange_sleep, &wait); + if (tu->disconnected) { + err = -ENODEV; + goto _error; + } if (signal_pending(current)) { err = -ERESTARTSYS; - break; + goto _error; } } + qhead = tu->qhead++; + tu->qhead %= tu->queue_size; spin_unlock_irq(&tu->qlock); - if (err < 0) - goto _error; if (tu->tread) { - if (copy_to_user(buffer, &tu->tqueue[tu->qhead++], - sizeof(struct snd_timer_tread))) { + if (copy_to_user(buffer, &tu->tqueue[qhead], + sizeof(struct snd_timer_tread))) err = -EFAULT; - goto _error; - } } else { - if (copy_to_user(buffer, &tu->queue[tu->qhead++], - sizeof(struct snd_timer_read))) { + if (copy_to_user(buffer, &tu->queue[qhead], + sizeof(struct snd_timer_read))) err = -EFAULT; - goto _error; - } } - tu->qhead %= tu->queue_size; - - result += unit; - buffer += unit; - spin_lock_irq(&tu->qlock); tu->qused--; + if (err < 0) + goto _error; + result += unit; + buffer += unit; } - spin_unlock_irq(&tu->qlock); _error: + spin_unlock_irq(&tu->qlock); return result > 0 ? result : err; } @@ -1915,6 +1997,8 @@ mask = 0; if (tu->qused) mask |= POLLIN | POLLRDNORM; + if (tu->disconnected) + mask |= POLLERR; return mask; } --- linux-raspi2-4.2.0.orig/sound/core/timer_compat.c +++ linux-raspi2-4.2.0/sound/core/timer_compat.c @@ -70,13 +70,14 @@ struct snd_timer_status32 __user *_status) { struct snd_timer_user *tu; - struct snd_timer_status status; + struct snd_timer_status32 status; tu = file->private_data; if (snd_BUG_ON(!tu->timeri)) return -ENXIO; memset(&status, 0, sizeof(status)); - status.tstamp = tu->tstamp; + status.tstamp.tv_sec = tu->tstamp.tv_sec; + status.tstamp.tv_nsec = tu->tstamp.tv_nsec; status.resolution = snd_timer_resolution(tu->timeri); status.lost = tu->timeri->lost; status.overrun = tu->overrun; @@ -88,12 +89,21 @@ return 0; } +#ifdef CONFIG_X86_X32 +/* X32 ABI has the same struct as x86-64 */ +#define snd_timer_user_status_x32(file, s) \ + snd_timer_user_status(file, s) +#endif /* CONFIG_X86_X32 */ + /* */ enum { SNDRV_TIMER_IOCTL_INFO32 = _IOR('T', 0x11, struct snd_timer_info32), SNDRV_TIMER_IOCTL_STATUS32 = _IOW('T', 0x14, struct snd_timer_status32), +#ifdef CONFIG_X86_X32 + SNDRV_TIMER_IOCTL_STATUS_X32 = _IOW('T', 0x14, struct snd_timer_status), +#endif /* CONFIG_X86_X32 */ }; static long snd_timer_user_ioctl_compat(struct file *file, unsigned int cmd, unsigned long arg) @@ -122,6 +132,10 @@ return snd_timer_user_info_compat(file, argp); case SNDRV_TIMER_IOCTL_STATUS32: return snd_timer_user_status_compat(file, argp); +#ifdef CONFIG_X86_X32 + case SNDRV_TIMER_IOCTL_STATUS_X32: + return snd_timer_user_status_x32(file, argp); +#endif /* CONFIG_X86_X32 */ } return -ENOIOCTLCMD; } --- linux-raspi2-4.2.0.orig/sound/drivers/dummy.c +++ linux-raspi2-4.2.0/sound/drivers/dummy.c @@ -109,6 +109,9 @@ snd_pcm_uframes_t (*pointer)(struct snd_pcm_substream *); }; +#define get_dummy_ops(substream) \ + (*(const struct dummy_timer_ops **)(substream)->runtime->private_data) + struct dummy_model { const char *name; int (*playback_constraints)(struct snd_pcm_runtime *runtime); @@ -137,7 +140,6 @@ int iobox; struct snd_kcontrol *cd_volume_ctl; struct snd_kcontrol *cd_switch_ctl; - const struct dummy_timer_ops *timer_ops; }; /* @@ -231,6 +233,8 @@ */ struct dummy_systimer_pcm { + /* ops must be the first item */ + const struct dummy_timer_ops *timer_ops; spinlock_t lock; struct timer_list timer; unsigned long base_time; @@ -366,6 +370,8 @@ */ struct dummy_hrtimer_pcm { + /* ops must be the first item */ + const struct dummy_timer_ops *timer_ops; ktime_t base_time; ktime_t period_time; atomic_t running; @@ -492,31 +498,25 @@ static int dummy_pcm_trigger(struct snd_pcm_substream *substream, int cmd) { - struct snd_dummy *dummy = snd_pcm_substream_chip(substream); - switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: - return dummy->timer_ops->start(substream); + return get_dummy_ops(substream)->start(substream); case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_SUSPEND: - return dummy->timer_ops->stop(substream); + return get_dummy_ops(substream)->stop(substream); } return -EINVAL; } static int dummy_pcm_prepare(struct snd_pcm_substream *substream) { - struct snd_dummy *dummy = snd_pcm_substream_chip(substream); - - return dummy->timer_ops->prepare(substream); + return get_dummy_ops(substream)->prepare(substream); } static snd_pcm_uframes_t dummy_pcm_pointer(struct snd_pcm_substream *substream) { - struct snd_dummy *dummy = snd_pcm_substream_chip(substream); - - return dummy->timer_ops->pointer(substream); + return get_dummy_ops(substream)->pointer(substream); } static struct snd_pcm_hardware dummy_pcm_hardware = { @@ -562,17 +562,19 @@ struct snd_dummy *dummy = snd_pcm_substream_chip(substream); struct dummy_model *model = dummy->model; struct snd_pcm_runtime *runtime = substream->runtime; + const struct dummy_timer_ops *ops; int err; - dummy->timer_ops = &dummy_systimer_ops; + ops = &dummy_systimer_ops; #ifdef CONFIG_HIGH_RES_TIMERS if (hrtimer) - dummy->timer_ops = &dummy_hrtimer_ops; + ops = &dummy_hrtimer_ops; #endif - err = dummy->timer_ops->create(substream); + err = ops->create(substream); if (err < 0) return err; + get_dummy_ops(substream) = ops; runtime->hw = dummy->pcm_hw; if (substream->pcm->device & 1) { @@ -594,7 +596,7 @@ err = model->capture_constraints(substream->runtime); } if (err < 0) { - dummy->timer_ops->free(substream); + get_dummy_ops(substream)->free(substream); return err; } return 0; @@ -602,8 +604,7 @@ static int dummy_pcm_close(struct snd_pcm_substream *substream) { - struct snd_dummy *dummy = snd_pcm_substream_chip(substream); - dummy->timer_ops->free(substream); + get_dummy_ops(substream)->free(substream); return 0; } --- 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/bebob/bebob_stream.c +++ linux-raspi2-4.2.0/sound/firewire/bebob/bebob_stream.c @@ -47,14 +47,16 @@ [6] = 0x07, }; -static unsigned int -get_formation_index(unsigned int rate) +static int +get_formation_index(unsigned int rate, unsigned int *index) { unsigned int i; for (i = 0; i < ARRAY_SIZE(snd_bebob_rate_table); i++) { - if (snd_bebob_rate_table[i] == rate) - return i; + if (snd_bebob_rate_table[i] == rate) { + *index = i; + return 0; + } } return -EINVAL; } @@ -424,7 +426,9 @@ goto end; /* confirm params for both streams */ - index = get_formation_index(rate); + err = get_formation_index(rate, &index); + if (err < 0) + goto end; pcm_channels = bebob->tx_stream_formations[index].pcm; midi_channels = bebob->tx_stream_formations[index].midi; amdtp_stream_set_parameters(&bebob->tx_stream, --- 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_controller.c +++ linux-raspi2-4.2.0/sound/hda/hdac_controller.c @@ -426,18 +426,22 @@ * @bus: HD-audio core bus * @status: INTSTS register value * @ask: callback to be called for woken streams + * + * Returns the bits of handled streams, or zero if no stream is handled. */ -void snd_hdac_bus_handle_stream_irq(struct hdac_bus *bus, unsigned int status, +int snd_hdac_bus_handle_stream_irq(struct hdac_bus *bus, unsigned int status, void (*ack)(struct hdac_bus *, struct hdac_stream *)) { struct hdac_stream *azx_dev; u8 sd_status; + int handled = 0; list_for_each_entry(azx_dev, &bus->stream_list, list) { if (status & azx_dev->sd_int_sta_mask) { sd_status = snd_hdac_stream_readb(azx_dev, SD_STS); snd_hdac_stream_writeb(azx_dev, SD_STS, SD_INT_MASK); + handled |= 1 << azx_dev->index; if (!azx_dev->substream || !azx_dev->running || !(sd_status & SD_INT_COMPLETE)) continue; @@ -445,6 +449,7 @@ ack(bus, azx_dev); } } + return handled; } EXPORT_SYMBOL_GPL(snd_hdac_bus_handle_stream_irq); --- 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/fm801.c +++ linux-raspi2-4.2.0/sound/pci/fm801.c @@ -1080,26 +1080,20 @@ return -EIO; } -static int snd_fm801_chip_init(struct fm801 *chip, int resume) +static int reset_codec(struct fm801 *chip) { - unsigned short cmdw; - - if (chip->tea575x_tuner & TUNER_ONLY) - goto __ac97_ok; - /* codec cold reset + AC'97 warm reset */ fm801_writew(chip, CODEC_CTRL, (1 << 5) | (1 << 6)); fm801_readw(chip, CODEC_CTRL); /* flush posting data */ udelay(100); fm801_writew(chip, CODEC_CTRL, 0); - if (wait_for_codec(chip, 0, AC97_RESET, msecs_to_jiffies(750)) < 0) - if (!resume) { - dev_info(chip->card->dev, - "Primary AC'97 codec not found, assume SF64-PCR (tuner-only)\n"); - chip->tea575x_tuner = 3 | TUNER_ONLY; - goto __ac97_ok; - } + return wait_for_codec(chip, 0, AC97_RESET, msecs_to_jiffies(750)); +} + +static void snd_fm801_chip_multichannel_init(struct fm801 *chip) +{ + unsigned short cmdw; if (chip->multichannel) { if (chip->secondary_addr) { @@ -1126,8 +1120,11 @@ /* cause timeout problems */ wait_for_codec(chip, 0, AC97_VENDOR_ID1, msecs_to_jiffies(750)); } +} - __ac97_ok: +static void snd_fm801_chip_init(struct fm801 *chip) +{ + unsigned short cmdw; /* init volume */ fm801_writew(chip, PCM_VOL, 0x0808); @@ -1148,11 +1145,8 @@ /* interrupt clear */ fm801_writew(chip, IRQ_STATUS, FM801_IRQ_PLAYBACK | FM801_IRQ_CAPTURE | FM801_IRQ_MPU); - - return 0; } - static int snd_fm801_free(struct fm801 *chip) { unsigned short cmdw; @@ -1165,6 +1159,8 @@ cmdw |= 0x00c3; fm801_writew(chip, IRQ_MASK, cmdw); + devm_free_irq(&chip->pci->dev, chip->irq, chip); + __end_hw: #ifdef CONFIG_SND_FM801_TEA575X_BOOL if (!(chip->tea575x_tuner & TUNER_DISABLED)) { @@ -1207,7 +1203,23 @@ if ((err = pci_request_regions(pci, "FM801")) < 0) return err; chip->port = pci_resource_start(pci, 0); - if ((tea575x_tuner & TUNER_ONLY) == 0) { + + if (pci->revision >= 0xb1) /* FM801-AU */ + chip->multichannel = 1; + + if (!(chip->tea575x_tuner & TUNER_ONLY)) { + if (reset_codec(chip) < 0) { + dev_info(chip->card->dev, + "Primary AC'97 codec not found, assume SF64-PCR (tuner-only)\n"); + chip->tea575x_tuner = 3 | TUNER_ONLY; + } else { + snd_fm801_chip_multichannel_init(chip); + } + } + + snd_fm801_chip_init(chip); + + if ((chip->tea575x_tuner & TUNER_ONLY) == 0) { if (devm_request_irq(&pci->dev, pci->irq, snd_fm801_interrupt, IRQF_SHARED, KBUILD_MODNAME, chip)) { dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq); @@ -1218,13 +1230,6 @@ pci_set_master(pci); } - if (pci->revision >= 0xb1) /* FM801-AU */ - chip->multichannel = 1; - - snd_fm801_chip_init(chip, 0); - /* init might set tuner access method */ - tea575x_tuner = chip->tea575x_tuner; - if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { snd_fm801_free(chip); return err; @@ -1241,14 +1246,16 @@ chip->tea.private_data = chip; chip->tea.ops = &snd_fm801_tea_ops; sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci)); - if ((tea575x_tuner & TUNER_TYPE_MASK) > 0 && - (tea575x_tuner & TUNER_TYPE_MASK) < 4) { + if ((chip->tea575x_tuner & TUNER_TYPE_MASK) > 0 && + (chip->tea575x_tuner & TUNER_TYPE_MASK) < 4) { if (snd_tea575x_init(&chip->tea, THIS_MODULE)) { dev_err(card->dev, "TEA575x radio not found\n"); snd_fm801_free(chip); return -ENODEV; } - } else if ((tea575x_tuner & TUNER_TYPE_MASK) == 0) { + } else if ((chip->tea575x_tuner & TUNER_TYPE_MASK) == 0) { + unsigned int tuner_only = chip->tea575x_tuner & TUNER_ONLY; + /* autodetect tuner connection */ for (tea575x_tuner = 1; tea575x_tuner <= 3; tea575x_tuner++) { chip->tea575x_tuner = tea575x_tuner; @@ -1263,6 +1270,8 @@ dev_err(card->dev, "TEA575x radio not found\n"); chip->tea575x_tuner = TUNER_DISABLED; } + + chip->tea575x_tuner |= tuner_only; } if (!(chip->tea575x_tuner & TUNER_DISABLED)) { strlcpy(chip->tea.card, get_tea575x_gpio(chip)->name, @@ -1381,7 +1390,13 @@ struct fm801 *chip = card->private_data; int i; - snd_fm801_chip_init(chip, 1); + if (chip->tea575x_tuner & TUNER_ONLY) { + snd_fm801_chip_init(chip); + } else { + reset_codec(chip); + snd_fm801_chip_multichannel_init(chip); + snd_fm801_chip_init(chip); + } snd_ac97_resume(chip->ac97); snd_ac97_resume(chip->ac97_sec); for (i = 0; i < ARRAY_SIZE(saved_regs); i++) --- 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 @@ -930,6 +930,8 @@ struct azx *chip = dev_id; struct hdac_bus *bus = azx_bus(chip); u32 status; + bool active, handled = false; + int repeat = 0; /* count for avoiding endless loop */ #ifdef CONFIG_PM if (azx_has_pm_runtime(chip)) @@ -939,33 +941,36 @@ spin_lock(&bus->reg_lock); - if (chip->disabled) { - spin_unlock(&bus->reg_lock); - return IRQ_NONE; - } - - status = azx_readl(chip, INTSTS); - if (status == 0 || status == 0xffffffff) { - spin_unlock(&bus->reg_lock); - return IRQ_NONE; - } + if (chip->disabled) + goto unlock; - snd_hdac_bus_handle_stream_irq(bus, status, stream_update); - - /* clear rirb int */ - status = azx_readb(chip, RIRBSTS); - if (status & RIRB_INT_MASK) { - if (status & RIRB_INT_RESPONSE) { - if (chip->driver_caps & AZX_DCAPS_RIRB_PRE_DELAY) - udelay(80); - snd_hdac_bus_update_rirb(bus); + do { + status = azx_readl(chip, INTSTS); + if (status == 0 || status == 0xffffffff) + break; + + handled = true; + active = false; + if (snd_hdac_bus_handle_stream_irq(bus, status, stream_update)) + active = true; + + /* clear rirb int */ + status = azx_readb(chip, RIRBSTS); + if (status & RIRB_INT_MASK) { + active = true; + if (status & RIRB_INT_RESPONSE) { + if (chip->driver_caps & AZX_DCAPS_RIRB_PRE_DELAY) + udelay(80); + snd_hdac_bus_update_rirb(bus); + } + azx_writeb(chip, RIRBSTS, RIRB_INT_MASK); } - azx_writeb(chip, RIRBSTS, RIRB_INT_MASK); - } + } while (active && ++repeat < 10); + unlock: spin_unlock(&bus->reg_lock); - return IRQ_HANDLED; + return IRQ_RETVAL(handled); } EXPORT_SYMBOL_GPL(azx_interrupt); @@ -1059,6 +1064,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_generic.c +++ linux-raspi2-4.2.0/sound/pci/hda/hda_generic.c @@ -3998,9 +3998,9 @@ struct hda_jack_callback *jack, bool on) { - if (jack && jack->tbl->nid) + if (jack && jack->nid) sync_power_state_change(codec, - set_pin_power_jack(codec, jack->tbl->nid, on)); + set_pin_power_jack(codec, jack->nid, on)); } /* callback only doing power up -- called at first */ --- 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) /* @@ -926,6 +927,36 @@ } #endif /* CONFIG_PM_SLEEP || SUPPORT_VGA_SWITCHEROO */ +#ifdef CONFIG_PM_SLEEP +/* put codec down to D3 at hibernation for Intel SKL+; + * otherwise BIOS may still access the codec and screw up the driver + */ +#define IS_SKL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa170) +#define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) +#define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) +#define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) + +static int azx_freeze_noirq(struct device *dev) +{ + struct pci_dev *pci = to_pci_dev(dev); + + if (IS_SKL_PLUS(pci)) + pci_set_power_state(pci, PCI_D3hot); + + return 0; +} + +static int azx_thaw_noirq(struct device *dev) +{ + struct pci_dev *pci = to_pci_dev(dev); + + if (IS_SKL_PLUS(pci)) + pci_set_power_state(pci, PCI_D0); + + return 0; +} +#endif /* CONFIG_PM_SLEEP */ + #ifdef CONFIG_PM static int azx_runtime_suspend(struct device *dev) { @@ -1035,6 +1066,10 @@ static const struct dev_pm_ops azx_pm = { SET_SYSTEM_SLEEP_PM_OPS(azx_suspend, azx_resume) +#ifdef CONFIG_PM_SLEEP + .freeze_noirq = azx_freeze_noirq, + .thaw_noirq = azx_thaw_noirq, +#endif SET_RUNTIME_PM_OPS(azx_runtime_suspend, azx_runtime_resume, azx_runtime_idle) }; @@ -2065,9 +2100,17 @@ static void azx_remove(struct pci_dev *pci) { struct snd_card *card = pci_get_drvdata(pci); + struct azx *chip; + struct hda_intel *hda; + + if (card) { + /* cancel the pending probing work */ + chip = card->private_data; + hda = container_of(chip, struct hda_intel, chip); + cancel_work_sync(&hda->probe_work); - if (card) snd_card_free(card); + } } static void azx_shutdown(struct pci_dev *pci) @@ -2104,6 +2147,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 +2332,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_jack.c +++ linux-raspi2-4.2.0/sound/pci/hda/hda_jack.c @@ -259,7 +259,7 @@ if (!callback) return ERR_PTR(-ENOMEM); callback->func = func; - callback->tbl = jack; + callback->nid = jack->nid; callback->next = jack->callback; jack->callback = callback; } --- linux-raspi2-4.2.0.orig/sound/pci/hda/hda_jack.h +++ linux-raspi2-4.2.0/sound/pci/hda/hda_jack.h @@ -21,7 +21,7 @@ typedef void (*hda_jack_callback_fn) (struct hda_codec *, struct hda_jack_callback *); struct hda_jack_callback { - struct hda_jack_tbl *tbl; + hda_nid_t nid; hda_jack_callback_fn func; unsigned int private_data; /* arbitrary data */ struct hda_jack_callback *next; --- 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_ca0132.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_ca0132.c @@ -764,7 +764,8 @@ }; static const struct snd_pci_quirk ca0132_quirks[] = { - SND_PCI_QUIRK(0x1028, 0x0685, "Alienware 15", QUIRK_ALIENWARE), + SND_PCI_QUIRK(0x1028, 0x0685, "Alienware 15 2015", QUIRK_ALIENWARE), + SND_PCI_QUIRK(0x1028, 0x0688, "Alienware 17 2015", QUIRK_ALIENWARE), {} }; @@ -4412,13 +4413,16 @@ static void hp_callback(struct hda_codec *codec, struct hda_jack_callback *cb) { struct ca0132_spec *spec = codec->spec; + struct hda_jack_tbl *tbl; /* Delay enabling the HP amp, to let the mic-detection * state machine run. */ cancel_delayed_work_sync(&spec->unsol_hp_work); schedule_delayed_work(&spec->unsol_hp_work, msecs_to_jiffies(500)); - cb->tbl->block_report = 1; + tbl = snd_hda_jack_tbl_get(codec, cb->nid); + if (tbl) + tbl->block_report = 1; } static void amic_callback(struct hda_codec *codec, struct hda_jack_callback *cb) --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_cirrus.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_cirrus.c @@ -174,8 +174,12 @@ snd_hda_gen_update_outputs(codec); if (spec->gpio_eapd_hp || spec->gpio_eapd_speaker) { - spec->gpio_data = spec->gen.hp_jack_present ? - spec->gpio_eapd_hp : spec->gpio_eapd_speaker; + if (spec->gen.automute_speaker) + spec->gpio_data = spec->gen.hp_jack_present ? + spec->gpio_eapd_hp : spec->gpio_eapd_speaker; + else + spec->gpio_data = + spec->gpio_eapd_hp | spec->gpio_eapd_speaker; snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA, spec->gpio_data); } @@ -613,6 +617,7 @@ CS4208_MAC_AUTO, CS4208_MBA6, CS4208_MBP11, + CS4208_MACMINI, CS4208_GPIO0, }; @@ -620,6 +625,7 @@ { .id = CS4208_GPIO0, .name = "gpio0" }, { .id = CS4208_MBA6, .name = "mba6" }, { .id = CS4208_MBP11, .name = "mbp11" }, + { .id = CS4208_MACMINI, .name = "macmini" }, {} }; @@ -631,8 +637,10 @@ /* codec SSID matching */ static const struct snd_pci_quirk cs4208_mac_fixup_tbl[] = { SND_PCI_QUIRK(0x106b, 0x5e00, "MacBookPro 11,2", CS4208_MBP11), + SND_PCI_QUIRK(0x106b, 0x6c00, "MacMini 7,1", CS4208_MACMINI), 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 */ }; @@ -664,6 +672,24 @@ snd_hda_apply_fixup(codec, action); } +/* MacMini 7,1 has the inverted jack detection */ +static void cs4208_fixup_macmini(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + static const struct hda_pintbl pincfgs[] = { + { 0x18, 0x00ab9150 }, /* mic (audio-in) jack: disable detect */ + { 0x21, 0x004be140 }, /* SPDIF: disable detect */ + { } + }; + + if (action == HDA_FIXUP_ACT_PRE_PROBE) { + /* HP pin (0x10) has an inverted detection */ + codec->inv_jack_detect = 1; + /* disable the bogus Mic and SPDIF jack detections */ + snd_hda_apply_pincfgs(codec, pincfgs); + } +} + static int cs4208_spdif_sw_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { @@ -707,6 +733,12 @@ .chained = true, .chain_id = CS4208_GPIO0, }, + [CS4208_MACMINI] = { + .type = HDA_FIXUP_FUNC, + .v.func = cs4208_fixup_macmini, + .chained = true, + .chain_id = CS4208_GPIO0, + }, [CS4208_GPIO0] = { .type = HDA_FIXUP_FUNC, .v.func = cs4208_fixup_gpio0, --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_conexant.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_conexant.c @@ -204,8 +204,13 @@ { struct conexant_spec *spec = codec->spec; - if (codec->core.vendor_id != 0x14f150f2) + switch (codec->core.vendor_id) { + case 0x14f150f2: /* CX20722 */ + case 0x14f150f4: /* CX20724 */ + break; + default: return; + } /* Turn the CX20722 codec into D3 to avoid spurious noises from the internal speaker during (and after) reboot */ @@ -819,6 +824,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; }; @@ -432,7 +438,8 @@ eld = &per_pin->sink_eld; mutex_lock(&per_pin->lock); - if (eld->eld_size > ARRAY_SIZE(ucontrol->value.bytes.data)) { + if (eld->eld_size > ARRAY_SIZE(ucontrol->value.bytes.data) || + eld->eld_size > ELD_MAX_SIZE) { mutex_unlock(&per_pin->lock); snd_BUG(); return -EINVAL; @@ -1177,7 +1184,7 @@ static void jack_callback(struct hda_codec *codec, struct hda_jack_callback *jack) { - check_presence_and_report(codec, jack->tbl->nid); + check_presence_and_report(codec, jack->nid); } static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res) @@ -2191,6 +2198,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 +2326,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 +2360,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; @@ -3513,6 +3535,7 @@ { .id = 0x10de0071, .name = "GPU 71 HDMI/DP", .patch = patch_nvhdmi }, { .id = 0x10de0072, .name = "GPU 72 HDMI/DP", .patch = patch_nvhdmi }, { .id = 0x10de007d, .name = "GPU 7d HDMI/DP", .patch = patch_nvhdmi }, +{ .id = 0x10de0082, .name = "GPU 82 HDMI/DP", .patch = patch_nvhdmi }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x11069f80, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi }, { .id = 0x11069f81, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi }, --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_realtek.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_realtek.c @@ -67,6 +67,10 @@ ALC_HEADSET_TYPE_OMTP, }; +enum { + ALC_KEY_MICMUTE_INDEX, +}; + struct alc_customize_define { unsigned int sku_cfg; unsigned char port_connectivity; @@ -111,6 +115,7 @@ void (*power_hook)(struct hda_codec *codec); #endif void (*shutup)(struct hda_codec *codec); + void (*reboot_notify)(struct hda_codec *codec); int init_amp; int codec_variant; /* flag for other variants */ @@ -122,6 +127,7 @@ unsigned int pll_coef_idx, pll_coef_bit; unsigned int coef0; struct input_dev *kb_dev; + u8 alc_mute_keycode_map[1]; }; /* @@ -276,7 +282,7 @@ uctl = kzalloc(sizeof(*uctl), GFP_KERNEL); if (!uctl) return; - val = snd_hda_codec_read(codec, jack->tbl->nid, 0, + val = snd_hda_codec_read(codec, jack->nid, 0, AC_VERB_GET_VOLUME_KNOB_CONTROL, 0); val &= HDA_AMP_VOLMASK; uctl->value.integer.value[0] = val; @@ -773,6 +779,25 @@ snd_hda_shutup_pins(codec); } +static void alc_reboot_notify(struct hda_codec *codec) +{ + struct alc_spec *spec = codec->spec; + + if (spec && spec->reboot_notify) + spec->reboot_notify(codec); + else + alc_shutup(codec); +} + +/* power down codec to D3 at reboot/shutdown; set as reboot_notify ops */ +static void alc_d3_at_reboot(struct hda_codec *codec) +{ + snd_hda_codec_set_power_to_all(codec, codec->core.afg, AC_PWRST_D3); + snd_hda_codec_write(codec, codec->core.afg, 0, + AC_VERB_SET_POWER_STATE, AC_PWRST_D3); + msleep(10); +} + #define alc_free snd_hda_gen_free #ifdef CONFIG_PM @@ -818,7 +843,7 @@ .suspend = alc_suspend, .check_power_status = snd_hda_gen_check_power_status, #endif - .reboot_notify = alc_shutup, + .reboot_notify = alc_reboot_notify, }; @@ -1135,7 +1160,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 +1180,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 +1389,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), @@ -1765,6 +1790,7 @@ ALC889_FIXUP_MBA11_VREF, ALC889_FIXUP_MBA21_VREF, ALC889_FIXUP_MP11_VREF, + ALC889_FIXUP_MP41_VREF, ALC882_FIXUP_INV_DMIC, ALC882_FIXUP_NO_PRIMARY_HP, ALC887_FIXUP_ASUS_BASS, @@ -1852,7 +1878,7 @@ const struct hda_fixup *fix, int action) { struct alc_spec *spec = codec->spec; - static hda_nid_t nids[2] = { 0x14, 0x15 }; + static hda_nid_t nids[3] = { 0x14, 0x15, 0x19 }; int i; if (action != HDA_FIXUP_ACT_INIT) @@ -2140,6 +2166,12 @@ .chained = true, .chain_id = ALC885_FIXUP_MACPRO_GPIO, }, + [ALC889_FIXUP_MP41_VREF] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc889_fixup_mbp_vref, + .chained = true, + .chain_id = ALC885_FIXUP_MACPRO_GPIO, + }, [ALC882_FIXUP_INV_DMIC] = { .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_inv_dmic, @@ -2199,6 +2231,7 @@ SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT), SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP), SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP), + SND_PCI_QUIRK(0x104d, 0x9044, "Sony VAIO AiO", ALC882_FIXUP_NO_PRIMARY_HP), /* All Apple entries are in codec SSIDs */ SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF), @@ -2218,7 +2251,7 @@ SND_PCI_QUIRK(0x106b, 0x3f00, "Macbook 5,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4100, "Macmini 3,1", ALC889_FIXUP_IMAC91_VREF), - SND_PCI_QUIRK(0x106b, 0x4200, "Mac Pro 5,1", ALC885_FIXUP_MACPRO_GPIO), + SND_PCI_QUIRK(0x106b, 0x4200, "Mac Pro 4,1/5,1", ALC889_FIXUP_MP41_VREF), SND_PCI_QUIRK(0x106b, 0x4300, "iMac 9,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4900, "iMac 9,1 Aluminum", ALC889_FIXUP_IMAC91_VREF), @@ -3437,12 +3470,43 @@ /* GPIO2 just toggles on a keypress/keyrelease cycle. Therefore send both key on and key off event for every interrupt. */ - input_report_key(spec->kb_dev, KEY_MICMUTE, 1); + input_report_key(spec->kb_dev, spec->alc_mute_keycode_map[ALC_KEY_MICMUTE_INDEX], 1); input_sync(spec->kb_dev); - input_report_key(spec->kb_dev, KEY_MICMUTE, 0); + input_report_key(spec->kb_dev, spec->alc_mute_keycode_map[ALC_KEY_MICMUTE_INDEX], 0); input_sync(spec->kb_dev); } +static int alc_register_micmute_input_device(struct hda_codec *codec) +{ + struct alc_spec *spec = codec->spec; + int i; + + spec->kb_dev = input_allocate_device(); + if (!spec->kb_dev) { + codec_err(codec, "Out of memory (input_allocate_device)\n"); + return -ENOMEM; + } + + spec->alc_mute_keycode_map[ALC_KEY_MICMUTE_INDEX] = KEY_MICMUTE; + + spec->kb_dev->name = "Microphone Mute Button"; + spec->kb_dev->evbit[0] = BIT_MASK(EV_KEY); + spec->kb_dev->keycodesize = sizeof(spec->alc_mute_keycode_map[0]); + spec->kb_dev->keycodemax = ARRAY_SIZE(spec->alc_mute_keycode_map); + spec->kb_dev->keycode = spec->alc_mute_keycode_map; + for (i = 0; i < ARRAY_SIZE(spec->alc_mute_keycode_map); i++) + set_bit(spec->alc_mute_keycode_map[i], spec->kb_dev->keybit); + + if (input_register_device(spec->kb_dev)) { + codec_err(codec, "input_register_device failed\n"); + input_free_device(spec->kb_dev); + spec->kb_dev = NULL; + return -ENOMEM; + } + + return 0; +} + static void alc280_fixup_hp_gpio2_mic_hotkey(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -3460,20 +3524,8 @@ struct alc_spec *spec = codec->spec; if (action == HDA_FIXUP_ACT_PRE_PROBE) { - spec->kb_dev = input_allocate_device(); - if (!spec->kb_dev) { - codec_err(codec, "Out of memory (input_allocate_device)\n"); - return; - } - spec->kb_dev->name = "Microphone Mute Button"; - spec->kb_dev->evbit[0] = BIT_MASK(EV_KEY); - spec->kb_dev->keybit[BIT_WORD(KEY_MICMUTE)] = BIT_MASK(KEY_MICMUTE); - if (input_register_device(spec->kb_dev)) { - codec_err(codec, "input_register_device failed\n"); - input_free_device(spec->kb_dev); - spec->kb_dev = NULL; + if (alc_register_micmute_input_device(codec) != 0) return; - } snd_hda_add_verbs(codec, gpio_init); snd_hda_codec_write_cache(codec, codec->core.afg, 0, @@ -3503,6 +3555,47 @@ } } +static void alc233_fixup_lenovo_line2_mic_hotkey(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + /* Line2 = mic mute hotkey + GPIO2 = mic mute LED */ + static const struct hda_verb gpio_init[] = { + { 0x01, AC_VERB_SET_GPIO_MASK, 0x04 }, + { 0x01, AC_VERB_SET_GPIO_DIRECTION, 0x04 }, + {} + }; + + struct alc_spec *spec = codec->spec; + + if (action == HDA_FIXUP_ACT_PRE_PROBE) { + if (alc_register_micmute_input_device(codec) != 0) + return; + + snd_hda_add_verbs(codec, gpio_init); + snd_hda_jack_detect_enable_callback(codec, 0x1b, + gpio2_mic_hotkey_event); + + spec->gen.cap_sync_hook = alc_fixup_gpio_mic_mute_hook; + spec->gpio_led = 0; + spec->mute_led_polarity = 0; + spec->gpio_mic_led_mask = 0x04; + return; + } + + if (!spec->kb_dev) + return; + + switch (action) { + case HDA_FIXUP_ACT_PROBE: + spec->init_amp = ALC_INIT_DEFAULT; + break; + case HDA_FIXUP_ACT_FREE: + input_unregister_device(spec->kb_dev); + spec->kb_dev = NULL; + } +} + static void alc269_fixup_hp_line1_mic1_led(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -3688,6 +3781,10 @@ static void alc_headset_mode_default(struct hda_codec *codec) { + static struct coef_fw coef0225[] = { + UPDATE_COEF(0x45, 0x3f<<10, 0x34<<10), + {} + }; static struct coef_fw coef0255[] = { WRITE_COEF(0x45, 0xc089), WRITE_COEF(0x45, 0xc489), @@ -3729,6 +3826,9 @@ }; switch (codec->core.vendor_id) { + case 0x10ec0225: + alc_process_coef_fw(codec, coef0225); + break; case 0x10ec0255: case 0x10ec0256: alc_process_coef_fw(codec, coef0255); @@ -4188,6 +4288,26 @@ } } +/* 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->shutup = alc_no_shutup; /* reduce click noise */ + spec->reboot_notify = alc_d3_at_reboot; /* reduce noise */ + 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; @@ -4556,13 +4676,14 @@ ALC290_FIXUP_SUBWOOFER, ALC290_FIXUP_SUBWOOFER_HSJACK, ALC269_FIXUP_THINKPAD_ACPI, + ALC269_FIXUP_DMIC_THINKPAD_ACPI, ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, ALC255_FIXUP_DELL2_MIC_NO_PRESENCE, ALC255_FIXUP_HEADSET_MODE, ALC255_FIXUP_HEADSET_MODE_NO_HP_MIC, ALC293_FIXUP_DELL1_MIC_NO_PRESENCE, ALC292_FIXUP_TPT440_DOCK, - ALC292_FIXUP_TPT440_DOCK2, + ALC292_FIXUP_TPT440, ALC283_FIXUP_BXBT2807_MIC, ALC255_FIXUP_DELL_WMI_MIC_MUTE_LED, ALC282_FIXUP_ASPIRE_V5_PINS, @@ -4578,7 +4699,16 @@ ALC288_FIXUP_DISABLE_AAMIX, ALC292_FIXUP_DELL_E7X, ALC292_FIXUP_DISABLE_AAMIX, + ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK, ALC298_FIXUP_DELL1_MIC_NO_PRESENCE, + ALC275_FIXUP_DELL_XPS, + ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE, + ALC293_FIXUP_LENOVO_SPK_NOISE, + ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY, + ALC255_FIXUP_DELL_SPK_NOISE, + ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, + ALC280_FIXUP_HP_HEADSET_MIC, + ALC221_FIXUP_HP_FRONT_MIC, }; static const struct hda_fixup alc269_fixups[] = { @@ -4988,6 +5118,12 @@ .type = HDA_FIXUP_FUNC, .v.func = hda_fixup_thinkpad_acpi, }, + [ALC269_FIXUP_DMIC_THINKPAD_ACPI] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_inv_dmic, + .chained = true, + .chain_id = ALC269_FIXUP_THINKPAD_ACPI, + }, [ALC255_FIXUP_DELL1_MIC_NO_PRESENCE] = { .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl[]) { @@ -5029,19 +5165,15 @@ }, [ALC292_FIXUP_TPT440_DOCK] = { .type = HDA_FIXUP_FUNC, - .v.func = alc269_fixup_pincfg_no_hp_to_lineout, + .v.func = alc_fixup_tpt440_dock, .chained = true, - .chain_id = ALC292_FIXUP_TPT440_DOCK2 + .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST }, - [ALC292_FIXUP_TPT440_DOCK2] = { - .type = HDA_FIXUP_PINS, - .v.pins = (const struct hda_pintbl[]) { - { 0x16, 0x21211010 }, /* dock headphone */ - { 0x19, 0x21a11010 }, /* dock mic */ - { } - }, + [ALC292_FIXUP_TPT440] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_disable_aamix, .chained = true, - .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST + .chain_id = ALC292_FIXUP_TPT440_DOCK, }, [ALC283_FIXUP_BXBT2807_MIC] = { .type = HDA_FIXUP_PINS, @@ -5142,6 +5274,12 @@ .chained = true, .chain_id = ALC269_FIXUP_DELL2_MIC_NO_PRESENCE }, + [ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_disable_aamix, + .chained = true, + .chain_id = ALC293_FIXUP_DELL1_MIC_NO_PRESENCE + }, [ALC292_FIXUP_DELL_E7X] = { .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_dell_xps13, @@ -5158,6 +5296,68 @@ .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}, + {} + } + }, + [ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + /* Disable pass-through path for FRONT 14h */ + {0x20, AC_VERB_SET_COEF_INDEX, 0x36}, + {0x20, AC_VERB_SET_PROC_COEF, 0x1737}, + {} + }, + .chained = true, + .chain_id = ALC255_FIXUP_DELL1_MIC_NO_PRESENCE + }, + [ALC293_FIXUP_LENOVO_SPK_NOISE] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_disable_aamix, + .chained = true, + .chain_id = ALC269_FIXUP_THINKPAD_ACPI + }, + [ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc233_fixup_lenovo_line2_mic_hotkey, + }, + [ALC255_FIXUP_DELL_SPK_NOISE] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_disable_aamix, + .chained = true, + .chain_id = ALC255_FIXUP_DELL1_MIC_NO_PRESENCE + }, + [ALC225_FIXUP_DELL1_MIC_NO_PRESENCE] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + /* Disable pass-through path for FRONT 14h */ + { 0x20, AC_VERB_SET_COEF_INDEX, 0x36 }, + { 0x20, AC_VERB_SET_PROC_COEF, 0x57d7 }, + {} + }, + .chained = true, + .chain_id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE + }, + [ALC280_FIXUP_HP_HEADSET_MIC] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_disable_aamix, + .chained = true, + .chain_id = ALC269_FIXUP_HEADSET_MIC, + }, + [ALC221_FIXUP_HP_FRONT_MIC] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x19, 0x02a19020 }, /* Front Mic */ + { } + }, + }, }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -5169,9 +5369,14 @@ SND_PCI_QUIRK(0x1025, 0x080d, "Acer Aspire V5-122P", ALC269_FIXUP_ASPIRE_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x0740, "Acer AO725", ALC271_FIXUP_HP_GATE_MIC_JACK), SND_PCI_QUIRK(0x1025, 0x0742, "Acer AO756", ALC271_FIXUP_HP_GATE_MIC_JACK), + SND_PCI_QUIRK(0x1025, 0x0762, "Acer Aspire E1-472", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572), SND_PCI_QUIRK(0x1025, 0x0775, "Acer Aspire E1-572", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572), SND_PCI_QUIRK(0x1025, 0x079b, "Acer Aspire V5-573G", ALC282_FIXUP_ASPIRE_V5_PINS), + SND_PCI_QUIRK(0x1025, 0x106d, "Acer Cloudbook 14", ALC283_FIXUP_CHROME_BOOK), 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, 0x05bd, "Dell Latitude E6440", ALC292_FIXUP_DELL_E7X), + SND_PCI_QUIRK(0x1028, 0x05be, "Dell Latitude E6540", ALC292_FIXUP_DELL_E7X), 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), @@ -5180,6 +5385,7 @@ SND_PCI_QUIRK(0x1028, 0x05f6, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x0615, "Dell Vostro 5470", ALC290_FIXUP_SUBWOOFER_HSJACK), SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_SUBWOOFER_HSJACK), + SND_PCI_QUIRK(0x1028, 0x062c, "Dell Latitude E5550", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x062e, "Dell Latitude E7450", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS_HSJACK), SND_PCI_QUIRK(0x1028, 0x064a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), @@ -5189,8 +5395,13 @@ 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, 0x06db, "Dell", ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK), + SND_PCI_QUIRK(0x1028, 0x06dd, "Dell", ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK), + SND_PCI_QUIRK(0x1028, 0x06de, "Dell", ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK), + SND_PCI_QUIRK(0x1028, 0x06df, "Dell", ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK), + SND_PCI_QUIRK(0x1028, 0x06e0, "Dell", ALC293_FIXUP_DISABLE_AAMIX_MULTIJACK), + SND_PCI_QUIRK(0x1028, 0x0704, "Dell XPS 13", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE), + SND_PCI_QUIRK(0x1028, 0x0725, "Dell Inspiron 3162", ALC255_FIXUP_DELL_SPK_NOISE), 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), @@ -5251,6 +5462,8 @@ SND_PCI_QUIRK(0x103c, 0x2335, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC1), SND_PCI_QUIRK(0x103c, 0x2336, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC1), SND_PCI_QUIRK(0x103c, 0x2337, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC1), + SND_PCI_QUIRK(0x103c, 0x221c, "HP EliteBook 755 G2", ALC280_FIXUP_HP_HEADSET_MIC), + SND_PCI_QUIRK(0x103c, 0x8256, "HP", ALC221_FIXUP_HP_FRONT_MIC), SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), SND_PCI_QUIRK(0x1043, 0x115d, "Asus 1015E", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), @@ -5289,14 +5502,20 @@ SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK), SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK), SND_PCI_QUIRK(0x17aa, 0x2208, "Thinkpad T431s", ALC269_FIXUP_LENOVO_DOCK), - SND_PCI_QUIRK(0x17aa, 0x220c, "Thinkpad T440s", ALC292_FIXUP_TPT440_DOCK), + SND_PCI_QUIRK(0x17aa, 0x220c, "Thinkpad T440s", ALC292_FIXUP_TPT440), SND_PCI_QUIRK(0x17aa, 0x220e, "Thinkpad T440p", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x2210, "Thinkpad T540p", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x2211, "Thinkpad W541", ALC292_FIXUP_TPT440_DOCK), 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, 0x2218, "Thinkpad X1 Carbon 2nd", ALC292_FIXUP_TPT440_DOCK), + 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, 0x2233, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE), + SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), + SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), + SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP), SND_PCI_QUIRK(0x17aa, 0x5013, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), @@ -5306,6 +5525,7 @@ SND_PCI_QUIRK(0x17aa, 0x5034, "Thinkpad T450", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x5036, "Thinkpad T450s", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x503c, "Thinkpad L450", ALC292_FIXUP_TPT440_DOCK), + SND_PCI_QUIRK(0x17aa, 0x504b, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE), SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), @@ -5386,8 +5606,12 @@ {.id = ALC283_FIXUP_CHROME_BOOK, .name = "alc283-dac-wcaps"}, {.id = ALC283_FIXUP_SENSE_COMBO_JACK, .name = "alc283-sense-combo"}, {.id = ALC292_FIXUP_TPT440_DOCK, .name = "tpt440-dock"}, + {.id = ALC292_FIXUP_TPT440, .name = "tpt440"}, {} }; +#define ALC225_STANDARD_PINS \ + {0x12, 0xb7a60130}, \ + {0x21, 0x04211020} #define ALC255_STANDARD_PINS \ {0x18, 0x411111f0}, \ @@ -5442,6 +5666,12 @@ {0x1f, 0x411111f0} static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { + SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, + ALC225_STANDARD_PINS, + {0x14, 0x901701a0}), + SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, + ALC225_STANDARD_PINS, + {0x14, 0x901701b0}), SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL2_MIC_NO_PRESENCE, ALC255_STANDARD_PINS, {0x12, 0x40300000}, @@ -5538,6 +5768,10 @@ SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, ALC255_STANDARD_PINS, {0x12, 0x90a60170}, + {0x14, 0x90171130}, + {0x21, 0x02211040}), + SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, + {0x12, 0x90a60170}, {0x14, 0x90170140}, {0x17, 0x40000000}, {0x1d, 0x40700001}, @@ -6325,6 +6559,7 @@ ALC668_FIXUP_AUTO_MUTE, ALC668_FIXUP_DELL_DISABLE_AAMIX, ALC668_FIXUP_DELL_XPS13, + ALC662_FIXUP_ASUS_Nx50, }; static const struct hda_fixup alc662_fixups[] = { @@ -6565,11 +6800,18 @@ .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_bass_chmap, }, + [ALC662_FIXUP_ASUS_Nx50] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_auto_mute_via_amp, + .chained = true, + .chain_id = ALC662_FIXUP_BASS_1A + }, }; static const struct snd_pci_quirk alc662_fixup_tbl[] = { SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_FIXUP_ASUS_MODE2), SND_PCI_QUIRK(0x1025, 0x022f, "Acer Aspire One", ALC662_FIXUP_INV_DMIC), + SND_PCI_QUIRK(0x1025, 0x0241, "Packard Bell DOTS", ALC662_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE), SND_PCI_QUIRK(0x1025, 0x0349, "eMachines eM250", ALC662_FIXUP_INV_DMIC), @@ -6579,13 +6821,16 @@ 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), SND_PCI_QUIRK(0x1028, 0x0698, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x069f, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), - SND_PCI_QUIRK(0x1043, 0x11cd, "Asus N550", ALC662_FIXUP_BASS_1A), + SND_PCI_QUIRK(0x1043, 0x11cd, "Asus N550", ALC662_FIXUP_ASUS_Nx50), + SND_PCI_QUIRK(0x1043, 0x13df, "Asus N550JX", ALC662_FIXUP_BASS_1A), + SND_PCI_QUIRK(0x1043, 0x129d, "Asus N750", ALC662_FIXUP_ASUS_Nx50), SND_PCI_QUIRK(0x1043, 0x1477, "ASUS N56VZ", ALC662_FIXUP_BASS_MODE4_CHMAP), SND_PCI_QUIRK(0x1043, 0x15a7, "ASUS UX51VZH", ALC662_FIXUP_BASS_16), SND_PCI_QUIRK(0x1043, 0x1b73, "ASUS N55SF", ALC662_FIXUP_BASS_16), --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_sigmatel.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_sigmatel.c @@ -493,9 +493,9 @@ if (!spec->num_pwrs) return; - if (jack && jack->tbl->nid) { - stac_toggle_power_map(codec, jack->tbl->nid, - snd_hda_jack_detect(codec, jack->tbl->nid), + if (jack && jack->nid) { + stac_toggle_power_map(codec, jack->nid, + snd_hda_jack_detect(codec, jack->nid), true); return; } @@ -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: @@ -3109,6 +3110,29 @@ spec->gpio_led = 0x08; } +static bool is_hp_output(struct hda_codec *codec, hda_nid_t pin) +{ + unsigned int pin_cfg = snd_hda_codec_get_pincfg(codec, pin); + + /* count line-out, too, as BIOS sets often so */ + return get_defcfg_connect(pin_cfg) != AC_JACK_PORT_NONE && + (get_defcfg_device(pin_cfg) == AC_JACK_LINE_OUT || + get_defcfg_device(pin_cfg) == AC_JACK_HP_OUT); +} + +static void fixup_hp_headphone(struct hda_codec *codec, hda_nid_t pin) +{ + unsigned int pin_cfg = snd_hda_codec_get_pincfg(codec, pin); + + /* It was changed in the BIOS to just satisfy MS DTM. + * Lets turn it back into slaved HP + */ + pin_cfg = (pin_cfg & (~AC_DEFCFG_DEVICE)) | + (AC_JACK_HP_OUT << AC_DEFCFG_DEVICE_SHIFT); + pin_cfg = (pin_cfg & (~(AC_DEFCFG_DEF_ASSOC | AC_DEFCFG_SEQUENCE))) | + 0x1f; + snd_hda_codec_set_pincfg(codec, pin, pin_cfg); +} static void stac92hd71bxx_fixup_hp(struct hda_codec *codec, const struct hda_fixup *fix, int action) @@ -3118,22 +3142,12 @@ if (action != HDA_FIXUP_ACT_PRE_PROBE) return; - if (hp_blike_system(codec->core.subsystem_id)) { - unsigned int pin_cfg = snd_hda_codec_get_pincfg(codec, 0x0f); - if (get_defcfg_device(pin_cfg) == AC_JACK_LINE_OUT || - get_defcfg_device(pin_cfg) == AC_JACK_SPEAKER || - get_defcfg_device(pin_cfg) == AC_JACK_HP_OUT) { - /* It was changed in the BIOS to just satisfy MS DTM. - * Lets turn it back into slaved HP - */ - pin_cfg = (pin_cfg & (~AC_DEFCFG_DEVICE)) - | (AC_JACK_HP_OUT << - AC_DEFCFG_DEVICE_SHIFT); - pin_cfg = (pin_cfg & (~(AC_DEFCFG_DEF_ASSOC - | AC_DEFCFG_SEQUENCE))) - | 0x1f; - snd_hda_codec_set_pincfg(codec, 0x0f, pin_cfg); - } + /* when both output A and F are assigned, these are supposedly + * dock and built-in headphones; fix both pin configs + */ + if (is_hp_output(codec, 0x0a) && is_hp_output(codec, 0x0f)) { + fixup_hp_headphone(codec, 0x0a); + fixup_hp_headphone(codec, 0x0f); } if (find_mute_led_cfg(codec, 1)) @@ -4520,7 +4534,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/pci/intel8x0.c +++ linux-raspi2-4.2.0/sound/pci/intel8x0.c @@ -2879,6 +2879,7 @@ static struct snd_pci_quirk intel8x0_clock_list[] = { SND_PCI_QUIRK(0x0e11, 0x008a, "AD1885", 41000), + SND_PCI_QUIRK(0x1014, 0x0581, "AD1981B", 48000), SND_PCI_QUIRK(0x1028, 0x00be, "AD1885", 44100), SND_PCI_QUIRK(0x1028, 0x0177, "AD1980", 48000), SND_PCI_QUIRK(0x1028, 0x01ad, "AD1981B", 48000), --- linux-raspi2-4.2.0.orig/sound/pci/rme96.c +++ linux-raspi2-4.2.0/sound/pci/rme96.c @@ -741,10 +741,11 @@ { /* change to/from double-speed: reset the DAC (if available) */ snd_rme96_reset_dac(rme96); + return 1; /* need to restore volume */ } else { writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER); + return 0; } - return 0; } static int @@ -980,6 +981,7 @@ struct rme96 *rme96 = snd_pcm_substream_chip(substream); struct snd_pcm_runtime *runtime = substream->runtime; int err, rate, dummy; + bool apply_dac_volume = false; runtime->dma_area = (void __force *)(rme96->iobase + RME96_IO_PLAY_BUFFER); @@ -993,24 +995,26 @@ { /* slave clock */ if ((int)params_rate(params) != rate) { - spin_unlock_irq(&rme96->lock); - return -EIO; - } - } else if ((err = snd_rme96_playback_setrate(rme96, params_rate(params))) < 0) { - spin_unlock_irq(&rme96->lock); - return err; - } - if ((err = snd_rme96_playback_setformat(rme96, params_format(params))) < 0) { - spin_unlock_irq(&rme96->lock); - return err; + err = -EIO; + goto error; + } + } else { + err = snd_rme96_playback_setrate(rme96, params_rate(params)); + if (err < 0) + goto error; + apply_dac_volume = err > 0; /* need to restore volume later? */ } + + err = snd_rme96_playback_setformat(rme96, params_format(params)); + if (err < 0) + goto error; snd_rme96_setframelog(rme96, params_channels(params), 1); if (rme96->capture_periodsize != 0) { if (params_period_size(params) << rme96->playback_frlog != rme96->capture_periodsize) { - spin_unlock_irq(&rme96->lock); - return -EBUSY; + err = -EBUSY; + goto error; } } rme96->playback_periodsize = @@ -1021,9 +1025,16 @@ rme96->wcreg &= ~(RME96_WCR_PRO | RME96_WCR_DOLBY | RME96_WCR_EMP); writel(rme96->wcreg |= rme96->wcreg_spdif_stream, rme96->iobase + RME96_IO_CONTROL_REGISTER); } + + err = 0; + error: spin_unlock_irq(&rme96->lock); - - return 0; + if (apply_dac_volume) { + usleep_range(3000, 10000); + snd_rme96_apply_dac_volume(rme96); + } + + return err; } static int --- linux-raspi2-4.2.0.orig/sound/pci/rme9652/hdsp.c +++ linux-raspi2-4.2.0/sound/pci/rme9652/hdsp.c @@ -2878,7 +2878,7 @@ { struct hdsp *hdsp = snd_kcontrol_chip(kcontrol); - ucontrol->value.enumerated.item[0] = hdsp_dds_offset(hdsp); + ucontrol->value.integer.value[0] = hdsp_dds_offset(hdsp); return 0; } @@ -2890,7 +2890,7 @@ if (!snd_hdsp_use_is_exclusive(hdsp)) return -EBUSY; - val = ucontrol->value.enumerated.item[0]; + val = ucontrol->value.integer.value[0]; spin_lock_irq(&hdsp->lock); if (val != hdsp_dds_offset(hdsp)) change = (hdsp_set_dds_offset(hdsp, val) == 0) ? 1 : 0; --- linux-raspi2-4.2.0.orig/sound/pci/rme9652/hdspm.c +++ linux-raspi2-4.2.0/sound/pci/rme9652/hdspm.c @@ -1601,6 +1601,9 @@ { u64 n; + if (snd_BUG_ON(rate <= 0)) + return; + if (rate >= 112000) rate /= 4; else if (rate >= 56000) @@ -2215,6 +2218,8 @@ } else { /* slave mode, return external sample rate */ rate = hdspm_external_sample_rate(hdspm); + if (!rate) + rate = hdspm->system_sample_rate; } } @@ -2260,8 +2265,11 @@ ucontrol) { struct hdspm *hdspm = snd_kcontrol_chip(kcontrol); + int rate = ucontrol->value.integer.value[0]; - hdspm_set_dds_value(hdspm, ucontrol->value.enumerated.item[0]); + if (rate < 27000 || rate > 207000) + return -EINVAL; + hdspm_set_dds_value(hdspm, ucontrol->value.integer.value[0]); return 0; } @@ -4449,7 +4457,7 @@ { struct hdspm *hdspm = snd_kcontrol_chip(kcontrol); - ucontrol->value.enumerated.item[0] = hdspm->tco->term; + ucontrol->value.integer.value[0] = hdspm->tco->term; return 0; } @@ -4460,8 +4468,8 @@ { struct hdspm *hdspm = snd_kcontrol_chip(kcontrol); - if (hdspm->tco->term != ucontrol->value.enumerated.item[0]) { - hdspm->tco->term = ucontrol->value.enumerated.item[0]; + if (hdspm->tco->term != ucontrol->value.integer.value[0]) { + hdspm->tco->term = ucontrol->value.integer.value[0]; hdspm_tco_write(hdspm); --- 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 @@ -1499,7 +1499,7 @@ bool reconfig; unsigned int aif_tx_state, aif_rx_state; - if (params_rate(params) % 8000) + if (params_rate(params) % 4000) rates = &arizona_44k1_bclk_rates[0]; else rates = &arizona_48k_bclk_rates[0]; @@ -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/es8328.c +++ linux-raspi2-4.2.0/sound/soc/codecs/es8328.c @@ -85,7 +85,15 @@ static const DECLARE_TLV_DB_SCALE(bypass_tlv, -1500, 300, 0); static const DECLARE_TLV_DB_SCALE(mic_tlv, 0, 300, 0); -static const int deemph_settings[] = { 0, 32000, 44100, 48000 }; +static const struct { + int rate; + unsigned int val; +} deemph_settings[] = { + { 0, ES8328_DACCONTROL6_DEEMPH_OFF }, + { 32000, ES8328_DACCONTROL6_DEEMPH_32k }, + { 44100, ES8328_DACCONTROL6_DEEMPH_44_1k }, + { 48000, ES8328_DACCONTROL6_DEEMPH_48k }, +}; static int es8328_set_deemph(struct snd_soc_codec *codec) { @@ -97,21 +105,22 @@ * rate. */ if (es8328->deemph) { - best = 1; - for (i = 2; i < ARRAY_SIZE(deemph_settings); i++) { - if (abs(deemph_settings[i] - es8328->playback_fs) < - abs(deemph_settings[best] - es8328->playback_fs)) + best = 0; + for (i = 1; i < ARRAY_SIZE(deemph_settings); i++) { + if (abs(deemph_settings[i].rate - es8328->playback_fs) < + abs(deemph_settings[best].rate - es8328->playback_fs)) best = i; } - val = best << 1; + val = deemph_settings[best].val; } else { - val = 0; + val = ES8328_DACCONTROL6_DEEMPH_OFF; } dev_dbg(codec->dev, "Set deemphasis %d\n", val); - return snd_soc_update_bits(codec, ES8328_DACCONTROL6, 0x6, val); + return snd_soc_update_bits(codec, ES8328_DACCONTROL6, + ES8328_DACCONTROL6_DEEMPH_MASK, val); } static int es8328_get_deemph(struct snd_kcontrol *kcontrol, --- linux-raspi2-4.2.0.orig/sound/soc/codecs/es8328.h +++ linux-raspi2-4.2.0/sound/soc/codecs/es8328.h @@ -153,6 +153,7 @@ #define ES8328_DACCONTROL6_CLICKFREE (1 << 3) #define ES8328_DACCONTROL6_DAC_INVR (1 << 4) #define ES8328_DACCONTROL6_DAC_INVL (1 << 5) +#define ES8328_DACCONTROL6_DEEMPH_MASK (3 << 6) #define ES8328_DACCONTROL6_DEEMPH_OFF (0 << 6) #define ES8328_DACCONTROL6_DEEMPH_32k (1 << 6) #define ES8328_DACCONTROL6_DEEMPH_44_1k (2 << 6) --- 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 @@ -466,7 +466,7 @@ /* IN1/IN2 Control */ SOC_SINGLE_TLV("IN1 Boost", RT5645_IN1_CTRL1, - RT5645_BST_SFT1, 8, 0, bst_tlv), + RT5645_BST_SFT1, 12, 0, bst_tlv), SOC_SINGLE_TLV("IN2 Boost", RT5645_IN2_CTRL, RT5645_BST_SFT2, 8, 0, bst_tlv), @@ -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/ssm4567.c +++ linux-raspi2-4.2.0/sound/soc/codecs/ssm4567.c @@ -338,6 +338,11 @@ regcache_cache_only(ssm4567->regmap, !enable); if (enable) { + ret = regmap_write(ssm4567->regmap, SSM4567_REG_SOFT_RESET, + 0x00); + if (ret) + return ret; + ret = regmap_update_bits(ssm4567->regmap, SSM4567_REG_POWER_CTRL, SSM4567_POWER_SPWDN, 0x00); --- 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/codecs/wm8958-dsp2.c +++ linux-raspi2-4.2.0/sound/soc/codecs/wm8958-dsp2.c @@ -459,7 +459,7 @@ struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = wm8994->wm8994; - int value = ucontrol->value.integer.value[0]; + int value = ucontrol->value.enumerated.item[0]; int reg; /* Don't allow on the fly reconfiguration */ @@ -549,7 +549,7 @@ struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = wm8994->wm8994; - int value = ucontrol->value.integer.value[0]; + int value = ucontrol->value.enumerated.item[0]; int reg; /* Don't allow on the fly reconfiguration */ @@ -582,7 +582,7 @@ struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = wm8994->wm8994; - int value = ucontrol->value.integer.value[0]; + int value = ucontrol->value.enumerated.item[0]; int reg; /* Don't allow on the fly reconfiguration */ @@ -749,7 +749,7 @@ struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); struct wm8994 *control = wm8994->wm8994; - int value = ucontrol->value.integer.value[0]; + int value = ucontrol->value.enumerated.item[0]; int reg; /* Don't allow on the fly reconfiguration */ --- linux-raspi2-4.2.0.orig/sound/soc/codecs/wm8962.c +++ linux-raspi2-4.2.0/sound/soc/codecs/wm8962.c @@ -365,8 +365,8 @@ { 16924, 0x0059 }, /* R16924 - HDBASS_PG_1 */ { 16925, 0x999A }, /* R16925 - HDBASS_PG_0 */ - { 17048, 0x0083 }, /* R17408 - HPF_C_1 */ - { 17049, 0x98AD }, /* R17409 - HPF_C_0 */ + { 17408, 0x0083 }, /* R17408 - HPF_C_1 */ + { 17409, 0x98AD }, /* R17409 - HPF_C_0 */ { 17920, 0x007F }, /* R17920 - ADCL_RETUNE_C1_1 */ { 17921, 0xFFFF }, /* R17921 - ADCL_RETUNE_C1_0 */ --- linux-raspi2-4.2.0.orig/sound/soc/codecs/wm8974.c +++ linux-raspi2-4.2.0/sound/soc/codecs/wm8974.c @@ -574,6 +574,7 @@ .max_register = WM8974_MONOMIX, .reg_defaults = wm8974_reg_defaults, .num_reg_defaults = ARRAY_SIZE(wm8974_reg_defaults), + .cache_type = REGCACHE_FLAT, }; static int wm8974_probe(struct snd_soc_codec *codec) --- linux-raspi2-4.2.0.orig/sound/soc/codecs/wm8994.c +++ linux-raspi2-4.2.0/sound/soc/codecs/wm8994.c @@ -362,7 +362,7 @@ struct wm8994 *control = wm8994->wm8994; struct wm8994_pdata *pdata = &control->pdata; int drc = wm8994_get_drc(kcontrol->id.name); - int value = ucontrol->value.integer.value[0]; + int value = ucontrol->value.enumerated.item[0]; if (drc < 0) return drc; @@ -469,7 +469,7 @@ struct wm8994 *control = wm8994->wm8994; struct wm8994_pdata *pdata = &control->pdata; int block = wm8994_get_retune_mobile_block(kcontrol->id.name); - int value = ucontrol->value.integer.value[0]; + int value = ucontrol->value.enumerated.item[0]; if (block < 0) return block; --- linux-raspi2-4.2.0.orig/sound/soc/codecs/wm_adsp.c +++ linux-raspi2-4.2.0/sound/soc/codecs/wm_adsp.c @@ -425,7 +425,7 @@ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; struct wm_adsp *dsp = snd_soc_codec_get_drvdata(codec); - ucontrol->value.integer.value[0] = dsp[e->shift_l].fw; + ucontrol->value.enumerated.item[0] = dsp[e->shift_l].fw; return 0; } @@ -437,16 +437,16 @@ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; struct wm_adsp *dsp = snd_soc_codec_get_drvdata(codec); - if (ucontrol->value.integer.value[0] == dsp[e->shift_l].fw) + if (ucontrol->value.enumerated.item[0] == dsp[e->shift_l].fw) return 0; - if (ucontrol->value.integer.value[0] >= WM_ADSP_NUM_FW) + if (ucontrol->value.enumerated.item[0] >= WM_ADSP_NUM_FW) return -EINVAL; if (dsp[e->shift_l].running) return -EBUSY; - dsp[e->shift_l].fw = ucontrol->value.integer.value[0]; + dsp[e->shift_l].fw = ucontrol->value.enumerated.item[0]; return 0; } --- linux-raspi2-4.2.0.orig/sound/soc/davinci/davinci-mcasp.c +++ linux-raspi2-4.2.0/sound/soc/davinci/davinci-mcasp.c @@ -222,8 +222,8 @@ /* wait for XDATA to be cleared */ cnt = 0; - while (!(mcasp_get_reg(mcasp, DAVINCI_MCASP_TXSTAT_REG) & - ~XRDATA) && (cnt < 100000)) + while ((mcasp_get_reg(mcasp, DAVINCI_MCASP_TXSTAT_REG) & XRDATA) && + (cnt < 100000)) cnt++; /* Release TX state machine */ --- 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/intel/atom/sst/sst_stream.c +++ linux-raspi2-4.2.0/sound/soc/intel/atom/sst/sst_stream.c @@ -108,7 +108,7 @@ str_id, pipe_id); ret = sst_prepare_and_post_msg(sst_drv_ctx, task_id, IPC_CMD, IPC_IA_ALLOC_STREAM_MRFLD, pipe_id, sizeof(alloc_param), - &alloc_param, data, true, true, false, true); + &alloc_param, &data, true, true, false, true); if (ret < 0) { dev_err(sst_drv_ctx->dev, "FW alloc failed ret %d\n", ret); --- 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/samsung/i2s.c +++ linux-raspi2-4.2.0/sound/soc/samsung/i2s.c @@ -480,10 +480,11 @@ unsigned int cdcon_mask = 1 << i2s_regs->cdclkcon_off; unsigned int rsrc_mask = 1 << i2s_regs->rclksrc_off; u32 mod, mask, val = 0; + unsigned long flags; - spin_lock(i2s->lock); + spin_lock_irqsave(i2s->lock, flags); mod = readl(i2s->addr + I2SMOD); - spin_unlock(i2s->lock); + spin_unlock_irqrestore(i2s->lock, flags); switch (clk_id) { case SAMSUNG_I2S_OPCLK: @@ -574,11 +575,11 @@ return -EINVAL; } - spin_lock(i2s->lock); + spin_lock_irqsave(i2s->lock, flags); mod = readl(i2s->addr + I2SMOD); mod = (mod & ~mask) | val; writel(mod, i2s->addr + I2SMOD); - spin_unlock(i2s->lock); + spin_unlock_irqrestore(i2s->lock, flags); return 0; } @@ -589,6 +590,7 @@ struct i2s_dai *i2s = to_info(dai); int lrp_shift, sdf_shift, sdf_mask, lrp_rlow, mod_slave; u32 mod, tmp = 0; + unsigned long flags; lrp_shift = i2s->variant_regs->lrp_off; sdf_shift = i2s->variant_regs->sdf_off; @@ -648,7 +650,7 @@ return -EINVAL; } - spin_lock(i2s->lock); + spin_lock_irqsave(i2s->lock, flags); mod = readl(i2s->addr + I2SMOD); /* * Don't change the I2S mode if any controller is active on this @@ -656,7 +658,7 @@ */ if (any_active(i2s) && ((mod & (sdf_mask | lrp_rlow | mod_slave)) != tmp)) { - spin_unlock(i2s->lock); + spin_unlock_irqrestore(i2s->lock, flags); dev_err(&i2s->pdev->dev, "%s:%d Other DAI busy\n", __func__, __LINE__); return -EAGAIN; @@ -665,7 +667,7 @@ mod &= ~(sdf_mask | lrp_rlow | mod_slave); mod |= tmp; writel(mod, i2s->addr + I2SMOD); - spin_unlock(i2s->lock); + spin_unlock_irqrestore(i2s->lock, flags); return 0; } @@ -675,6 +677,7 @@ { struct i2s_dai *i2s = to_info(dai); u32 mod, mask = 0, val = 0; + unsigned long flags; if (!is_secondary(i2s)) mask |= (MOD_DC2_EN | MOD_DC1_EN); @@ -743,11 +746,11 @@ return -EINVAL; } - spin_lock(i2s->lock); + spin_lock_irqsave(i2s->lock, flags); mod = readl(i2s->addr + I2SMOD); mod = (mod & ~mask) | val; writel(mod, i2s->addr + I2SMOD); - spin_unlock(i2s->lock); + spin_unlock_irqrestore(i2s->lock, flags); samsung_asoc_init_dma_data(dai, &i2s->dma_playback, &i2s->dma_capture); --- linux-raspi2-4.2.0.orig/sound/soc/samsung/s3c-i2s-v2.c +++ linux-raspi2-4.2.0/sound/soc/samsung/s3c-i2s-v2.c @@ -709,7 +709,7 @@ #endif int s3c_i2sv2_register_component(struct device *dev, int id, - struct snd_soc_component_driver *cmp_drv, + const struct snd_soc_component_driver *cmp_drv, struct snd_soc_dai_driver *dai_drv) { struct snd_soc_dai_ops *ops = (struct snd_soc_dai_ops *)dai_drv->ops; --- linux-raspi2-4.2.0.orig/sound/soc/samsung/s3c-i2s-v2.h +++ linux-raspi2-4.2.0/sound/soc/samsung/s3c-i2s-v2.h @@ -101,7 +101,7 @@ * soc core. */ extern int s3c_i2sv2_register_component(struct device *dev, int id, - struct snd_soc_component_driver *cmp_drv, + const struct snd_soc_component_driver *cmp_drv, struct snd_soc_dai_driver *dai_drv); #endif /* __SND_SOC_S3C24XX_S3C_I2SV2_I2S_H */ --- linux-raspi2-4.2.0.orig/sound/soc/sh/rcar/gen.c +++ linux-raspi2-4.2.0/sound/soc/sh/rcar/gen.c @@ -214,7 +214,7 @@ RSND_GEN_S_REG(SCU_SYS_STATUS0, 0x1c8), RSND_GEN_S_REG(SCU_SYS_INT_EN0, 0x1cc), RSND_GEN_S_REG(SCU_SYS_STATUS1, 0x1d0), - RSND_GEN_S_REG(SCU_SYS_INT_EN1, 0x1c4), + RSND_GEN_S_REG(SCU_SYS_INT_EN1, 0x1d4), RSND_GEN_M_REG(SRC_SWRSR, 0x200, 0x40), RSND_GEN_M_REG(SRC_SRCIR, 0x204, 0x40), RSND_GEN_M_REG(SRC_ADINR, 0x214, 0x40), --- linux-raspi2-4.2.0.orig/sound/soc/soc-compress.c +++ linux-raspi2-4.2.0/sound/soc/soc-compress.c @@ -623,6 +623,7 @@ struct snd_pcm *be_pcm; char new_name[64]; int ret = 0, direction = 0; + int playback = 0, capture = 0; if (rtd->num_codecs > 1) { dev_err(rtd->card->dev, "Multicodec not supported for compressed stream\n"); @@ -634,11 +635,27 @@ rtd->dai_link->stream_name, codec_dai->name, num); if (codec_dai->driver->playback.channels_min) + playback = 1; + if (codec_dai->driver->capture.channels_min) + capture = 1; + + capture = capture && cpu_dai->driver->capture.channels_min; + playback = playback && cpu_dai->driver->playback.channels_min; + + /* + * Compress devices are unidirectional so only one of the directions + * should be set, check for that (xor) + */ + if (playback + capture != 1) { + dev_err(rtd->card->dev, "Invalid direction for compress P %d, C %d\n", + playback, capture); + return -EINVAL; + } + + if(playback) direction = SND_COMPRESS_PLAYBACK; - else if (codec_dai->driver->capture.channels_min) - direction = SND_COMPRESS_CAPTURE; else - return -EINVAL; + direction = SND_COMPRESS_CAPTURE; compr = kzalloc(sizeof(*compr), GFP_KERNEL); if (compr == NULL) { --- linux-raspi2-4.2.0.orig/sound/soc/soc-dapm.c +++ linux-raspi2-4.2.0/sound/soc/soc-dapm.c @@ -3557,7 +3557,7 @@ { struct snd_soc_dapm_widget *w = snd_kcontrol_chip(kcontrol); - ucontrol->value.integer.value[0] = w->params_select; + ucontrol->value.enumerated.item[0] = w->params_select; return 0; } @@ -3571,13 +3571,13 @@ if (w->power) return -EBUSY; - if (ucontrol->value.integer.value[0] == w->params_select) + if (ucontrol->value.enumerated.item[0] == w->params_select) return 0; - if (ucontrol->value.integer.value[0] >= w->num_params) + if (ucontrol->value.enumerated.item[0] >= w->num_params) return -EINVAL; - w->params_select = ucontrol->value.integer.value[0]; + w->params_select = ucontrol->value.enumerated.item[0]; return 0; } --- 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/soc-pcm.c +++ linux-raspi2-4.2.0/sound/soc/soc-pcm.c @@ -1698,7 +1698,8 @@ (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PREPARE) && (be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_FREE) && (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED) && - (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP)) + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP) && + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_SUSPEND)) continue; dev_dbg(be->dev, "ASoC: hw_free BE %s\n", --- 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/soc/tegra/tegra_alc5632.c +++ linux-raspi2-4.2.0/sound/soc/tegra/tegra_alc5632.c @@ -101,12 +101,16 @@ static int tegra_alc5632_asoc_init(struct snd_soc_pcm_runtime *rtd) { + int ret; struct tegra_alc5632 *machine = snd_soc_card_get_drvdata(rtd->card); - snd_soc_card_jack_new(rtd->card, "Headset Jack", SND_JACK_HEADSET, - &tegra_alc5632_hs_jack, - tegra_alc5632_hs_jack_pins, - ARRAY_SIZE(tegra_alc5632_hs_jack_pins)); + ret = snd_soc_card_jack_new(rtd->card, "Headset Jack", + SND_JACK_HEADSET, + &tegra_alc5632_hs_jack, + tegra_alc5632_hs_jack_pins, + ARRAY_SIZE(tegra_alc5632_hs_jack_pins)); + if (ret) + return ret; if (gpio_is_valid(machine->gpio_hp_det)) { tegra_alc5632_hp_jack_gpio.gpio = machine->gpio_hp_det; --- 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/clock.c +++ linux-raspi2-4.2.0/sound/usb/clock.c @@ -285,6 +285,8 @@ unsigned char data[3]; int err, crate; + if (get_iface_desc(alts)->bNumEndpoints < 1) + return -EINVAL; ep = get_endpoint(alts, 0)->bEndpointAddress; /* if endpoint doesn't have sampling rate control, bail out */ --- linux-raspi2-4.2.0.orig/sound/usb/endpoint.c +++ linux-raspi2-4.2.0/sound/usb/endpoint.c @@ -413,6 +413,9 @@ * * New endpoints will be added to chip->ep_list and must be freed by * calling snd_usb_endpoint_free(). + * + * For SND_USB_ENDPOINT_TYPE_SYNC, the caller needs to guarantee that + * bNumEndpoints > 1 beforehand. */ struct snd_usb_endpoint *snd_usb_add_endpoint(struct snd_usb_audio *chip, struct usb_host_interface *alts, --- 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); @@ -2405,7 +2451,6 @@ else err = snd_usbmidi_create_endpoints(umidi, endpoints); if (err < 0) { - snd_usbmidi_free(umidi); return err; } --- linux-raspi2-4.2.0.orig/sound/usb/mixer.c +++ linux-raspi2-4.2.0/sound/usb/mixer.c @@ -1336,6 +1336,8 @@ } } + snd_usb_mixer_fu_apply_quirk(state->mixer, cval, unitid, kctl); + range = (cval->max - cval->min) / cval->res; /* * Are there devices with volume range more than 255? I use a bit more @@ -2522,7 +2524,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/mixer_maps.c +++ linux-raspi2-4.2.0/sound/usb/mixer_maps.c @@ -348,13 +348,6 @@ { 0 } /* terminator */ }; -/* Dragonfly DAC 1.2, the dB conversion factor is 1 instead of 256 */ -static struct usbmix_dB_map dragonfly_1_2_dB = {0, 5000}; -static struct usbmix_name_map dragonfly_1_2_map[] = { - { 7, NULL, .dB = &dragonfly_1_2_dB }, - { 0 } /* terminator */ -}; - /* * Control map entries */ @@ -470,11 +463,6 @@ .id = USB_ID(0x05a7, 0x1020), .map = bose_companion5_map, }, - { - /* Dragonfly DAC 1.2 */ - .id = USB_ID(0x21b4, 0x0081), - .map = dragonfly_1_2_map, - }, { 0 } /* terminator */ }; --- linux-raspi2-4.2.0.orig/sound/usb/mixer_quirks.c +++ linux-raspi2-4.2.0/sound/usb/mixer_quirks.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "usbaudio.h" #include "mixer.h" @@ -802,7 +803,7 @@ return 0; kcontrol->private_value &= ~(0xff << 24); - kcontrol->private_value |= newval; + kcontrol->private_value |= (unsigned int)newval << 24; err = snd_ni_update_cur_val(list); return err < 0 ? err : 1; } @@ -1531,7 +1532,11 @@ /* use known values for that card: interface#1 altsetting#1 */ iface = usb_ifnum_to_if(chip->dev, 1); + if (!iface || iface->num_altsetting < 2) + return -EINVAL; alts = &iface->altsetting[1]; + if (get_iface_desc(alts)->bNumEndpoints < 1) + return -EINVAL; ep = get_endpoint(alts, 0)->bEndpointAddress; err = snd_usb_ctl_msg(chip->dev, @@ -1842,4 +1847,40 @@ break; } } + +static void snd_dragonfly_quirk_db_scale(struct usb_mixer_interface *mixer, + struct snd_kcontrol *kctl) +{ + /* Approximation using 10 ranges based on output measurement on hw v1.2. + * This seems close to the cubic mapping e.g. alsamixer uses. */ + static const DECLARE_TLV_DB_RANGE(scale, + 0, 1, TLV_DB_MINMAX_ITEM(-5300, -4970), + 2, 5, TLV_DB_MINMAX_ITEM(-4710, -4160), + 6, 7, TLV_DB_MINMAX_ITEM(-3884, -3710), + 8, 14, TLV_DB_MINMAX_ITEM(-3443, -2560), + 15, 16, TLV_DB_MINMAX_ITEM(-2475, -2324), + 17, 19, TLV_DB_MINMAX_ITEM(-2228, -2031), + 20, 26, TLV_DB_MINMAX_ITEM(-1910, -1393), + 27, 31, TLV_DB_MINMAX_ITEM(-1322, -1032), + 32, 40, TLV_DB_MINMAX_ITEM(-968, -490), + 41, 50, TLV_DB_MINMAX_ITEM(-441, 0), + ); + + usb_audio_info(mixer->chip, "applying DragonFly dB scale quirk\n"); + kctl->tlv.p = scale; + kctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_TLV_READ; + kctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK; +} + +void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_interface *mixer, + struct usb_mixer_elem_info *cval, int unitid, + struct snd_kcontrol *kctl) +{ + switch (mixer->chip->usb_id) { + case USB_ID(0x21b4, 0x0081): /* AudioQuest DragonFly */ + if (unitid == 7 && cval->min == 0 && cval->max == 50) + snd_dragonfly_quirk_db_scale(mixer, kctl); + break; + } +} --- linux-raspi2-4.2.0.orig/sound/usb/mixer_quirks.h +++ linux-raspi2-4.2.0/sound/usb/mixer_quirks.h @@ -9,5 +9,9 @@ void snd_usb_mixer_rc_memory_change(struct usb_mixer_interface *mixer, int unitid); +void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_interface *mixer, + struct usb_mixer_elem_info *cval, int unitid, + struct snd_kcontrol *kctl); + #endif /* SND_USB_MIXER_QUIRKS_H */ --- linux-raspi2-4.2.0.orig/sound/usb/pcm.c +++ linux-raspi2-4.2.0/sound/usb/pcm.c @@ -159,6 +159,8 @@ unsigned char data[1]; int err; + if (get_iface_desc(alts)->bNumEndpoints < 1) + return -EINVAL; ep = get_endpoint(alts, 0)->bEndpointAddress; data[0] = 1; --- 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 @@ -147,6 +147,7 @@ usb_audio_err(chip, "cannot memdup\n"); return -ENOMEM; } + INIT_LIST_HEAD(&fp->list); if (fp->nr_rates > MAX_NR_RATES) { kfree(fp); return -EINVAL; @@ -164,19 +165,20 @@ stream = (fp->endpoint & USB_DIR_IN) ? SNDRV_PCM_STREAM_CAPTURE : SNDRV_PCM_STREAM_PLAYBACK; err = snd_usb_add_audio_stream(chip, stream, fp); - if (err < 0) { - kfree(fp); - kfree(rate_table); - return err; - } + if (err < 0) + goto error; if (fp->iface != get_iface_desc(&iface->altsetting[0])->bInterfaceNumber || fp->altset_idx >= iface->num_altsetting) { - kfree(fp); - kfree(rate_table); - return -EINVAL; + err = -EINVAL; + goto error; } alts = &iface->altsetting[fp->altset_idx]; altsd = get_iface_desc(alts); + if (altsd->bNumEndpoints < 1) { + err = -EINVAL; + goto error; + } + fp->protocol = altsd->bInterfaceProtocol; if (fp->datainterval == 0) @@ -187,6 +189,12 @@ snd_usb_init_pitch(chip, fp->iface, alts, fp); snd_usb_init_sample_rate(chip, fp->iface, alts, fp, fp->rate_max); return 0; + + error: + list_del(&fp->list); /* unlink for avoiding double-free */ + kfree(fp); + kfree(rate_table); + return err; } static int create_auto_pcm_quirk(struct snd_usb_audio *chip, @@ -459,6 +467,7 @@ fp->ep_attr = get_endpoint(alts, 0)->bmAttributes; fp->datainterval = 0; fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize); + INIT_LIST_HEAD(&fp->list); switch (fp->maxpacksize) { case 0x120: @@ -482,6 +491,7 @@ ? SNDRV_PCM_STREAM_CAPTURE : SNDRV_PCM_STREAM_PLAYBACK; err = snd_usb_add_audio_stream(chip, stream, fp); if (err < 0) { + list_del(&fp->list); /* unlink for avoiding double-free */ kfree(fp); return err; } @@ -535,6 +545,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, @@ -1117,10 +1128,14 @@ switch (chip->usb_id) { case USB_ID(0x045E, 0x075D): /* MS Lifecam Cinema */ case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */ + case USB_ID(0x045E, 0x076E): /* MS Lifecam HD-5001 */ + case USB_ID(0x045E, 0x076F): /* MS Lifecam HD-6000 */ case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */ case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */ + case USB_ID(0x047F, 0xAA05): /* Plantronics DA45 */ case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */ case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */ + case USB_ID(0x21B4, 0x0081): /* AudioQuest DragonFly */ return true; } return false; @@ -1200,8 +1215,12 @@ * "Playback Design" products need a 50ms delay after setting the * USB interface. */ - if (le16_to_cpu(dev->descriptor.idVendor) == 0x23ba) + switch (le16_to_cpu(dev->descriptor.idVendor)) { + case 0x23ba: /* Playback Design */ + case 0x0644: /* TEAC Corp. */ mdelay(50); + break; + } } void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe, @@ -1216,6 +1235,14 @@ (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) mdelay(20); + /* + * "TEAC Corp." products need a 20ms delay after each + * class compliant request + */ + if ((le16_to_cpu(dev->descriptor.idVendor) == 0x0644) && + (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) + mdelay(20); + /* Marantz/Denon devices with USB DAC functionality need a delay * after each class compliant request */ @@ -1264,6 +1291,7 @@ case USB_ID(0x20b1, 0x3008): /* iFi Audio micro/nano iDSD */ case USB_ID(0x20b1, 0x2008): /* Matrix Audio X-Sabre */ case USB_ID(0x20b1, 0x300a): /* Matrix Audio Mini-i Pro */ + case USB_ID(0x22d9, 0x0416): /* OPPO HA-1 */ if (fp->altsetting == 2) return SNDRV_PCM_FMTBIT_DSD_U32_BE; break; @@ -1271,6 +1299,8 @@ 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 */ + case USB_ID(0x2616, 0x0106): /* PS Audio NuWave DAC */ if (fp->altsetting == 3) return SNDRV_PCM_FMTBIT_DSD_U32_BE; break; --- linux-raspi2-4.2.0.orig/sound/usb/stream.c +++ linux-raspi2-4.2.0/sound/usb/stream.c @@ -315,7 +315,9 @@ /* * add this endpoint to the chip instance. * if a stream with the same endpoint already exists, append to it. - * if not, create a new pcm stream. + * if not, create a new pcm stream. note, fp is added to the substream + * fmt_list and will be freed on the chip instance release. do not free + * fp or do remove it from the substream fmt_list to avoid double-free. */ int snd_usb_add_audio_stream(struct snd_usb_audio *chip, int stream, @@ -668,6 +670,7 @@ * (fp->maxpacksize & 0x7ff); fp->attributes = parse_uac_endpoint_attributes(chip, alts, protocol, iface_no); fp->clock = clock; + INIT_LIST_HEAD(&fp->list); /* some quirks for attributes here */ @@ -716,6 +719,7 @@ dev_dbg(&dev->dev, "%u:%d: add audio endpoint %#x\n", iface_no, altno, fp->endpoint); err = snd_usb_add_audio_stream(chip, stream, fp); if (err < 0) { + list_del(&fp->list); /* unlink for avoiding double-free */ kfree(fp->rate_table); kfree(fp->chmap); kfree(fp); --- 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/Makefile +++ linux-raspi2-4.2.0/tools/Makefile @@ -32,6 +32,10 @@ @echo ' from the kernel command line to build and install one of' @echo ' the tools above' @echo '' + @echo ' $$ make tools/all' + @echo '' + @echo ' builds all tools.' + @echo '' @echo ' $$ make tools/install' @echo '' @echo ' installs all tools.' @@ -77,6 +81,11 @@ freefall: FORCE $(call descend,laptop/$@) +all: acpi cgroup cpupower hv firewire lguest \ + perf selftests turbostat usb \ + virtio vm net x86_energy_perf_policy \ + tmon freefall + acpi_install: $(call descend,power/$(@:_install=),install) --- 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/Makefile +++ linux-raspi2-4.2.0/tools/hv/Makefile @@ -5,6 +5,8 @@ WARNINGS = -Wall -Wextra CFLAGS = $(WARNINGS) -g $(PTHREAD_LIBS) $(shell getconf LFS_CFLAGS) +CFLAGS += -D__EXPORTED_HEADERS__ -I../../include/uapi -I../../include + all: hv_kvp_daemon hv_vss_daemon hv_fcopy_daemon %: %.c $(CC) $(CFLAGS) -o $@ $^ --- 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/hv_vss_daemon.c +++ linux-raspi2-4.2.0/tools/hv/hv_vss_daemon.c @@ -254,7 +254,7 @@ syslog(LOG_ERR, "Illegal op:%d\n", op); } vss_msg->error = error; - len = write(vss_fd, &error, sizeof(struct hv_vss_msg)); + len = write(vss_fd, vss_msg, sizeof(struct hv_vss_msg)); if (len != sizeof(struct hv_vss_msg)) { syslog(LOG_ERR, "write failed; error: %d %s", errno, strerror(errno)); --- 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); @@ -4824,13 +4841,12 @@ sizeof(long) != 8) { char *p; - ls = 2; /* make %l into %ll */ - p = strchr(format, 'l'); - if (p) + if (ls == 1 && (p = strchr(format, 'l'))) memmove(p+1, p, strlen(p)+1); else if (strcmp(format, "%p") == 0) strcpy(format, "0x%llx"); + ls = 2; } switch (ls) { case -2: --- 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-stat.txt +++ linux-raspi2-4.2.0/tools/perf/Documentation/perf-stat.txt @@ -62,6 +62,14 @@ --scale:: scale/normalize counter values +-d:: +--detailed:: + print more detailed statistics, can be specified up to 3 times + + -d: detailed events, L1 and LLC data cache + -d -d: more detailed events, dTLB and iTLB events + -d -d -d: very detailed events, adding prefetch events + -r:: --repeat=:: repeat command and print average + stddev (max: 100). 0 means forever. --- 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; } @@ -730,11 +754,11 @@ nd = browser->curr_hot; break; case K_UNTAB: - if (nd != NULL) + if (nd != NULL) { nd = rb_next(nd); if (nd == NULL) nd = rb_first(&browser->entries); - else + } else nd = browser->curr_hot; break; case K_F1: @@ -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/dso.c +++ linux-raspi2-4.2.0/tools/perf/util/dso.c @@ -933,6 +933,7 @@ /* Add new node and rebalance tree */ rb_link_node(&dso->rb_node, parent, p); rb_insert_color(&dso->rb_node, root); + dso->root = root; } return NULL; } @@ -945,15 +946,30 @@ void dso__set_long_name(struct dso *dso, const char *name, bool name_allocated) { + struct rb_root *root = dso->root; + if (name == NULL) return; if (dso->long_name_allocated) free((char *)dso->long_name); + if (root) { + rb_erase(&dso->rb_node, root); + /* + * __dso__findlink_by_longname() isn't guaranteed to add it + * back, so a clean removal is required here. + */ + RB_CLEAR_NODE(&dso->rb_node); + dso->root = NULL; + } + dso->long_name = name; dso->long_name_len = strlen(name); dso->long_name_allocated = name_allocated; + + if (root) + __dso__findlink_by_longname(root, dso, NULL); } void dso__set_short_name(struct dso *dso, const char *name, bool name_allocated) @@ -1046,6 +1062,7 @@ dso->kernel = DSO_TYPE_USER; dso->needs_swap = DSO_SWAP__UNSET; RB_CLEAR_NODE(&dso->rb_node); + dso->root = NULL; INIT_LIST_HEAD(&dso->node); INIT_LIST_HEAD(&dso->data.open_entry); pthread_mutex_init(&dso->lock, NULL); --- linux-raspi2-4.2.0.orig/tools/perf/util/dso.h +++ linux-raspi2-4.2.0/tools/perf/util/dso.h @@ -135,6 +135,7 @@ pthread_mutex_t lock; struct list_head node; struct rb_node rb_node; /* rbtree node sorted by long name */ + struct rb_root *root; /* root of rbtree that rb_node is in */ struct rb_root symbols[MAP__NR_TYPES]; struct rb_root symbol_names[MAP__NR_TYPES]; void *a2l; --- linux-raspi2-4.2.0.orig/tools/perf/util/event.c +++ linux-raspi2-4.2.0/tools/perf/util/event.c @@ -271,7 +271,7 @@ strcpy(execname, ""); /* 00400000-0040c000 r-xp 00000000 fd:01 41038 /bin/cat */ - n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %x:%x %u %s\n", + n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %x:%x %u %[^\n]\n", &event->mmap2.start, &event->mmap2.len, prot, &event->mmap2.pgoff, &event->mmap2.maj, &event->mmap2.min, --- 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 @@ -129,6 +129,8 @@ symlen = unresolved_col_width + 4 + 2; hists__new_col_len(hists, HISTC_MEM_DADDR_SYMBOL, symlen); + hists__new_col_len(hists, HISTC_MEM_DCACHELINE, + symlen); } if (h->mem_info->daddr.map) { symlen = dso__name_len(h->mem_info->daddr.map->dso); @@ -151,6 +153,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 +623,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 +1420,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/machine.c +++ linux-raspi2-4.2.0/tools/perf/util/machine.c @@ -90,6 +90,7 @@ list_for_each_entry_safe(pos, n, &dsos->head, node) { RB_CLEAR_NODE(&pos->rb_node); + pos->root = NULL; list_del_init(&pos->node); dso__put(pos); } --- 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/pmu.c +++ linux-raspi2-4.2.0/tools/perf/util/pmu.c @@ -153,7 +153,7 @@ if (fd == -1) return -1; - sret = read(fd, alias->unit, UNIT_MAX_LEN); + sret = read(fd, alias->unit, UNIT_MAX_LEN); if (sret < 0) goto error; @@ -283,13 +283,12 @@ { struct dirent *evt_ent; DIR *event_dir; - int ret = 0; event_dir = opendir(dir); if (!event_dir) return -EINVAL; - while (!ret && (evt_ent = readdir(event_dir))) { + while ((evt_ent = readdir(event_dir))) { char path[PATH_MAX]; char *name = evt_ent->d_name; FILE *file; @@ -305,17 +304,19 @@ snprintf(path, PATH_MAX, "%s/%s", dir, name); - ret = -EINVAL; file = fopen(path, "r"); - if (!file) - break; + if (!file) { + pr_debug("Cannot open %s\n", path); + continue; + } - ret = perf_pmu__new_alias(head, dir, name, file); + if (perf_pmu__new_alias(head, dir, name, file) < 0) + pr_debug("Cannot set up %s\n", name); fclose(file); } closedir(event_dir); - return ret; + return 0; } /* --- 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) @@ -961,7 +969,7 @@ machine = machines__find(machines, pid); if (!machine) - machine = machines__find(machines, DEFAULT_GUEST_KERNEL_ID); + machine = machines__findnew(machines, DEFAULT_GUEST_KERNEL_ID); return machine; } --- linux-raspi2-4.2.0.orig/tools/perf/util/setup.py +++ linux-raspi2-4.2.0/tools/perf/util/setup.py @@ -22,6 +22,7 @@ # switch off several checks (need to be at the end of cflags list) cflags += ['-fno-strict-aliasing', '-Wno-write-strings', '-Wno-unused-parameter' ] +src_perf = getenv('srctree') + '/tools/perf' build_lib = getenv('PYTHON_EXTBUILD_LIB') build_tmp = getenv('PYTHON_EXTBUILD_TMP') libtraceevent = getenv('LIBTRACEEVENT') @@ -30,6 +31,9 @@ ext_sources = [f.strip() for f in file('util/python-ext-sources') if len(f.strip()) > 0 and f[0] != '#'] +# use full paths with source files +ext_sources = map(lambda x: '%s/%s' % (src_perf, x) , ext_sources) + perf = Extension('perf', sources = ext_sources, include_dirs = ['util/include'], --- 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/efivarfs/efivarfs.sh +++ linux-raspi2-4.2.0/tools/testing/selftests/efivarfs/efivarfs.sh @@ -88,7 +88,11 @@ exit 1 fi - rm $file + rm $file 2>/dev/null + if [ $? -ne 0 ]; then + chattr -i $file + rm $file + fi if [ -e $file ]; then echo "$file couldn't be deleted" >&2 @@ -111,6 +115,7 @@ exit 1 fi + chattr -i $file printf "$attrs" > $file if [ -e $file ]; then @@ -141,7 +146,11 @@ echo "$file could not be created" >&2 ret=1 else - rm $file + rm $file 2>/dev/null + if [ $? -ne 0 ]; then + chattr -i $file + rm $file + fi fi done @@ -174,7 +183,11 @@ if [ -e $file ]; then echo "Creating $file should have failed" >&2 - rm $file + rm $file 2>/dev/null + if [ $? -ne 0 ]; then + chattr -i $file + rm $file + fi ret=1 fi done --- linux-raspi2-4.2.0.orig/tools/testing/selftests/efivarfs/open-unlink.c +++ linux-raspi2-4.2.0/tools/testing/selftests/efivarfs/open-unlink.c @@ -1,10 +1,68 @@ +#include #include #include #include #include +#include #include #include #include +#include + +static int set_immutable(const char *path, int immutable) +{ + unsigned int flags; + int fd; + int rc; + int error; + + fd = open(path, O_RDONLY); + if (fd < 0) + return fd; + + rc = ioctl(fd, FS_IOC_GETFLAGS, &flags); + if (rc < 0) { + error = errno; + close(fd); + errno = error; + return rc; + } + + if (immutable) + flags |= FS_IMMUTABLE_FL; + else + flags &= ~FS_IMMUTABLE_FL; + + rc = ioctl(fd, FS_IOC_SETFLAGS, &flags); + error = errno; + close(fd); + errno = error; + return rc; +} + +static int get_immutable(const char *path) +{ + unsigned int flags; + int fd; + int rc; + int error; + + fd = open(path, O_RDONLY); + if (fd < 0) + return fd; + + rc = ioctl(fd, FS_IOC_GETFLAGS, &flags); + if (rc < 0) { + error = errno; + close(fd); + errno = error; + return rc; + } + close(fd); + if (flags & FS_IMMUTABLE_FL) + return 1; + return 0; +} int main(int argc, char **argv) { @@ -27,7 +85,7 @@ buf[4] = 0; /* create a test variable */ - fd = open(path, O_WRONLY | O_CREAT); + fd = open(path, O_WRONLY | O_CREAT, 0600); if (fd < 0) { perror("open(O_WRONLY)"); return EXIT_FAILURE; @@ -41,6 +99,18 @@ close(fd); + rc = get_immutable(path); + if (rc < 0) { + perror("ioctl(FS_IOC_GETFLAGS)"); + return EXIT_FAILURE; + } else if (rc) { + rc = set_immutable(path, 0); + if (rc < 0) { + perror("ioctl(FS_IOC_SETFLAGS)"); + return EXIT_FAILURE; + } + } + fd = open(path, O_RDONLY); if (fd < 0) { perror("open"); --- 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); + + /* + * 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; - BUG_ON(vlr.irq >= dist->nr_irqs); - vgic_cpu->vgic_irq_lr_map[vlr.irq] = LR_EMPTY; + 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,33 +1672,27 @@ 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) { struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; - - int sz = (nr_irqs - VGIC_NR_PRIVATE_IRQS) / 8; + int nr_longs = BITS_TO_LONGS(nr_irqs - VGIC_NR_PRIVATE_IRQS); + int sz = nr_longs * sizeof(unsigned long); 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/async_pf.c +++ linux-raspi2-4.2.0/virt/kvm/async_pf.c @@ -169,7 +169,7 @@ * do alloc nowait since if we are going to sleep anyway we * may as well sleep faulting in page */ - work = kmem_cache_zalloc(async_pf_cache, GFP_NOWAIT); + work = kmem_cache_zalloc(async_pf_cache, GFP_NOWAIT | __GFP_NOWARN); if (!work) return 0; --- 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 @@ -503,6 +503,16 @@ if (!kvm) return ERR_PTR(-ENOMEM); + spin_lock_init(&kvm->mmu_lock); + atomic_inc(¤t->mm->mm_count); + kvm->mm = current->mm; + kvm_eventfd_init(kvm); + mutex_init(&kvm->lock); + mutex_init(&kvm->irq_lock); + mutex_init(&kvm->slots_lock); + atomic_set(&kvm->users_count, 1); + INIT_LIST_HEAD(&kvm->devices); + r = kvm_arch_init_vm(kvm, type); if (r) goto out_err_no_disable; @@ -535,16 +545,6 @@ goto out_err; } - spin_lock_init(&kvm->mmu_lock); - kvm->mm = current->mm; - atomic_inc(&kvm->mm->mm_count); - kvm_eventfd_init(kvm); - mutex_init(&kvm->lock); - mutex_init(&kvm->irq_lock); - mutex_init(&kvm->slots_lock); - atomic_set(&kvm->users_count, 1); - INIT_LIST_HEAD(&kvm->devices); - r = kvm_init_mmu_notifier(kvm); if (r) goto out_err; @@ -569,6 +569,7 @@ for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++) kvm_free_memslots(kvm, kvm->memslots[i]); kvm_arch_free_vm(kvm); + mmdrop(current->mm); return ERR_PTR(r); } @@ -3080,10 +3081,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; }